diff options
author | Thomas Haller <thaller@redhat.com> | 2020-11-09 10:07:55 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-11-09 17:53:19 +0100 |
commit | bac5dc99d7a983f6323aeb4c3484c178c3d90241 (patch) | |
tree | 568db365ce407131657c396df041936f68c68f58 | |
parent | 9b5bb3e45cc6a63301e185f31d65d4bb9b2907bd (diff) | |
download | NetworkManager-th/ovs-external-ids.tar.gz |
core/ovs: refactor duplicate code in ovsdb_next_command()th/ovs-external-ids
-rw-r--r-- | src/devices/ovs/nm-ovsdb.c | 91 |
1 files changed, 39 insertions, 52 deletions
diff --git a/src/devices/ovs/nm-ovsdb.c b/src/devices/ovs/nm-ovsdb.c index e4d6e23808..bd55a8b341 100644 --- a/src/devices/ovs/nm-ovsdb.c +++ b/src/devices/ovs/nm-ovsdb.c @@ -1117,15 +1117,15 @@ static void ovsdb_next_command(NMOvsdb *self) { NMOvsdbPrivate * priv = NM_OVSDB_GET_PRIVATE(self); - OvsdbMethodCall * call = NULL; + OvsdbMethodCall * call; char * cmd; nm_auto_decref_json json_t *msg = NULL; - json_t * params; if (!priv->conn) return; if (!priv->calls->len) return; + call = &g_array_index(priv->calls, OvsdbMethodCall, 0); if (call->call_id != CALL_ID_UNSPEC) return; @@ -1165,60 +1165,46 @@ ovsdb_next_command(NMOvsdb *self) "Open_vSwitch", "columns"); break; - case OVSDB_ADD_INTERFACE: - params = json_array(); - json_array_append_new(params, json_string("Open_vSwitch")); - json_array_append_new(params, _inc_next_cfg(priv->db_uuid)); - - _add_interface(self, - params, - call->payload.add_interface.bridge, - call->payload.add_interface.port, - call->payload.add_interface.interface, - call->payload.add_interface.bridge_device, - call->payload.add_interface.interface_device); - - msg = json_pack("{s:I, s:s, s:o}", - "id", - (json_int_t) call->call_id, - "method", - "transact", - "params", - params); - break; - case OVSDB_DEL_INTERFACE: - params = json_array(); - json_array_append_new(params, json_string("Open_vSwitch")); - json_array_append_new(params, _inc_next_cfg(priv->db_uuid)); - - _delete_interface(self, params, call->payload.del_interface.ifname); + default: + { + json_t *params = NULL; - msg = json_pack("{s:I, s:s, s:o}", - "id", - (json_int_t) call->call_id, - "method", - "transact", - "params", - params); - break; - case OVSDB_SET_INTERFACE_MTU: params = json_array(); json_array_append_new(params, json_string("Open_vSwitch")); json_array_append_new(params, _inc_next_cfg(priv->db_uuid)); - json_array_append_new(params, - json_pack("{s:s, s:s, s:{s: I}, s:[[s, s, s]]}", - "op", - "update", - "table", - "Interface", - "row", - "mtu_request", - (json_int_t) call->payload.set_interface_mtu.mtu, - "where", - "name", - "==", - call->payload.set_interface_mtu.ifname)); + switch (call->command) { + case OVSDB_ADD_INTERFACE: + _add_interface(self, + params, + call->payload.add_interface.bridge, + call->payload.add_interface.port, + call->payload.add_interface.interface, + call->payload.add_interface.bridge_device, + call->payload.add_interface.interface_device); + break; + case OVSDB_DEL_INTERFACE: + _delete_interface(self, params, call->payload.del_interface.ifname); + break; + case OVSDB_SET_INTERFACE_MTU: + json_array_append_new(params, + json_pack("{s:s, s:s, s:{s: I}, s:[[s, s, s]]}", + "op", + "update", + "table", + "Interface", + "row", + "mtu_request", + (json_int_t) call->payload.set_interface_mtu.mtu, + "where", + "name", + "==", + call->payload.set_interface_mtu.ifname)); + break; + default: + nm_assert_not_reached(); + break; + } msg = json_pack("{s:I, s:s, s:o}", "id", @@ -1229,11 +1215,12 @@ ovsdb_next_command(NMOvsdb *self) params); break; } + } g_return_if_fail(msg); _LOGT_call("send", call, msg); - cmd = json_dumps(msg, 0); + cmd = json_dumps(msg, 0); g_string_append(priv->output, cmd); free(cmd); |