aboutsummaryrefslogtreecommitdiff
path: root/vendor/golang.org/x/net/internal/iana
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2018-09-27 20:03:23 +0200
committerDimitri Sokolyuk <demon@dim13.org>2018-09-27 20:03:23 +0200
commit14bb08c1df8db9ec6c8a05520d4eee67971235d9 (patch)
treefc820e59c26ed4c5e87e65737909b47959f0faa5 /vendor/golang.org/x/net/internal/iana
parent54eb169e8fc9bc0357139e7c259e977b184f8fbb (diff)
mod tidy
Diffstat (limited to 'vendor/golang.org/x/net/internal/iana')
-rw-r--r--vendor/golang.org/x/net/internal/iana/const.go223
-rw-r--r--vendor/golang.org/x/net/internal/iana/gen.go383
2 files changed, 0 insertions, 606 deletions
diff --git a/vendor/golang.org/x/net/internal/iana/const.go b/vendor/golang.org/x/net/internal/iana/const.go
deleted file mode 100644
index cea712f..0000000
--- a/vendor/golang.org/x/net/internal/iana/const.go
+++ /dev/null
@@ -1,223 +0,0 @@
-// go generate gen.go
-// Code generated by the command above; DO NOT EDIT.
-
-// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA).
-package iana // import "golang.org/x/net/internal/iana"
-
-// Differentiated Services Field Codepoints (DSCP), Updated: 2018-05-04
-const (
- DiffServCS0 = 0x00 // CS0
- DiffServCS1 = 0x20 // CS1
- DiffServCS2 = 0x40 // CS2
- DiffServCS3 = 0x60 // CS3
- DiffServCS4 = 0x80 // CS4
- DiffServCS5 = 0xa0 // CS5
- DiffServCS6 = 0xc0 // CS6
- DiffServCS7 = 0xe0 // CS7
- DiffServAF11 = 0x28 // AF11
- DiffServAF12 = 0x30 // AF12
- DiffServAF13 = 0x38 // AF13
- DiffServAF21 = 0x48 // AF21
- DiffServAF22 = 0x50 // AF22
- DiffServAF23 = 0x58 // AF23
- DiffServAF31 = 0x68 // AF31
- DiffServAF32 = 0x70 // AF32
- DiffServAF33 = 0x78 // AF33
- DiffServAF41 = 0x88 // AF41
- DiffServAF42 = 0x90 // AF42
- DiffServAF43 = 0x98 // AF43
- DiffServEF = 0xb8 // EF
- DiffServVOICEADMIT = 0xb0 // VOICE-ADMIT
- NotECNTransport = 0x00 // Not-ECT (Not ECN-Capable Transport)
- ECNTransport1 = 0x01 // ECT(1) (ECN-Capable Transport(1))
- ECNTransport0 = 0x02 // ECT(0) (ECN-Capable Transport(0))
- CongestionExperienced = 0x03 // CE (Congestion Experienced)
-)
-
-// Protocol Numbers, Updated: 2017-10-13
-const (
- ProtocolIP = 0 // IPv4 encapsulation, pseudo protocol number
- ProtocolHOPOPT = 0 // IPv6 Hop-by-Hop Option
- ProtocolICMP = 1 // Internet Control Message
- ProtocolIGMP = 2 // Internet Group Management
- ProtocolGGP = 3 // Gateway-to-Gateway
- ProtocolIPv4 = 4 // IPv4 encapsulation
- ProtocolST = 5 // Stream
- ProtocolTCP = 6 // Transmission Control
- ProtocolCBT = 7 // CBT
- ProtocolEGP = 8 // Exterior Gateway Protocol
- ProtocolIGP = 9 // any private interior gateway (used by Cisco for their IGRP)
- ProtocolBBNRCCMON = 10 // BBN RCC Monitoring
- ProtocolNVPII = 11 // Network Voice Protocol
- ProtocolPUP = 12 // PUP
- ProtocolEMCON = 14 // EMCON
- ProtocolXNET = 15 // Cross Net Debugger
- ProtocolCHAOS = 16 // Chaos
- ProtocolUDP = 17 // User Datagram
- ProtocolMUX = 18 // Multiplexing
- ProtocolDCNMEAS = 19 // DCN Measurement Subsystems
- ProtocolHMP = 20 // Host Monitoring
- ProtocolPRM = 21 // Packet Radio Measurement
- ProtocolXNSIDP = 22 // XEROX NS IDP
- ProtocolTRUNK1 = 23 // Trunk-1
- ProtocolTRUNK2 = 24 // Trunk-2
- ProtocolLEAF1 = 25 // Leaf-1
- ProtocolLEAF2 = 26 // Leaf-2
- ProtocolRDP = 27 // Reliable Data Protocol
- ProtocolIRTP = 28 // Internet Reliable Transaction
- ProtocolISOTP4 = 29 // ISO Transport Protocol Class 4
- ProtocolNETBLT = 30 // Bulk Data Transfer Protocol
- ProtocolMFENSP = 31 // MFE Network Services Protocol
- ProtocolMERITINP = 32 // MERIT Internodal Protocol
- ProtocolDCCP = 33 // Datagram Congestion Control Protocol
- Protocol3PC = 34 // Third Party Connect Protocol
- ProtocolIDPR = 35 // Inter-Domain Policy Routing Protocol
- ProtocolXTP = 36 // XTP
- ProtocolDDP = 37 // Datagram Delivery Protocol
- ProtocolIDPRCMTP = 38 // IDPR Control Message Transport Proto
- ProtocolTPPP = 39 // TP++ Transport Protocol
- ProtocolIL = 40 // IL Transport Protocol
- ProtocolIPv6 = 41 // IPv6 encapsulation
- ProtocolSDRP = 42 // Source Demand Routing Protocol
- ProtocolIPv6Route = 43 // Routing Header for IPv6
- ProtocolIPv6Frag = 44 // Fragment Header for IPv6
- ProtocolIDRP = 45 // Inter-Domain Routing Protocol
- ProtocolRSVP = 46 // Reservation Protocol
- ProtocolGRE = 47 // Generic Routing Encapsulation
- ProtocolDSR = 48 // Dynamic Source Routing Protocol
- ProtocolBNA = 49 // BNA
- ProtocolESP = 50 // Encap Security Payload
- ProtocolAH = 51 // Authentication Header
- ProtocolINLSP = 52 // Integrated Net Layer Security TUBA
- ProtocolNARP = 54 // NBMA Address Resolution Protocol
- ProtocolMOBILE = 55 // IP Mobility
- ProtocolTLSP = 56 // Transport Layer Security Protocol using Kryptonet key management
- ProtocolSKIP = 57 // SKIP
- ProtocolIPv6ICMP = 58 // ICMP for IPv6
- ProtocolIPv6NoNxt = 59 // No Next Header for IPv6
- ProtocolIPv6Opts = 60 // Destination Options for IPv6
- ProtocolCFTP = 62 // CFTP
- ProtocolSATEXPAK = 64 // SATNET and Backroom EXPAK
- ProtocolKRYPTOLAN = 65 // Kryptolan
- ProtocolRVD = 66 // MIT Remote Virtual Disk Protocol
- ProtocolIPPC = 67 // Internet Pluribus Packet Core
- ProtocolSATMON = 69 // SATNET Monitoring
- ProtocolVISA = 70 // VISA Protocol
- ProtocolIPCV = 71 // Internet Packet Core Utility
- ProtocolCPNX = 72 // Computer Protocol Network Executive
- ProtocolCPHB = 73 // Computer Protocol Heart Beat
- ProtocolWSN = 74 // Wang Span Network
- ProtocolPVP = 75 // Packet Video Protocol
- ProtocolBRSATMON = 76 // Backroom SATNET Monitoring
- ProtocolSUNND = 77 // SUN ND PROTOCOL-Temporary
- ProtocolWBMON = 78 // WIDEBAND Monitoring
- ProtocolWBEXPAK = 79 // WIDEBAND EXPAK
- ProtocolISOIP = 80 // ISO Internet Protocol
- ProtocolVMTP = 81 // VMTP
- ProtocolSECUREVMTP = 82 // SECURE-VMTP
- ProtocolVINES = 83 // VINES
- ProtocolTTP = 84 // Transaction Transport Protocol
- ProtocolIPTM = 84 // Internet Protocol Traffic Manager
- ProtocolNSFNETIGP = 85 // NSFNET-IGP
- ProtocolDGP = 86 // Dissimilar Gateway Protocol
- ProtocolTCF = 87 // TCF
- ProtocolEIGRP = 88 // EIGRP
- ProtocolOSPFIGP = 89 // OSPFIGP
- ProtocolSpriteRPC = 90 // Sprite RPC Protocol
- ProtocolLARP = 91 // Locus Address Resolution Protocol
- ProtocolMTP = 92 // Multicast Transport Protocol
- ProtocolAX25 = 93 // AX.25 Frames
- ProtocolIPIP = 94 // IP-within-IP Encapsulation Protocol
- ProtocolSCCSP = 96 // Semaphore Communications Sec. Pro.
- ProtocolETHERIP = 97 // Ethernet-within-IP Encapsulation
- ProtocolENCAP = 98 // Encapsulation Header
- ProtocolGMTP = 100 // GMTP
- ProtocolIFMP = 101 // Ipsilon Flow Management Protocol
- ProtocolPNNI = 102 // PNNI over IP
- ProtocolPIM = 103 // Protocol Independent Multicast
- ProtocolARIS = 104 // ARIS
- ProtocolSCPS = 105 // SCPS
- ProtocolQNX = 106 // QNX
- ProtocolAN = 107 // Active Networks
- ProtocolIPComp = 108 // IP Payload Compression Protocol
- ProtocolSNP = 109 // Sitara Networks Protocol
- ProtocolCompaqPeer = 110 // Compaq Peer Protocol
- ProtocolIPXinIP = 111 // IPX in IP
- ProtocolVRRP = 112 // Virtual Router Redundancy Protocol
- ProtocolPGM = 113 // PGM Reliable Transport Protocol
- ProtocolL2TP = 115 // Layer Two Tunneling Protocol
- ProtocolDDX = 116 // D-II Data Exchange (DDX)
- ProtocolIATP = 117 // Interactive Agent Transfer Protocol
- ProtocolSTP = 118 // Schedule Transfer Protocol
- ProtocolSRP = 119 // SpectraLink Radio Protocol
- ProtocolUTI = 120 // UTI
- ProtocolSMP = 121 // Simple Message Protocol
- ProtocolPTP = 123 // Performance Transparency Protocol
- ProtocolISIS = 124 // ISIS over IPv4
- ProtocolFIRE = 125 // FIRE
- ProtocolCRTP = 126 // Combat Radio Transport Protocol
- ProtocolCRUDP = 127 // Combat Radio User Datagram
- ProtocolSSCOPMCE = 128 // SSCOPMCE
- ProtocolIPLT = 129 // IPLT
- ProtocolSPS = 130 // Secure Packet Shield
- ProtocolPIPE = 131 // Private IP Encapsulation within IP
- ProtocolSCTP = 132 // Stream Control Transmission Protocol
- ProtocolFC = 133 // Fibre Channel
- ProtocolRSVPE2EIGNORE = 134 // RSVP-E2E-IGNORE
- ProtocolMobilityHeader = 135 // Mobility Header
- ProtocolUDPLite = 136 // UDPLite
- ProtocolMPLSinIP = 137 // MPLS-in-IP
- ProtocolMANET = 138 // MANET Protocols
- ProtocolHIP = 139 // Host Identity Protocol
- ProtocolShim6 = 140 // Shim6 Protocol
- ProtocolWESP = 141 // Wrapped Encapsulating Security Payload
- ProtocolROHC = 142 // Robust Header Compression
- ProtocolReserved = 255 // Reserved
-)
-
-// Address Family Numbers, Updated: 2018-04-02
-const (
- AddrFamilyIPv4 = 1 // IP (IP version 4)
- AddrFamilyIPv6 = 2 // IP6 (IP version 6)
- AddrFamilyNSAP = 3 // NSAP
- AddrFamilyHDLC = 4 // HDLC (8-bit multidrop)
- AddrFamilyBBN1822 = 5 // BBN 1822
- AddrFamily802 = 6 // 802 (includes all 802 media plus Ethernet "canonical format")
- AddrFamilyE163 = 7 // E.163
- AddrFamilyE164 = 8 // E.164 (SMDS, Frame Relay, ATM)
- AddrFamilyF69 = 9 // F.69 (Telex)
- AddrFamilyX121 = 10 // X.121 (X.25, Frame Relay)
- AddrFamilyIPX = 11 // IPX
- AddrFamilyAppletalk = 12 // Appletalk
- AddrFamilyDecnetIV = 13 // Decnet IV
- AddrFamilyBanyanVines = 14 // Banyan Vines
- AddrFamilyE164withSubaddress = 15 // E.164 with NSAP format subaddress
- AddrFamilyDNS = 16 // DNS (Domain Name System)
- AddrFamilyDistinguishedName = 17 // Distinguished Name
- AddrFamilyASNumber = 18 // AS Number
- AddrFamilyXTPoverIPv4 = 19 // XTP over IP version 4
- AddrFamilyXTPoverIPv6 = 20 // XTP over IP version 6
- AddrFamilyXTPnativemodeXTP = 21 // XTP native mode XTP
- AddrFamilyFibreChannelWorldWidePortName = 22 // Fibre Channel World-Wide Port Name
- AddrFamilyFibreChannelWorldWideNodeName = 23 // Fibre Channel World-Wide Node Name
- AddrFamilyGWID = 24 // GWID
- AddrFamilyL2VPN = 25 // AFI for L2VPN information
- AddrFamilyMPLSTPSectionEndpointID = 26 // MPLS-TP Section Endpoint Identifier
- AddrFamilyMPLSTPLSPEndpointID = 27 // MPLS-TP LSP Endpoint Identifier
- AddrFamilyMPLSTPPseudowireEndpointID = 28 // MPLS-TP Pseudowire Endpoint Identifier
- AddrFamilyMTIPv4 = 29 // MT IP: Multi-Topology IP version 4
- AddrFamilyMTIPv6 = 30 // MT IPv6: Multi-Topology IP version 6
- AddrFamilyEIGRPCommonServiceFamily = 16384 // EIGRP Common Service Family
- AddrFamilyEIGRPIPv4ServiceFamily = 16385 // EIGRP IPv4 Service Family
- AddrFamilyEIGRPIPv6ServiceFamily = 16386 // EIGRP IPv6 Service Family
- AddrFamilyLISPCanonicalAddressFormat = 16387 // LISP Canonical Address Format (LCAF)
- AddrFamilyBGPLS = 16388 // BGP-LS
- AddrFamily48bitMAC = 16389 // 48-bit MAC
- AddrFamily64bitMAC = 16390 // 64-bit MAC
- AddrFamilyOUI = 16391 // OUI
- AddrFamilyMACFinal24bits = 16392 // MAC/24
- AddrFamilyMACFinal40bits = 16393 // MAC/40
- AddrFamilyIPv6Initial64bits = 16394 // IPv6/64
- AddrFamilyRBridgePortID = 16395 // RBridge Port ID
- AddrFamilyTRILLNickname = 16396 // TRILL Nickname
-)
diff --git a/vendor/golang.org/x/net/internal/iana/gen.go b/vendor/golang.org/x/net/internal/iana/gen.go
deleted file mode 100644
index 2a7661c..0000000
--- a/vendor/golang.org/x/net/internal/iana/gen.go
+++ /dev/null
@@ -1,383 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-//go:generate go run gen.go
-
-// This program generates internet protocol constants and tables by
-// reading IANA protocol registries.
-package main
-
-import (
- "bytes"
- "encoding/xml"
- "fmt"
- "go/format"
- "io"
- "io/ioutil"
- "net/http"
- "os"
- "strconv"
- "strings"
-)
-
-var registries = []struct {
- url string
- parse func(io.Writer, io.Reader) error
-}{
- {
- "https://www.iana.org/assignments/dscp-registry/dscp-registry.xml",
- parseDSCPRegistry,
- },
- {
- "https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml",
- parseProtocolNumbers,
- },
- {
- "https://www.iana.org/assignments/address-family-numbers/address-family-numbers.xml",
- parseAddrFamilyNumbers,
- },
-}
-
-func main() {
- var bb bytes.Buffer
- fmt.Fprintf(&bb, "// go generate gen.go\n")
- fmt.Fprintf(&bb, "// Code generated by the command above; DO NOT EDIT.\n\n")
- fmt.Fprintf(&bb, "// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA).\n")
- fmt.Fprintf(&bb, `package iana // import "golang.org/x/net/internal/iana"`+"\n\n")
- for _, r := range registries {
- resp, err := http.Get(r.url)
- if err != nil {
- fmt.Fprintln(os.Stderr, err)
- os.Exit(1)
- }
- defer resp.Body.Close()
- if resp.StatusCode != http.StatusOK {
- fmt.Fprintf(os.Stderr, "got HTTP status code %v for %v\n", resp.StatusCode, r.url)
- os.Exit(1)
- }
- if err := r.parse(&bb, resp.Body); err != nil {
- fmt.Fprintln(os.Stderr, err)
- os.Exit(1)
- }
- fmt.Fprintf(&bb, "\n")
- }
- b, err := format.Source(bb.Bytes())
- if err != nil {
- fmt.Fprintln(os.Stderr, err)
- os.Exit(1)
- }
- if err := ioutil.WriteFile("const.go", b, 0644); err != nil {
- fmt.Fprintln(os.Stderr, err)
- os.Exit(1)
- }
-}
-
-func parseDSCPRegistry(w io.Writer, r io.Reader) error {
- dec := xml.NewDecoder(r)
- var dr dscpRegistry
- if err := dec.Decode(&dr); err != nil {
- return err
- }
- fmt.Fprintf(w, "// %s, Updated: %s\n", dr.Title, dr.Updated)
- fmt.Fprintf(w, "const (\n")
- for _, dr := range dr.escapeDSCP() {
- fmt.Fprintf(w, "DiffServ%s = %#02x", dr.Name, dr.Value)
- fmt.Fprintf(w, "// %s\n", dr.OrigName)
- }
- for _, er := range dr.escapeECN() {
- fmt.Fprintf(w, "%s = %#02x", er.Descr, er.Value)
- fmt.Fprintf(w, "// %s\n", er.OrigDescr)
- }
- fmt.Fprintf(w, ")\n")
- return nil
-}
-
-type dscpRegistry struct {
- XMLName xml.Name `xml:"registry"`
- Title string `xml:"title"`
- Updated string `xml:"updated"`
- Note string `xml:"note"`
- Registries []struct {
- Title string `xml:"title"`
- Registries []struct {
- Title string `xml:"title"`
- Records []struct {
- Name string `xml:"name"`
- Space string `xml:"space"`
- } `xml:"record"`
- } `xml:"registry"`
- Records []struct {
- Value string `xml:"value"`
- Descr string `xml:"description"`
- } `xml:"record"`
- } `xml:"registry"`
-}
-
-type canonDSCPRecord struct {
- OrigName string
- Name string
- Value int
-}
-
-func (drr *dscpRegistry) escapeDSCP() []canonDSCPRecord {
- var drs []canonDSCPRecord
- for _, preg := range drr.Registries {
- if !strings.Contains(preg.Title, "Differentiated Services Field Codepoints") {
- continue
- }
- for _, reg := range preg.Registries {
- if !strings.Contains(reg.Title, "Pool 1 Codepoints") {
- continue
- }
- drs = make([]canonDSCPRecord, len(reg.Records))
- sr := strings.NewReplacer(
- "+", "",
- "-", "",
- "/", "",
- ".", "",
- " ", "",
- )
- for i, dr := range reg.Records {
- s := strings.TrimSpace(dr.Name)
- drs[i].OrigName = s
- drs[i].Name = sr.Replace(s)
- n, err := strconv.ParseUint(dr.Space, 2, 8)
- if err != nil {
- continue
- }
- drs[i].Value = int(n) << 2
- }
- }
- }
- return drs
-}
-
-type canonECNRecord struct {
- OrigDescr string
- Descr string
- Value int
-}
-
-func (drr *dscpRegistry) escapeECN() []canonECNRecord {
- var ers []canonECNRecord
- for _, reg := range drr.Registries {
- if !strings.Contains(reg.Title, "ECN Field") {
- continue
- }
- ers = make([]canonECNRecord, len(reg.Records))
- sr := strings.NewReplacer(
- "Capable", "",
- "Not-ECT", "",
- "ECT(1)", "",
- "ECT(0)", "",
- "CE", "",
- "(", "",
- ")", "",
- "+", "",
- "-", "",
- "/", "",
- ".", "",
- " ", "",
- )
- for i, er := range reg.Records {
- s := strings.TrimSpace(er.Descr)
- ers[i].OrigDescr = s
- ss := strings.Split(s, " ")
- if len(ss) > 1 {
- ers[i].Descr = strings.Join(ss[1:], " ")
- } else {
- ers[i].Descr = ss[0]
- }
- ers[i].Descr = sr.Replace(er.Descr)
- n, err := strconv.ParseUint(er.Value, 2, 8)
- if err != nil {
- continue
- }
- ers[i].Value = int(n)
- }
- }
- return ers
-}
-
-func parseProtocolNumbers(w io.Writer, r io.Reader) error {
- dec := xml.NewDecoder(r)
- var pn protocolNumbers
- if err := dec.Decode(&pn); err != nil {
- return err
- }
- prs := pn.escape()
- prs = append([]canonProtocolRecord{{
- Name: "IP",
- Descr: "IPv4 encapsulation, pseudo protocol number",
- Value: 0,
- }}, prs...)
- fmt.Fprintf(w, "// %s, Updated: %s\n", pn.Title, pn.Updated)
- fmt.Fprintf(w, "const (\n")
- for _, pr := range prs {
- if pr.Name == "" {
- continue
- }
- fmt.Fprintf(w, "Protocol%s = %d", pr.Name, pr.Value)
- s := pr.Descr
- if s == "" {
- s = pr.OrigName
- }
- fmt.Fprintf(w, "// %s\n", s)
- }
- fmt.Fprintf(w, ")\n")
- return nil
-}
-
-type protocolNumbers struct {
- XMLName xml.Name `xml:"registry"`
- Title string `xml:"title"`
- Updated string `xml:"updated"`
- RegTitle string `xml:"registry>title"`
- Note string `xml:"registry>note"`
- Records []struct {
- Value string `xml:"value"`
- Name string `xml:"name"`
- Descr string `xml:"description"`
- } `xml:"registry>record"`
-}
-
-type canonProtocolRecord struct {
- OrigName string
- Name string
- Descr string
- Value int
-}
-
-func (pn *protocolNumbers) escape() []canonProtocolRecord {
- prs := make([]canonProtocolRecord, len(pn.Records))
- sr := strings.NewReplacer(
- "-in-", "in",
- "-within-", "within",
- "-over-", "over",
- "+", "P",
- "-", "",
- "/", "",
- ".", "",
- " ", "",
- )
- for i, pr := range pn.Records {
- if strings.Contains(pr.Name, "Deprecated") ||
- strings.Contains(pr.Name, "deprecated") {
- continue
- }
- prs[i].OrigName = pr.Name
- s := strings.TrimSpace(pr.Name)
- switch pr.Name {
- case "ISIS over IPv4":
- prs[i].Name = "ISIS"
- case "manet":
- prs[i].Name = "MANET"
- default:
- prs[i].Name = sr.Replace(s)
- }
- ss := strings.Split(pr.Descr, "\n")
- for i := range ss {
- ss[i] = strings.TrimSpace(ss[i])
- }
- if len(ss) > 1 {
- prs[i].Descr = strings.Join(ss, " ")
- } else {
- prs[i].Descr = ss[0]
- }
- prs[i].Value, _ = strconv.Atoi(pr.Value)
- }
- return prs
-}
-
-func parseAddrFamilyNumbers(w io.Writer, r io.Reader) error {
- dec := xml.NewDecoder(r)
- var afn addrFamilylNumbers
- if err := dec.Decode(&afn); err != nil {
- return err
- }
- afrs := afn.escape()
- fmt.Fprintf(w, "// %s, Updated: %s\n", afn.Title, afn.Updated)
- fmt.Fprintf(w, "const (\n")
- for _, afr := range afrs {
- if afr.Name == "" {
- continue
- }
- fmt.Fprintf(w, "AddrFamily%s = %d", afr.Name, afr.Value)
- fmt.Fprintf(w, "// %s\n", afr.Descr)
- }
- fmt.Fprintf(w, ")\n")
- return nil
-}
-
-type addrFamilylNumbers struct {
- XMLName xml.Name `xml:"registry"`
- Title string `xml:"title"`
- Updated string `xml:"updated"`
- RegTitle string `xml:"registry>title"`
- Note string `xml:"registry>note"`
- Records []struct {
- Value string `xml:"value"`
- Descr string `xml:"description"`
- } `xml:"registry>record"`
-}
-
-type canonAddrFamilyRecord struct {
- Name string
- Descr string
- Value int
-}
-
-func (afn *addrFamilylNumbers) escape() []canonAddrFamilyRecord {
- afrs := make([]canonAddrFamilyRecord, len(afn.Records))
- sr := strings.NewReplacer(
- "IP version 4", "IPv4",
- "IP version 6", "IPv6",
- "Identifier", "ID",
- "-", "",
- "-", "",
- "/", "",
- ".", "",
- " ", "",
- )
- for i, afr := range afn.Records {
- if strings.Contains(afr.Descr, "Unassigned") ||
- strings.Contains(afr.Descr, "Reserved") {
- continue
- }
- afrs[i].Descr = afr.Descr
- s := strings.TrimSpace(afr.Descr)
- switch s {
- case "IP (IP version 4)":
- afrs[i].Name = "IPv4"
- case "IP6 (IP version 6)":
- afrs[i].Name = "IPv6"
- case "AFI for L2VPN information":
- afrs[i].Name = "L2VPN"
- case "E.164 with NSAP format subaddress":
- afrs[i].Name = "E164withSubaddress"
- case "MT IP: Multi-Topology IP version 4":
- afrs[i].Name = "MTIPv4"
- case "MAC/24":
- afrs[i].Name = "MACFinal24bits"
- case "MAC/40":
- afrs[i].Name = "MACFinal40bits"
- case "IPv6/64":
- afrs[i].Name = "IPv6Initial64bits"
- default:
- n := strings.Index(s, "(")
- if n > 0 {
- s = s[:n]
- }
- n = strings.Index(s, ":")
- if n > 0 {
- s = s[:n]
- }
- afrs[i].Name = sr.Replace(s)
- }
- afrs[i].Value, _ = strconv.Atoi(afr.Value)
- }
- return afrs
-}