--- /dev/null
+diff -u b/include/linux/mroute.h b/include/linux/mroute.h
+--- b/include/linux/mroute.h
++++ b/include/linux/mroute.h
+@@ -2,7 +2,10 @@
+ #define __LINUX_MROUTE_H
+
+ #include <linux/sockios.h>
++#include <linux/types.h>
++#ifdef __KERNEL__
+ #include <linux/in.h>
++#endif
+
+ /*
+ * Based on the MROUTING 3.5 defines primarily to keep
+@@ -126,6 +129,7 @@
+ */
+
+ #ifdef __KERNEL__
++#include <linux/pim.h>
+ #include <net/sock.h>
+
+ #ifdef CONFIG_IP_MROUTE
+@@ -210,27 +214,6 @@
+ #define IGMPMSG_WHOLEPKT 3 /* For PIM Register processing */
+
+ #ifdef __KERNEL__
+-
+-#define PIM_V1_VERSION __constant_htonl(0x10000000)
+-#define PIM_V1_REGISTER 1
+-
+-#define PIM_VERSION 2
+-#define PIM_REGISTER 1
+-
+-#define PIM_NULL_REGISTER __constant_htonl(0x40000000)
+-
+-/* PIMv2 register message header layout (ietf-draft-idmr-pimvsm-v2-00.ps */
+-
+-struct pimreghdr
+-{
+- __u8 type;
+- __u8 reserved;
+- __be16 csum;
+- __be32 flags;
+-};
+-
+-extern int pim_rcv_v1(struct sk_buff *);
+-
+ struct rtmsg;
+ extern int ipmr_get_route(struct sk_buff *skb, struct rtmsg *rtm, int nowait);
+ #endif
+diff -u /dev/null b/include/linux/pim.h
+--- /dev/null
++++ b/include/linux/pim.h
+@@ -0,0 +1,27 @@
++#ifndef __LINUX_PIM_H
++#define __LINUX_PIM_H
++
++#include <asm/byteorder.h>
++
++/* Message types - V1 */
++#define PIM_V1_VERSION __constant_htonl(0x10000000)
++#define PIM_V1_REGISTER 1
++
++/* Message types - V2 */
++#define PIM_VERSION 2
++#define PIM_REGISTER 1
++
++#define PIM_NULL_REGISTER __constant_htonl(0x40000000)
++
++/* PIMv2 register message header layout (ietf-draft-idmr-pimvsm-v2-00.ps */
++struct pimreghdr
++{
++ __u8 type;
++ __u8 reserved;
++ __be16 csum;
++ __be32 flags;
++};
++
++struct sk_buff;
++extern int pim_rcv_v1(struct sk_buff *);
++#endif
+only in patch2:
+unchanged:
+--- a/include/linux/mroute6.h
++++ b/include/linux/mroute6.h
+@@ -115,6 +115,7 @@ struct sioc_mif_req6
+
+ #ifdef __KERNEL__
+
++#include <linux/pim.h>
+ #include <linux/skbuff.h> /* for struct sk_buff_head */
+
+ #ifdef CONFIG_IPV6_MROUTE