I'm sorry for delay.

ok yasuoka

tested.

On Fri, 1 Jan 2016 10:55:14 -0800
Philip Guenther <[email protected]> wrote:
> On Fri, 4 Dec 2015, Todd C. Miller wrote:
>> On Fri, 04 Dec 2015 09:47:46 -0800, Philip Guenther wrote:
>> > We should fix open(2); please try the diff below.  Are you sure pppx
>> > is affected?  pppxioctl()'s FIONBIO case appears to be a no-op.  I
>> > certainly agree that bpf and tun are affected.
>> 
>> Shouldn't the device open function check for FNONBLOCK and handle
>> it as needed?
> 
> Finally got back to this; this diff should fix open(O_NONBLOCK) of bpf, 
> tun, and tap devices.  The bikeshed question is whether this should use 
> O_NONBLOCK or FNONBLOCK...
> 
> ok?
> 
> 
> Index: net/bpf.c
> ===================================================================
> RCS file: /data/src/openbsd/src/sys/net/bpf.c,v
> retrieving revision 1.131
> diff -u -p -r1.131 bpf.c
> --- net/bpf.c 5 Dec 2015 10:07:55 -0000       1.131
> +++ net/bpf.c 1 Jan 2016 18:47:42 -0000
> @@ -341,6 +341,9 @@ bpfopen(dev_t dev, int flag, int mode, s
>       d->bd_bufsize = bpf_bufsize;
>       d->bd_sig = SIGIO;
>  
> +     if (flag & O_NONBLOCK)
> +             d->bd_rtout = -1;
> +
>       D_GET(d);
>  
>       return (0);
> Index: net/if_tun.c
> ===================================================================
> RCS file: /data/src/openbsd/src/sys/net/if_tun.c,v
> retrieving revision 1.164
> diff -u -p -r1.164 if_tun.c
> --- net/if_tun.c      5 Dec 2015 16:09:09 -0000       1.164
> +++ net/if_tun.c      1 Jan 2016 18:47:30 -0000
> @@ -361,6 +361,8 @@ tun_dev_open(struct tun_softc *tp, int f
>  
>       ifp = &tp->tun_if;
>       tp->tun_flags |= TUN_OPEN;
> +     if (flag & O_NONBLOCK)
> +             tp->tun_flags |= TUN_NBIO;
>  
>       /* automatically mark the interface running on open */
>       s = splnet();

Reply via email to