Author: harti
Date: Tue Jul  3 08:44:40 2018
New Revision: 335885
URL: https://svnweb.freebsd.org/changeset/base/335885

Log:
  Update bsnmp to version 1.13. This does not bring user-visible changes.
  For developers gensnmptree can now generate functions for enums to convert
  between enums and strings and to check the validity of a value.
  The sources in FreeBSD are now in sync with the upstream which allows to
  bring in IPv6 modifications.

Modified:
  head/contrib/bsnmp/VERSION
  head/contrib/bsnmp/gensnmptree/gensnmptree.1
  head/contrib/bsnmp/gensnmptree/gensnmptree.c
  head/contrib/bsnmp/lib/snmp.h
  head/contrib/bsnmp/lib/tc.def
  head/contrib/bsnmp/snmp_mibII/mibII.c
  head/contrib/bsnmp/snmp_mibII/mibII_route.c
  head/contrib/bsnmp/snmp_ntp/snmp_ntp.c
  head/contrib/bsnmp/snmp_target/target_snmp.c
  head/contrib/bsnmp/snmp_target/target_tree.def
  head/contrib/bsnmp/snmp_usm/usm_snmp.c
  head/contrib/bsnmp/snmp_usm/usm_tree.def
  head/contrib/bsnmp/snmp_vacm/vacm_snmp.c
  head/contrib/bsnmp/snmp_vacm/vacm_tree.def
  head/contrib/bsnmp/snmpd/main.c
  head/contrib/bsnmp/snmpd/trans_udp.c
  head/contrib/bsnmp/snmpd/trap.c
  head/contrib/bsnmp/snmpd/tree.def
  head/contrib/libbegemot/rpoll.c
  head/contrib/libbegemot/rpoll.h
  head/lib/libbsnmp/libbsnmp/Makefile
  head/share/mk/bsd.snmpmod.mk
  head/usr.sbin/bsnmpd/bsnmpd/Makefile
  head/usr.sbin/bsnmpd/modules/snmp_bridge/Makefile
  head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_addrs.c
  head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_if.c
  head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_pf.c
  head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_port.c
  head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_snmp.c
  head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_sys.c
  head/usr.sbin/bsnmpd/modules/snmp_hast/Makefile
  head/usr.sbin/bsnmpd/modules/snmp_pf/Makefile
  head/usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c
  head/usr.sbin/bsnmpd/modules/snmp_target/Makefile
  head/usr.sbin/bsnmpd/modules/snmp_usm/Makefile
  head/usr.sbin/bsnmpd/modules/snmp_vacm/Makefile
  head/usr.sbin/bsnmpd/modules/snmp_wlan/Makefile
  head/usr.sbin/bsnmpd/modules/snmp_wlan/wlan_snmp.c
  head/usr.sbin/bsnmpd/modules/snmp_wlan/wlan_sys.c

Modified: head/contrib/bsnmp/VERSION
==============================================================================
--- head/contrib/bsnmp/VERSION  Tue Jul  3 05:56:23 2018        (r335884)
+++ head/contrib/bsnmp/VERSION  Tue Jul  3 08:44:40 2018        (r335885)
@@ -1 +1 @@
-1.12
+1.13

Modified: head/contrib/bsnmp/gensnmptree/gensnmptree.1
==============================================================================
--- head/contrib/bsnmp/gensnmptree/gensnmptree.1        Tue Jul  3 05:56:23 
2018        (r335884)
+++ head/contrib/bsnmp/gensnmptree/gensnmptree.1        Tue Jul  3 08:44:40 
2018        (r335885)
@@ -2,7 +2,7 @@
 .\" Copyright (c) 2001-2005
 .\"    Fraunhofer Institute for Open Communication Systems (FhG Fokus).
 .\"    All rights reserved.
-.\" Copyright (c) 2006
+.\" Copyright (c) 2006,2018
 .\"    Hartmut Brandt
 .\"    All rights reserved.
 .\"
@@ -31,7 +31,7 @@
 .\"
 .\" $Begemot: gensnmptree.1 383 2006-05-30 07:40:49Z brandt_h $
 .\"
-.Dd May 26, 2006
+.Dd June 29, 2018
 .Dt GENSNMPTREE 1
 .Os
 .Sh NAME
@@ -39,7 +39,7 @@
 .Nd "generate C and header files from a MIB description file"
 .Sh SYNOPSIS
 .Nm
-.Op Fl dEehlt
+.Op Fl dEeFfhlt
 .Op Fl I Ar directory
 .Op Fl i Ar infile
 .Op Fl p Ar prefix
@@ -99,6 +99,26 @@ is the length of the OID.
 .It Va OID_ Ns Ar name
 is the last component of the OID.
 .El
+.It Fl F
+Together with
+.Fl E
+causes
+.Nm
+instead of the generation of enum definitions the generation of
+functions for checking a value to be one of the enumeration variants and
+for conversion between strings and the enum. The file is sent to standard
+output and is meant to be included into a C-file for compilation.
+.It Fl f
+This flag can be used together with
+.Fl E
+or when generating the tree files. It causes
+.Nm
+to emit static inline functions for checking a value to be one of the
+enumeration values and for conversion between strings and the enum.
+If used when generating the tree files, the preprocessor symbol
+.Ar SNMPTREE_TYPES
+must be defined when including the tree header file for these definitions
+to become visible.
 .It Fl h
 Print a short help page.
 .It Fl I Ar directory
@@ -116,6 +136,36 @@ Instead of normal output print the resulting tree.
 Prefix the file names and the table name with
 .Ar prefix .
 .El
