summaryrefslogtreecommitdiff
path: root/ofproto/ofproto.c
diff options
context:
space:
mode:
authorWilliam Tu <u9012063@gmail.com>2019-10-04 13:48:58 -0700
committerWilliam Tu <u9012063@gmail.com>2019-11-21 09:19:59 -0800
commit27501802d09f782b8133031c1eae3394ae5ce147 (patch)
tree93fa74d893f9a0b57cd86eeed9504044a87e424c /ofproto/ofproto.c
parentacb691e15e3110bd2c063c740ae8d9a5e271238d (diff)
downloadopenvswitch-27501802d09f782b8133031c1eae3394ae5ce147.tar.gz
ofproto-dpif: Expose datapath capability to ovsdb.
The patch adds support for fetching the datapath's capabilities from the result of 'check_support()', and write the supported capability to a new database column, called 'capabilities' under Datapath table. To see how it works, run: # ovs-vsctl -- add-br br0 -- set Bridge br0 datapath_type=netdev # ovs-vsctl -- --id=@m create Datapath datapath_version=0 \ 'ct_zones={}' 'capabilities={}' \ -- set Open_vSwitch . datapaths:"netdev"=@m # ovs-vsctl list-dp-cap netdev ufid=true sample_nesting=true clone=true tnl_push_pop=true \ ct_orig_tuple=true ct_eventmask=true ct_state=true \ ct_clear=true max_vlan_headers=1 recirc=true ct_label=true \ max_hash_alg=1 ct_state_nat=true ct_timeout=true \ ct_mark=true ct_orig_tuple6=true check_pkt_len=true \ masked_set_action=true max_mpls_depth=3 trunc=true ct_zone=true Signed-off-by: William Tu <u9012063@gmail.com> Tested-by: Greg Rose <gvrose8192@gmail.com> Reviewed-by: Greg Rose <gvrose8192@gmail.com> --- v5: Add improved documentation from Ben and fix checkpatch error (tab and line 79 char) v4: rebase to master v3: fix 32-bit build, reported by Greg travis: https://travis-ci.org/williamtu/ovs-travis/builds/599276267 v2: rebase to master
Diffstat (limited to 'ofproto/ofproto.c')
-rw-r--r--ofproto/ofproto.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
index 3aaa45a9b..7535ba176 100644
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -954,6 +954,18 @@ ofproto_get_flow_restore_wait(void)
return flow_restore_wait;
}
+/* Retrieve datapath capabilities. */
+void
+ofproto_get_datapath_cap(const char *datapath_type, struct smap *dp_cap)
+{
+ datapath_type = ofproto_normalize_type(datapath_type);
+ const struct ofproto_class *class = ofproto_class_find__(datapath_type);
+
+ if (class->get_datapath_cap) {
+ class->get_datapath_cap(datapath_type, dp_cap);
+ }
+}
+
/* Connection tracking configuration. */
void
ofproto_ct_set_zone_timeout_policy(const char *datapath_type, uint16_t zone_id,