mirror of https://gitee.com/openkylin/linux.git
net: pim: add common pimhdr struct and helpers
Add the common pimhdr structure and helpers to access it, also cleanup the format of the header file. Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f3a6f592e9
commit
556d299fcb
|
@ -1,6 +1,7 @@
|
|||
#ifndef __LINUX_PIM_H
|
||||
#define __LINUX_PIM_H
|
||||
|
||||
#include <linux/skbuff.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
/* Message types - V1 */
|
||||
|
@ -13,20 +14,47 @@
|
|||
|
||||
#define PIM_NULL_REGISTER cpu_to_be32(0x40000000)
|
||||
|
||||
static inline bool ipmr_pimsm_enabled(void)
|
||||
{
|
||||
return IS_BUILTIN(CONFIG_IP_PIMSM_V1) || IS_BUILTIN(CONFIG_IP_PIMSM_V2);
|
||||
}
|
||||
/* RFC7761, sec 4.9:
|
||||
* The PIM header common to all PIM messages is:
|
||||
* 0 1 2 3
|
||||
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
* |PIM Ver| Type | Reserved | Checksum |
|
||||
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
*/
|
||||
struct pimhdr {
|
||||
__u8 type;
|
||||
__u8 reserved;
|
||||
__be16 csum;
|
||||
};
|
||||
|
||||
/* PIMv2 register message header layout (ietf-draft-idmr-pimvsm-v2-00.ps */
|
||||
struct pimreghdr
|
||||
{
|
||||
struct pimreghdr {
|
||||
__u8 type;
|
||||
__u8 reserved;
|
||||
__be16 csum;
|
||||
__be32 flags;
|
||||
};
|
||||
|
||||
struct sk_buff;
|
||||
extern int pim_rcv_v1(struct sk_buff *);
|
||||
int pim_rcv_v1(struct sk_buff *skb);
|
||||
|
||||
static inline bool ipmr_pimsm_enabled(void)
|
||||
{
|
||||
return IS_BUILTIN(CONFIG_IP_PIMSM_V1) || IS_BUILTIN(CONFIG_IP_PIMSM_V2);
|
||||
}
|
||||
|
||||
static inline struct pimhdr *pim_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct pimhdr *)skb_transport_header(skb);
|
||||
}
|
||||
|
||||
static inline u8 pim_hdr_version(const struct pimhdr *pimhdr)
|
||||
{
|
||||
return pimhdr->type >> 4;
|
||||
}
|
||||
|
||||
static inline u8 pim_hdr_type(const struct pimhdr *pimhdr)
|
||||
{
|
||||
return pimhdr->type & 0xf;
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue