/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _UAPI__LINUX_MROUTE6_H #define _UAPI__LINUX_MROUTE6_H #include <linux/const.h> #include <linux/types.h> #include <linux/sockios.h> #include <linux/in6.h> /* For struct sockaddr_in6. */ /* * Based on the MROUTING 3.5 defines primarily to keep * source compatibility with BSD. * * See the pim6sd code for the original history. * * Protocol Independent Multicast (PIM) data structures included * Carlos Picoto ([email protected]) * */ #define MRT6_BASE … #define MRT6_INIT … #define MRT6_DONE … #define MRT6_ADD_MIF … #define MRT6_DEL_MIF … #define MRT6_ADD_MFC … #define MRT6_DEL_MFC … #define MRT6_VERSION … #define MRT6_ASSERT … #define MRT6_PIM … #define MRT6_TABLE … #define MRT6_ADD_MFC_PROXY … #define MRT6_DEL_MFC_PROXY … #define MRT6_FLUSH … #define MRT6_MAX … #define SIOCGETMIFCNT_IN6 … #define SIOCGETSGCNT_IN6 … #define SIOCGETRPF … /* MRT6_FLUSH optional flags */ #define MRT6_FLUSH_MFC … #define MRT6_FLUSH_MFC_STATIC … #define MRT6_FLUSH_MIFS … #define MRT6_FLUSH_MIFS_STATIC … #define MAXMIFS … mifbitmap_t; /* User mode code depends on this lot */ mifi_t; #define ALL_MIFS … #ifndef IF_SETSIZE #define IF_SETSIZE … #endif if_mask; #define NIFBITS … if_set; #define IF_SET(n, p) … #define IF_CLR(n, p) … #define IF_ISSET(n, p) … #define IF_COPY(f, t) … #define IF_ZERO(p) … /* * Passed by mrouted for an MRT_ADD_MIF - again we use the * mrouted 3.6 structures for compatibility */ struct mif6ctl { … }; #define MIFF_REGISTER … /* * Cache manipulation structures for mrouted and PIMd */ struct mf6cctl { … }; /* * Group count retrieval for pim6sd */ struct sioc_sg_req6 { … }; /* * To get vif packet counts */ struct sioc_mif_req6 { … }; /* * That's all usermode folks */ /* * Structure used to communicate from kernel to multicast router. * We'll overlay the structure onto an MLD header (not an IPv6 heder like igmpmsg{} * used for IPv4 implementation). This is because this structure will be passed via an * IPv6 raw socket, on which an application will only receiver the payload i.e the data after * the IPv6 header and all the extension headers. (See section 3 of RFC 3542) */ struct mrt6msg { … }; /* ip6mr netlink cache report attributes */ enum { … }; #define IP6MRA_CREPORT_MAX … #endif /* _UAPI__LINUX_MROUTE6_H */