1 #ifndef __LINUX_PIM_H 2 #define __LINUX_PIM_H 3 4 #include <asm/byteorder.h> 5 6 #ifndef __KERNEL__ 7 struct pim { 8 #if defined(__LITTLE_ENDIAN_BITFIELD) 9 __u8 pim_type:4, /* PIM message type */ 10 pim_ver:4; /* PIM version */ 11 #elif defined(__BIG_ENDIAN_BITFIELD) 12 __u8 pim_ver:4; /* PIM version */ 13 pim_type:4; /* PIM message type */ 14 #endif 15 __u8 pim_rsv; /* Reserved */ 16 __be16 pim_cksum; /* Checksum */ 17 }; 18 19 #define PIM_MINLEN 8 20 #endif 21 22 /* Message types - V1 */ 23 #define PIM_V1_VERSION __constant_htonl(0x10000000) 24 #define PIM_V1_REGISTER 1 25 26 /* Message types - V2 */ 27 #define PIM_VERSION 2 28 #define PIM_REGISTER 1 29 30 #if defined(__KERNEL__) 31 #define PIM_NULL_REGISTER __constant_htonl(0x40000000) 32 33 /* PIMv2 register message header layout (ietf-draft-idmr-pimvsm-v2-00.ps */ 34 struct pimreghdr 35 { 36 __u8 type; 37 __u8 reserved; 38 __be16 csum; 39 __be32 flags; 40 }; 41 42 struct sk_buff; 43 extern int pim_rcv_v1(struct sk_buff *); 44 #endif 45 #endif 46