+.Pp
+The following functions are generated by
+.Fl f
+or
+.Fl F :
+.Pp
+.Ft static inline int
+.Fn isok_EnumName "enum EnumName" ;
+.Pp
+.Ft static inline const char *
+.Fn tostr_EnumName "enum EnumName" ;
+.Pp
+.Ft static inline int
+.Fn fromstr_EnumName "const char *" "enum EnumName *" ;
+.Pp
+The
+.Fa EnumName
+is replaced with the enumeration name.
+.Fn isok_EnumName
+returns 1 if the argument is one of the valid enum values and 0 otherwise.
+.Fn tostr_EnumName
+returns a string representation of the enumeration value.
+If the values is not one of the legal values
+.Ar EnumName???
+is returned.
+.Fn fromstr_EnumName
+returns 1 if the string represents one of the legal enumeration values and
+0 otherwise.
+If 1 is return the variable pointed to by the second argument is set to
+the enumeration value.
 .Sh MIBS
 The syntax of the MIB description file can formally be specified as follows:
 .Bd -unfilled -offset indent

Modified: head/contrib/bsnmp/gensnmptree/gensnmptree.c
==============================================================================
--- head/contrib/bsnmp/gensnmptree/gensnmptree.c        Tue Jul  3 05:56:23 
2018        (r335884)
+++ head/contrib/bsnmp/gensnmptree/gensnmptree.c        Tue Jul  3 08:44:40 
2018        (r335885)
@@ -3,7 +3,7 @@
  *     Fraunhofer Institute for Open Communication Systems (FhG Fokus).
  *     All rights reserved.
  *
- * Copyright (c) 2004-2006
+ * Copyright (c) 2004-2006,2018
  *     Hartmut Brandt.
  *     All rights reserved.
  *
@@ -110,18 +110,21 @@ static int debug;
 
 static const char usgtxt[] = "\
 Generate SNMP tables.\n\
-usage: gensnmptree [-dEehlt] [-I directory] [-i infile] [-p prefix]\n\
+$Id$\n\
+usage: gensnmptree [-dEeFfhlt] [-I directory] [-i infile] [-p prefix]\n\
            [name]...\n\
 options:\n\
   -d           debug mode\n\
-  -E           extract the named enums and bits only\n\
+  -E           extract the named or all enums and bits only\n\
   -e           extract the named oids or enums\n\
+  -F           generate functions for -E into a .c file\n\
+  -f           generate functions for -E into the header\n\
   -h           print this info\n\
   -I directory add directory to include path\n\
   -i ifile     read from the named file instead of stdin\n\
   -l           generate local include directives\n\
   -p prefix    prepend prefix to file and variable names\n\
-  -t           generated a .def file\n\
+  -t           generate a .def file\n\
 ";
 
 /*
@@ -420,10 +423,9 @@ static const struct {
 
 /* arbitrary upper limit on node names and function names */
 #define        MAXSTR  1000
-char   str[MAXSTR];
-u_long val;            /* integer values */
-int    all_cond;       /* all conditions are true */
-int    saved_token = -1;
+static char    str[MAXSTR];
+static u_long  val;            /* integer values */
+static int     saved_token = -1;
 
 /*
  * Report an error and exit.
@@ -1065,6 +1067,7 @@ gen_table(FILE *fp, struct node *node)
 #ifdef HAVE_STDINT_H
        fprintf(fp, "#include <stdint.h>\n");
 #endif
+       fprintf(fp, "#include <string.h>\n");
        if (localincs) {
                fprintf(fp, "#include \"asn1.h\"\n");
                fprintf(fp, "#include \"snmp.h\"\n");
@@ -1191,6 +1194,15 @@ extract(FILE *fp, const struct node *np, struct asn_oi
        return (1);
 }
 
+/**
+ * Extract the named OID.
+ *
+ * \param fp           file to extract to
+ * \param root         root of the tree
+ * \param object       name of the object to extract
+ *
+ * \return 0 on success, -1 if the object was not found
+ */
 static int
 gen_extract(FILE *fp, const struct node *root, char *object)
 {
@@ -1378,6 +1390,13 @@ unminus(FILE *fp, const char *s)
        }
 }
 
+/**
+ * Generate a definition for the enum packed into a guard against multiple
+ * definitions.
+ *
+ * \param fp   file to write definition to
+ * \param t    type
+ */
 static void
 gen_enum(FILE *fp, const struct type *t)
 {
@@ -1402,7 +1421,7 @@ gen_enum(FILE *fp, const struct type *t)
        fprintf(fp, "#define    STROFF_%s %ld\n", t->name, min);
        fprintf(fp, "#define    STRING_%s \\\n", t->name);
        TAILQ_FOREACH(e, &t->enums, link) {
-               fprintf(fp, "\t[%ld] \"%s_", e->value - min, t->name);
+               fprintf(fp, "\t[%ld] = \"%s_", e->value - min, t->name);
                unminus(fp, e->name);
                fprintf(fp, "\",\\\n");
        }
@@ -1410,35 +1429,189 @@ gen_enum(FILE *fp, const struct type *t)
        fprintf(fp, "#endif /* %s_defined__ */\n", t->name);
 }
 
+/**
+ * Generate helper functions for an enum.
+ *
+ * We always generate a switch statement for the isok function. The compiler
+ * optimizes this into range checks if possible.
+ *
+ * \param fp           file to write to
+ * \param t            type
+ * \param ccode                generate externally visible non-inline functions
+ */
 static void
