v0.2.5
ADDED: * num-addrs subcommand, to get the number of hosts/addresses in a given prefix length * get-net subcommand, to more easily get a single subnet from either the beginning or the end of a prefix. (MUCH FASTER than CIDR-splitting!)
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
`math/big`
|
||||
"net"
|
||||
"net/netip"
|
||||
"os"
|
||||
@@ -34,6 +35,7 @@ func main() {
|
||||
var buf *bytes.Buffer
|
||||
var res *netsplit.StructuredResults
|
||||
var numNets uint
|
||||
var numAddrs *big.Int
|
||||
var v6Only bool
|
||||
var noStrict bool
|
||||
var strictErr error
|
||||
@@ -84,6 +86,18 @@ func main() {
|
||||
log.Panicln(err)
|
||||
}
|
||||
return
|
||||
case "num-addrs":
|
||||
if err = validate.Struct(args.NumAddrs); err != nil {
|
||||
log.Panicln(err)
|
||||
}
|
||||
if args.NumAddrs.Size.PrefixSize > 32 {
|
||||
args.NumAddrs.Isv6 = true
|
||||
}
|
||||
if numAddrs, err = netsplit.NumAddrsIn(args.NumAddrs.Size.PrefixSize, args.NumAddrs.Isv6, args.NumAddrs.InclNetAddr, args.NumAddrs.InclBcastAddr); err != nil {
|
||||
log.Panicln(err)
|
||||
}
|
||||
fmt.Println(numAddrs.String())
|
||||
return
|
||||
case "num-nets":
|
||||
if err = validate.Struct(args.NumNets); err != nil {
|
||||
log.Panicln(err)
|
||||
@@ -195,6 +209,18 @@ func main() {
|
||||
These are all handily-dandily enclosed in a `common` struct type.
|
||||
*/
|
||||
switch parser.Active.Name {
|
||||
case "get-net": // Not a *true* splitter, per se; splitting is required but only for functional reasons.
|
||||
if err = validate.Struct(args.GetPfx); err != nil {
|
||||
log.Panicln(err)
|
||||
}
|
||||
cmnArgs = args.GetPfx.common
|
||||
splitter = &netsplit.PrefixGetter{
|
||||
Pos: args.GetPfx.Position,
|
||||
PrefixLength: args.GetPfx.Prefix,
|
||||
BaseSplitter: new(netsplit.BaseSplitter),
|
||||
}
|
||||
noStrict = false
|
||||
strictErr = netsplit.ErrBadNumHosts // dummy
|
||||
case "split-hosts":
|
||||
if err = validate.Struct(args.SplitHost); err != nil {
|
||||
log.Panicln(err)
|
||||
|
||||
Reference in New Issue
Block a user