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" or the Kconfig option CONFIG_RTNET_RTIPV4_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 */ @@ -186,6 +188,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); @@ -196,6 +199,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; 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 Index: rtnet/stack/ipv4/Kconfig =================================================================== --- rtnet.orig/stack/ipv4/Kconfig +++ rtnet/stack/ipv4/Kconfig @@ -10,6 +10,15 @@ config RTNET_RTIPV4 For further information see also Documentation/README.routing and Documentation/README.ipfragmentation. +config RTNET_RTIPV4_ICMP + bool "ICMP support" + depends on RTNET_RTIPV4 + default y + ---help--- + Enables ICMP support of the RTnet Real-Time IPv4 protocol. Disabling it + might be useful when using the RTnet-Proxy add-on. ICMP will then be + handled by the Linux network stack. + config RTNET_RTIPV4_ROUTE_SRC bool "Consider source IP for output routing" depends on RTNET_RTIPV4 Index: rtnet/stack/include/ipv4/icmp.h =================================================================== --- rtnet.orig/stack/include/ipv4/icmp.h +++ rtnet/stack/include/ipv4/icmp.h @@ -44,8 +44,13 @@ void rt_icmp_dequeue_echo_request(struct void rt_icmp_cleanup_echo_requests(void); int rt_icmp_send_echo(u32 daddr, u16 id, u16 sequence, size_t msg_size); +#ifdef CONFIG_RTNET_RTIPV4_ICMP void __init rt_icmp_init(void); void rt_icmp_release(void); +#else /* !CONFIG_RTNET_RTIPV4_ICMP */ +#define rt_icmp_init() do {} while (0) +#define rt_icmp_release() do {} while (0) +#endif /* CONFIG_RTNET_RTIPV4_ICMP */ #endif /* __RTNET_ICMP_H_ */ -- ------------------------------------------------------------------------- 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