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", "",