go.net/ipv6: make IANA registry parser robust
- specify complete resource path to avoid receiving xhtml
- make use of keyword instead of table index
R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/10738043
diff --git a/ipv6/gen.go b/ipv6/gen.go
index de529ad..36517b2 100644
--- a/ipv6/gen.go
+++ b/ipv6/gen.go
@@ -28,7 +28,7 @@
parse func(io.Writer, io.Reader) error
}{
{
- "http://www.iana.org/assignments/icmpv6-parameters",
+ "http://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xml",
parseICMPv6Parameters,
},
{
@@ -73,7 +73,7 @@
if err := dec.Decode(&icp); err != nil {
return err
}
- prs := icp.escape(1)
+ prs := icp.escape()
fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated)
fmt.Fprintf(w, "const (\n")
for _, pr := range prs {
@@ -119,7 +119,17 @@
Value int
}
-func (icp *icmpv6Parameters) escape(id int) []canonICMPv6ParamRecord {
+func (icp *icmpv6Parameters) escape() []canonICMPv6ParamRecord {
+ id := -1
+ for i, r := range icp.Registries {
+ if strings.Contains(r.Title, "Type") || strings.Contains(r.Title, "type") {
+ id = i
+ break
+ }
+ }
+ if id < 0 {
+ return nil
+ }
prs := make([]canonICMPv6ParamRecord, len(icp.Registries[id].Records))
sr := strings.NewReplacer(
"Messages", "",