linux/include/uapi/linux/mroute6.h

/* 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 */