X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fodp-util.c;h=29f536dae2173dd79591d311dfefece36f5bc8a8;hb=75fca0a445ccecbf0b53a44024800860475acf2e;hp=09f8b8384d7c75b299daf37ae4c2a7da807a3c79;hpb=8ba43fbd1f14d60a2d097bafc7d0606d860d0f72;p=openvswitch diff --git a/lib/odp-util.c b/lib/odp-util.c index 09f8b838..29f536da 100644 --- a/lib/odp-util.c +++ b/lib/odp-util.c @@ -24,6 +24,7 @@ #include "dynamic-string.h" #include "flow.h" #include "netlink.h" +#include "openvswitch/tunnel.h" #include "packets.h" #include "timeval.h" #include "util.h" @@ -216,6 +217,35 @@ format_odp_flow(struct ds *ds, const struct odp_flow *f) ds_put_cstr(ds, ", actions:"); format_odp_actions(ds, f->actions, f->actions_len); } + +void +format_odp_port_type(struct ds *ds, const struct odp_port *p) +{ + if (!strcmp(p->type, "gre") + || !strcmp(p->type, "ipsec_gre") + || !strcmp(p->type, "capwap")) { + const struct tnl_port_config *config; + + config = (struct tnl_port_config *)p->config; + + ds_put_format(ds, " (%s: remote_ip="IP_FMT, + p->type, IP_ARGS(&config->daddr)); + + if (config->saddr) { + ds_put_format(ds, ", local_ip="IP_FMT, IP_ARGS(&config->saddr)); + } + + if (config->in_key) { + ds_put_format(ds, ", in_key=%#"PRIx64, ntohll(config->in_key)); + } + + ds_put_cstr(ds, ")"); + } else if (!strcmp(p->type, "patch")) { + ds_put_format(ds, " (%s: peer=%s)", p->type, (char *)p->config); + } else if (strcmp(p->type, "system")) { + ds_put_format(ds, " (%s)", p->type); + } +} void odp_flow_key_from_flow(struct odp_flow_key *key, const struct flow *flow)