This patch allows to disable the RTnet IPv4 ICMP support, which might
be useful when using the RTnet-Proxy add-on. ICMP will then be handled
by the Linux network stack. ICMP support in RTnet is enabled by default
and it can be disabled with the configure option "--disable-icmp".

Note: this patch requires running "scripts/autogen.sh"

Signed-off-by: Wolfang Grandegger <[EMAIL PROTECTED]>
Index: rtnet/stack/ipv4/af_inet.c
===================================================================
--- rtnet.orig/stack/ipv4/af_inet.c
+++ rtnet/stack/ipv4/af_inet.c
@@ -79,6 +79,7 @@ static void cleanup_route_solicit(void *
 
 
 
+#ifdef CONFIG_RTNET_RTIPV4_ICMP
 static int ping_handler(struct rt_proc_call *call)
 {
     struct ipv4_cmd *cmd;
@@ -114,6 +115,7 @@ static void ping_complete_handler(struct
     usr_cmd->args.ping.ip_addr = cmd->args.ping.ip_addr;
     usr_cmd->args.ping.rtt     = cmd->args.ping.rtt;
 }
+#endif /* CONFIG_RTNET_RTIPV4_ICMP */
 
 
 
@@ -187,6 +189,7 @@ static int ipv4_ioctl(struct rtnet_devic
             break;
 #endif /* CONFIG_RTNET_RTIPV4_NETROUTING */
 
+#ifdef CONFIG_RTNET_RTIPV4_ICMP
         case IOC_RT_PING:
             ret = rtpc_dispatch_call(ping_handler, cmd.args.ping.timeout, &cmd,
                                      sizeof(cmd), ping_complete_handler, NULL);
@@ -197,6 +200,7 @@ static int ipv4_ioctl(struct rtnet_devic
             if (ret < 0)
                 rt_icmp_cleanup_echo_requests();
             break;
+#endif /* CONFIG_RTNET_RTIPV4_ICMP */
 
         default:
             ret = -ENOTTY;
@@ -338,7 +342,9 @@ int __init rt_ipv4_proto_init(void)
     for (i=0; i<MAX_RT_INET_PROTOCOLS; i++)
         rt_inet_protocols[i]=NULL;
 
+#ifdef CONFIG_RTNET_RTIPV4_ICMP
     rt_icmp_init();
+#endif /* CONFIG_RTNET_RTIPV4_ICMP */
     rt_udp_init();
 
 #ifdef CONFIG_PROC_FS
@@ -372,7 +378,9 @@ int __init rt_ipv4_proto_init(void)
 #endif /* CONFIG_PROC_FS */
 
     rt_udp_release();
+#ifdef CONFIG_RTNET_RTIPV4_ICMP
     rt_icmp_release();
+#endif /* CONFIG_RTNET_RTIPV4_ICMP */
     rt_arp_release();
     rt_ip_release();
 
@@ -393,7 +401,9 @@ void __exit rt_ipv4_proto_release(void)
 
     /* Transport-Layer */
     rt_udp_release();
+#ifdef CONFIG_RTNET_RTIPV4_ICMP
     rt_icmp_release();
+#endif /* CONFIG_RTNET_RTIPV4_ICMP */
 
     /* Network-Layer */
     rt_arp_release();
Index: rtnet/configure.ac
===================================================================
--- rtnet.orig/configure.ac
+++ rtnet/configure.ac
@@ -1023,6 +1023,19 @@ if test "$CONFIG_RTNET_RTIPV4" = "y"; th
     AC_DEFINE(CONFIG_RTNET_RTIPV4,1,[Real-Time IPv4 support])
 fi
 
+AC_MSG_CHECKING([whether to enable real-time IPv4 ICMP support])
+AC_ARG_ENABLE(icmp,
+    AS_HELP_STRING([--enable-icmp], [enable real-time IPv4 ICMP support 
@<:@default=yes@:>@]),
+    [case "$enableval" in
+        y | yes) CONFIG_RTNET_RTIPV4_ICMP=y ;;
+        *) CONFIG_RTNET_RTIPV4_ICMP=n ;;
+    esac])
+AC_MSG_RESULT([${CONFIG_RTNET_RTIPV4_ICMP:-n}])
+AM_CONDITIONAL(CONFIG_RTNET_RTIPV4_ICMP,[test "$CONFIG_RTNET_RTIPV4_ICMP" = 
"y"])
+if test "$CONFIG_RTNET_RTIPV4_ICMP" = "y"; then
+    AC_DEFINE(CONFIG_RTNET_RTIPV4_ICMP,1,[Real-Time IPv4 ICMP support])
+fi
+
 AC_MSG_CHECKING([whether to enable source IP routing])
 AC_ARG_ENABLE(route-src,
     AS_HELP_STRING([--enable-route-src], [enable source IP routing 
@<:@default=no@:>@]),
Index: rtnet/defconfig
===================================================================
--- rtnet.orig/defconfig
+++ rtnet/defconfig
@@ -33,6 +33,7 @@ CONFIG_RTNET_RX_FIFO_SIZE=32
 # Protocols
 #
 CONFIG_RTNET_RTIPV4=y
+CONFIG_RTNET_RTIPV4_ICMP=y
 # CONFIG_RTNET_RTIPV4_ROUTE_SRC is not set
 # CONFIG_RTNET_RTIPV4_NETROUTING is not set
 # CONFIG_RTNET_RTIPV4_ROUTER is not set
Index: rtnet/stack/ipv4/GNUmakefile.am
===================================================================
--- rtnet.orig/stack/ipv4/GNUmakefile.am
+++ rtnet/stack/ipv4/GNUmakefile.am
@@ -16,10 +16,13 @@ libkernel_ipv4_a_SOURCES = \
        ip_input.c \
        ip_sock.c \
        udp.c \
-       icmp.c \
        ip_output.c \
        ip_fragment.c
 
+if CONFIG_RTNET_RTIPV4_ICMP
+libkernel_ipv4_a_SOURCES += icmp.c
+endif
+
 OBJS = rtipv4$(modext)
 
 rtipv4.o: libkernel_ipv4.a

-- 


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
RTnet-users mailing list
RTnet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rtnet-users

Reply via email to