patch-2.1.30 linux/include/linux/mroute.h

Next file: linux/include/linux/net.h
Previous file: linux/include/linux/ipv6_route.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.29/linux/include/linux/mroute.h linux/include/linux/mroute.h
@@ -21,9 +21,11 @@
 #define MRT_DEL_MFC	(MRT_BASE+5)	/* Delete a multicast forwarding entry	*/
 #define MRT_VERSION	(MRT_BASE+6)	/* Get the kernel multicast version	*/
 #define MRT_ASSERT	(MRT_BASE+7)	/* Activate PIM assert mode		*/
+#define MRT_PIM		(MRT_BASE+8)	/* enable PIM code	*/
 
 #define SIOCGETVIFCNT	SIOCPROTOPRIVATE	/* IP protocol privates */
 #define SIOCGETSGCNT	(SIOCPROTOPRIVATE+1)
+#define SIOCGETRPF	(SIOCPROTOPRIVATE+2)
 
 #define MAXVIFS		32	
 typedef unsigned long vifbitmap_t;	/* User mode code depends on this lot */
@@ -56,10 +58,18 @@
 };
 
 #define VIFF_TUNNEL	0x1		/* IPIP tunnel */
-#define VIFF_SRCRT	0x02		/* NI */
+#define VIFF_SRCRT	0x2		/* NI */
+
+
+/* PIM Vif Flags */
+#define VIFF_DR                 0x0010          /* designated router    */
+#define VIFF_NOMRT              0x0020          /* no neighbor on vif   */
+#define VIFF_DOWN               0x0040          /* interface is down    */
+#define VIFF_DISABLED           0x0080          /* disabled interafce   */
+#define VIFF_REGISTER           0x00A0          /* MIssing cap@di.fc.ul.pt */
 
 /*
- *	Cache manipulation structures for mrouted
+ *	Cache manipulation structures for mrouted and PIMd
  */
  
 struct mfcctl
@@ -68,6 +78,10 @@
 	struct in_addr mfcc_mcastgrp;		/* Group in question	*/
 	vifi_t	mfcc_parent;			/* Where it arrived	*/
 	unsigned char mfcc_ttls[MAXVIFS];	/* Where it is going	*/
+	unsigned int mfcc_pkt_cnt;		/* pkt count for src-grp */
+	unsigned int mfcc_byte_cnt;
+	unsigned int mfcc_wrong_if;
+	int	     mfcc_expire;
 };
 
 /* 
@@ -97,6 +111,16 @@
 };
 
 /*
+ *	To get RPF from unicast routing table (PIM: cap@di.fc.ul.pt)
+ */
+struct sioc_rpf_req
+{
+	unsigned long	source;	       /* Source address */
+	unsigned long   rpfneighbor;   /* RPF */
+        vifi_t	 iif;		       /* Incoming Interface */
+};
+
+/*
  *	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
  */
@@ -138,6 +162,7 @@
 	unsigned char	threshold;		/* TTL threshold 		*/
 	unsigned short	flags;			/* Control flags 		*/
 	unsigned long	local,remote;		/* Addresses(remote for tunnels)*/
+	unsigned long	uptime;
 };
 
 struct mfc_cache 
@@ -153,6 +178,8 @@
 	unsigned mfc_last_assert;
 	int mfc_minvif;
 	int mfc_maxvif;
+	unsigned long uptime;
+	unsigned long expire;
 	unsigned long mfc_bytes;
 	unsigned long mfc_pkt;
 	unsigned long mfc_wrong_if;
@@ -180,7 +207,8 @@
  *	Pseudo messages used by mrouted
  */
 
-#define IGMPMSG_NOCACHE		1		/* Kernel cache fill request to mrouted */
+#define IGMPMSG_NOCACHE		1		/* Kern cache fill request to mrouted */
 #define IGMPMSG_WRONGVIF	2		/* For PIM assert processing (unused) */
+#define IGMPMSG_WHOLEPKT	3		/* For PIM Register processing */
 
 #endif

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov