Fix nybble-order bug in PIM printer.
Approved by: jkh
This commit is contained in:
parent
f54042f93f
commit
9537d84e80
@ -17,6 +17,8 @@
|
|||||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
|
||||||
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
*
|
||||||
|
* $FreeBSD$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
@ -168,7 +170,6 @@ ip6_print(register const u_char *bp, register int length)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case IPPROTO_PIM:
|
case IPPROTO_PIM:
|
||||||
(void)printf("PIM");
|
|
||||||
pim_print(cp, len);
|
pim_print(cp, len);
|
||||||
goto end;
|
goto end;
|
||||||
#ifndef IPPROTO_OSPF
|
#ifndef IPPROTO_OSPF
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
|
||||||
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
*
|
||||||
|
* $FreeBSD$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
@ -43,14 +45,14 @@ static const char rcsid[] =
|
|||||||
|
|
||||||
struct pim {
|
struct pim {
|
||||||
u_int8_t pim_typever;
|
u_int8_t pim_typever;
|
||||||
/* upper 4bit: the PIM message type, currently they are:
|
/* upper 4bit: PIM version number; 2 for PIMv2 */
|
||||||
|
/* lower 4bit: the PIM message type, currently they are:
|
||||||
* Hello, Register, Register-Stop, Join/Prune,
|
* Hello, Register, Register-Stop, Join/Prune,
|
||||||
* Bootstrap, Assert, Graft (PIM-DM only),
|
* Bootstrap, Assert, Graft (PIM-DM only),
|
||||||
* Graft-Ack (PIM-DM only), C-RP-Adv
|
* Graft-Ack (PIM-DM only), C-RP-Adv
|
||||||
*/
|
*/
|
||||||
/* lower 4bit: PIM version number; 2 for PIMv2 */
|
#define PIM_VER(x) (((x) & 0xf0) >> 4)
|
||||||
#define PIM_TYPE(x) (((x) & 0xf0) >> 4)
|
#define PIM_TYPE(x) ((x) & 0x0f)
|
||||||
#define PIM_VER(x) ((x) & 0x0f)
|
|
||||||
u_char pim_rsv; /* Reserved */
|
u_char pim_rsv; /* Reserved */
|
||||||
u_short pim_cksum; /* IP style check sum */
|
u_short pim_cksum; /* IP style check sum */
|
||||||
};
|
};
|
||||||
@ -360,11 +362,11 @@ pim_print(register const u_char *bp, register u_int len)
|
|||||||
|
|
||||||
switch(PIM_VER(pim->pim_typever)) {
|
switch(PIM_VER(pim->pim_typever)) {
|
||||||
case 2: /* avoid hardcoding? */
|
case 2: /* avoid hardcoding? */
|
||||||
(void)printf("v2");
|
(void)printf("pim v2");
|
||||||
pimv2_print(bp, len);
|
pimv2_print(bp, len);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
(void)printf("v%d", PIM_VER(pim->pim_typever));
|
(void)printf("pim v%d", PIM_VER(pim->pim_typever));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -557,6 +559,8 @@ pimv2_print(register const u_char *bp, register u_int len)
|
|||||||
ep = (const u_char *)snapend;
|
ep = (const u_char *)snapend;
|
||||||
if (bp >= ep)
|
if (bp >= ep)
|
||||||
return;
|
return;
|
||||||
|
if (ep > bp + len)
|
||||||
|
ep = bp + len;
|
||||||
TCHECK(pim->pim_rsv);
|
TCHECK(pim->pim_rsv);
|
||||||
pimv2_addr_len = pim->pim_rsv;
|
pimv2_addr_len = pim->pim_rsv;
|
||||||
if (pimv2_addr_len != 0)
|
if (pimv2_addr_len != 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user