-gen_enums(FILE *fp)
+gen_enum_funcs(FILE *fp, const struct type *t, int ccode)
 {
+       fprintf(fp, "\n");
+
+       if (!ccode)
+               fprintf(fp, "static inline ");
+       fprintf(fp, "int\n");
+       fprintf(fp, "isok_%s(enum %s s)\n", t->name, t->name);
+       fprintf(fp, "{\n");
+       fprintf(fp, "   switch (s) {\n");
+
+       const struct enums *e;
+       TAILQ_FOREACH(e, &t->enums, link) {
+               fprintf(fp, "\t  case %s_", t->name);
+               unminus(fp, e->name);
+               fprintf(fp, ":\n");
+       }
+
+       fprintf(fp, "           return (1);\n");
+       fprintf(fp, "   }\n");
+       fprintf(fp, "   return (0);\n");
+       fprintf(fp, "}\n\n");
+
+       if (!ccode)
+               fprintf(fp, "static inline ");
+       fprintf(fp, "const char *\n");
+       fprintf(fp, "tostr_%s(enum %s s)\n", t->name, t->name);
+       fprintf(fp, "{\n");
+       fprintf(fp, "   static const char *vals[] = { STRING_%s };\n", t->name);
+       fprintf(fp, "\n");
+       fprintf(fp, "   if (isok_%s(s))\n", t->name);
+       fprintf(fp, "           return (vals[(int)s - STROFF_%s]);\n", t->name);
+       fprintf(fp, "   return (\"%s???\");\n", t->name);
+       fprintf(fp, "}\n\n");
+
+       if (!ccode)
+               fprintf(fp, "static inline ");
+       fprintf(fp, "int\n");
+       fprintf(fp, "fromstr_%s(const char *str, enum %s *s)\n",
+           t->name, t->name);
+       fprintf(fp, "{\n");
+       fprintf(fp, "   static const char *vals[] = { STRING_%s };\n", t->name);
+       fprintf(fp, "\n");
+       fprintf(fp, "   for (size_t i = 0; i < sizeof(vals)/sizeof(vals[0]); 
i++) {\n");
+       fprintf(fp, "           if (vals[i] != NULL && strcmp(vals[i], str) == 
0) {\n");
+       fprintf(fp, "                   *s = i + STROFF_%s;\n", t->name);
+       fprintf(fp, "                   return (1);\n");
+       fprintf(fp, "           }\n");
+       fprintf(fp, "   }\n");
+       fprintf(fp, "   return (0);\n");
+       fprintf(fp, "}\n");
+}
+
+/**
+ * Generate helper functions for an enum. This generates code for a c file.
+ *
+ * \param fp           file to write to
+ * \param name         enum name
+ */
+static int
+gen_enum_funcs_str(FILE *fp, const char *name)
+{
        const struct type *t;
 
        LIST_FOREACH(t, &types, link)
+               if ((t->is_enum || t->is_bits) && strcmp(t->name, name) == 0) {
+                       gen_enum_funcs(fp, t, 1);
+                       return (0);
+               }
+
+       return (-1);
+}
+
+/**
+ * Generate helper functions for all enums.
+ *
+ * \param fp           file to write to
+ * \param ccode                generate externally visible non-inline functions
+ */
+static void
+gen_all_enum_funcs(FILE *fp, int ccode)
+{
+       const struct type *t;
+
+       LIST_FOREACH(t, &types, link)
                if (t->is_enum || t->is_bits)
-                       gen_enum(fp, t);
+                       gen_enum_funcs(fp, t, ccode);
 }
 
+/**
+ * Extract a given enum to the specified file and optionally generate static
+ * inline helper functions for them.
+ *
+ * \param fp           file to print on
+ * \param name         name of the enum
+ * \param gen_funcs    generate the functions too
+ *
+ * \return 0 if found, -1 otherwise
+ */
 static int
-extract_enum(FILE *fp, const char *name)
+extract_enum(FILE *fp, const char *name, int gen_funcs)
 {
        const struct type *t;
 
        LIST_FOREACH(t, &types, link)
                if ((t->is_enum || t->is_bits) && strcmp(t->name, name) == 0) {
                        gen_enum(fp, t);
+                       if (gen_funcs)
+                               gen_enum_funcs(fp, t, 0);
                        return (0);
                }
        return (-1);
 }
 
+/**
+ * Extract all enums to the given file and optionally generate static inline
+ * helper functions for them.
+ *
+ * \param fp           file to print on
+ * \param gen_funcs    generate the functions too
+ */
+static void
+extract_all_enums(FILE *fp, int gen_funcs)
+{
+       const struct type *t;
+
+       LIST_FOREACH(t, &types, link)
+               if (t->is_enum || t->is_bits) {
+                       gen_enum(fp, t);
+                       if (gen_funcs)
+                               gen_enum_funcs(fp, t, 0);
+               }
+}
+
+/**
+ * Extract enums and optionally generate some helper functions for them.
+ *
+ * \param argc         number of arguments
+ * \param argv         arguments (enum names)
+ * \param gen_funcs_h  generate functions into the header file
+ * \param gen_funcs_c  generate a .c file with functions
+ */
+static void
+make_enums(int argc, char *argv[], int gen_funcs_h, int gen_funcs_c)
+{
+       if (gen_funcs_c) {
+               if (argc == 0)
+                       gen_all_enum_funcs(stdout, 1);
+               else {
+                       for (int i = 0; i < argc; i++)
+                               if (gen_enum_funcs_str(stdout, argv[i]))
+                                       errx(1, "enum not found: %s", argv[i]);
+               }
+       } else {
+               if (argc == 0)
+                       extract_all_enums(stdout, gen_funcs_h);
+               else {
+                       for (int i = 0; i < argc; i++)
+                               if (extract_enum(stdout, argv[i], gen_funcs_h))
+                                       errx(1, "enum not found: %s", argv[i]);
+               }
+       }
+}
+
 int
 main(int argc, char *argv[])
 {
        int do_extract = 0;
        int do_tree = 0;
        int do_enums = 0;
+       int gen_funcs_h = 0;
+       int gen_funcs_c = 0;
        int opt;
        struct node *root;
        char fname[MAXPATHLEN + 1];
@@ -1446,17 +1619,13 @@ main(int argc, char *argv[])
        FILE *fp;
        char *infile = NULL;
 
-       while ((opt = getopt(argc, argv, "dEehI:i:lp:t")) != EOF)
+       while ((opt = getopt(argc, argv, "dEeFfhI:i:lp:t")) != EOF)
                switch (opt) {
 
                  case 'd':
                        debug = 1;
                        break;
 
-                 case 'h':
-                       fprintf(stderr, "%s", usgtxt);
-                       exit(0);
-
                  case 'E':
                        do_enums = 1;
                        break;
@@ -1465,6 +1634,18 @@ main(int argc, char *argv[])
                        do_extract = 1;
                        break;
 
+                 case 'F':
+                       gen_funcs_c = 1;
+                       break;
+
+                 case 'f':
+                       gen_funcs_h = 1;
+                       break;
+
+                 case 'h':
+                       fprintf(stderr, "%s", usgtxt);
+                       exit(0);
+
                  case 'I':
                        path_new(optarg);
                        break;
@@ -1493,9 +1674,16 @@ main(int argc, char *argv[])
                errx(1, "conflicting options -e/-t/-E");
        if (!do_extract && !do_enums && argc != optind)
                errx(1, "no arguments allowed");
-       if ((do_extract || do_enums) && argc == optind)
+       if (do_extract && argc == optind)
                errx(1, "no objects specified");
 
+       if ((gen_funcs_h || gen_funcs_c) && (do_extract || do_tree))
+               errx(1, "-f and -F not allowed with -e or -t");
+       if (gen_funcs_c && !do_enums)
+               errx(1, "-F requires -E");
+       if (gen_funcs_h && gen_funcs_c)
+               errx(1, "-f and -F are mutually exclusive");
+
        if (infile == NULL) {
                input_new(stdin, NULL, "<stdin>");
        } else {
@@ -1508,7 +1696,8 @@ main(int argc, char *argv[])
        while ((tok = gettoken()) != TOK_EOF)
                merge(&root, parse_top(tok));
 
-       check_tree(root);
+       if (root)
+               check_tree(root);
 
        if (do_extract) {
                while (optind < argc) {
@@ -1519,11 +1708,8 @@ main(int argc, char *argv[])
                return (0);
        }
        if (do_enums) {
-               while (optind < argc) {
-                       if (extract_enum(stdout, argv[optind]))
-                               errx(1, "enum not found: %s", argv[optind]);
-                       optind++;
-               }
+               make_enums(argc - optind, argv + optind,
+                   gen_funcs_h, gen_funcs_c);
                return (0);
        }
        if (do_tree) {
@@ -1536,7 +1722,7 @@ main(int argc, char *argv[])
        gen_header(fp, root, PREFIX_LEN, NULL);
 
        fprintf(fp, "\n#ifdef SNMPTREE_TYPES\n");
-       gen_enums(fp);
+       extract_all_enums(fp, gen_funcs_h);
        fprintf(fp, "\n#endif /* SNMPTREE_TYPES */\n\n");
 
        fprintf(fp, "#define %sCTREE_SIZE %u\n", file_prefix, tree_size);

Modified: head/contrib/bsnmp/lib/snmp.h
==============================================================================
--- head/contrib/bsnmp/lib/snmp.h       Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/bsnmp/lib/snmp.h       Tue Jul  3 08:44:40 2018        
(r335885)
@@ -42,6 +42,9 @@
 
 #include <sys/types.h>
 
+#define        BSNMP_MAJOR     1
+#define        BSNMP_MINOR     13
+
 #define SNMP_COMMUNITY_MAXLEN          128
 #define SNMP_MAX_BINDINGS              100
 #define        SNMP_CONTEXT_NAME_SIZ           (32 + 1)

Modified: head/contrib/bsnmp/lib/tc.def
==============================================================================
--- head/contrib/bsnmp/lib/tc.def       Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/bsnmp/lib/tc.def       Tue Jul  3 08:44:40 2018        
(r335885)
@@ -38,3 +38,11 @@ typedef RowStatus ENUM (
        6 destroy
 )
 
+typedef StorageType ENUM (
+       1 other
+       2 volatile
+       3 nonVolatile
+       4 permanent
+       5 readOnly
+)
+

Modified: head/contrib/bsnmp/snmp_mibII/mibII.c
==============================================================================
--- head/contrib/bsnmp/snmp_mibII/mibII.c       Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/bsnmp/snmp_mibII/mibII.c       Tue Jul  3 08:44:40 2018        
(r335885)
@@ -1772,6 +1772,7 @@ mibII_loading(const struct lmodule *mod, int loaded)
        mib_unregister_newif(mod);
 }
 
+extern const struct snmp_module config;
 const struct snmp_module config = {
        "This module implements the interface and ip groups.",
        mibII_init,

Modified: head/contrib/bsnmp/snmp_mibII/mibII_route.c
==============================================================================
--- head/contrib/bsnmp/snmp_mibII/mibII_route.c Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/bsnmp/snmp_mibII/mibII_route.c Tue Jul  3 08:44:40 2018        
(r335885)
@@ -47,7 +47,7 @@ struct sroute {
        uint8_t         type;
        uint8_t         proto;
 };
-RB_HEAD(sroutes, sroute) sroutes = RB_INITIALIZER(&sroutes);
+static RB_HEAD(sroutes, sroute) sroutes = RB_INITIALIZER(&sroutes);
 
 RB_PROTOTYPE(sroutes, sroute, link, sroute_compare);
 

Modified: head/contrib/bsnmp/snmp_ntp/snmp_ntp.c
==============================================================================
--- head/contrib/bsnmp/snmp_ntp/snmp_ntp.c      Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/bsnmp/snmp_ntp/snmp_ntp.c      Tue Jul  3 08:44:40 2018        
(r335885)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005
+ * Copyright (c) 2005,2018
  *     Hartmut Brandt.
  *     All rights reserved.
  *
@@ -53,6 +53,8 @@
 
 #include "support.h"
 #include "snmpmod.h"
+
+#define        SNMPTREE_TYPES
 #include "ntp_tree.h"
 #include "ntp_oid.h"
 

Modified: head/contrib/bsnmp/snmp_target/target_snmp.c
==============================================================================
--- head/contrib/bsnmp/snmp_target/target_snmp.c        Tue Jul  3 05:56:23 
2018        (r335884)
+++ head/contrib/bsnmp/snmp_target/target_snmp.c        Tue Jul  3 08:44:40 
2018        (r335885)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2010 The FreeBSD Foundation
+ * Copyright (c) 2010,2018 The FreeBSD Foundation
  * All rights reserved.
  *
  * This software was developed by Shteryana Sotirova Shopova under
@@ -43,6 +43,7 @@
 #include "snmp.h"
 #include "snmpmod.h"
 
+#define SNMPTREE_TYPES
 #include "target_tree.h"
 #include "target_oid.h"
 
@@ -826,9 +827,10 @@ target_dump(void)
        /* XXX: dump the module stats & list of mgmt targets */
 }
 
-const char target_comment[] = \
+static const char target_comment[] = \
 "This module implements SNMP Management Target MIB Module defined in RFC 
3413.";
 
+extern const struct snmp_module config;
 const struct snmp_module config = {
        .comment =      target_comment,
        .init =         target_init,

Modified: head/contrib/bsnmp/snmp_target/target_tree.def
==============================================================================
--- head/contrib/bsnmp/snmp_target/target_tree.def      Tue Jul  3 05:56:23 
2018        (r335884)
+++ head/contrib/bsnmp/snmp_target/target_tree.def      Tue Jul  3 08:44:40 
2018        (r335885)
@@ -29,24 +29,7 @@
 # $FreeBSD$
 #
 
-#include "tc.def"
-
-typedef RowStatus ENUM (
-       1 active
-       2 notInService
-       3 notReady
-       4 createAndGo
-       5 createAndWait
-       6 destroy
-)
-
-typedef StorageType ENUM (
-       1 other
-       2 volatile
-       3 nonVolatile
-       4 permanent
-       5 readOnly
-)
+include "tc.def"
 
 (1 internet
   (6 snmpV2

Modified: head/contrib/bsnmp/snmp_usm/usm_snmp.c
==============================================================================
--- head/contrib/bsnmp/snmp_usm/usm_snmp.c      Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/bsnmp/snmp_usm/usm_snmp.c      Tue Jul  3 08:44:40 2018        
(r335885)
@@ -43,6 +43,7 @@
 #include "snmp.h"
 #include "snmpmod.h"
 
+#define        SNMPTREE_TYPES
 #include "usm_tree.h"
 #include "usm_oid.h"
 
@@ -604,9 +605,10 @@ usm_dump(void)
                    privstr[uuser->suser.priv_proto]);
 }
 
-const char usm_comment[] = \
+static const char usm_comment[] = \
 "This module implements SNMP User-based Security Model defined in RFC 3414.";
 
+extern const struct snmp_module config;
 const struct snmp_module config = {
        .comment =      usm_comment,
        .init =         usm_init,

Modified: head/contrib/bsnmp/snmp_usm/usm_tree.def
==============================================================================
--- head/contrib/bsnmp/snmp_usm/usm_tree.def    Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/bsnmp/snmp_usm/usm_tree.def    Tue Jul  3 08:44:40 2018        
(r335885)
@@ -29,24 +29,7 @@
 # $FreeBSD$
 #
 
-#include "tc.def"
-
-typedef RowStatus ENUM (
-       1 active
-       2 notInService
-       3 notReady
-       4 createAndGo
-       5 createAndWait
-       6 destroy
-)
-
-typedef StorageType ENUM (
-       1 other
-       2 volatile
-       3 nonVolatile
-       4 permanent
-       5 readOnly
-)
+include "tc.def"
 
 (1 internet
   (6 snmpV2

Modified: head/contrib/bsnmp/snmp_vacm/vacm_snmp.c
==============================================================================
--- head/contrib/bsnmp/snmp_vacm/vacm_snmp.c    Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/bsnmp/snmp_vacm/vacm_snmp.c    Tue Jul  3 08:44:40 2018        
(r335885)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2010 The FreeBSD Foundation
+ * Copyright (c) 2010,2018 The FreeBSD Foundation
  * All rights reserved.
  *
  * This software was developed by Shteryana Sotirova Shopova under
@@ -43,6 +43,7 @@
 #include "snmp.h"
 #include "snmpmod.h"
 
+#define        SNMPTREE_TYPES
 #include "vacm_tree.h"
 #include "vacm_oid.h"
 
@@ -1012,9 +1013,10 @@ vacm_dump(void)
                    "excluded":"included");
 }
 
-const char vacm_comment[] = \
+static const char vacm_comment[] = \
 "This module implements SNMP View-based Access Control Model defined in RFC 
3415.";
 
+extern const struct snmp_module config;
 const struct snmp_module config = {
        .comment =      vacm_comment,
        .init =         vacm_init,

Modified: head/contrib/bsnmp/snmp_vacm/vacm_tree.def
==============================================================================
--- head/contrib/bsnmp/snmp_vacm/vacm_tree.def  Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/bsnmp/snmp_vacm/vacm_tree.def  Tue Jul  3 08:44:40 2018        
(r335885)
@@ -29,24 +29,7 @@
 # $FreeBSD$
 #
 
-#include "tc.def"
-
-typedef RowStatus ENUM (
-       1 active
-       2 notInService
-       3 notReady
-       4 createAndGo
-       5 createAndWait
-       6 destroy
-)
-
-typedef StorageType ENUM (
-       1 other
-       2 volatile
-       3 nonVolatile
-       4 permanent
-       5 readOnly
-)
+include "tc.def"
 
 (1 internet
   (6 snmpV2

Modified: head/contrib/bsnmp/snmpd/main.c
==============================================================================
--- head/contrib/bsnmp/snmpd/main.c     Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/bsnmp/snmpd/main.c     Tue Jul  3 08:44:40 2018        
(r335885)
@@ -927,7 +927,7 @@ fd_resume(void *p)
 #ifdef USE_LIBBEGEMOT
        if (f->id >= 0)
                return (0);
-       if ((f->id = poll_register(f->fd, input, f, POLL_IN)) < 0) {
+       if ((f->id = poll_register(f->fd, input, f, RPOLL_IN)) < 0) {
                err = errno;
                syslog(LOG_ERR, "select fd %d: %m", f->fd);
                errno = err;

Modified: head/contrib/bsnmp/snmpd/trans_udp.c
==============================================================================
--- head/contrib/bsnmp/snmpd/trans_udp.c        Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/bsnmp/snmpd/trans_udp.c        Tue Jul  3 08:44:40 2018        
(r335885)
@@ -328,7 +328,7 @@ udp_recv(struct tport *tp, struct port_input *pi)
                            sizeof(struct in_addr));
                if (cmsg->cmsg_level == SOL_SOCKET &&
                    cmsg->cmsg_type == SCM_CREDS)
-                       cred = (struct sockcred *)CMSG_DATA(cmsg);
+                       cred = (struct sockcred *)(void *)CMSG_DATA(cmsg);
        }
 
        if (pi->cred)

Modified: head/contrib/bsnmp/snmpd/trap.c
==============================================================================
--- head/contrib/bsnmp/snmpd/trap.c     Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/bsnmp/snmpd/trap.c     Tue Jul  3 08:44:40 2018        
(r335885)
@@ -54,6 +54,8 @@
 
 #include "snmpmod.h"
 #include "snmpd.h"
+
+#define        SNMPTREE_TYPES
 #include "tree.h"
 #include "oid.h"
 

Modified: head/contrib/bsnmp/snmpd/tree.def
==============================================================================
--- head/contrib/bsnmp/snmpd/tree.def   Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/bsnmp/snmpd/tree.def   Tue Jul  3 08:44:40 2018        
(r335885)
@@ -31,16 +31,7 @@
 # System group and private Begemot SNMPd MIB.
 #
 
-#include "tc.def"
-
-typedef RowStatus ENUM (
-       1 active
-       2 notInService
-       3 notReady
-       4 createAndGo
-       5 createAndWait
-       6 destroy
-)
+include "tc.def"
 
 (1 internet
   (2 mgmt

Modified: head/contrib/libbegemot/rpoll.c
==============================================================================
--- head/contrib/libbegemot/rpoll.c     Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/libbegemot/rpoll.c     Tue Jul  3 08:44:40 2018        
(r335885)
@@ -44,17 +44,6 @@
 # include <unistd.h>
 # include <sys/time.h>
 
-/*
- * There happens to be linuxes which read siginfo.h when including
- * signal.h, which, for no appearent reason, defines these symbols.
- */
-# ifdef POLL_IN
-#  undef POLL_IN
-# endif
-# ifdef POLL_OUT
-#  undef POLL_OUT
-# endif
-
 # include "rpoll.h"
 
 /*
@@ -339,11 +328,11 @@ poll_build(void)
                if(p->fd >= 0) {
                        f->fd = p->fd;
                        f->events = 0;
-                       if(p->mask & POLL_IN)
+                       if(p->mask & RPOLL_IN)
                                f->events |= poll_in;
-                       if(p->mask & POLL_OUT)
+                       if(p->mask & RPOLL_OUT)
                                f->events |= poll_out;
-                       if(p->mask & POLL_EXCEPT)
+                       if(p->mask & RPOLL_EXCEPT)
                                f->events |= poll_except;
                        f->revents = 0;
                        p->pfd = f++;
@@ -360,11 +349,11 @@ poll_build(void)
                if(p->fd >= 0) {
                        if(p->fd > maxfd)
                                maxfd = p->fd;
-                       if(p->mask & POLL_IN)
+                       if(p->mask & RPOLL_IN)
                                FD_SET(p->fd, &rset);
-                       if(p->mask & POLL_OUT)
+                       if(p->mask & RPOLL_OUT)
                                FD_SET(p->fd, &wset);
-                       if(p->mask & POLL_EXCEPT)
+                       if(p->mask & RPOLL_EXCEPT)
                                FD_SET(p->fd, &xset);
                }
 # endif
@@ -582,27 +571,27 @@ poll_dispatch(int wait)
 
 # ifdef USE_POLL
                                if(regs[idx].pfd) {
-                                       if ((regs[idx].mask & POLL_IN) &&
+                                       if ((regs[idx].mask & RPOLL_IN) &&
                                            (regs[idx].pfd->revents & poll_in))
-                                               mask |= POLL_IN;
-                                       if ((regs[idx].mask & POLL_OUT) &&
+                                               mask |= RPOLL_IN;
+                                       if ((regs[idx].mask & RPOLL_OUT) &&
                                            (regs[idx].pfd->revents & poll_out))
-                                               mask |= POLL_OUT;
-                                       if((regs[idx].mask & POLL_EXCEPT) &&
+                                               mask |= RPOLL_OUT;
+                                       if((regs[idx].mask & RPOLL_EXCEPT) &&
                                            (regs[idx].pfd->revents & 
poll_except))
-                                               mask |= POLL_EXCEPT;
+                                               mask |= RPOLL_EXCEPT;
                                }
 # endif
 # ifdef USE_SELECT
-                               if ((regs[idx].mask & POLL_IN) &&
+                               if ((regs[idx].mask & RPOLL_IN) &&
                                    FD_ISSET(regs[idx].fd, &nrset))
-                                       mask |= POLL_IN;
-                               if ((regs[idx].mask & POLL_OUT) &&
+                                       mask |= RPOLL_IN;
+                               if ((regs[idx].mask & RPOLL_OUT) &&
                                    FD_ISSET(regs[idx].fd, &nwset))
-                                       mask |= POLL_OUT;
-                               if ((regs[idx].mask & POLL_EXCEPT) &&
+                                       mask |= RPOLL_OUT;
+                               if ((regs[idx].mask & RPOLL_EXCEPT) &&
                                    FD_ISSET(regs[idx].fd, &nxset))
-                                       mask |= POLL_EXCEPT;
+                                       mask |= RPOLL_EXCEPT;
 # endif
                                assert(idx < regs_alloc);
 
@@ -723,7 +712,7 @@ main(int argc, char *argv[])
 {
        argv = argv;
        gettimeofday(&start, NULL);
-       poll_register(0, infunc, NULL, POLL_IN);
+       poll_register(0, infunc, NULL, RPOLL_IN);
 
        if (argc < 2) {
                t0 = poll_start_timer(1000, 1, tfunc0, "1 second");

Modified: head/contrib/libbegemot/rpoll.h
==============================================================================
--- head/contrib/libbegemot/rpoll.h     Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/contrib/libbegemot/rpoll.h     Tue Jul  3 08:44:40 2018        
(r335885)
@@ -47,16 +47,11 @@ int poll_start_utimer(unsigned long long usecs, int re
     void *arg);
 void   poll_stop_timer(int);
 
-# if defined(POLL_IN)
-#  undef POLL_IN
-# endif
-# if defined(POLL_OUT)
-#  undef POLL_OUT
-# endif
-
-# define POLL_IN       1
-# define POLL_OUT      2
-# define POLL_EXCEPT   4
+enum {
+       RPOLL_IN        = 1,
+       RPOLL_OUT       = 2,
+       RPOLL_EXCEPT    = 4,
+};
 
 extern int     rpoll_policy;
 extern int     rpoll_trace;

Modified: head/lib/libbsnmp/libbsnmp/Makefile
==============================================================================
--- head/lib/libbsnmp/libbsnmp/Makefile Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/lib/libbsnmp/libbsnmp/Makefile Tue Jul  3 08:44:40 2018        
(r335885)
@@ -20,8 +20,22 @@ LIBADD=      crypto
 .endif
 
 SRCS=  asn1.c snmp.c snmpagent.c snmpclient.c snmpcrypto.c support.c
+SRCS+= snmptc.h
 INCS=  asn1.h snmp.h snmpagent.h snmpclient.h
 MAN=   asn1.3 bsnmpagent.3 bsnmpclient.3 bsnmplib.3
+
+snmptc.h : tc.def
+       (\
+       echo -n "/* autogenerated from tc.def; ";\
+       ls -l -D "%F %T" ${.ALLSRC} | awk '{printf("%s %s", $$6, $$7)}';\
+       echo "*/";\
+       echo "#ifndef snmptc_h_1529923773";\
+       echo "#define snmptc_h_1529923773";\
+       gensnmptree -E -f <${.ALLSRC};\
+       echo "#endif" ; \
+       ) >${.TARGET}
+
+CLEANFILES+= snmptc.h
 
 MLINKS+=       asn1.3  asn_append_oid.3
 MLINKS+=       asn1.3  asn_commit_header.3

Modified: head/share/mk/bsd.snmpmod.mk
==============================================================================
--- head/share/mk/bsd.snmpmod.mk        Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/share/mk/bsd.snmpmod.mk        Tue Jul  3 08:44:40 2018        
(r335885)
@@ -6,14 +6,16 @@ SHLIB_NAME=   snmp_${MOD}.so.${SHLIB_MAJOR}
 SRCS+=         ${MOD}_oid.h ${MOD}_tree.c ${MOD}_tree.h
 CLEANFILES+=   ${MOD}_oid.h ${MOD}_tree.c ${MOD}_tree.h
 CFLAGS+=       -I.
+GENSNMPTREEFLAGS+=     -I${SHAREDIR}/snmpdefs
 
+
 ${MOD}_oid.h: ${MOD}_tree.def ${EXTRAMIBDEFS} ${EXTRAMIBSYMS}
-       cat ${.ALLSRC} | gensnmptree -e ${XSYM} > ${.TARGET}
+       cat ${.ALLSRC} | gensnmptree ${GENSNMPTREEFLAGS} -e ${XSYM} > ${.TARGET}
 
 .ORDER: ${MOD}_tree.c ${MOD}_tree.h
 ${MOD}_tree.h: .NOMETA
 ${MOD}_tree.c ${MOD}_tree.h: ${MOD}_tree.def ${EXTRAMIBDEFS}
-       cat ${.ALLSRC} | gensnmptree -p ${MOD}_
+       cat ${.ALLSRC} | gensnmptree -f ${GENSNMPTREEFLAGS} -p ${MOD}_
 
 .if defined(DEFS)
 FILESGROUPS+=  DEFS

Modified: head/usr.sbin/bsnmpd/bsnmpd/Makefile
==============================================================================
--- head/usr.sbin/bsnmpd/bsnmpd/Makefile        Tue Jul  3 05:56:23 2018        
(r335884)
+++ head/usr.sbin/bsnmpd/bsnmpd/Makefile        Tue Jul  3 08:44:40 2018        
(r335885)
@@ -123,7 +123,6 @@ BMIBSDIR= ${SHAREDIR}/snmp/mibs
 DEFS=  tree.def
 DEFSDIR= ${SHAREDIR}/snmp/defs
 
-CFLAGS+= -DSNMPTREE_TYPES
 CFLAGS+= -I${CONTRIB}/lib -I${CONTRIB}/snmpd -I. -DUSE_LIBBEGEMOT
 CFLAGS+= -DHAVE_STDINT_H -DHAVE_INTTYPES_H -DHAVE_ERR_H -DHAVE_STRLCPY
 LIBADD=        begemot bsnmp
@@ -140,18 +139,15 @@ LIBADD+=  wrap
 .endif
 
 oid.h: tree.def Makefile
-       gensnmptree -e ${XSYM} < ${.ALLSRC:M*.def} > ${.TARGET}
+       gensnmptree -I${CONTRIB}/lib -e ${XSYM} < ${.ALLSRC:M*.def} > ${.TARGET}
 
 .ORDER: tree.c tree.h
 tree.h: .NOMETA
 tree.c tree.h: tree.def
-       gensnmptree -l < ${.ALLSRC}
+       gensnmptree -I${CONTRIB}/lib -l -f < ${.ALLSRC}
 
 MANFILTER=     sed -e 's%@MODPATH@%${LIBDIR}/%g'               \
                    -e 's%@DEFPATH@%${DEFSDIR}/%g'              \
                    -e 's%@MIBSPATH@%${BMIBSDIR}/%g'
-
-NO_WCAST_ALIGN=        yes
-WARNS?=                6
 
 .include <bsd.prog.mk>

Modified: head/usr.sbin/bsnmpd/modules/snmp_bridge/Makefile
==============================================================================
--- head/usr.sbin/bsnmpd/modules/snmp_bridge/Makefile   Tue Jul  3 05:56:23 
2018        (r335884)
+++ head/usr.sbin/bsnmpd/modules/snmp_bridge/Makefile   Tue Jul  3 08:44:40 
2018        (r335885)
@@ -5,7 +5,6 @@
 MOD=   bridge
 SRCS=  bridge_snmp.c bridge_if.c bridge_port.c bridge_addrs.c \
        bridge_pf.c bridge_sys.c
-CFLAGS+= -DSNMPTREE_TYPES
 
 XSYM=  dot1dBridge newRoot topologyChange begemotBridgeNewRoot \
        begemotBridgeTopologyChange begemotBridgeBaseName

Modified: head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_addrs.c
==============================================================================
--- head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_addrs.c     Tue Jul  3 
05:56:23 2018        (r335884)
+++ head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_addrs.c     Tue Jul  3 
08:44:40 2018        (r335885)
@@ -49,6 +49,7 @@
 #include <bsnmp/snmpmod.h>
 #include <bsnmp/snmp_mibII.h>
 
+#define        SNMPTREE_TYPES
 #include "bridge_tree.h"
 #include "bridge_snmp.h"
 

Modified: head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_if.c
==============================================================================
--- head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_if.c        Tue Jul  3 
05:56:23 2018        (r335884)
+++ head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_if.c        Tue Jul  3 
08:44:40 2018        (r335885)
@@ -50,6 +50,7 @@
 #include <bsnmp/snmpmod.h>
 #include <bsnmp/snmp_mibII.h>
 
+#define        SNMPTREE_TYPES
 #include "bridge_tree.h"
 #include "bridge_snmp.h"
 #include "bridge_oid.h"

Modified: head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_pf.c
==============================================================================
--- head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_pf.c        Tue Jul  3 
05:56:23 2018        (r335884)
+++ head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_pf.c        Tue Jul  3 
08:44:40 2018        (r335885)
@@ -48,6 +48,7 @@
 #include <bsnmp/snmpmod.h>
 #include <bsnmp/snmp_mibII.h>
 
+#define        SNMPTREE_TYPES
 #include "bridge_tree.h"
 #include "bridge_snmp.h"
 

Modified: head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_port.c
==============================================================================
--- head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_port.c      Tue Jul  3 
05:56:23 2018        (r335884)

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to