$OpenBSD: patch-ttg_c,v 1.1.1.1 2012/07/16 15:22:05 sthen Exp $

- the net-snmp package does not use PACKAGE_VERSION

- lookup interface id as specified before handling Cisco-style
abbreviations (vl5 -> Vlan5, etc)

--- ttg.c.orig	Mon May 28 21:24:46 2012
+++ ttg.c	Wed Jul  4 12:42:15 2012
@@ -58,7 +58,7 @@ struct snmp_session *ses;
 
 uint64_t getcntr(int dir, oid inst);
 int ifstatus(int type, oid inst);
-int lsif(char *ifname);
+int lsif(char *ifname, int);
 void thr(int ifno);
 void kbprint(uint64_t var);
 void finish(void);
@@ -130,6 +130,7 @@ int main(int argc, char **argv) {
     if((argc-optind)!=3)
         usage();
 
+#if 0
     if(strcmp(netsnmp_get_version(), PACKAGE_VERSION)!=0) {
         fprintf(stderr,
             "ERROR: Net-SNMP version mismatch!\n"
@@ -138,6 +139,7 @@ int main(int argc, char **argv) {
             PACKAGE_VERSION, netsnmp_get_version());
         exit(1);
     }
+#endif
 
     if(UINT32_MAX == UINT64_MAX) {
         fprintf(stderr, "ERROR: UINT32_MAX == UINT64_MAX\n");
@@ -166,11 +168,13 @@ int main(int argc, char **argv) {
     }
 
     if(strcasecmp(argv[optind+2], "list")==0 || strcasecmp(argv[optind+2], "ls")==0) 
-        lsif(NULL);
+        lsif(NULL, 1);
     else if(isdigit((int)argv[optind+2][0]))
         thr(atoi(argv[optind+2]));
     else if(strlen(argv[optind+2])>=2) {
-        if(argv[optind+2][0]=='s' && argv[optind+2][1]=='e') 
+        if(lsif(argv[optind+2], 0))
+	    snprintf(finame, sizeof(finame), "%s", argv[optind+2]);
+        else if(argv[optind+2][0]=='s' && argv[optind+2][1]=='e') 
             snprintf(finame, sizeof(finame), "Serial%s", argv[optind+2]+2);
         else if(argv[optind+2][0]=='e' && argv[optind+2][1]=='t') 
             snprintf(finame, sizeof(finame), "Ethernet%s", argv[optind+2]+2);
@@ -193,9 +197,9 @@ int main(int argc, char **argv) {
         else if(argv[optind+2][0]=='t' && argv[optind+2][1]=='u') 
             snprintf(finame, sizeof(finame), "Tunnel%s", argv[optind+2]+2);
         else
-            thr(lsif(argv[optind+2]));
+            thr(lsif(argv[optind+2], 1));
 
-        thr(lsif(finame));
+        thr(lsif(finame, 1));
     }
     else
         usage();
@@ -372,7 +376,7 @@ void prifalias(oid inst) {
 
 }
 
-int lsif(char *ifname) {
+int lsif(char *ifname, int print) {
     struct snmp_pdu *pdu, *resp;
     oid tmp_oid[MAX_OID_LEN];
     size_t tmp_oid_len;
@@ -395,11 +399,12 @@ int lsif(char *ifname) {
                 tmp[resp->variables->val_len]=0;
                 if(ifname) {
                     if(strcasecmp(ifname, tmp)==0) {
-                        printf("Found \"%s\" at index %lu:\n", tmp, resp->variables->name[resp->variables->name_length-1]);
+                        if(print)
+			    printf("Found \"%s\" at index %lu:\n", tmp, resp->variables->name[resp->variables->name_length-1]);
                         return resp->variables->name[resp->variables->name_length-1];
                     }
                 }
-                else {
+                else if(print) {
                     printf("%lu : \"%s\" [%s/%s]", 
                         resp->variables->name[resp->variables->name_length-1], 
                         tmp, 
@@ -423,7 +428,7 @@ int lsif(char *ifname) {
     }
     if(resp) 
         snmp_free_pdu(resp);
-    if(ifname) {
+    if(print && ifname) {
         fprintf(stderr, "Unable to find \"%s\". Use 'list' to display all interfaces.\n", ifname);
         snmp_close(ses);
         SOCK_CLEANUP;
@@ -439,6 +444,7 @@ void finish(void) {
     kbprint(maxin/interval);
     putchar(' ');
     kbprint(maxout/interval);
+  if(iterations>1) {
     printf( "\n"
         "average throughput: ");
     kbprint((uint64_t)(sumin/(iterations-1)/interval));
@@ -449,6 +455,7 @@ void finish(void) {
     kbprint(minin/interval);
     putchar(' ');
     kbprint(minout/interval);
+  }
     putchar('\n');
     snmp_close(ses);
     SOCK_CLEANUP;
@@ -514,7 +521,8 @@ void version(void) {
         "SNMP Text Traffic Grapher\n"
         "Copyright (c) 2005 - 2009 by Antoni Sawicki\n" 
         "Version %s [Build: %s, %s]\n"
-        "NET-SNMP Libraries=%s Headers=%s\n"
+        "NET-SNMP Libraries=%s\n"
+        /* "NET-SNMP Libraries=%s Headers=%s\n" */
         "GCC Version %s\n"
         "Kilo=%d (default)\n"
         "Max uint32=%u uint64=%llu\n"
@@ -525,7 +533,7 @@ void version(void) {
         "  mike@mk.tc\n"
         "  tommy@ntinternals.net\n"
         "  piston@otel.net\n",
-        VERSION, __DATE__, __TIME__, netsnmp_get_version(), PACKAGE_VERSION, __VERSION__, 
+        VERSION, __DATE__, __TIME__, netsnmp_get_version(), __VERSION__, 
         (int)S_KB, UINT32_MAX, UINT64_MAX);
     exit(0);
 }
