xref: /linux-6.15/include/linux/pim.h (revision d289bf7b)
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