Network problems with sendto() syscall

Olivier Houchard mlfbsd at cognet.ci0.org
Sun Aug 26 04:51:33 PDT 2007


On Sun, Aug 26, 2007 at 01:08:41PM +0200, Joerg Wallerich wrote:
> Hi all,
> 
> since moving to 7-CURRENT I have a serious problem with
> the network stack when using the sendto() syscall.
> 
> The problem appears as soon as I work with bootpd(8). As
> soon as bootpd tries to answer a BOOTP request, the
> sendto() call fails with EAFNOSUPPORT, I get kernel log
> messages like
> 
>  'fxp0: can't handle af18'
> 
> and then I can no longer access the IP address I sent the
> BOOTP request from.
> 
> The call to sendto() in bootpd seems OK, so I doubt that the
> problem lies with bootpd. The NIC driver seems to be OK as
> well, as the problems appears with three different drivers
> (fxp, nfe, rl). I even get things like
> 
>  'kernel: looutput: af=18 unexpected'
> 
> in the logs when using bootptest on the local machine.
> 
> This problem can be reproduced on my hardware using a
> vanilla installation of the latest snapshot of 7-CURRENT (200708).
> 
> 
> Does anyone see this behavior besides myself?
> 
>  Thanks,
>    Joerg
> 

Hi Joerg,

This is a known problem. Until the proper fix is committed, you can use the
attached patch, it should make bootp usable again.

Regards,

Olivier
-------------- next part --------------
Index: net/rtsock.c
===================================================================
RCS file: /cognet/ncvs/src/sys/net/rtsock.c,v
retrieving revision 1.142
diff -u -p -r1.142 rtsock.c
--- net/rtsock.c	27 Mar 2007 19:36:12 -0000	1.142
+++ net/rtsock.c	7 Aug 2007 20:41:52 -0000
@@ -528,7 +528,8 @@ route_output(struct mbuf *m, struct sock
 					RT_UNLOCK(rt);
 					senderr(error);
 				}
-				rt->rt_flags |= RTF_GATEWAY;
+				if (!(rt->rt_flags & RTF_LLINFO))
+					rt->rt_flags |= RTF_GATEWAY;
 			}
 			if (info.rti_ifa != NULL &&
 			    info.rti_ifa != rt->rt_ifa) {


More information about the freebsd-current mailing list