Commit 56245cae authored by Nikolay Aleksandrov's avatar Nikolay Aleksandrov Committed by David S. Miller

net: pim: add all RFC7761 message types

Signed-off-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 20bb6ce9
...@@ -10,7 +10,36 @@ ...@@ -10,7 +10,36 @@
/* Message types - V2 */ /* Message types - V2 */
#define PIM_VERSION 2 #define PIM_VERSION 2
#define PIM_REGISTER 1
/* RFC7761, sec 4.9:
* Type
* Types for specific PIM messages. PIM Types are:
*
* Message Type Destination
* ---------------------------------------------------------------------
* 0 = Hello Multicast to ALL-PIM-ROUTERS
* 1 = Register Unicast to RP
* 2 = Register-Stop Unicast to source of Register
* packet
* 3 = Join/Prune Multicast to ALL-PIM-ROUTERS
* 4 = Bootstrap Multicast to ALL-PIM-ROUTERS
* 5 = Assert Multicast to ALL-PIM-ROUTERS
* 6 = Graft (used in PIM-DM only) Unicast to RPF'(S)
* 7 = Graft-Ack (used in PIM-DM only) Unicast to source of Graft
* packet
* 8 = Candidate-RP-Advertisement Unicast to Domain's BSR
*/
enum {
PIM_TYPE_HELLO,
PIM_TYPE_REGISTER,
PIM_TYPE_REGISTER_STOP,
PIM_TYPE_JOIN_PRUNE,
PIM_TYPE_BOOTSTRAP,
PIM_TYPE_ASSERT,
PIM_TYPE_GRAFT,
PIM_TYPE_GRAFT_ACK,
PIM_TYPE_CANDIDATE_RP_ADV
};
#define PIM_NULL_REGISTER cpu_to_be32(0x40000000) #define PIM_NULL_REGISTER cpu_to_be32(0x40000000)
......
...@@ -2053,7 +2053,7 @@ static int pim_rcv(struct sk_buff *skb) ...@@ -2053,7 +2053,7 @@ static int pim_rcv(struct sk_buff *skb)
goto drop; goto drop;
pim = (struct pimreghdr *)skb_transport_header(skb); pim = (struct pimreghdr *)skb_transport_header(skb);
if (pim->type != ((PIM_VERSION << 4) | (PIM_REGISTER)) || if (pim->type != ((PIM_VERSION << 4) | (PIM_TYPE_REGISTER)) ||
(pim->flags & PIM_NULL_REGISTER) || (pim->flags & PIM_NULL_REGISTER) ||
(ip_compute_csum((void *)pim, sizeof(*pim)) != 0 && (ip_compute_csum((void *)pim, sizeof(*pim)) != 0 &&
csum_fold(skb_checksum(skb, 0, skb->len, 0)))) csum_fold(skb_checksum(skb, 0, skb->len, 0))))
......
...@@ -636,7 +636,7 @@ static int pim6_rcv(struct sk_buff *skb) ...@@ -636,7 +636,7 @@ static int pim6_rcv(struct sk_buff *skb)
goto drop; goto drop;
pim = (struct pimreghdr *)skb_transport_header(skb); pim = (struct pimreghdr *)skb_transport_header(skb);
if (pim->type != ((PIM_VERSION << 4) | PIM_REGISTER) || if (pim->type != ((PIM_VERSION << 4) | PIM_TYPE_REGISTER) ||
(pim->flags & PIM_NULL_REGISTER) || (pim->flags & PIM_NULL_REGISTER) ||
(csum_ipv6_magic(&ipv6_hdr(skb)->saddr, &ipv6_hdr(skb)->daddr, (csum_ipv6_magic(&ipv6_hdr(skb)->saddr, &ipv6_hdr(skb)->daddr,
sizeof(*pim), IPPROTO_PIM, sizeof(*pim), IPPROTO_PIM,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment