go.net/ipv4: simplify protocol constants generator

Also updates IANA protocol constants.

R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/14588043
diff --git a/ipv4/gen.go b/ipv4/gen.go
index d2ed17d..9a2af1e 100644
--- a/ipv4/gen.go
+++ b/ipv4/gen.go
@@ -97,20 +97,16 @@
 }
 
 type icmpv4Parameters struct {
-	XMLName    xml.Name              `xml:"registry"`
-	Title      string                `xml:"title"`
-	Updated    string                `xml:"updated"`
-	Registries []icmpv4ParamRegistry `xml:"registry"`
-}
-
-type icmpv4ParamRegistry struct {
-	Title   string              `xml:"title"`
-	Records []icmpv4ParamRecord `xml:"record"`
-}
-
-type icmpv4ParamRecord struct {
-	Value string `xml:"value"`
-	Descr string `xml:"description"`
+	XMLName    xml.Name `xml:"registry"`
+	Title      string   `xml:"title"`
+	Updated    string   `xml:"updated"`
+	Registries []struct {
+		Title   string `xml:"title"`
+		Records []struct {
+			Value string `xml:"value"`
+			Descr string `xml:"description"`
+		} `xml:"record"`
+	} `xml:"registry"`
 }
 
 type canonICMPv4ParamRecord struct {
@@ -193,18 +189,16 @@
 }
 
 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  []protocolRecord `xml:"registry>record"`
-}
-
-type protocolRecord struct {
-	Value string `xml:"value"`
-	Name  string `xml:"name"`
-	Descr string `xml:"description"`
+	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 {
diff --git a/ipv4/gentest.go b/ipv4/gentest.go
index cc35225..3b21d7a 100644
--- a/ipv4/gentest.go
+++ b/ipv4/gentest.go
@@ -39,7 +39,7 @@
 
 func main() {
 	var bb bytes.Buffer
-	fmt.Fprintf(&bb, "// go run gentv.go\n")
+	fmt.Fprintf(&bb, "// go run gentest.go\n")
 	fmt.Fprintf(&bb, "// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT\n\n")
 	fmt.Fprintf(&bb, "package ipv4_test\n\n")
 	for _, r := range registries {
@@ -85,18 +85,19 @@
 }
 
 type dscpRegistry struct {
-	XMLName     xml.Name     `xml:"registry"`
-	Title       string       `xml:"title"`
-	Updated     string       `xml:"updated"`
-	Note        string       `xml:"note"`
-	RegTitle    string       `xml:"registry>title"`
-	PoolRecords []dscpRecord `xml:"registry>record"`
-	Records     []dscpRecord `xml:"registry>registry>record"`
-}
-
-type dscpRecord struct {
-	Name  string `xml:"name"`
-	Space string `xml:"space"`
+	XMLName     xml.Name `xml:"registry"`
+	Title       string   `xml:"title"`
+	Updated     string   `xml:"updated"`
+	Note        string   `xml:"note"`
+	RegTitle    string   `xml:"registry>title"`
+	PoolRecords []struct {
+		Name  string `xml:"name"`
+		Space string `xml:"space"`
+	} `xml:"registry>record"`
+	Records []struct {
+		Name  string `xml:"name"`
+		Space string `xml:"space"`
+	} `xml:"registry>registry>record"`
 }
 
 type canonDSCPRecord struct {
@@ -145,17 +146,15 @@
 }
 
 type tosTCByte struct {
-	XMLName  xml.Name          `xml:"registry"`
-	Title    string            `xml:"title"`
-	Updated  string            `xml:"updated"`
-	Note     string            `xml:"note"`
-	RegTitle string            `xml:"registry>title"`
-	Records  []tosTCByteRecord `xml:"registry>record"`
-}
-
-type tosTCByteRecord struct {
-	Binary  string `xml:"binary"`
-	Keyword string `xml:"keyword"`
+	XMLName  xml.Name `xml:"registry"`
+	Title    string   `xml:"title"`
+	Updated  string   `xml:"updated"`
+	Note     string   `xml:"note"`
+	RegTitle string   `xml:"registry>title"`
+	Records  []struct {
+		Binary  string `xml:"binary"`
+		Keyword string `xml:"keyword"`
+	} `xml:"registry>record"`
 }
 
 type canonTOSTCByteRecord struct {
diff --git a/ipv4/iana_test.go b/ipv4/iana_test.go
index 276230d..8f9e7ba 100644
--- a/ipv4/iana_test.go
+++ b/ipv4/iana_test.go
@@ -1,9 +1,9 @@
-// go run gentv.go
+// go run gentest.go
 // GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
 
 package ipv4_test
 
-// Differentiated Services Field Codepoints, Updated: 2010-05-11
+// Differentiated Services Field Codepoints (DSCP), Updated: 2013-06-25
 const (
 	DiffServCS0        = 0x0  // CS0
 	DiffServCS1        = 0x20 // CS1