hi all,

pls find attached support for the IS-IS
restart signaling TLV #211; 

/hannes

Index: print-isoclns.c
===================================================================
RCS file: /tcpdump/master/tcpdump/print-isoclns.c,v
retrieving revision 1.32
diff -u -r1.32 print-isoclns.c
--- print-isoclns.c     2001/12/03 09:17:07     1.32
+++ print-isoclns.c     2001/12/09 03:15:58
@@ -100,6 +100,7 @@
 #define TLV_TE_ROUTER_ID       134
 #define TLV_EXT_IP_REACH       135
 #define        TLV_HOSTNAME            137
+#define TLV_RESTART_SIGNALING   211
 #define        TLV_MT_IS_REACH         222
 #define        TLV_MT_SUPPORTED        229
 #define TLV_IP6ADDR             232
@@ -136,6 +137,9 @@
 #define ISIS_MASK_TLV_IP6_IE(x)            ((x)&0x40)
 #define ISIS_MASK_TLV_IP6_SUBTLV(x)        ((x)&0x20)
 
+#define ISIS_MASK_RESTART_RR(x)            ((x)&0x1)
+#define ISIS_MASK_RESTART_RA(x)            ((x)&0x2)
+
 #define ISIS_LSP_TLV_METRIC_SUPPORTED(x)   ((x)&0x80)
 #define ISIS_LSP_TLV_METRIC_IE(x)          ((x)&0x40)
 #define ISIS_LSP_TLV_METRIC_UPDOWN(x)      ((x)&0x80)
@@ -1461,6 +1465,19 @@
            }
            break;
 
+       case TLV_RESTART_SIGNALING:
+           tptr=pptr;
+           printf("Restart Signaling (%u)",len);
+                   if (!TTEST2(*tptr, 3))
+                       goto trunctlv;
+                   
+           printf("\n\t\t\tRestart Request bit %s, Restart Acknowledgement bit 
+%s\n\t\t\tRemaining holding time: %us",
+                   ISIS_MASK_RESTART_RR(*tptr) ? "set" : "clear",
+                  ISIS_MASK_RESTART_RA(*tptr++) ? "set" : "clear",
+                  EXTRACT_16BITS(tptr));
+
+           break;
+
        default:
            printf("unknown TLV, type %d, length %d\n\t\t\t", type, len);
            tptr=pptr;
@@ -1468,10 +1485,14 @@
            for(i=0;i<len;i++) {
                if (!TTEST2(*(tptr+i), 1))
                    goto trunctlv;
-               printf("%02x",*(tptr+i));
-               if (i/2!=(i+1)/2)
+               printf("%02x",*(tptr+i)); /* formatted hex output of unknown TLV data 
+*/
+               if (i%2)
                    printf(" ");
-           }       
+               if (i/16!=(i+1)/16) {
+                 if (i<(len-1))
+                   printf("\n\t\t\t");
+               }
+           }
            break;
        }
 

Reply via email to