iplib: Allow v4parsecidr() to take longer masks
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 22 Dec 2016 17:03:24 +0000 (12:03 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 10 Jan 2017 00:01:40 +0000 (19:01 -0500)
commitedd3d027b487325d28422adaa8ead98b32f696be
treec964697ec01535fa09c27f09b28c4d3fe6a92fb1
parentb203ad20b27e2644ed7546778b8ecd01a925669d
iplib: Allow v4parsecidr() to take longer masks

v4parsecidr() takes a string of the form IP/MASK, and converts it to a v4
address and v4mask.  If you gave it a /mask string that you got from %M,
you'd have something like /122 for a v4 /26 (6 bits unmasked).  v4parsecidr
would take the first 32 bits (all 1s) and make a mask from that.  We want
the last 32 bits (including the 0s).

It's quite possible for the user to give us a mask that doesn't make sense
for V4 (like /44).  In that case, they can just do their own thing.  This
will work for sane v4 masks, even if they are in v6 form.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
user/iplib/parseip.c