summaryrefslogtreecommitdiff
path: root/clients/cli/settings.c
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2015-09-01 15:14:03 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2015-12-01 17:39:41 +0100
commitb614a5ec6174bd6dce1ea9593160dd7164fdbd57 (patch)
treeac8aa7645829b925ca5ae343d04e5e4bec59e9e8 /clients/cli/settings.c
parentae8c7a8967c6f91aeeea75a37cd3d14bf0edb67d (diff)
downloadNetworkManager-b614a5ec6174bd6dce1ea9593160dd7164fdbd57.tar.gz
cli: add support for IP tunnel settings
Diffstat (limited to 'clients/cli/settings.c')
-rw-r--r--clients/cli/settings.c195
1 files changed, 195 insertions, 0 deletions
diff --git a/clients/cli/settings.c b/clients/cli/settings.c
index bf2cadc707..3e8c10f4c2 100644
--- a/clients/cli/settings.c
+++ b/clients/cli/settings.c
@@ -718,6 +718,36 @@ NmcOutputField nmc_fields_setting_tun[] = {
NM_SETTING_TUN_MULTI_QUEUE
#define NMC_FIELDS_SETTING_TUN_COMMON NMC_FIELDS_SETTING_TUN_ALL
+/* Available fields for NM_SETTING_IP_TUNNEL_SETTING_NAME */
+NmcOutputField nmc_fields_setting_ip_tunnel[] = {
+ SETTING_FIELD ("name"), /* 0 */
+ SETTING_FIELD (NM_SETTING_IP_TUNNEL_MODE), /* 1 */
+ SETTING_FIELD (NM_SETTING_IP_TUNNEL_PARENT), /* 2 */
+ SETTING_FIELD (NM_SETTING_IP_TUNNEL_LOCAL), /* 3 */
+ SETTING_FIELD (NM_SETTING_IP_TUNNEL_REMOTE), /* 4 */
+ SETTING_FIELD (NM_SETTING_IP_TUNNEL_TTL), /* 5 */
+ SETTING_FIELD (NM_SETTING_IP_TUNNEL_TOS), /* 6 */
+ SETTING_FIELD (NM_SETTING_IP_TUNNEL_PATH_MTU_DISCOVERY), /* 7 */
+ SETTING_FIELD (NM_SETTING_IP_TUNNEL_INPUT_KEY), /* 8 */
+ SETTING_FIELD (NM_SETTING_IP_TUNNEL_OUTPUT_KEY), /* 9 */
+ SETTING_FIELD (NM_SETTING_IP_TUNNEL_ENCAPSULATION_LIMIT), /* 10 */
+ SETTING_FIELD (NM_SETTING_IP_TUNNEL_FLOW_LABEL), /* 11 */
+ {NULL, NULL, 0, NULL, FALSE, FALSE, 0}
+};
+#define NMC_FIELDS_SETTING_IP_TUNNEL_ALL "name"","\
+ NM_SETTING_IP_TUNNEL_MODE","\
+ NM_SETTING_IP_TUNNEL_PARENT","\
+ NM_SETTING_IP_TUNNEL_LOCAL","\
+ NM_SETTING_IP_TUNNEL_REMOTE","\
+ NM_SETTING_IP_TUNNEL_TTL","\
+ NM_SETTING_IP_TUNNEL_TOS","\
+ NM_SETTING_IP_TUNNEL_PATH_MTU_DISCOVERY","\
+ NM_SETTING_IP_TUNNEL_INPUT_KEY","\
+ NM_SETTING_IP_TUNNEL_OUTPUT_KEY","\
+ NM_SETTING_IP_TUNNEL_ENCAPSULATION_LIMIT","\
+ NM_SETTING_IP_TUNNEL_FLOW_LABEL
+#define NMC_FIELDS_SETTING_IP_TUNNEL_COMMON NMC_FIELDS_SETTING_IP_TUNNEL_ALL
+
/*----------------------------------------------------------------------------*/
static char *
wep_key_type_to_string (NMWepKeyType type)
@@ -1310,6 +1340,17 @@ DEFINE_GETTER (nmc_property_tun_get_pi, NM_SETTING_TUN_PI);
DEFINE_GETTER (nmc_property_tun_get_vnet_hdr, NM_SETTING_TUN_VNET_HDR);
DEFINE_GETTER (nmc_property_tun_get_multi_queue, NM_SETTING_TUN_MULTI_QUEUE);
+DEFINE_GETTER (nmc_property_ip_tunnel_get_parent, NM_SETTING_IP_TUNNEL_PARENT);
+DEFINE_GETTER (nmc_property_ip_tunnel_get_local, NM_SETTING_IP_TUNNEL_LOCAL);
+DEFINE_GETTER (nmc_property_ip_tunnel_get_remote, NM_SETTING_IP_TUNNEL_REMOTE);
+DEFINE_GETTER (nmc_property_ip_tunnel_get_ttl, NM_SETTING_IP_TUNNEL_TTL);
+DEFINE_GETTER (nmc_property_ip_tunnel_get_tos, NM_SETTING_IP_TUNNEL_TOS);
+DEFINE_GETTER (nmc_property_ip_tunnel_get_path_mtu_discovery, NM_SETTING_IP_TUNNEL_PATH_MTU_DISCOVERY);
+DEFINE_GETTER (nmc_property_ip_tunnel_get_input_key, NM_SETTING_IP_TUNNEL_INPUT_KEY);
+DEFINE_GETTER (nmc_property_ip_tunnel_get_output_key, NM_SETTING_IP_TUNNEL_OUTPUT_KEY);
+DEFINE_GETTER (nmc_property_ip_tunnel_get_encapsulation_limit, NM_SETTING_IP_TUNNEL_ENCAPSULATION_LIMIT);
+DEFINE_GETTER (nmc_property_ip_tunnel_get_flow_label, NM_SETTING_IP_TUNNEL_FLOW_LABEL);
+
static char *
nmc_property_ib_get_mtu (NMSetting *setting, NmcPropertyGetType get_type)
{
@@ -1665,6 +1706,44 @@ nmc_property_wired_set_wake_on_lan (NMSetting *setting, const char *prop,
return TRUE;
}
+static char *
+nmc_property_ip_tunnel_get_mode (NMSetting *setting, NmcPropertyGetType get_type)
+{
+ NMSettingIPTunnel *s_ip_tunnel = NM_SETTING_IP_TUNNEL (setting);
+ NMIPTunnelMode mode;
+
+ mode = nm_setting_ip_tunnel_get_mode (s_ip_tunnel);
+ return nm_utils_enum_to_str (nm_ip_tunnel_mode_get_type (), mode);
+}
+
+static gboolean
+nmc_property_ip_tunnel_set_mode (NMSetting *setting, const char *prop,
+ const char *val, GError **error)
+{
+ NMIPTunnelMode mode;
+ gboolean ret;
+
+ ret = nm_utils_enum_from_str (nm_ip_tunnel_mode_get_type(), val,
+ (int *) &mode, NULL);
+
+ if (!ret) {
+ gs_free const char **values = NULL;
+ gs_free char *values_str = NULL;
+
+ values = nm_utils_enum_get_values (nm_ip_tunnel_mode_get_type (),
+ NM_IP_TUNNEL_MODE_UKNOWN + 1,
+ G_MAXINT);
+ values_str = g_strjoinv (",", (char **) values);
+ g_set_error (error, 1, 0, _("invalid mode '%s', use one of %s"),
+ val, values_str);
+
+ return FALSE;
+ }
+
+ g_object_set (setting, prop, mode, NULL);
+ return TRUE;
+}
+
/* --- NM_SETTING_WIRELESS_SETTING_NAME property get functions --- */
DEFINE_GETTER (nmc_property_wireless_get_mode, NM_SETTING_WIRELESS_MODE)
DEFINE_GETTER (nmc_property_wireless_get_band, NM_SETTING_WIRELESS_BAND)
@@ -7073,6 +7152,85 @@ nmc_properties_init (void)
NULL,
NULL,
NULL);
+
+ /* Add editable properties for NM_SETTING_IP_TUNNEL_SETTING_NAME */
+ nmc_add_prop_funcs (GLUE (IP_TUNNEL, MODE),
+ nmc_property_ip_tunnel_get_mode,
+ nmc_property_ip_tunnel_set_mode,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (IP_TUNNEL, PARENT),
+ nmc_property_ip_tunnel_get_parent,
+ nmc_property_set_string,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (IP_TUNNEL, LOCAL),
+ nmc_property_ip_tunnel_get_local,
+ nmc_property_set_string,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (IP_TUNNEL, REMOTE),
+ nmc_property_ip_tunnel_get_remote,
+ nmc_property_set_string,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (IP_TUNNEL, TTL),
+ nmc_property_ip_tunnel_get_ttl,
+ nmc_property_set_uint,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (IP_TUNNEL, TOS),
+ nmc_property_ip_tunnel_get_tos,
+ nmc_property_set_uint,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (IP_TUNNEL, PATH_MTU_DISCOVERY),
+ nmc_property_ip_tunnel_get_path_mtu_discovery,
+ nmc_property_set_bool,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (IP_TUNNEL, INPUT_KEY),
+ nmc_property_ip_tunnel_get_input_key,
+ nmc_property_set_string,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (IP_TUNNEL, OUTPUT_KEY),
+ nmc_property_ip_tunnel_get_output_key,
+ nmc_property_set_string,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (IP_TUNNEL, ENCAPSULATION_LIMIT),
+ nmc_property_ip_tunnel_get_encapsulation_limit,
+ nmc_property_set_uint,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (IP_TUNNEL, FLOW_LABEL),
+ nmc_property_ip_tunnel_get_flow_label,
+ nmc_property_set_uint,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
}
void
@@ -8253,6 +8411,42 @@ setting_tun_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gboo
return TRUE;
}
+static gboolean
+setting_ip_tunnel_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gboolean secrets)
+{
+ NMSettingIPTunnel *s_ip_tunnel = NM_SETTING_IP_TUNNEL (setting);
+ NmcOutputField *tmpl, *arr;
+ size_t tmpl_len;
+
+ g_return_val_if_fail (NM_IS_SETTING_IP_TUNNEL (s_ip_tunnel), FALSE);
+
+ tmpl = nmc_fields_setting_ip_tunnel;
+ tmpl_len = sizeof (nmc_fields_setting_ip_tunnel);
+ nmc->print_fields.indices = parse_output_fields (one_prop ? one_prop : NMC_FIELDS_SETTING_IP_TUNNEL_ALL,
+ tmpl, FALSE, NULL, NULL);
+ arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES);
+ g_ptr_array_add (nmc->output_data, arr);
+
+ arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX);
+ set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting)));
+ set_val_str (arr, 1, nmc_property_ip_tunnel_get_mode (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 2, nmc_property_ip_tunnel_get_parent (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 3, nmc_property_ip_tunnel_get_local (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 4, nmc_property_ip_tunnel_get_remote (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 5, nmc_property_ip_tunnel_get_ttl (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 6, nmc_property_ip_tunnel_get_tos (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 7, nmc_property_ip_tunnel_get_path_mtu_discovery (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 8, nmc_property_ip_tunnel_get_input_key (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 9, nmc_property_ip_tunnel_get_output_key (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 10, nmc_property_ip_tunnel_get_encapsulation_limit (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 11, nmc_property_ip_tunnel_get_flow_label (setting, NMC_PROPERTY_GET_PRETTY));
+ g_ptr_array_add (nmc->output_data, arr);
+
+ print_data (nmc); /* Print all data */
+
+ return TRUE;
+}
+
typedef struct {
const char *sname;
gboolean (*func) (NMSetting *setting, NmCli *nmc, const char *one_prop, gboolean secrets);
@@ -8285,6 +8479,7 @@ static const SettingDetails detail_printers[] = {
{ NM_SETTING_TEAM_PORT_SETTING_NAME, setting_team_port_details },
{ NM_SETTING_DCB_SETTING_NAME, setting_dcb_details },
{ NM_SETTING_TUN_SETTING_NAME, setting_tun_details },
+ { NM_SETTING_IP_TUNNEL_SETTING_NAME, setting_ip_tunnel_details },
{ NULL },
};