func WalkIP(cidr string) chan string {
	c := make(chan string, 2048)
	go func() {
		defer close(c)
		ip, ipnet, err := net.ParseCIDR(cidr)
		if err != nil {
			println(err.Error())
			return
		}
		for ip := ip.Mask(ipnet.Mask); ipnet.Contains(ip); nextIP(ip) {
			select {
			case c <- ip.String():
			default:
				break
			}
		}
	}()
	return c
}
WalkIP tries to walk through subnet as generator
package disc
import (
	"bufio"
	"encoding/csv"
	"fmt"
	"io/ioutil"
	"net"
	"net/http"
	"os"
	"os/exec"
	"runtime"
	"strings"
	"syscall"
	"time"
	"golang.org/x/net/icmp"
	"golang.org/x/net/ipv4"
	"golang.org/x/net/ipv6"
	"github.com/olekukonko/tablewriter"
	"github.com/mehrdadrad/mylg/cli"
)
const (
	IEEEOUI = "http://standards.ieee.org/develop/regauth/oui/oui.csv"
)
type ARP struct {
	IP        string
	MAC       string
	Interface string
	Host      string
}
type disc struct {
	Table []ARP
	OUI   map[string]string
	IsBSD bool
	SKey  string
}
func New(args string) *disc {
	key, flag := cli.Flag(args)
	if _, ok := flag["help"]; ok {
		help()
		return nil
	}
	return &disc{
		IsBSD: IsBSD(),
		OUI:   make(map[string]string, 25000),
		SKey:  key,
	}
}