linux/include/uapi/linux/mroute.h

/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_MROUTE_H
#define _UAPI__LINUX_MROUTE_H

#include <linux/sockios.h>
#include <linux/types.h>
#include <linux/in.h>		/* For struct in_addr. */

/* Based on the MROUTING 3.5 defines primarily to keep
 * source compatibility with BSD.
 *
 * See the mrouted code for the original history.
 *
 * Protocol Independent Multicast (PIM) data structures included
 * Carlos Picoto ([email protected])
 */

#define MRT_BASE
#define MRT_INIT
#define MRT_DONE
#define MRT_ADD_VIF
#define MRT_DEL_VIF
#define MRT_ADD_MFC
#define MRT_DEL_MFC
#define MRT_VERSION
#define MRT_ASSERT
#define MRT_PIM
#define MRT_TABLE
#define MRT_ADD_MFC_PROXY
#define MRT_DEL_MFC_PROXY
#define MRT_FLUSH
#define MRT_MAX

#define SIOCGETVIFCNT
#define SIOCGETSGCNT
#define SIOCGETRPF

/* MRT_FLUSH optional flags */
#define MRT_FLUSH_MFC
#define MRT_FLUSH_MFC_STATIC
#define MRT_FLUSH_VIFS
#define MRT_FLUSH_VIFS_STATIC

#define MAXVIFS
vifbitmap_t;	/* User mode code depends on this lot */
vifi_t;
#define ALL_VIFS

/* Same idea as select */

#define VIFM_SET(n,m)
#define VIFM_CLR(n,m)
#define VIFM_ISSET(n,m)
#define VIFM_CLRALL(m)
#define VIFM_COPY(mfrom,mto)
#define VIFM_SAME(m1,m2)

/* Passed by mrouted for an MRT_ADD_VIF - again we use the
 * mrouted 3.6 structures for compatibility
 */
struct vifctl {};

#define VIFF_TUNNEL
#define VIFF_SRCRT
#define VIFF_REGISTER
#define VIFF_USE_IFINDEX

/* Cache manipulation structures for mrouted and PIMd */
struct mfcctl {};

/*  Group count retrieval for mrouted */
struct sioc_sg_req {};

/* To get vif packet counts */
struct sioc_vif_req {};

/* This is the format the mroute daemon expects to see IGMP control
 * data. Magically happens to be like an IP packet as per the original
 */
struct igmpmsg {};

/* ipmr netlink table attributes */
enum {};
#define IPMRA_TABLE_MAX

/* ipmr netlink vif attribute format
 * [ IPMRA_TABLE_VIFS ] - nested attribute
 *   [ IPMRA_VIF ] - nested attribute
 *     [ IPMRA_VIFA_xxx ]
 */
enum {};
#define IPMRA_VIF_MAX

/* vif-specific attributes */
enum {};
#define IPMRA_VIFA_MAX

/* ipmr netlink cache report attributes */
enum {};
#define IPMRA_CREPORT_MAX

/* That's all usermode folks */

#define MFC_ASSERT_THRESH

/* Pseudo messages used by mrouted */
#define IGMPMSG_NOCACHE
#define IGMPMSG_WRONGVIF
#define IGMPMSG_WHOLEPKT
#define IGMPMSG_WRVIFWHOLE

#endif /* _UAPI__LINUX_MROUTE_H */