From: Masahide NAKAMURA <nakam@linux-ipv6.org>
To: Stephen Hemminger <shemminger@osdl.org>
Cc: Herbert Xu <herbert@gondor.apana.org.au>,
netdev@oss.sgi.com, nakam@linux-ipv6.org
Subject: [PATCH 2/3] iproute2 and xfrm
Date: Thu, 15 Jul 2004 15:02:19 +0900 [thread overview]
Message-ID: <20040715150219.24a498a6@localhost> (raw)
In-Reply-To: <20040714174233.2fc7dbc2@localhost>
Hello,
This patch is for iproute2.
Please check comment in a ChangeSet below.
Regards,
ChangeSet@1.56, 2004-07-12 20:00:04+09:00, nakam@linux-ipv6.org
fix output format to follow command line option style when using
without "-s" option.
diff -Nru a/ip/ipxfrm.c b/ip/ipxfrm.c
--- a/ip/ipxfrm.c 2004-07-14 16:35:49 +09:00
+++ b/ip/ipxfrm.c 2004-07-14 16:35:49 +09:00
@@ -105,11 +105,11 @@
fprintf(fp, prefix);
memset(abuf, '\0', sizeof(abuf));
- fprintf(fp, "%s ", rt_addr_n2a(family, sizeof(*saddr),
- saddr, abuf, sizeof(abuf)));
+ fprintf(fp, "src %s ", rt_addr_n2a(family, sizeof(*saddr),
+ saddr, abuf, sizeof(abuf)));
memset(abuf, '\0', sizeof(abuf));
- fprintf(fp, "%s\n", rt_addr_n2a(family, sizeof(id->daddr),
- &id->daddr, abuf, sizeof(abuf)));
+ fprintf(fp, "dst %s\n", rt_addr_n2a(family, sizeof(id->daddr),
+ &id->daddr, abuf, sizeof(abuf)));
if (prefix)
fprintf(fp, prefix);
@@ -122,30 +122,20 @@
sprintf(pbuf, "%d", id->proto);
p = pbuf;
}
+ fprintf(fp, "proto %s ", p);
- switch (id->proto) {
- case IPPROTO_ESP:
- case IPPROTO_AH:
- case IPPROTO_COMP:
- fprintf(fp, "%s ", p);
- break;
- default:
- fprintf(fp, "unspec(%s)", p);
- break;
- }
-
- switch (id->proto) {
- case IPPROTO_ESP:
- case IPPROTO_AH:
- case IPPROTO_COMP:
- default:
- spi = ntohl(id->spi);
- fprintf(fp, "spi %d(0x%08x) ", spi, spi);
- break;
- }
+ spi = ntohl(id->spi);
+ fprintf(fp, "spi %u", spi);
+ if (show_stats > 0)
+ fprintf(fp, "(0x%08x)", spi);
+ fprintf(fp, " ");
+
+ fprintf(fp, "reqid %u", reqid);
+ if (show_stats > 0)
+ fprintf(fp, "(0x%08x)", reqid);
+ fprintf(fp, " ");
- fprintf(fp, "reqid %d ", reqid);
- fprintf(fp, "%s\n", (mode ? "tunnel" : "transport"));
+ fprintf(fp, "mode %s\n", (mode ? "tunnel" : "transport"));
}
static const char *strxf_limit(__u64 limit)
@@ -279,16 +269,14 @@
fprintf(fp, prefix);
memset(abuf, '\0', sizeof(abuf));
- fprintf(fp, "%s/%d[%u]", rt_addr_n2a(f, sizeof(sel->saddr),
- &sel->saddr,
- abuf, sizeof(abuf)),
- sel->prefixlen_s, sel->sport);
+ fprintf(fp, "src %s/%d ", rt_addr_n2a(f, sizeof(sel->saddr),
+ &sel->saddr, abuf, sizeof(abuf)),
+ sel->prefixlen_s);
memset(abuf, '\0', sizeof(abuf));
- fprintf(fp, " %s/%d[%u]", rt_addr_n2a(f, sizeof(sel->daddr),
- &sel->daddr,
- abuf, sizeof(abuf)),
- sel->prefixlen_d, sel->dport);
+ fprintf(fp, "dst %s/%d", rt_addr_n2a(f, sizeof(sel->daddr),
+ &sel->daddr, abuf, sizeof(abuf)),
+ sel->prefixlen_d);
fprintf(fp, "\n");
@@ -296,7 +284,8 @@
fprintf(fp, prefix);
fprintf(fp, "\t");
- fprintf(fp, "upspec %u ", sel->proto);
+ fprintf(fp, "upspec proto %u ", sel->proto);
+ fprintf(fp, "sport %u dport %u ", sel->sport, sel->dport);
if (sel->ifindex > 0) {
char buf[IF_NAMESIZE];
@@ -304,10 +293,10 @@
memset(buf, '\0', sizeof(buf));
if_indextoname(sel->ifindex, buf);
fprintf(fp, "dev %s ", buf);
- } else
- fprintf(fp, "dev (none) ");
+ }
- fprintf(fp, "uid %u", sel->user);
+ if (show_stats > 0)
+ fprintf(fp, "uid %u", sel->user);
fprintf(fp, "\n");
}
@@ -367,35 +356,41 @@
__u16 family, FILE *fp, const char *prefix)
{
char buf[32];
- const char *p = NULL;
int i;
- if (prefix) {
- strcpy(buf, prefix);
- strcat(buf, " ");
- } else
- strcpy(buf, " ");
- p = buf;
-
for (i = 0; i < ntmpls; i++) {
struct xfrm_user_tmpl *tmpl = &tmpls[i];
if (prefix)
fprintf(fp, prefix);
- fprintf(fp, "tmpl-%d:\n", i+1);
+
+ fprintf(fp, "tmpl");
xfrm_id_info_print(&tmpl->saddr, &tmpl->id, tmpl->mode,
- tmpl->reqid, family, fp, p);
+ tmpl->reqid, family, fp, prefix);
- fprintf(fp, p);
+ fprintf(fp, prefix);
fprintf(fp, "\t");
- fprintf(fp, "level %s ", ((tmpl->optional == 0) ? "required" :
- (tmpl->optional == 1) ? "use" :
- "unknown-level"));
- fprintf(fp, "share %s ", strxf_share(tmpl->share));
- fprintf(fp, "algo-mask:");
- fprintf(fp, "E=%s, ", strxf_mask(tmpl->ealgos));
- fprintf(fp, "A=%s, ", strxf_mask(tmpl->aalgos));
- fprintf(fp, "C=%s", strxf_mask(tmpl->calgos));
+ fprintf(fp, "level ");
+ switch (tmpl->optional) {
+ case 0:
+ fprintf(fp, "required");
+ break;
+ case 1:
+ fprintf(fp, "use");
+ break;
+ default:
+ fprintf(fp, "%d", tmpl->optional);
+ break;
+ }
+ fprintf(fp, " ");
+
+ if (show_stats > 0) {
+ fprintf(fp, "share %s ", strxf_share(tmpl->share));
+ fprintf(fp, "algo-mask:");
+ fprintf(fp, "E=%s, ", strxf_mask(tmpl->ealgos));
+ fprintf(fp, "A=%s, ", strxf_mask(tmpl->aalgos));
+ fprintf(fp, "C=%s", strxf_mask(tmpl->calgos));
+ }
fprintf(fp, "\n");
}
}
@@ -413,17 +408,17 @@
case XFRMA_ALG_CRYPT:
if (prefix)
fprintf(fp, prefix);
- xfrm_algo_print((struct xfrm_algo *)data, fp, "E:");
+ xfrm_algo_print((struct xfrm_algo *)data, fp, "algo E ");
break;
case XFRMA_ALG_AUTH:
if (prefix)
fprintf(fp, prefix);
- xfrm_algo_print((struct xfrm_algo *)data, fp, "A:");
+ xfrm_algo_print((struct xfrm_algo *)data, fp, "algo A ");
break;
case XFRMA_ALG_COMP:
if (prefix)
fprintf(fp, prefix);
- xfrm_algo_print((struct xfrm_algo *)data, fp, "C:");
+ xfrm_algo_print((struct xfrm_algo *)data, fp, "algo C ");
break;
case XFRMA_ENCAP:
if (prefix)
diff -Nru a/ip/xfrm_policy.c b/ip/xfrm_policy.c
--- a/ip/xfrm_policy.c 2004-07-14 16:35:49 +09:00
+++ b/ip/xfrm_policy.c 2004-07-14 16:35:49 +09:00
@@ -357,20 +357,47 @@
if (n->nlmsg_type == XFRM_MSG_DELPOLICY)
fprintf(fp, "Deleted ");
+ fprintf(fp, "sel ");
xfrm_selector_print(&xpinfo->sel, preferred_family, fp, NULL);
fprintf(fp, "\t");
- fprintf(fp, "%s ", (xpinfo->dir == XFRM_POLICY_IN ? "in " :
- xpinfo->dir == XFRM_POLICY_OUT ? "out" :
- xpinfo->dir == XFRM_POLICY_FWD ? "fwd" :
- "unknown-dir"));
- fprintf(fp, "%s ", (xpinfo->action == XFRM_POLICY_ALLOW ? "allow" :
- xpinfo->action == XFRM_POLICY_BLOCK ? "block" :
- "unknown-action"));
+ fprintf(fp, "dir ");
+ switch (xpinfo->dir) {
+ case XFRM_POLICY_IN:
+ fprintf(fp, "in");
+ break;
+ case XFRM_POLICY_OUT:
+ fprintf(fp, "out");
+ break;
+ case XFRM_POLICY_FWD:
+ fprintf(fp, "fwd");
+ break;
+ default:
+ fprintf(fp, "%d", xpinfo->dir);
+ break;
+ }
+ fprintf(fp, " ");
+
+ fprintf(fp, "action ");
+ switch (xpinfo->action) {
+ case XFRM_POLICY_ALLOW:
+ fprintf(fp, "allow");
+ break;
+ case XFRM_POLICY_BLOCK:
+ fprintf(fp, "block");
+ break;
+ default:
+ fprintf(fp, "%d", xpinfo->action);
+ break;
+ }
+ fprintf(fp, " ");
+
fprintf(fp, "index %u ", xpinfo->index);
fprintf(fp, "priority %u ", xpinfo->priority);
- fprintf(fp, "share %s ", strxf_share(xpinfo->share));
- fprintf(fp, "flags 0x%s", strxf_flags(xpinfo->flags));
+ if (show_stats > 0) {
+ fprintf(fp, "share %s ", strxf_share(xpinfo->share));
+ fprintf(fp, "flags 0x%s", strxf_flags(xpinfo->flags));
+ }
fprintf(fp, "\n");
if (show_stats > 0)
diff -Nru a/ip/xfrm_state.c b/ip/xfrm_state.c
--- a/ip/xfrm_state.c 2004-07-14 16:35:49 +09:00
+++ b/ip/xfrm_state.c 2004-07-14 16:35:49 +09:00
@@ -142,11 +142,20 @@
{
int argc = *argcp;
char **argv = *argvp;
+ int len = strlen(*argv);
- if (strcmp(*argv, "noecn") == 0)
- *flags |= XFRM_STATE_NOECN;
- else
- invarg("\"FLAG\" is invalid", *argv);
+ if (len > 2 && strncmp(*argv, "0x", 2) == 0) {
+ __u8 val = 0;
+
+ if (get_u8(&val, *argv, 16))
+ invarg("\"FLAG\" is invalid", *argv);
+ *flags = val;
+ } else {
+ if (strcmp(*argv, "noecn") == 0)
+ *flags |= XFRM_STATE_NOECN;
+ else
+ invarg("\"FLAG\" is invalid", *argv);
+ }
filter.state_flags_mask = XFRM_FILTER_MASK_FULL;
@@ -357,22 +366,26 @@
xfrm_id_info_print(&xsinfo->saddr, &xsinfo->id, xsinfo->mode,
xsinfo->reqid, xsinfo->family, fp, NULL);
+ fprintf(fp, "\t");
if (show_stats > 0) {
- fprintf(fp, "\t");
fprintf(fp, "seq 0x%08u ", xsinfo->seq);
fprintf(fp, "replay-window %d ", xsinfo->replay_window);
- fprintf(fp, "flags ");
- if (xsinfo->flags & XFRM_STATE_NOECN)
- fprintf(fp, "noecn ");
- fprintf(fp, "(0x%s)", strxf_flags(xsinfo->flags));
-
- fprintf(fp, "\n");
}
+ fprintf(fp, "flag 0x%s", strxf_flags(xsinfo->flags));
+ if (show_stats > 0) {
+ if (xsinfo->flags) {
+ fprintf(fp, "(");
+ if (xsinfo->flags & XFRM_STATE_NOECN)
+ fprintf(fp, "noecn");
+ fprintf(fp, ")");
+ }
+ }
+ fprintf(fp, "\n");
xfrm_xfrma_print(tb, ntb, xsinfo->family, fp, "\t");
if (show_stats > 0) {
- fprintf(fp, "\tsel:\n");
+ fprintf(fp, "\tsel\n");
xfrm_selector_print(&xsinfo->sel, xsinfo->family, fp, "\t ");
}
--
Masahide NAKAMURA
next prev parent reply other threads:[~2004-07-15 6:02 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-07-03 9:46 [PATCH] Add nl_open to libnetlink Herbert Xu
2004-07-05 7:05 ` Masahide NAKAMURA
2004-07-05 8:07 ` Herbert Xu
2004-07-06 21:05 ` Stephen Hemminger
2004-07-07 4:09 ` Masahide NAKAMURA
2004-07-07 5:05 ` Masahide NAKAMURA
2004-07-07 6:56 ` Masahide NAKAMURA
2004-07-07 11:03 ` Herbert Xu
2004-07-09 3:51 ` Masahide NAKAMURA
2004-07-15 6:02 ` [PATCH 1/3] iproute2 and xfrm Masahide NAKAMURA
2004-07-16 22:22 ` Stephen Hemminger
[not found] ` <20040714174233.2fc7dbc2@localhost>
2004-07-15 6:02 ` Masahide NAKAMURA [this message]
2004-07-16 23:05 ` [PATCH 2/3] " Herbert Xu
[not found] ` <20040714174637.0ce79ae1@localhost>
2004-07-15 6:02 ` [PATCH 3/3] " Masahide NAKAMURA
2004-07-07 18:08 ` [PATCH] Add nl_open to libnetlink Stephen Hemminger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040715150219.24a498a6@localhost \
--to=nakam@linux-ipv6.org \
--cc=herbert@gondor.apana.org.au \
--cc=netdev@oss.sgi.com \
--cc=shemminger@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).