svn commit: r186955 - in head/sys: conf netinet

Max Laier max at love2party.net
Fri Jan 9 09:02:13 PST 2009


On Friday 09 January 2009 17:02:19 Adrian Chadd wrote:
> Author: adrian
> Date: Fri Jan  9 16:02:19 2009
> New Revision: 186955
> URL: http://svn.freebsd.org/changeset/base/186955
>
> Log:
>   Implement a new IP option (not compiled/enabled by default) to allow
>   applications to specify a non-local IP address when bind()'ing a socket
>   to a local endpoint.

That's a *socket* option ... you had me very worried there for a moment ;)  I 
don't quite see why you'd hide these under a build time option - having the 
sysctl defaulting to off under CTLFLAG_SECURE seems good enough - if people 
disagree - make it a boot time tuneable, but I certainly don't see why you 
should have to rebuild the kernel for a minor thing like this.  It certainly 
isn't performance critical.

Some nit picking below ...

> Modified: head/sys/netinet/in_pcb.c
> @@ -346,7 +347,11 @@ in_pcbbind_setup(struct inpcb *inp, stru
>  		} else if (sin->sin_addr.s_addr != INADDR_ANY) {
>  			sin->sin_port = 0;		/* yech... */
>  			bzero(&sin->sin_zero, sizeof(sin->sin_zero));
> -			if (ifa_ifwithaddr((struct sockaddr *)sin) == 0)
> +			if (
> +#if defined(IP_NONLOCALBIND)
> +			    ((inp->inp_flags & INP_NONLOCALOK) == 0) &&
> +#endif
> +			    (ifa_ifwithaddr((struct sockaddr *)sin) == 0))
>  				return (EADDRNOTAVAIL);
>  		}
>  		laddr = sin->sin_addr;

This logic is really hard to get a first glance.  Esp. the not NON...OK part.  
Maybe a comment is called for here - or is this just me being confused?

> Modified: head/sys/netinet/ip_output.c
> @@ -866,6 +873,13 @@ ip_ctloutput(struct socket *so, struct s
>  			return (error);
>  		}
>
> +#if defined(IP_NONLOCALBIND)
> +		case IP_NONLOCALOK:
> +			if (! ip_nonlocalok) {
> +			error = ENOPROTOOPT;
> +			break;
> +		}
> +#endif

Indentation is off here.  And you should add a /* FALLTHROUGH */ comment to 
make it clear that this is intended.

>  		case IP_TOS:
>  		case IP_TTL:
>  		case IP_MINTTL:

-- 
/"\  Best regards,                      | mlaier at freebsd.org
\ /  Max Laier                          | ICQ #67774661
 X   http://pf4freebsd.love2party.net/  | mlaier at EFnet
/ \  ASCII Ribbon Campaign              | Against HTML Mail and News


More information about the svn-src-head mailing list