From c6fd60de48a0e6978373a19a98f6a924b7295175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20=C5=A0imerda?= Date: Thu, 2 Apr 2015 15:53:11 +0200 Subject: [PATCH 1/2] docs: improve manual pages and help MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit 43d29f7 substantially improves generated ip-address.8 instead of ip-address.8.in and commit e419f2d removes the generated one losing the improvements entirely. This commit recovers the lost changes, adapts them to the current manual page and adds more man page and help improvements. Based on previous work by: * Kenyon Ralph Changes (ip link): * Add VLAN documentation. * Fix srcport/dstport in VXLAN documentation. Changes (ip address): * Improve manual page synopsis and built-it help. * Use full subcommand names (e.g. 'address' and 'maddress'). * Specify when IPv4, IPv6 or both are affected. * Add lifetimes, home and nodad. Changes (ip route): * Prefer 'show' over 'list' for consistency. Changes (ip tunnel): * Improve manual page synopsis and built-it help. Changes (bridge fdb): * Fix fdb synopsis. Fedora tickets: * https://bugzilla.redhat.com/show_bug.cgi?id=1072441 * https://bugzilla.redhat.com/show_bug.cgi?id=1075692 * https://bugzilla.redhat.com/show_bug.cgi?id=1077191 * https://bugzilla.redhat.com/show_bug.cgi?id=1105438 * https://bugzilla.redhat.com/show_bug.cgi?id=1121261 Signed-Off-By: Pavel Šimerda --- bridge/fdb.c | 8 ++-- ip/ip.c | 4 +- ip/ipaddress.c | 16 +++---- man/man8/bridge.8 | 6 +-- man/man8/ip-address.8.in | 114 +++++++++++++++++++++++++++++++++++++---------- man/man8/ip-link.8.in | 25 ++++++++++- man/man8/ip-route.8.in | 2 +- man/man8/ip-tunnel.8 | 6 +-- man/man8/ip.8 | 6 +-- 9 files changed, 137 insertions(+), 50 deletions(-) diff --git a/bridge/fdb.c b/bridge/fdb.c index 3c33e22..1fec09a 100644 --- a/bridge/fdb.c +++ b/bridge/fdb.c @@ -31,10 +31,10 @@ static unsigned int filter_index; static void usage(void) { - fprintf(stderr, "Usage: bridge fdb { add | append | del | replace } ADDR dev DEV {self|master} [ temp ]\n" - " [router] [ dst IPADDR] [ vlan VID ]\n" - " [ port PORT] [ vni VNI ] [via DEV]\n"); - fprintf(stderr, " bridge fdb {show} [ br BRDEV ] [ brport DEV ]\n"); + fprintf(stderr, "Usage: bridge fdb { add | append | del } LLADDR dev DEV { local | temp }\n" + " [ self ] [ embedded ] [ router ] [ dst IPADDR ]\n" + " [ vni VNI ] [ port PORT ] [ via DEVICE ]\n"); + fprintf(stderr, " bridge fdb show [ br BRDEV ] [ brport DEV ]\n"); exit(-1); } diff --git a/ip/ip.c b/ip/ip.c index da16b15..cba43ca 100644 --- a/ip/ip.c +++ b/ip/ip.c @@ -47,8 +47,8 @@ static void usage(void) fprintf(stderr, "Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }\n" " ip [ -force ] -batch filename\n" -"where OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |\n" -" tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |\n" +"where OBJECT := { link | address | addrlabel | route | rule | neighbor | ntable |\n" +" tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |\n" " netns | l2tp | fou | tcp_metrics | token | netconf }\n" " OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |\n" " -h[uman-readable] | -iec |\n" diff --git a/ip/ipaddress.c b/ip/ipaddress.c index 99a6ab5..dc31515 100644 --- a/ip/ipaddress.c +++ b/ip/ipaddress.c @@ -70,15 +70,15 @@ static void usage(void) if (do_link) { iplink_usage(); } - fprintf(stderr, "Usage: ip addr {add|change|replace} IFADDR dev STRING [ LIFETIME ]\n"); + fprintf(stderr, "Usage: ip address {add|change|replace} IFADDR dev IFNAME [ LIFETIME ]\n"); fprintf(stderr, " [ CONFFLAG-LIST ]\n"); - fprintf(stderr, " ip addr del IFADDR dev STRING [mngtmpaddr]\n"); - fprintf(stderr, " ip addr {show|save|flush} [ dev STRING ] [ scope SCOPE-ID ]\n"); - fprintf(stderr, " [ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ] [up]\n"); - fprintf(stderr, " ip addr {showdump|restore}\n"); + fprintf(stderr, " ip address del IFADDR dev IFNAME [mngtmpaddr]\n"); + fprintf(stderr, " ip address {show|save|flush} [ dev IFNAME ] [ scope SCOPE-ID ]\n"); + fprintf(stderr, " [ to PREFIX ] [ FLAG-LIST ] [ label LABEL ] [up]\n"); + fprintf(stderr, " ip address {showdump|restore}\n"); fprintf(stderr, "IFADDR := PREFIX | ADDR peer PREFIX\n"); fprintf(stderr, " [ broadcast ADDR ] [ anycast ADDR ]\n"); - fprintf(stderr, " [ label STRING ] [ scope SCOPE-ID ]\n"); + fprintf(stderr, " [ label IFNAME ] [ scope SCOPE-ID ]\n"); fprintf(stderr, "SCOPE-ID := [ host | link | global | NUMBER ]\n"); fprintf(stderr, "FLAG-LIST := [ FLAG-LIST ] FLAG\n"); fprintf(stderr, "FLAG := [ permanent | dynamic | secondary | primary |\n"); @@ -1059,7 +1059,7 @@ static int ipadd_dump_check_magic(void) __u32 magic = 0; if (isatty(STDIN_FILENO)) { - fprintf(stderr, "Can't restore addr dump from a terminal\n"); + fprintf(stderr, "Can't restore address dump from a terminal\n"); return -1; } @@ -1787,6 +1787,6 @@ int do_ipaddr(int argc, char **argv) return ipaddr_restore(); if (matches(*argv, "help") == 0) usage(); - fprintf(stderr, "Command \"%s\" is unknown, try \"ip addr help\".\n", *argv); + fprintf(stderr, "Command \"%s\" is unknown, try \"ip address help\".\n", *argv); exit(-1); } diff --git a/man/man8/bridge.8 b/man/man8/bridge.8 index 1855041..67eff33 100644 --- a/man/man8/bridge.8 +++ b/man/man8/bridge.8 @@ -53,8 +53,8 @@ bridge \- show / manipulate bridge addresses and devices .I LLADDR .B dev .IR DEV " { " -.BR local " | " temp " } { " -.BR self " } { " router " } [ " +.BR local " | " temp " } [ " +.BR self " ] [ " router " ] [ " .B dst .IR IPADDR " ] [ " .B vni @@ -65,7 +65,7 @@ bridge \- show / manipulate bridge addresses and devices .IR DEVICE " ]" .ti -8 -.BR "bridge fdb" " [ " show " ] [ " +.BR "bridge fdb show" " [ " .B dev .IR DEV " ]" diff --git a/man/man8/ip-address.8.in b/man/man8/ip-address.8.in index d33b1ed..0e3b67a 100644 --- a/man/man8/ip-address.8.in +++ b/man/man8/ip-address.8.in @@ -14,18 +14,26 @@ ip-address \- protocol address management .sp .ti -8 -.BR "ip address" " { " add " | " del " } " -.IB IFADDR " dev " STRING +.BR "ip address" " { " add " | " change " | " replace " } " +.IB IFADDR " dev " IFNAME +.RI "[ " LIFETIME " ] [ " CONFFLAG-LIST " ]" .ti -8 -.BR "ip address" " { " show " | " flush " } [ " dev -.IR STRING " ] [ " +.BR "ip address del" +.IB IFADDR " dev " IFNAME " [ " mngtmpaddr " ]" + +.ti -8 +.BR "ip address" " { " show " | " save " | " flush " } [ " dev +.IR IFNAME " ] [ " .B scope .IR SCOPE-ID " ] [ " .B to .IR PREFIX " ] [ " FLAG-LIST " ] [ " .B label -.IR PATTERN " ]" +.IR PATTERN " ] [ " up " ]" + +.ti -8 +.BR "ip address" " { " showdump " | " restore " }" .ti -8 .IR IFADDR " := " PREFIX " | " ADDR @@ -36,7 +44,7 @@ ip-address \- protocol address management .B anycast .IR ADDR " ] [ " .B label -.IR STRING " ] [ " +.IR LABEL " ] [ " .B scope .IR SCOPE-ID " ]" @@ -50,14 +58,31 @@ ip-address \- protocol address management .ti -8 .IR FLAG " := " -.RB "[ " permanent " | " dynamic " | " secondary " | " primary " | \ -[ - ] " tentative " | [ - ] " deprecated " | [ - ] " dadfailed " | "\ -temporary " ]" +.RB "[ " permanent " | " dynamic " | " secondary " | " primary " | "\ +tentative " | " deprecated " | " dadfailed " | " temporary " | " CONFFLAG-LIST " ]" + +.ti -8 +.IR CONFFLAG-LIST " := [ " CONFFLAG-LIST " ] " CONFFLAG + +.ti -8 +.IR CONFFLAG " := " +.RB "[ " home " | " nodad " ]" + +.ti -8 +.IR LIFETIME " := [ " +.BI valid_lft " LFT" +.RB "| " preferred_lft +.IR LFT " ]" + +.ti -8 +.IR LFT " := [ " +.BR forever " |" +.IR SECONDS " ]" .SH "DESCRIPTION" The .B address -is a protocol (IP or IPv6) address attached +is a protocol (IPv4 or IPv6) address attached to a network device. Each device must have at least one address to use the corresponding protocol. It is possible to have several different addresses attached to one device. These addresses are not @@ -73,7 +98,7 @@ and deletes old ones. .SS ip address add - add new protocol address. .TP -.BI dev " NAME" +.BI dev " IFNAME " the name of the device to add the address to. .TP @@ -107,7 +132,7 @@ instead of the broadcast address. In this case, the broadcast address is derived by setting/resetting the host bits of the interface prefix. .TP -.BI label " NAME" +.BI label " LABEL" Each address may be tagged with a label string. In order to preserve compatibility with Linux-2.0 net aliases, this string must coincide with the name of the device or must be prefixed @@ -125,7 +150,7 @@ Predefined scope values are: - the address is globally valid. .sp .B site -- (IPv6 only) the address is site local, i.e. it is +- (IPv6 only, deprecated) the address is site local, i.e. it is valid inside this site. .sp .B link @@ -135,6 +160,30 @@ valid inside this site. - the address is valid only inside this host. .in -8 +.TP +.BI valid_lft " LFT" +the valid lifetime of this address; see section 5.5.4 of +RFC 4862. When it expires, the address is removed by the kernel. +Defaults to +.BR "forever" . + +.TP +.BI preferred_lft " LFT" +the preferred lifetime of this address; see section 5.5.4 +of RFC 4862. When it expires, the address is no longer used for new +outgoing connections. Defaults to +.BR "forever" . + +.TP +.B home +(IPv6 only) designates this address the "home address" as defined in +RFC 6275. + +.TP +.B nodad +(IPv6 only) do not perform Duplicate Address Detection (RFC 4862) when +adding this address. + .SS ip address delete - delete protocol address .B Arguments: coincide with the arguments of @@ -145,7 +194,7 @@ If no arguments are given, the first address is deleted. .SS ip address show - look at protocol addresses .TP -.BI dev " NAME " (default) +.BI dev " IFNAME " (default) name of device. .TP @@ -219,36 +268,53 @@ The difference is that it does not run when no arguments are given. .PP .B Warning: -This command (and other +This command and other .B flush -commands described below) is pretty dangerous. If you make a mistake, -it will not forgive it, but will cruelly purge all the addresses. +commands are unforgiving. They will cruelly purge all the addresses. .PP With the .B -statistics option, the command becomes verbose. It prints out the number of deleted -addresses and the number of rounds made to flush the address list. If -this option is given twice, +addresses and the number of rounds made to flush the address list. +If this option is given twice, .B ip address flush also dumps all the deleted addresses in the format described in the previous subsection. .SH "EXAMPLES" .PP +ip address show +.RS 4 +Shows IPv4 and IPv6 addresses assigned to all network interfaces. The 'show' +subcommand can be omitted. +.RE +.PP +ip address show up +.RS 4 +Same as above except that only addresses assigned to active network interfaces +are shown. +.RE +.PP ip address show dev eth0 .RS 4 -Shows the addresses assigned to network interface eth0 +Shows IPv4 and IPv6 addresses assigned to network interface eth0. +.RE +.PP +ip address add 2001:0db8:85a3::0370:7334/64 dev eth1 +.RS 4 +Adds an IPv6 address to network interface eth1. .RE .PP -ip addr add 2001:0db8:85a3::0370:7334/64 dev eth1 +ip address delete 2001:0db8:85a3::0370:7334/64 dev eth1 .RS 4 -Adds an IPv6 address to network interface eth1 +Delete the IPv6 address added above. .RE .PP -ip addr flush dev eth4 +ip address flush dev eth4 scope global .RS 4 -Removes all addresses from device eth4 +Removes all global IPv4 and IPv6 addresses from device eth4. Without 'scope +global' it would remove all addresses including IPv6 link-local ones. .RE .SH SEE ALSO diff --git a/man/man8/ip-link.8.in b/man/man8/ip-link.8.in index 0e3bb5e..3d13a62 100644 --- a/man/man8/ip-link.8.in +++ b/man/man8/ip-link.8.in @@ -243,6 +243,21 @@ specifies the number of receive queues for new device. specifies the desired index of the new virtual device. The link creation fails, if the index is busy. .TP +VLAN Type Support +For a link of type +.I VLAN +the following additional arguments are supported: + +.BI "ip link add " DEVICE +.BI type " vlan " id " ID +.BI link " DEVICE + +.in +8 +.sp +.BI id " VNI " +- specifies the VLAN Identifer to use. Note that numbers with a leading " 0 " or " 0x " are interpreted as octal or hexadeimal, respectively. + +.TP VXLAN Type Support For a link of type .I VXLAN @@ -261,7 +276,9 @@ the following additional arguments are supported: .R " ] [ " .BI tos " TOS " .R " ] [ " -.BI port " MIN MAX " +.BI dstport " PORT " +.R " ] [ " +.BI srcport " MIN MAX " .R " ] [ " .I "[no]learning " .R " ] [ " @@ -317,7 +334,11 @@ parameter. - specifies the TOS value to use in outgoing packets. .sp -.BI port " MIN MAX" +.BI dstport " PORT" +- specifies the UDP destination port to communicate to the remote VXLAN tunnel endpoint. + +.sp +.BI srcport " MIN MAX" - specifies the range of port numbers to use as UDP source ports to communicate to the remote VXLAN tunnel endpoint. diff --git a/man/man8/ip-route.8.in b/man/man8/ip-route.8.in index 2b1583d..913ab89 100644 --- a/man/man8/ip-route.8.in +++ b/man/man8/ip-route.8.in @@ -16,7 +16,7 @@ ip-route \- routing table management .ti -8 .BR "ip route" " { " -.BR list " | " flush " } " +.BR show " | " flush " } " .I SELECTOR .ti -8 diff --git a/man/man8/ip-tunnel.8 b/man/man8/ip-tunnel.8 index fc2d6bd..af0c94c 100644 --- a/man/man8/ip-tunnel.8 +++ b/man/man8/ip-tunnel.8 @@ -50,7 +50,7 @@ ip-tunnel - tunnel configuration .ti -8 .IR MODE " := " -.RB " { " ipip " | " gre " | " sit " | " isatap " | " ip6ip6 " | " ipip6 " | " ip6gre " | " any " }" +.RB " { " ipip " | " gre " | " sit " | " isatap " | " vti " | " ip6ip6 " | " ipip6 " | " ip6gre " | " vti6 " | " any " }" .ti -8 .IR ADDR " := { " IP_ADDRESS " |" @@ -107,10 +107,10 @@ select the tunnel device name. set the tunnel mode. Available modes depend on the encapsulating address family. .br Modes for IPv4 encapsulation available: -.BR ipip ", " sit ", " isatap " and " gre "." +.BR ipip ", " gre ", " sit ", " isatap " and " vti "." .br Modes for IPv6 encapsulation available: -.BR ip6ip6 ", " ipip6 ", " ip6gre ", and " any "." +.BR ip6ip6 ", " ipip6 ", " ip6gre " and " vti6 " .TP .BI remote " ADDRESS" diff --git a/man/man8/ip.8 b/man/man8/ip.8 index 016e8c6..4c2f107 100644 --- a/man/man8/ip.8 +++ b/man/man8/ip.8 @@ -19,8 +19,8 @@ ip \- show / manipulate routing, devices, policy routing and tunnels .ti -8 .IR OBJECT " := { " -.BR link " | " addr " | " addrlabel " | " route " | " rule " | " neigh " | "\ - ntable " | " tunnel " | " tuntap " | " maddr " | " mroute " | " mrule " | "\ +.BR link " | " address " | " addrlabel " | " route " | " rule " | " neigh " | "\ + ntable " | " tunnel " | " tuntap " | " maddress " | " mroute " | " mrule " | "\ monitor " | " xfrm " | " netns " | " l2tp " | " tcp_metrics " }" .sp @@ -66,7 +66,7 @@ Output more detailed information. .TP .BR "\-l" , " \-loops " -Specify maximum number of loops the 'ip addr flush' logic +Specify maximum number of loops the 'ip address flush' logic will attempt before giving up. The default is 10. Zero (0) means loop until all addresses are removed. -- 2.0.5