[Xorp-hackers] Re: XORP PIMSM6 and IPv6 multicast forwarding patch

Pavlin Radoslavov pavlin@icir.org
Sun, 30 Oct 2005 14:51:41 -0800


>   You are right, I did the compile check on my system and at first it failed. Later on when i copy the mroute6.h into /usr/include/linux where IPv4 mroute.h exists.Then everything is OK
> (No message when compile).
>   I confirm that HAVE_IPV6 and HAVE_IPV6_MULTICAST are defined to 1 in myconfig.h .
> 
>  Looks like I have to wait your correctness.
>    
> 
> FYI only: 
> The mroute6.h is not in the right place. I did compile a new kernel on RH9(2.4.20-8) to upgrade it to Linux kernel 2.6.7 as the multicast forwarding patch required. The file still stay in the place where new kernel source files and didnot installed in!
> 
> When I force the  HAVE_IPV6_MULTICAST_ROUTING to 1, gmake failed with many message related. See attachement. Also tried renamed the mroute6.h to netinet6/ip6_mroute.h but failed gmake too.  The error message is icmp6_filter struct redefination or some kind of info(caused by the HAVE_NETINET6_IP6_MROUTE_H some where)


Yes, mroute6.h is not in the right place so you have to copy it by
hand to the /usr/include/linux/ directory.
However, it contains a number of definitions that shouldn't be
there (e.g., the PIM-specific stuff should be in <netinet/pim.h>).

Anyway, I just committed some mods to XORP itself so now it can
compile with the Linux IPv6 multicast forwarding patch.
The catch however is that you have to comment-out some of the stuff
in the new <linux/mroute6.h> (see the patch below).

Note that I have only tested that XORP compiles, but I haven't
tested whether it can work with the modified kernel.
Please let me know what happens when you try to run it.

Pavlin


--- mroute6.h.broken	2005-10-30 03:50:10.000000000 -0800
+++ mroute6.h	2005-10-30 21:43:17.000000000 -0800
@@ -204,7 +204,9 @@
 #define IGMPMSG_WRONGVIF	2		/* For PIM assert processing (unused) */
 #define IGMPMSG_WHOLEPKT	3		/* For PIM Register processing */
 
+#if 0
 #define PIM_REGISTER		1
+#endif
 
 #ifdef __KERNEL__
 
@@ -257,6 +259,7 @@
 	struct in6_addr	im6_src, im6_dst;
 };
 
+#if 0
 /*
  * PIM packet header
  */
@@ -279,10 +282,12 @@
 
 #define PIM_MINLEN	8		/* The header min. length is 8    */
 #define PIM6_REG_MINLEN	(PIM_MINLEN+40)	/* Register message + inner IP6 header */
+#endif /* 0 */
 
 #define IPV6_VERSION	0x60
 #define IPV6_VERSION_MASK 0xf0
 
+#if 0
 /* XXX :there should not be there  */
 #include <linux/icmpv6.h>
 
@@ -292,5 +297,6 @@
 };
 
 #define mld_type mld_icmp6_hdr.icmp6_type
+#endif /* 0 */
 
 #endif