ip(8) accepts -family ipv6 (-6) option at the toplevel. It is
straightforward to support the existing option for modifying listener
on IPv6 addresses.

Maintain the backward compatibility by leaving ip fou -6 flag
implemented, while it's removed from the usage message.

Signed-off-by: Sorah Fukumori <h...@sorah.jp>
---
 ip/ipfou.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/ip/ipfou.c b/ip/ipfou.c
index ea126b08..9c697770 100644
--- a/ip/ipfou.c
+++ b/ip/ipfou.c
@@ -27,10 +27,10 @@
 static void usage(void)
 {
        fprintf(stderr,
-               "Usage: ip fou add port PORT { ipproto PROTO  | gue } [ -6 ]\n"
+               "Usage: ip fou add port PORT { ipproto PROTO  | gue }\n"
                "                  [ local IFADDR ] [ peer IFADDR ]\n"
                "                  [ peer_port PORT ] [ dev IFNAME ]\n"
-               "       ip fou del port PORT [ -6 ] [ local IFADDR ]\n"
+               "       ip fou del port PORT [ local IFADDR ]\n"
                "                  [ peer IFADDR ] [ peer_port PORT ]\n"
                "                  [ dev IFNAME ]\n"
                "       ip fou show\n"
@@ -55,13 +55,17 @@ static int fou_parse_opt(int argc, char **argv, struct 
nlmsghdr *n,
 {
        const char *local = NULL, *peer = NULL;
        __u16 port, peer_port = 0;
-       __u8 family = AF_INET;
+       __u8 family = preferred_family;
        bool gue_set = false;
        int ipproto_set = 0;
        __u8 ipproto, type;
        int port_set = 0;
        int index = 0;
 
+       if (preferred_family == AF_UNSPEC) {
+               family = AF_INET;
+       }
+
        while (argc > 0) {
                if (!matches(*argv, "port")) {
                        NEXT_ARG();
-- 
2.26.2

Reply via email to