gre/gre6: Unify attribute addition to netlink buffer

There are couple of minor improvements:

  1) Check erspan_ver == 2 in gre6. It still could
     be 1 if erspan_idx is 0.

  2) Add tunnel encapsulation attributes only when
     collect metadata not in effect in gre.

  3) Trivial: address checkpatch issues.

Signed-off-by: Serhey Popovych <serhe.popovych@gmail.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
This commit is contained in:
Serhey Popovych 2018-01-22 19:23:46 +02:00 committed by David Ahern
parent 00ff4b8e31
commit de54cdd3de
2 changed files with 20 additions and 16 deletions

View File

@ -362,6 +362,8 @@ get_failed:
addattr_l(n, 1024, IFLA_GRE_LOCAL, &saddr, 4); addattr_l(n, 1024, IFLA_GRE_LOCAL, &saddr, 4);
addattr_l(n, 1024, IFLA_GRE_REMOTE, &daddr, 4); addattr_l(n, 1024, IFLA_GRE_REMOTE, &daddr, 4);
addattr_l(n, 1024, IFLA_GRE_PMTUDISC, &pmtudisc, 1); addattr_l(n, 1024, IFLA_GRE_PMTUDISC, &pmtudisc, 1);
if (ignore_df)
addattr8(n, 1024, IFLA_GRE_IGNORE_DF, ignore_df & 1);
if (link) if (link)
addattr32(n, 1024, IFLA_GRE_LINK, link); addattr32(n, 1024, IFLA_GRE_LINK, link);
addattr_l(n, 1024, IFLA_GRE_TTL, &ttl, 1); addattr_l(n, 1024, IFLA_GRE_TTL, &ttl, 1);
@ -370,24 +372,23 @@ get_failed:
if (erspan_ver) { if (erspan_ver) {
addattr8(n, 1024, IFLA_GRE_ERSPAN_VER, erspan_ver); addattr8(n, 1024, IFLA_GRE_ERSPAN_VER, erspan_ver);
if (erspan_ver == 1 && erspan_idx != 0) { if (erspan_ver == 1 && erspan_idx != 0) {
addattr32(n, 1024, IFLA_GRE_ERSPAN_INDEX, erspan_idx); addattr32(n, 1024,
IFLA_GRE_ERSPAN_INDEX, erspan_idx);
} else if (erspan_ver == 2) { } else if (erspan_ver == 2) {
addattr8(n, 1024, IFLA_GRE_ERSPAN_DIR, erspan_dir); addattr8(n, 1024,
addattr16(n, 1024, IFLA_GRE_ERSPAN_HWID, erspan_hwid); IFLA_GRE_ERSPAN_DIR, erspan_dir);
addattr16(n, 1024,
IFLA_GRE_ERSPAN_HWID, erspan_hwid);
} }
} }
addattr16(n, 1024, IFLA_GRE_ENCAP_TYPE, encaptype);
addattr16(n, 1024, IFLA_GRE_ENCAP_FLAGS, encapflags);
addattr16(n, 1024, IFLA_GRE_ENCAP_SPORT, htons(encapsport));
addattr16(n, 1024, IFLA_GRE_ENCAP_DPORT, htons(encapdport));
} else { } else {
addattr_l(n, 1024, IFLA_GRE_COLLECT_METADATA, NULL, 0); addattr_l(n, 1024, IFLA_GRE_COLLECT_METADATA, NULL, 0);
} }
addattr16(n, 1024, IFLA_GRE_ENCAP_TYPE, encaptype);
addattr16(n, 1024, IFLA_GRE_ENCAP_FLAGS, encapflags);
addattr16(n, 1024, IFLA_GRE_ENCAP_SPORT, htons(encapsport));
addattr16(n, 1024, IFLA_GRE_ENCAP_DPORT, htons(encapdport));
if (ignore_df)
addattr8(n, 1024, IFLA_GRE_IGNORE_DF, ignore_df & 1);
return 0; return 0;
} }

View File

@ -406,10 +406,13 @@ get_failed:
if (erspan_ver) { if (erspan_ver) {
addattr8(n, 1024, IFLA_GRE_ERSPAN_VER, erspan_ver); addattr8(n, 1024, IFLA_GRE_ERSPAN_VER, erspan_ver);
if (erspan_ver == 1 && erspan_idx != 0) { if (erspan_ver == 1 && erspan_idx != 0) {
addattr32(n, 1024, IFLA_GRE_ERSPAN_INDEX, erspan_idx); addattr32(n, 1024,
} else { IFLA_GRE_ERSPAN_INDEX, erspan_idx);
addattr8(n, 1024, IFLA_GRE_ERSPAN_DIR, erspan_dir); } else if (erspan_ver == 2) {
addattr16(n, 1024, IFLA_GRE_ERSPAN_HWID, erspan_hwid); addattr8(n, 1024,
IFLA_GRE_ERSPAN_DIR, erspan_dir);
addattr16(n, 1024,
IFLA_GRE_ERSPAN_HWID, erspan_hwid);
} }
} }
addattr16(n, 1024, IFLA_GRE_ENCAP_TYPE, encaptype); addattr16(n, 1024, IFLA_GRE_ENCAP_TYPE, encaptype);
@ -604,7 +607,7 @@ static void gre_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
} }
static void gre_print_help(struct link_util *lu, int argc, char **argv, static void gre_print_help(struct link_util *lu, int argc, char **argv,
FILE *f) FILE *f)
{ {
print_usage(f); print_usage(f);
} }