v0.3.0
* Default is now previous single-verbosity level; it was too annoying to add the -v every time. ** -q/--quiet has been added to return to the previous default output
This commit is contained in:
@@ -104,6 +104,8 @@ func printMask(label string, pfx netip.Prefix, verb, indent int, indentStr strin
|
||||
var mask net.IPMask
|
||||
var first netip.Addr
|
||||
var last netip.Addr
|
||||
var firstUsable netip.Addr
|
||||
var lastUsable netip.Addr
|
||||
var sb = new(strings.Builder)
|
||||
var pre = strings.Repeat(indentStr, indent)
|
||||
var pre2 = strings.Repeat(indentStr, indent+1)
|
||||
@@ -118,17 +120,23 @@ func printMask(label string, pfx netip.Prefix, verb, indent int, indentStr strin
|
||||
maskF = "d"
|
||||
maskSep = "."
|
||||
maskEvery = 1
|
||||
// IPv4 *always* reserves last addr for broadcast UNLESS it's a /31 (or /32). RFC 919, RFC 1770, RFC 5735.
|
||||
// IPv4 *always* reserves lastUsable addr for broadcast UNLESS it's a /31 (or /32). RFC 919, RFC 1770, RFC 5735.
|
||||
switch pfx.Bits() {
|
||||
case 32: // Host
|
||||
first = pfx.Masked().Addr()
|
||||
last = pfx.Masked().Addr()
|
||||
firstUsable = first
|
||||
lastUsable = last
|
||||
case 31: // Point-to-Point
|
||||
first = pfx.Masked().Addr()
|
||||
last = pfx.Masked().Addr().Next()
|
||||
firstUsable = first
|
||||
lastUsable = last
|
||||
default: // RFC 919, RFC 5735
|
||||
first = pfx.Masked().Addr().Next()
|
||||
last = netipx.PrefixLastIP(pfx.Masked()).Prev()
|
||||
first = pfx.Masked().Addr()
|
||||
last = netipx.PrefixLastIP(pfx.Masked())
|
||||
firstUsable = first.Next()
|
||||
lastUsable = last.Prev()
|
||||
}
|
||||
} else {
|
||||
maskF = "02x"
|
||||
@@ -138,16 +146,24 @@ func printMask(label string, pfx netip.Prefix, verb, indent int, indentStr strin
|
||||
case 128: // Host/Loopback
|
||||
first = pfx.Masked().Addr()
|
||||
last = pfx.Masked().Addr()
|
||||
firstUsable = first
|
||||
lastUsable = last
|
||||
case 127: // Point-to-Point
|
||||
first = pfx.Masked().Addr()
|
||||
last = pfx.Masked().Addr().Next()
|
||||
firstUsable = first
|
||||
lastUsable = last
|
||||
case 64:
|
||||
first = pfx.Masked().Addr().Next()
|
||||
first = pfx.Masked().Addr()
|
||||
firstUsable = first.Next()
|
||||
// IPv6 only reserves the last address (for EUI-64 reasons) for /64's.
|
||||
last = netipx.PrefixLastIP(pfx.Masked()).Prev()
|
||||
last = netipx.PrefixLastIP(pfx.Masked())
|
||||
lastUsable = last.Prev()
|
||||
default:
|
||||
first = pfx.Masked().Addr()
|
||||
firstUsable = first
|
||||
last = netipx.PrefixLastIP(pfx.Masked())
|
||||
lastUsable = last
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,6 +174,8 @@ func printMask(label string, pfx netip.Prefix, verb, indent int, indentStr strin
|
||||
fmt.Fprintf(sb, "%sBits:\t\t%d\n", pre2, pfx.Bits())
|
||||
fmt.Fprintf(sb, "%sFirst:\t\t%s\n", pre2, first.String())
|
||||
fmt.Fprintf(sb, "%sLast:\t\t%s\n", pre2, last.String())
|
||||
fmt.Fprintf(sb, "%sFirst Usable:\t%s\n", pre2, firstUsable.String())
|
||||
fmt.Fprintf(sb, "%sLast Usable:\t%s\n", pre2, lastUsable.String())
|
||||
fmt.Fprintf(sb, "%sAddresses:\t%d\n", pre2, netsplit.NumAddrsPfx(pfx.Masked(), true, true))
|
||||
fmt.Fprintf(sb, "%sHosts:\t\t%d\n", pre2, netsplit.NumAddrsPfx(pfx.Masked(), false, false))
|
||||
if verb >= 2 {
|
||||
@@ -211,23 +229,23 @@ func printMask(label string, pfx netip.Prefix, verb, indent int, indentStr strin
|
||||
func printNets(orig *netip.Prefix, origNet *net.IPNet, nets []*netip.Prefix, remaining *netipx.IPSet, args *common, splitter netsplit.NetSplitter) (err error) {
|
||||
|
||||
var b []byte
|
||||
var resIdx int
|
||||
var netsLen uint
|
||||
var remLen uint
|
||||
var buf *bytes.Buffer
|
||||
var masked netip.Prefix
|
||||
var remPfxs []*netip.Prefix
|
||||
var invertedMask net.IPMask
|
||||
var resIdx int
|
||||
var resPfx netip.Prefix
|
||||
var resRec *netsplit.IANAAddrNetResRecord
|
||||
var reservedList []*netip.Prefix
|
||||
var reserved map[netip.Prefix]*netsplit.IANAAddrNetResRecord
|
||||
var res *netsplit.StructuredResults
|
||||
var verb = -1
|
||||
var fmts []string
|
||||
var sectSep1 string
|
||||
var sectSep2 string
|
||||
// var sectSep3 string
|
||||
var verb int = 1
|
||||
|
||||
if orig == nil {
|
||||
return
|
||||
@@ -245,11 +263,14 @@ func printNets(orig *netip.Prefix, origNet *net.IPNet, nets []*netip.Prefix, rem
|
||||
sectSep2 = fmts[1]
|
||||
// sectSep3 = fmts[2]
|
||||
|
||||
if args.Verbose != nil {
|
||||
verb = 0
|
||||
for _, i := range args.Verbose {
|
||||
if i {
|
||||
verb++
|
||||
if args.Quiet {
|
||||
verb--
|
||||
} else {
|
||||
if args.Verbose != nil {
|
||||
for _, i := range args.Verbose {
|
||||
if i {
|
||||
verb++
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user