| #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 |