summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-11-09 10:07:55 +0100
committerThomas Haller <thaller@redhat.com>2020-11-09 17:53:19 +0100
commitbac5dc99d7a983f6323aeb4c3484c178c3d90241 (patch)
tree568db365ce407131657c396df041936f68c68f58
parent9b5bb3e45cc6a63301e185f31d65d4bb9b2907bd (diff)
downloadNetworkManager-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.c91
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);