rtnetlink/
multicast.rs

1// SPDX-License-Identifier: MIT
2
3// const RTNLGRP_NONE: u32 = 0;
4const RTNLGRP_LINK: u32 = 1;
5const RTNLGRP_NOTIFY: u32 = 2;
6const RTNLGRP_NEIGH: u32 = 3;
7const RTNLGRP_TC: u32 = 4;
8const RTNLGRP_IPV4_IFADDR: u32 = 5;
9const RTNLGRP_IPV4_MROUTE: u32 = 6;
10const RTNLGRP_IPV4_ROUTE: u32 = 7;
11const RTNLGRP_IPV4_RULE: u32 = 8;
12const RTNLGRP_IPV6_IFADDR: u32 = 9;
13const RTNLGRP_IPV6_MROUTE: u32 = 10;
14const RTNLGRP_IPV6_ROUTE: u32 = 11;
15const RTNLGRP_IPV6_IFINFO: u32 = 12;
16const RTNLGRP_DECNET_IFADDR: u32 = 13;
17// const RTNLGRP_NOP2: u32 = 14
18const RTNLGRP_DECNET_ROUTE: u32 = 15;
19const RTNLGRP_DECNET_RULE: u32 = 16;
20// const RTNLGRP_NOP4: u32 = 17;
21const RTNLGRP_IPV6_PREFIX: u32 = 18;
22const RTNLGRP_IPV6_RULE: u32 = 19;
23const RTNLGRP_ND_USEROPT: u32 = 20;
24const RTNLGRP_PHONET_IFADDR: u32 = 21;
25const RTNLGRP_PHONET_ROUTE: u32 = 22;
26const RTNLGRP_DCB: u32 = 23;
27const RTNLGRP_IPV4_NETCONF: u32 = 24;
28const RTNLGRP_IPV6_NETCONF: u32 = 25;
29const RTNLGRP_MDB: u32 = 26;
30const RTNLGRP_MPLS_ROUTE: u32 = 27;
31const RTNLGRP_NSID: u32 = 28;
32const RTNLGRP_MPLS_NETCONF: u32 = 29;
33const RTNLGRP_IPV4_MROUTE_R: u32 = 30;
34const RTNLGRP_IPV6_MROUTE_R: u32 = 31;
35const RTNLGRP_NEXTHOP: u32 = 32;
36const RTNLGRP_BRVLAN: u32 = 33;
37const RTNLGRP_MCTP_IFADDR: u32 = 34;
38const RTNLGRP_TUNNEL: u32 = 35;
39const RTNLGRP_STATS: u32 = 36;
40const RTNLGRP_IPV4_MCADDR: u32 = 37;
41const RTNLGRP_IPV6_MCADDR: u32 = 38;
42const RTNLGRP_IPV6_ACADDR: u32 = 39;
43
44#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
45#[repr(u32)]
46#[non_exhaustive]
47pub enum MulticastGroup {
48    Link = RTNLGRP_LINK,
49    Notify = RTNLGRP_NOTIFY,
50    Neigh = RTNLGRP_NEIGH,
51    Tc = RTNLGRP_TC,
52    Ipv4Ifaddr = RTNLGRP_IPV4_IFADDR,
53    Ipv4Mroute = RTNLGRP_IPV4_MROUTE,
54    Ipv4Route = RTNLGRP_IPV4_ROUTE,
55    Ipv4Rule = RTNLGRP_IPV4_RULE,
56    Ipv6Ifaddr = RTNLGRP_IPV6_IFADDR,
57    Ipv6Mroute = RTNLGRP_IPV6_MROUTE,
58    Ipv6Route = RTNLGRP_IPV6_ROUTE,
59    Ipv6Ifinfo = RTNLGRP_IPV6_IFINFO,
60    DecnetIfaddr = RTNLGRP_DECNET_IFADDR,
61    DecnetRoute = RTNLGRP_DECNET_ROUTE,
62    DecnetRule = RTNLGRP_DECNET_RULE,
63    Ipv6Prefix = RTNLGRP_IPV6_PREFIX,
64    Ipv6Rule = RTNLGRP_IPV6_RULE,
65    NdUseropt = RTNLGRP_ND_USEROPT,
66    PhonetIfaddr = RTNLGRP_PHONET_IFADDR,
67    PhonetRoute = RTNLGRP_PHONET_ROUTE,
68    Dcb = RTNLGRP_DCB,
69    Ipv4Netconf = RTNLGRP_IPV4_NETCONF,
70    Ipv6Netconf = RTNLGRP_IPV6_NETCONF,
71    Mdb = RTNLGRP_MDB,
72    MplsRoute = RTNLGRP_MPLS_ROUTE,
73    Nsid = RTNLGRP_NSID,
74    MplsNetconf = RTNLGRP_MPLS_NETCONF,
75    Ipv4MrouteR = RTNLGRP_IPV4_MROUTE_R,
76    Ipv6MrouteR = RTNLGRP_IPV6_MROUTE_R,
77    Nexthop = RTNLGRP_NEXTHOP,
78    Brvlan = RTNLGRP_BRVLAN,
79    MctpIfaddr = RTNLGRP_MCTP_IFADDR,
80    Tunnel = RTNLGRP_TUNNEL,
81    Stats = RTNLGRP_STATS,
82    Ipv4Mcaddr = RTNLGRP_IPV4_MCADDR,
83    Ipv6Mcaddr = RTNLGRP_IPV6_MCADDR,
84    Ipv6Acaddr = RTNLGRP_IPV6_ACADDR,
85}
86
87impl MulticastGroup {
88    /// Whether need to use `netlink_sys::Socket::add_membership()`.
89    pub fn need_via_add_membership(self) -> bool {
90        self as u32 > 31
91    }
92}