}
 #endif
 
+#ifdef CONFIG_IP_MROUTE
 extern int ip_mroute_setsockopt(struct sock *, int, char __user *, int);
 extern int ip_mroute_getsockopt(struct sock *, int, char __user *, int __user *);
 extern int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg);
 extern int ip_mr_init(void);
+#else
+static inline
+int ip_mroute_setsockopt(struct sock *sock,
+                        int optname, char __user *optval, int optlen)
+{
+       return -ENOPROTOOPT;
+}
+
+static inline
+int ip_mroute_getsockopt(struct sock *sock,
+                        int optname, char __user *optval, int __user *optlen)
+{
+       return -ENOPROTOOPT;
+}
+
+static inline
+int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg)
+{
+       return -ENOIOCTLCMD;
+}
+
+static inline int ip_mr_init(void)
+{
+       return 0;
+}
+#endif
 
 struct vif_device
 {
 
 
 struct sock;
 
+#ifdef CONFIG_IPV6_MROUTE
 extern int ip6_mroute_setsockopt(struct sock *, int, char __user *, int);
 extern int ip6_mroute_getsockopt(struct sock *, int, char __user *, int __user *);
 extern int ip6_mr_input(struct sk_buff *skb);
 extern int ip6mr_ioctl(struct sock *sk, int cmd, void __user *arg);
 extern int ip6_mr_init(void);
 extern void ip6_mr_cleanup(void);
+#else
+static inline
+int ip6_mroute_setsockopt(struct sock *sock,
+                         int optname, char __user *optval, int optlen)
+{
+       return -ENOPROTOOPT;
+}
+
+static inline
+int ip6_mroute_getsockopt(struct sock *sock,
+                         int optname, char __user *optval, int __user *optlen)
+{
+       return -ENOPROTOOPT;
+}
+
+static inline
+int ip6mr_ioctl(struct sock *sk, int cmd, void __user *arg)
+{
+       return -ENOIOCTLCMD;
+}
+
+static inline int ip6_mr_init(void)
+{
+       return 0;
+}
+
+static inline void ip6_mr_cleanup(void)
+{
+       return;
+}
+#endif
 
 struct mif_device
 {
 
 
 #include <asm/uaccess.h>
 #include <asm/system.h>
-#ifdef CONFIG_IPV6_MROUTE
 #include <linux/mroute6.h>
-#endif
 
 MODULE_AUTHOR("Cast of dozens");
 MODULE_DESCRIPTION("IPv6 protocol stack for Linux");
        err = icmpv6_init();
        if (err)
                goto icmp_fail;
-#ifdef CONFIG_IPV6_MROUTE
        err = ip6_mr_init();
        if (err)
                goto ipmr_fail;
-#endif
        err = ndisc_init();
        if (err)
                goto ndisc_fail;
 igmp_fail:
        ndisc_cleanup();
 ndisc_fail:
-#ifdef CONFIG_IPV6_MROUTE
        ip6_mr_cleanup();
 ipmr_fail:
-#endif
        icmpv6_cleanup();
 icmp_fail:
        unregister_pernet_subsys(&inet6_net_ops);
        ipv6_netfilter_fini();
        igmp6_cleanup();
        ndisc_cleanup();
-#ifdef CONFIG_IPV6_MROUTE
        ip6_mr_cleanup();
-#endif
        icmpv6_cleanup();
        rawv6_exit();