Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Aug 2007 14:25:25 +0200
From:      Olivier Houchard <mlfbsd@cognet.ci0.org>
To:        Joerg Wallerich <joerg@net.t-labs.tu-berlin.de>
Cc:        freebsd-current@freebsd.org
Subject:   Re: Network problems with sendto() syscall
Message-ID:  <20070826122525.GA59924@ci0.org>
In-Reply-To: <20070826110841.GA31243@falcon.net.t-labs.tu-berlin.de>
References:  <20070826110841.GA31243@falcon.net.t-labs.tu-berlin.de>

next in thread | previous in thread | raw e-mail | index | archive | help

--xHFwDpU9dbj6ez1V
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

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

--xHFwDpU9dbj6ez1V
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="rtsock.c.diff"

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) {

--xHFwDpU9dbj6ez1V--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070826122525.GA59924>