80a9492a33
<linux/mroute.h> needs <linux/types.h>. Avoid including <linux/in.h> in user-space, which conflicts with standard <netinet/in.h>. Add basic struct and constant in <linux/pim.h>. Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
45 lines
921 B
C
45 lines
921 B
C
#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
|