With this patch non-real-time UDP packets a routed to the Linux
network stack. You can enable this feature with the configure
option "--enable-proxy-udp".
Note: this patch requires running "scripts/autogen.sh"
Signed-off-by: Wolfang Grandegger <[EMAIL PROTECTED]>
Index: rtnet/stack/ipv4/ip_input.c
===================================================================
--- rtnet.orig/stack/ipv4/ip_input.c
+++ rtnet/stack/ipv4/ip_input.c
@@ -70,6 +70,13 @@ static inline void rt_ip_local_deliver(s
} else {
/* Get the destination socket */
if ((sock = ipprot->dest_socket(skb)) == NULL) {
+#ifdef CONFIG_RTNET_ADDON_PROXY_UDP
+ if (rt_ip_fallback_handler) {
+ __rtskb_push(skb, iph->ihl*4);
+ rt_ip_fallback_handler(skb);
+ return;
+ }
+#endif
kfree_rtskb(skb);
return;
}
Index: rtnet/stack/ipv4/ip_fragment.c
===================================================================
--- rtnet.orig/stack/ipv4/ip_fragment.c
+++ rtnet/stack/ipv4/ip_fragment.c
@@ -33,6 +33,11 @@
#include <ipv4/ip_fragment.h>
+#ifdef CONFIG_RTNET_ADDON_PROXY_UDP
+#include <ipv4/ip_input.h>
+#endif /* CONFIG_RTNET_ADDON_PROXY_UDP */
+
+#define FRAG_DBG
/*
* This defined sets the number of incoming fragmented IP messages that
@@ -185,6 +190,14 @@ static struct rtskb *add_to_collector(st
rtdm_lock_put_irqrestore(&p_coll->frags.lock, context);
}
+#ifdef CONFIG_RTNET_ADDON_PROXY_UDP
+ if (rt_ip_fallback_handler) {
+ __rtskb_push(skb, iph->ihl*4);
+ rt_ip_fallback_handler(skb);
+ return NULL;
+ }
+#endif
+
#ifdef FRAG_DBG
rtdm_printk("RTnet: Unordered IP fragment (saddr:%x, daddr:%x)"
" - dropped\n", iph->saddr, iph->daddr);
@@ -276,6 +289,13 @@ struct rtskb *rt_ip_defrag(struct rtskb
{
/* Get the destination socket */
if ((sock = ipprot->dest_socket(skb)) == NULL) {
+#ifdef CONFIG_RTNET_ADDON_PROXY_UDP
+ if (rt_ip_fallback_handler) {
+ __rtskb_push(skb, iph->ihl*4);
+ rt_ip_fallback_handler(skb);
+ return NULL;
+ }
+#endif
/* Drop the rtskb */
kfree_rtskb(skb);
return NULL;
Index: rtnet/configure.ac
===================================================================
--- rtnet.orig/configure.ac
+++ rtnet/configure.ac
@@ -1189,6 +1189,19 @@ if test "$CONFIG_RTNET_ADDON_PROXY" = "y
AC_DEFINE(CONFIG_RTNET_ADDON_PROXY,1,[rtnetproxy support])
fi
+AC_MSG_CHECKING([whether to enable rtnetproxy UDP support])
+AC_ARG_ENABLE(proxy-udp,
+ AS_HELP_STRING([--enable-proxy-udp], [enable UDP support for IP protocol
proxy driver @<:@default=no@:>@]),
+ [case "$enableval" in
+ y | yes) CONFIG_RTNET_ADDON_PROXY_UDP=y ;;
+ *) CONFIG_RTNET_ADDON_PROXY_UDP=n ;;
+ esac])
+AC_MSG_RESULT([${CONFIG_RTNET_ADDON_PROXY_UDP:-n}])
+AM_CONDITIONAL(CONFIG_RTNET_ADDON_PROXY_UDP,[test
"$CONFIG_RTNET_ADDON_PROXY_UDP" = "y"])
+if test "$CONFIG_RTNET_ADDON_PROXY_UDP" = "y"; then
+ AC_DEFINE(CONFIG_RTNET_ADDON_PROXY_UDP,1,[rtnetproxy UDP support])
+fi
+
#dnl ======================================================================
#dnl RTDM select (disabled until RTDM actually supports this)
--
-------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/rtnet-users