This is the correct patch.

Subject: if-mib: add support for ifAlias

Linux has a way of recording an ifAlias value for each interface.
The value is configurable with iproute utilities or sysfs.

---
 agent/mibgroup/if-mib/data_access/interface.c       |    6 ++++
 agent/mibgroup/if-mib/data_access/interface_linux.c |   28 ++++++++++++++++++++
 agent/mibgroup/if-mib/ifTable/ifTable_defs.h        |    1 
 include/net-snmp/data_access/interface.h            |    1 
 4 files changed, 36 insertions(+)

--- a/agent/mibgroup/if-mib/data_access/interface.c     2010-08-31 
16:54:49.579990097 -0700
+++ b/agent/mibgroup/if-mib/data_access/interface.c     2010-08-31 
16:55:42.193906713 -0700
@@ -331,6 +331,9 @@ netsnmp_access_interface_entry_free(nets
     if (NULL != entry->descr)
         free(entry->descr);
 
+    if (NULL != entry->alias)
+       free(entry->alias);
+
     if (NULL != entry->paddr)
         free(entry->paddr);
 
@@ -754,6 +757,9 @@ netsnmp_access_interface_entry_overrides
     if(entry->descr && (strlen(entry->descr) > 255))
         entry->descr[255] = 0;
 
+    if(entry->alias && (strlen(entry->alias) > 255))
+        entry->alias[255] = 0;
+
     if_ptr =
         netsnmp_access_interface_entry_overrides_get(entry->name);
     if (if_ptr) {
--- a/agent/mibgroup/if-mib/ifTable/ifTable_defs.h      2010-08-31 
16:54:49.623991694 -0700
+++ b/agent/mibgroup/if-mib/ifTable/ifTable_defs.h      2010-08-31 
16:55:42.197906859 -0700
@@ -1,4 +1,5 @@
 #define ifDescr ifentry->descr
+#define ifAlias ifentry->alias
 #define ifType ifentry->type
 #define ifMtu ifentry->mtu
 #define ifSpeed ifentry->speed
--- a/include/net-snmp/data_access/interface.h  2010-08-31 16:54:49.643992419 
-0700
+++ b/include/net-snmp/data_access/interface.h  2010-08-31 16:55:42.197906859 
-0700
@@ -149,6 +149,7 @@ typedef struct netsnmp_interface_entry_s
      */
     char   *name;
     char   *descr;
+    char   *alias;
     int     type;
     u_int   speed;
     u_int   speed_high;
--- a/agent/mibgroup/if-mib/data_access/interface_linux.c       2010-08-31 
16:54:49.599990824 -0700
+++ b/agent/mibgroup/if-mib/data_access/interface_linux.c       2010-08-31 
16:55:42.197906859 -0700
@@ -89,6 +89,9 @@ pthread_t thread1;
  
 static void *netsnmp_prefix_listen(void *formal);
 #endif
+
+#define SYSFS_CLASS_NET_IFALIAS        "/sys/class/net/%s/ifalias"
+
 void
 netsnmp_arch_interface_init(void)
 {
@@ -234,6 +237,27 @@ _arch_interface_has_ipv6(oid if_index, u
  * @internal
  */
 static void
+_arch_interface_ifalias_get(netsnmp_interface_entry *entry)
+{
+    FILE           *fin;
+    char            line[256];
+
+    snprintf(line,sizeof(line), SYSFS_CLASS_NET_IFALIAS, entry->name);
+    if (!(fin = fopen(line, "r"))) {
+        DEBUGMSGTL(("access:interface",
+                    "Failed to open %s\n", line));
+       return;
+    }
+    if (fgets(line, sizeof(line), fin)) {
+        if (line[strlen(line) - 1] == '\n')
+            line[strlen(line) - 1] = '\0';
+
+       entry->alias = strdup(line);
+    }
+    fclose(fin);
+}
+
+static void
 _arch_interface_flags_v4_get(netsnmp_interface_entry *entry)
 {
     FILE           *fin;
@@ -617,6 +641,10 @@ netsnmp_arch_interface_container_load(ne
          * xxx-rks: get descr by linking mem from /proc/pci and /proc/iomem
          */
 
+       /*
+        * get interface alias
+        */
+       _arch_interface_ifalias_get(entry);
 
         /*
          * use ioctls for some stuff


-- 

------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to