#ifndef __LINUX_PIM_H #define __LINUX_PIM_H #include <asm/byteorder.h> #ifndef __KERNEL__ struct pim { #if defined(__LITTLE_ENDIAN_BITFIELD) __u8 pim_type:4, /* PIM message type */ pim_ver:4; /* PIM version */ #elif defined(__BIG_ENDIAN_BITFIELD) __u8 pim_ver:4; /* PIM version */ pim_type:4; /* PIM message type */ #endif __u8 pim_rsv; /* Reserved */ __be16 pim_cksum; /* Checksum */ }; #define PIM_MINLEN 8 #endif /* Message types - V1 */ #define PIM_V1_VERSION __constant_htonl(0x10000000) #define PIM_V1_REGISTER 1 /* Message types - V2 */ #define PIM_VERSION 2 #define PIM_REGISTER 1 #if defined(__KERNEL__) #define PIM_NULL_REGISTER __constant_htonl(0x40000000) /* PIMv2 register message header layout (ietf-draft-idmr-pimvsm-v2-00.ps */ struct pimreghdr { __u8 type; __u8 reserved; __be16 csum; __be32 flags; }; struct sk_buff; extern int pim_rcv_v1(struct sk_buff *); #endif #endif