Hi all.
I suggest two patches for the iana-etc, which solves the problem of
data updates from the IANA site. The first patch is from LinHES project and
can be found here:
http://linhes.org/projects/linhes/repository/revisions/master/entry/abs/core/iana-etc/newer.patch
I added second patch to place short protocols and services descriptions in
output files.
Data update must be done by command
make get
before make and make install.
Michael Uleysky
diff -Naur old/Makefile new/Makefile
--- old/Makefile 2008-03-06 05:02:40.000000000 +1100
+++ new/Makefile 2012-07-23 03:20:19.009174483 +1000
@@ -42,11 +42,11 @@
protocol-numbers.iana port-numbers.iana
protocol-numbers.iana:
- $(AWK) -f get.gawk -v file=protocol-numbers >protocol-numbers.iana
+ $(AWK) -f get.gawk -v file=protocol-numbers/protocol-numbers.xml >protocol-numbers.iana
rm -f protocol-numbers
port-numbers.iana:
- $(AWK) -f get.gawk -v file=port-numbers >port-numbers.iana
+ $(AWK) -f get.gawk -v file=service-names-port-numbers/service-names-port-numbers.xml >port-numbers.iana
rm -f port-numbers
protocol-numbers:
diff -Naur old/get.gawk new/get.gawk
--- old/get.gawk 2008-03-06 05:04:18.000000000 +1100
+++ new/get.gawk 2012-07-23 03:20:19.009174483 +1000
@@ -26,7 +26,7 @@
NR++
if (in_content) { print }
- if (/^$/) { in_content=1 }
+ if (/^\r?$/) { in_content=1 }
}
printf "\n" >"/dev/stderr"
diff -Naur old/protocols.gawk new/protocols.gawk
--- old/protocols.gawk 2006-11-15 05:20:26.000000000 +1100
+++ new/protocols.gawk 2012-07-23 03:22:13.479330458 +1000
@@ -1,32 +1,13 @@
-#!/usr/bin/gawk --re-interval -f
-# the above doesn't work (stupid kernel) but serves as documentation
-
-# Copyright (c) 2003-2004, 2006 Seth W. Klein <[email protected]>
-# Licensed under the Open Software License version 3.0
-# See the file COPYING in the distribution tarball or
-# http://www.opensource.org/licenses/osl-3.0.txt
+#!/usr/bin/awk -f
BEGIN {
- if (strip == "yes") {
- strip = 1
- format = "%s\t%s\t%s\n"
- header_printed = 1
- } else {
- strip = 0
- print "# See also: protocols(5)" \
- ", http://www.sethwklein.net/projects/iana-etc/\n#"
- format = "%-12s %3s %-12s # %s\n"
- header_printed = 0
- }
+ print "# See the full IANA XML file at: /usr/share/iana-etc/protocol-numbers.iana\n"
+ FS="[<>]"
}
-{ sub(/\r/, "") }
-match($0, /^[ \t]+([0-9]+)[ \t]{1,5}([^ \t]+)(.*)/, f) {
- if ( ! header_printed) {
- printf format, "# protocol", "num", "aliases", "comments"
- header_printed = 1;
- }
- sub(/^[ \t]*/, "", f[3])
- printf format, tolower(f[2]), f[1], f[2], f[3]
- next
+
+{
+ if (/<record/) { v=n=0 }
+ if (/<value/) v=$3
+ if (/<name/ && !($3~/ /)) n=$3
+ if (/<\/record/ && (v || n=="HOPOPT") && n) printf "%-12s %3i %s\n", tolower(n),v,n
}
-!strip { print "# " $0 }
diff -Naur old/services.gawk new/services.gawk
--- old/services.gawk 2008-03-06 04:51:45.000000000 +1100
+++ new/services.gawk 2012-07-23 03:22:32.272685489 +1000
@@ -1,44 +1,15 @@
-#!/usr/bin/gawk -f
-
-# Copyright (c) 2003-2004, 2006, 2008 Seth W. Klein <[email protected]>
-# Licensed under the Open Software License version 3.0
-# See the file COPYING in the distribution tarball or
-# http://www.opensource.org/licenses/osl-3.0.txt
+#!/usr/bin/awk -f
BEGIN {
- if (strip == "yes") {
- strip = 1
- } else {
- strip = 0
- print "# See also: services(5)" \
- ", http://www.sethwklein.net/projects/iana-etc/\n#"
- }
- while (getline <"port-aliases") {
- sub(/#.*/, "")
- if (/^[ \t]*$/) { continue }
- # 1:name 2:protocol 3:aliases
- match($0, /^[ \t]*([^ \t]+)[ \t]+([^ \t]+)[ \t]+(.*)$/, f)
- aliases[f[1] " " f[2]] = " " f[3]
- }
+ print "# See the full IANA XML file at: /usr/share/iana-etc/port-numbers.iana\n"
+ FS="[<>]"
}
-{ sub(/\r/, "") }
-# 1:name 2:ws 3:port 4:range 5:proto 6:comment
-match($0, /(^[[:alnum:]][^ \t]+)([ \t]+)([0-9]+)(-[0-9]+)?\/([^ \t]+)(.*)/, f) \
-&& f[3] != "0" {
-# port 0 means unallocated, per port-numbers
- name = f[1]
- whitespace = f[2]
- port = f[3]
- protocol = f[5]
- comment = f[6]
- if (strip) {
- whitespace = "\t"
- comment = ""
- } else if (length(comment) > 0)
- sub(/^[ \t]*/, "&# ", comment)
- print name whitespace port "/" protocol aliases[name " " protocol] comment
- next
+
+{
+ if (/<record/) { n=u=p=c=0 }
+ if (/<name/ && !/\(/) n=$3
+ if (/<number/) u=$3
+ if (/<protocol/) p=$3
+ if (/Unassigned/ || /Reserved/ || /historic/) c=1
+ if (/<\/record/ && n && u && p && !c) printf "%-15s %5i/%s\n", n,u,p # services
}
-# comment out, prettily
-!/^#/ { sub(/^ /, "#") || sub(/^/, "# ") }
-!strip { print }
diff -urNd iana-etc-2.30/protocols.gawk iana-etc-2.30-michael/protocols.gawk
--- iana-etc-2.30/protocols.gawk 2014-01-29 19:14:56.153941452 +1100
+++ iana-etc-2.30-michael/protocols.gawk 2014-01-29 19:15:18.223973251 +1100
@@ -6,8 +6,9 @@
}
{
- if (/<record/) { v=n=0 }
+ if (/<record/) { v=n=0; d="" }
if (/<value/) v=$3
+ if (/<description/) d=$3
if (/<name/ && !($3~/ /)) n=$3
- if (/<\/record/ && (v || n=="HOPOPT") && n) printf "%-12s %3i %s\n", tolower(n),v,n
+ if (/<\/record/ && (v || n=="HOPOPT") && n) printf "%-15s %3i %-15s # %s\n", tolower(n),v,n,d
}
diff -urNd iana-etc-2.30/services.gawk iana-etc-2.30-michael/services.gawk
--- iana-etc-2.30/services.gawk 2014-01-29 19:14:56.153941452 +1100
+++ iana-etc-2.30-michael/services.gawk 2014-01-29 19:15:18.873974646 +1100
@@ -6,10 +6,11 @@
}
{
- if (/<record/) { n=u=p=c=0 }
+ if (/<record/) { n=u=p=c=0; d="" }
if (/<name/ && !/\(/) n=$3
if (/<number/) u=$3
if (/<protocol/) p=$3
+ if (/<description/) d=$3
if (/Unassigned/ || /Reserved/ || /historic/) c=1
- if (/<\/record/ && n && u && p && !c) printf "%-15s %5i/%s\n", n,u,p # services
+ if (/<\/record/ && n && u && p && !c) printf "%-15s %5i/%-5s # %s\n", n,u,p,d # services
}
--
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page