Lines Matching refs:bp

121 static void pimv2_print(register const u_char *bp, register u_int len, u_int cksum);
124 pimv1_join_prune_print(register const u_char *bp, register u_int len)
130 if (TTEST2(bp[0], 30) && bp[11] == 1 &&
131 ((njoin = EXTRACT_16BITS(&bp[20])) + EXTRACT_16BITS(&bp[22])) == 1) {
134 (void)printf(" RPF %s ", ipaddr_string(bp));
135 hold = EXTRACT_16BITS(&bp[6]);
141 ipaddr_string(&bp[26]), bp[25] & 0x3f,
142 ipaddr_string(&bp[12]));
143 if (EXTRACT_32BITS(&bp[16]) != 0xffffffff)
144 (void)printf("/%s", ipaddr_string(&bp[16]));
146 (bp[24] & 0x01) ? "Sparse" : "Dense",
147 (bp[25] & 0x80) ? " WC" : "",
148 (bp[25] & 0x40) ? "RP" : "SPT");
152 TCHECK2(bp[0], sizeof(struct in_addr));
155 (void)printf(" Upstream Nbr: %s", ipaddr_string(bp));
156 TCHECK2(bp[6], 2);
160 relts_print(EXTRACT_16BITS(&bp[6]));
163 bp += 8;
166 TCHECK2(bp[0], 4);
167 maddrlen = bp[1];
168 addrlen = bp[2];
169 ngroups = bp[3];
170 bp += 4;
177 TCHECK2(bp[0], sizeof(struct in_addr));
178 (void)printf("\n\tGroup: %s", ipaddr_string(bp));
179 TCHECK2(bp[4], sizeof(struct in_addr));
180 if (EXTRACT_32BITS(&bp[4]) != 0xffffffff)
181 (void)printf("/%s", ipaddr_string(&bp[4]));
182 TCHECK2(bp[8], 4);
183 njoin = EXTRACT_16BITS(&bp[8]);
184 nprune = EXTRACT_16BITS(&bp[10]);
186 bp += 12;
195 TCHECK2(bp[0], 6);
197 (bp[0] & 0x01) ? "Sparse " : "Dense ",
198 (bp[1] & 0x80) ? "WC " : "",
199 (bp[1] & 0x40) ? "RP " : "SPT ",
200 ipaddr_string(&bp[2]), bp[1] & 0x3f);
201 bp += 6;
212 pimv1_print(register const u_char *bp, register u_int len)
218 if (bp >= ep)
221 TCHECK(bp[1]);
222 type = bp[1];
227 if (TTEST(bp[8])) {
228 switch (bp[8] >> 4) {
239 (void)printf(" mode-%d", bp[8] >> 4);
244 TCHECK2(bp[10],2);
246 relts_print(EXTRACT_16BITS(&bp[10]));
253 TCHECK2(bp[8], 20); /* ip header */
254 (void)printf(" for %s > %s", ipaddr_string(&bp[20]),
255 ipaddr_string(&bp[24]));
259 TCHECK2(bp[12], sizeof(struct in_addr));
260 (void)printf(" for %s > %s", ipaddr_string(&bp[8]),
261 ipaddr_string(&bp[12]));
266 pimv1_join_prune_print(&bp[8], len - 8);
271 TCHECK2(bp[22], 2);
273 ipaddr_string(&bp[8]));
274 if (EXTRACT_32BITS(&bp[12]) != 0xffffffff)
275 (void)printf("/%s", ipaddr_string(&bp[12]));
276 (void)printf(" RP %s hold ", ipaddr_string(&bp[16]));
277 relts_print(EXTRACT_16BITS(&bp[22]));
282 TCHECK2(bp[16], sizeof(struct in_addr));
283 (void)printf(" for %s > %s", ipaddr_string(&bp[16]),
284 ipaddr_string(&bp[8]));
285 if (EXTRACT_32BITS(&bp[12]) != 0xffffffff)
286 (void)printf("/%s", ipaddr_string(&bp[12]));
287 TCHECK2(bp[24], 4);
289 (bp[20] & 0x80) ? "RP-tree" : "SPT",
290 EXTRACT_32BITS(&bp[20]) & 0x7fffffff,
291 EXTRACT_32BITS(&bp[24]));
296 pimv1_join_prune_print(&bp[8], len - 8);
301 pimv1_join_prune_print(&bp[8], len - 8);
310 if ((bp[4] >> 4) != 1)
311 (void)printf(" [v%d]", bp[4] >> 4);
326 cisco_autorp_print(register const u_char *bp, register u_int len)
332 TCHECK(bp[0]);
334 type = bp[0];
347 TCHECK(bp[1]);
348 numrps = bp[1];
350 TCHECK2(bp[2], 2);
352 hold = EXTRACT_16BITS(&bp[2]);
354 relts_print(EXTRACT_16BITS(&bp[2]));
360 bp += 8; len -= 8;
379 TCHECK2(bp[0], 4);
380 (void)printf(" RP %s", ipaddr_string(bp));
381 TCHECK(bp[4]);
382 switch (bp[4] & 0x3) {
392 if (bp[4] & 0xfc)
393 (void)printf(" [rsvd=0x%02x]", bp[4] & 0xfc);
394 TCHECK(bp[5]);
395 nentries = bp[5];
396 bp += 6; len -= 6;
399 TCHECK2(bp[0], 6);
400 (void)printf("%c%s%s/%d", s, bp[0] & 1 ? "!" : "",
401 ipaddr_string(&bp[2]), bp[1]);
402 if (bp[0] & 0x02) {
405 if (bp[0] & 0xfc) {
406 (void)printf("[rsvd=0x%02x]", bp[0] & 0xfc);
409 bp += 6; len -= 6;
420 pim_print(register const u_char *bp, register u_int len, u_int cksum)
423 register struct pim *pim = (struct pim *)bp;
426 if (bp >= ep)
445 pimv2_print(bp, len, cksum);
524 pimv2_addr_print(const u_char *bp, enum pimv2_addrtype at, int silent)
529 TCHECK(bp[0]);
532 TCHECK(bp[1]);
533 switch (bp[0]) {
547 if (bp[1] != 0)
568 bp += hdrlen;
571 TCHECK2(bp[0], len);
574 (void)printf("%s", ipaddr_string(bp));
579 (void)printf("%s", ip6addr_string(bp));
585 TCHECK2(bp[0], len + 2);
588 (void)printf("%s", ipaddr_string(bp + 2));
589 if (bp[1] != 32)
590 (void)printf("/%u", bp[1]);
596 (void)printf("%s", ip6addr_string(bp + 2));
597 if (bp[1] != 128)
598 (void)printf("/%u", bp[1]);
602 if (bp[0] && !silent) {
604 (void)printf("(0x%02x)", bp[0]);
607 bp[0] & 0x04 ? "S" : "",
608 bp[0] & 0x02 ? "W" : "",
609 bp[0] & 0x01 ? "R" : "");
610 if (bp[0] & 0xf8) {
611 (void) printf("+0x%02x", bp[0] & 0xf8);
625 pimv2_print(register const u_char *bp, register u_int len, u_int cksum)
628 register struct pim *pim = (struct pim *)bp;
632 if (bp >= ep)
634 if (ep > bp + len)
635 ep = bp + len;
645 printf("(%scorrect)", TTEST2(bp[0], len) && cksum ? "in" : "" );
652 bp += 4;
653 while (bp < ep) {
654 TCHECK2(bp[0], 4);
655 otype = EXTRACT_16BITS(&bp[0]);
656 olen = EXTRACT_16BITS(&bp[2]);
657 TCHECK2(bp[0], 4 + olen);
663 bp += 4;
667 relts_print(EXTRACT_16BITS(bp));
676 lan_delay = EXTRACT_16BITS(bp);
677 override_interval = EXTRACT_16BITS(bp+2);
692 printf("%u", EXTRACT_32BITS(bp));
701 (void)printf("0x%08x", EXTRACT_32BITS(bp));
705 (void)printf("v%d", *bp);
706 if (*(bp+1) != 0) {
708 relts_print(*(bp+1));
710 if (EXTRACT_16BITS(bp+2) != 0) {
711 (void)printf(" ?0x%04x?", EXTRACT_16BITS(bp+2));
721 const u_char *ptr = bp;
722 while (ptr < (bp+olen)) {
737 print_unknown_data(bp,"\n\t ",olen);
742 print_unknown_data(bp,"\n\t ",olen);
743 bp += olen;
752 if (!TTEST2(*(bp+4), PIMV2_REGISTER_FLAG_LEN))
758 EXTRACT_32BITS(bp+4)));
760 bp += 8; len -= 8;
762 ip = (struct ip *)bp;
771 ip_print(gndo, bp, len);
775 ip6_print(gndo, bp, len);
786 bp += 4; len -= 4;
787 if (bp >= ep)
790 if ((advance = pimv2_addr_print(bp, pimv2_group, 0)) < 0) {
794 bp += advance; len -= advance;
795 if (bp >= ep)
798 if ((advance = pimv2_addr_print(bp, pimv2_unicast, 0)) < 0) {
802 bp += advance; len -= advance;
852 bp += 4; len -= 4;
854 if (bp >= ep)
857 if ((advance = pimv2_addr_print(bp, pimv2_unicast, 0)) < 0) {
861 bp += advance; len -= advance;
863 if (bp + 4 > ep)
865 ngroup = bp[1];
866 holdtime = EXTRACT_16BITS(&bp[2]);
875 bp += 4; len -= 4;
877 if (bp >= ep)
880 if ((advance = pimv2_addr_print(bp, pimv2_group, 0)) < 0) {
884 bp += advance; len -= advance;
885 if (bp + 4 > ep) {
889 njoin = EXTRACT_16BITS(&bp[0]);
890 nprune = EXTRACT_16BITS(&bp[2]);
892 bp += 4; len -= 4;
895 if ((advance = pimv2_addr_print(bp, pimv2_source, 0)) < 0) {
899 bp += advance; len -= advance;
903 if ((advance = pimv2_addr_print(bp, pimv2_source, 0)) < 0) {
907 bp += advance; len -= advance;
917 bp += 4;
920 if (bp + sizeof(u_int16_t) >= ep) break;
921 (void)printf(" tag=%x", EXTRACT_16BITS(bp));
922 bp += sizeof(u_int16_t);
923 if (bp >= ep) break;
924 (void)printf(" hashmlen=%d", bp[0]);
925 if (bp + 1 >= ep) break;
926 (void)printf(" BSRprio=%d", bp[1]);
927 bp += 2;
930 if (bp >= ep) break;
932 if ((advance = pimv2_addr_print(bp, pimv2_unicast, 0)) < 0) {
936 bp += advance;
938 for (i = 0; bp < ep; i++) {
941 if ((advance = pimv2_addr_print(bp, pimv2_group, 0))
946 bp += advance;
949 if (bp >= ep) {
953 (void)printf(" RPcnt=%d", bp[0]);
954 if (bp + 1 >= ep) {
958 (void)printf(" FRPcnt=%d", frpcnt = bp[1]);
959 bp += 4;
961 for (j = 0; j < frpcnt && bp < ep; j++) {
964 if ((advance = pimv2_addr_print(bp,
970 bp += advance;
972 if (bp + 1 >= ep) {
977 relts_print(EXTRACT_16BITS(bp));
978 if (bp + 2 >= ep) {
982 (void)printf(",prio=%d", bp[2]);
983 bp += 4;
991 bp += 4; len -= 4;
992 if (bp >= ep)
995 if ((advance = pimv2_addr_print(bp, pimv2_group, 0)) < 0) {
999 bp += advance; len -= advance;
1000 if (bp >= ep)
1003 if ((advance = pimv2_addr_print(bp, pimv2_unicast, 0)) < 0) {
1007 bp += advance; len -= advance;
1008 if (bp + 8 > ep)
1010 if (bp[0] & 0x80)
1012 (void)printf(" pref=%u", EXTRACT_32BITS(&bp[0]) & 0x7fffffff);
1013 (void)printf(" metric=%u", EXTRACT_32BITS(&bp[4]));
1019 bp += 4;
1022 if (bp >= ep) break;
1023 (void)printf(" prefix-cnt=%d", bp[0]);
1024 pfxcnt = bp[0];
1025 if (bp + 1 >= ep) break;
1026 (void)printf(" prio=%d", bp[1]);
1027 if (bp + 3 >= ep) break;
1029 relts_print(EXTRACT_16BITS(&bp[2]));
1030 bp += 4;
1033 if (bp >= ep) break;
1035 if ((advance = pimv2_addr_print(bp, pimv2_unicast, 0)) < 0) {
1039 bp += advance;
1042 for (i = 0; i < pfxcnt && bp < ep; i++) {
1044 if ((advance = pimv2_addr_print(bp, pimv2_group, 0))
1049 bp += advance;
1056 if ((advance = pimv2_addr_print(bp, pimv2_unicast, 0)) < 0) {
1060 bp += advance;
1062 if ((advance = pimv2_addr_print(bp, pimv2_group, 0)) < 0) {
1066 bp += advance;
1068 if ((advance = pimv2_addr_print(bp, pimv2_unicast, 0)) < 0) {
1072 bp += advance;
1073 TCHECK2(bp[0], 2);
1075 relts_print(EXTRACT_16BITS(bp));