summaryrefslogtreecommitdiff
path: root/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/macs/gen.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/macs/gen.go')
-rw-r--r--src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/macs/gen.go37
1 files changed, 29 insertions, 8 deletions
diff --git a/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/macs/gen.go b/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/macs/gen.go
index 97776e044dc..1fb685facc1 100644
--- a/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/macs/gen.go
+++ b/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/macs/gen.go
@@ -15,6 +15,7 @@ package main
import (
"bufio"
+ "bytes"
"encoding/hex"
"flag"
"fmt"
@@ -22,6 +23,7 @@ import (
"net/http"
"os"
"regexp"
+ "sort"
"time"
)
@@ -40,13 +42,25 @@ package macs
// ValidMACPrefixMap maps a valid MAC address prefix to the name of the
// organization that owns the rights to use it. We map it to a hidden
// variable so it won't show up in godoc, since it's a very large map.
-var ValidMACPrefixMap map[[3]byte]string= validMACPrefixMap
+var ValidMACPrefixMap = validMACPrefixMap
var validMACPrefixMap = map[[3]byte]string{
`
-var url = flag.String("url", "http://standards.ieee.org/develop/regauth/oui/oui.txt", "URL to fetch MACs from")
+var url = flag.String("url", "http://standards-oui.ieee.org/oui/oui.txt", "URL to fetch MACs from")
+
+type mac struct {
+ prefix [3]byte
+ company string
+}
+
+type macs []mac
+
+func (m macs) Len() int { return len(m) }
+func (m macs) Less(i, j int) bool { return bytes.Compare(m[i].prefix[:], m[j].prefix[:]) < 0 }
+func (m macs) Swap(i, j int) { m[i], m[j] = m[j], m[i] }
func main() {
+ flag.Parse()
fmt.Fprintf(os.Stderr, "Fetching MACs from %q\n", *url)
resp, err := http.Get(*url)
if err != nil {
@@ -54,9 +68,8 @@ func main() {
}
defer resp.Body.Close()
buffered := bufio.NewReader(resp.Body)
- finder := regexp.MustCompile(`^\s*([0-9A-F]{6})\s+\(base 16\)\s+(.*)`)
- fmt.Fprintln(os.Stderr, "Starting write to standard output")
- fmt.Printf(header, time.Now(), *url)
+ finder := regexp.MustCompile(`^\s*([0-9A-F]{6})\s+\(base 16\)\s+(.*\S)`)
+ got := macs{}
for {
line, err := buffered.ReadString('\n')
if err == io.EOF {
@@ -65,14 +78,22 @@ func main() {
panic(err)
}
if matches := finder.FindStringSubmatch(line); matches != nil {
- bytes := make([]byte, 3)
- hex.Decode(bytes, []byte(matches[1]))
+ var prefix [3]byte
+ hex.Decode(prefix[:], []byte(matches[1]))
company := matches[2]
if company == "" {
company = "PRIVATE"
}
- fmt.Printf("\t[3]byte{%d, %d, %d}: %q,\n", bytes[0], bytes[1], bytes[2], company)
+ fmt.Fprint(os.Stderr, "*")
+ got = append(got, mac{prefix: prefix, company: company})
}
}
+ fmt.Fprintln(os.Stderr, "\nSorting macs")
+ sort.Sort(got)
+ fmt.Fprintln(os.Stderr, "Starting write to standard output")
+ fmt.Printf(header, time.Now(), *url)
+ for _, m := range got {
+ fmt.Printf("\t[3]byte{%d, %d, %d}: %q,\n", m.prefix[0], m.prefix[1], m.prefix[2], m.company)
+ }
fmt.Println("}")
}