[Bug 205926] jail(8): fails to parse ifconfig parameters in ip4.addr and ip6.addr after /netmask

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Tue Jan 5 17:32:10 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=205926

            Bug ID: 205926
           Summary: jail(8): fails to parse ifconfig parameters in
                    ip4.addr and ip6.addr after /netmask
           Product: Base System
           Version: 10.2-STABLE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: bin
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: Mark.Martinec at ijs.si

The jail(8) man page states that additional ifconfig parameters
may be supplied after ip-address/netmask in ip4.addr and ip6.addr
(which is needed for example to specify a CARPed IP address):

The manpage states:

ip4.addr
  In addition to the IP addresses that are passed to the kernel,
  an interface, netmask and additional paramters (as supported
  by ifconfig(8)) may also be specified, in the form
  “interface|ip-address/netmask param ...”.

As it turns out this does not work, unless /netmask is omitted.

Seems like the check_intparams() in /usr/src/usr.sbin/jail/config.c
assumes that everything after a slash is a netmask or a mask-length
(or IPv6 prefix length), so any parameter following a /netmask
is treated as a netmask syntax error.

Example:

# jail -c ip4.addr='igb0|10.0.0.246/24 vhid 23 advskew 100' \
          ip6.addr='igb0|2001:db8::246/64 vhid 23 advskew 100' [...]
jail: ip4.addr: bad netmask "/24 vhid 23 advskew 100"
jail: ip6.addr: bad prefixlen "/64 vhid 23 advskew 100"


Omitting the /24 (and /64) works as intended, but the implied
mask length is /32 (and /128).


An attempted workaround like:
  ip4.addr='igb0|10.0.0.246 netmask 255.255.255.0 vhid 23 advskew 100'

produces a double netmask option to ifconfig, which may be ambiguous
(or a potential syntax error) - as reported by jail -v :

  run command: /sbin/ifconfig igb0 inet 10.0.0.246 \
    netmask 255.255.255.255 netmask 255.255.255.0 vhid 23 advskew 100 alias


( Btw, why does the jail(8) bother to convert a mask length into a
netmask, where the ifconfig is perfectly happy with a CIDR notation? )

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list