diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2018-03-09 18:21:10 +0100 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2018-06-26 16:21:55 +0200 |
commit | 5da77c0e2c032af52904c9ce4fb9906ac577a35e (patch) | |
tree | 955698daf6e8489f6edab41643dba07f976fa061 | |
parent | 89011938164ba09385f3d1f256e36c611725f935 (diff) | |
download | NetworkManager-5da77c0e2c032af52904c9ce4fb9906ac577a35e.tar.gz |
client: support wpan setting
-rw-r--r-- | clients/cli/connections.c | 6 | ||||
-rw-r--r-- | clients/common/nm-meta-setting-desc.c | 64 | ||||
-rw-r--r-- | clients/common/nm-meta-setting-desc.h | 1 | ||||
-rw-r--r-- | man/nmcli.xml | 11 | ||||
-rw-r--r-- | shared/nm-meta-setting.c | 8 | ||||
-rw-r--r-- | shared/nm-meta-setting.h | 3 |
6 files changed, 88 insertions, 5 deletions
diff --git a/clients/cli/connections.c b/clients/cli/connections.c index 0daed365e1..f4964b3983 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -660,6 +660,7 @@ const NmcMetaGenericInfo *const metagen_con_active_general[_NMC_GENERIC_INFO_TYP NM_SETTING_MACSEC_SETTING_NAME"," \ NM_SETTING_MACVLAN_SETTING_NAME"," \ NM_SETTING_VXLAN_SETTING_NAME"," \ + NM_SETTING_WPAN_SETTING_NAME","\ NM_SETTING_PROXY_SETTING_NAME"," \ NM_SETTING_TC_CONFIG_SETTING_NAME // NM_SETTING_DUMMY_SETTING_NAME @@ -890,7 +891,10 @@ usage_connection_add (void) " [source-port-min <0-65535>]\n" " [source-port-max <0-65535>]\n" " [destination-port <0-65535>]\n\n" - " dummy: \n\n" + " wpan: [short-addr <0x0000-0xffff>]\n\n" + " [pan-id <0x0000-0xffff>]\n\n" + " [mac <MAC address>]\n\n" + " dummy:\n\n" " SLAVE_OPTIONS:\n" " bridge: [priority <0-63>]\n" " [path-cost <1-65535>]\n" diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c index ebe079ccbb..f6477e57cb 100644 --- a/clients/common/nm-meta-setting-desc.c +++ b/clients/common/nm-meta-setting-desc.c @@ -1200,6 +1200,11 @@ _set_fcn_gobject_mtu (ARGS_SET_FCN) return TRUE; } +/* Ideally we'll be able to get this from a public header. */ +#ifndef IEEE802154_ADDR_LEN +#define IEEE802154_ADDR_LEN 8 +#endif + static gboolean _set_fcn_gobject_mac (ARGS_SET_FCN) { @@ -1211,9 +1216,11 @@ _set_fcn_gobject_mac (ARGS_SET_FCN) else mode = NM_META_PROPERTY_TYPE_MAC_MODE_DEFAULT; - if (mode == NM_META_PROPERTY_TYPE_MAC_MODE_INFINIBAND) + if (mode == NM_META_PROPERTY_TYPE_MAC_MODE_INFINIBAND) { valid = nm_utils_hwaddr_valid (value, INFINIBAND_ALEN); - else { + } else if (mode == NM_META_PROPERTY_TYPE_MAC_MODE_WPAN) { + valid = nm_utils_hwaddr_valid (value, IEEE802154_ADDR_LEN); + } else { valid = nm_utils_hwaddr_valid (value, ETH_ALEN) || ( mode == NM_META_PROPERTY_TYPE_MAC_MODE_CLONED && NM_CLONED_MAC_IS_SPECIAL (value)); @@ -7435,6 +7442,52 @@ static const NMMetaPropertyInfo *const property_infos_WIRELESS_SECURITY[] = { NULL }; +#undef _CURRENT_NM_META_SETTING_TYPE +#define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_WPAN +static const NMMetaPropertyInfo *const property_infos_WPAN[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_WPAN_MAC_ADDRESS, + .property_type = &_pt_gobject_mac, + .is_cli_option = TRUE, + .property_alias = "mac", + .prompt = N_("MAC [none]"), + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mac, + .mode = NM_META_PROPERTY_TYPE_MAC_MODE_WPAN, + ), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WPAN_SHORT_ADDRESS, + .is_cli_option = TRUE, + .property_alias = "short-addr", + .prompt = N_("Short address (<0x0000-0xffff>)"), + .property_type = &_pt_gobject_int, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, \ + .base = 16, + .value_infos = INT_VALUE_INFOS ( + { + .value = G_MAXUINT16, + .nick = "unset", + } + ), + ), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WPAN_PAN_ID, + .is_cli_option = TRUE, + .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, + .property_alias = "pan-id", + .prompt = N_("PAN Identifier (<0x0000-0xffff>)"), + .property_type = &_pt_gobject_int, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, \ + .base = 16, + .value_infos = INT_VALUE_INFOS ( + { + .value = G_MAXUINT16, + .nick = "unset", + } + ), + ), + ), + NULL +}; + /*****************************************************************************/ static void @@ -7595,6 +7648,7 @@ _setting_init_fcn_wireless (ARGS_SETTING_INIT_FCN) #define SETTING_PRETTY_NAME_WIRED N_("Wired Ethernet") #define SETTING_PRETTY_NAME_WIRELESS N_("Wi-Fi connection") #define SETTING_PRETTY_NAME_WIRELESS_SECURITY N_("Wi-Fi security settings") +#define SETTING_PRETTY_NAME_WPAN N_("WPAN settings") #define NM_META_SETTING_VALID_PARTS(...) \ ((const NMMetaSettingValidPartItem *const[]) { __VA_ARGS__ NULL }) @@ -7836,6 +7890,12 @@ const NMMetaSettingInfoEditor nm_meta_setting_infos_editor[] = { SETTING_INFO (WIRELESS_SECURITY, .alias = "wifi-sec", ), + SETTING_INFO (WPAN, + .valid_parts = NM_META_SETTING_VALID_PARTS ( + NM_META_SETTING_VALID_PART_ITEM (CONNECTION, TRUE), + NM_META_SETTING_VALID_PART_ITEM (WPAN, TRUE), + ), + ), }; /*****************************************************************************/ diff --git a/clients/common/nm-meta-setting-desc.h b/clients/common/nm-meta-setting-desc.h index e7ab6e860a..01a823cce2 100644 --- a/clients/common/nm-meta-setting-desc.h +++ b/clients/common/nm-meta-setting-desc.h @@ -163,6 +163,7 @@ typedef enum { NM_META_PROPERTY_TYPE_MAC_MODE_DEFAULT, NM_META_PROPERTY_TYPE_MAC_MODE_CLONED, NM_META_PROPERTY_TYPE_MAC_MODE_INFINIBAND, + NM_META_PROPERTY_TYPE_MAC_MODE_WPAN, } NMMetaPropertyTypeMacMode; typedef struct _NMMetaEnvironment NMMetaEnvironment; diff --git a/man/nmcli.xml b/man/nmcli.xml index 9b951c1985..bb74557f02 100644 --- a/man/nmcli.xml +++ b/man/nmcli.xml @@ -2003,6 +2003,17 @@ It's equivalent to the <literal>+bond.options 'option=value'</literal> syntax.</ </tbody> </tgroup></table> + <table><title>WPAN options</title><tgroup cols="2"> + <thead> + <row><entry>Alias</entry><entry>Property</entry></row> + </thead> + <tbody> + <row><entry align="left">mac</entry><entry align="left"><link linkend="nm-settings.property.wpan.mac">wpan.mac</link></entry></row> + <row><entry align="left">short-addr</entry><entry align="left"><link linkend="nm-settings.property.wpan.short-addr">wpan.short-addr</link></entry></row> + <row><entry align="left">pan-id</entry><entry align="left"><link linkend="nm-settings.property.wpan.pan-id">wpan.pan-id</link></entry></row> + </tbody> + </tgroup></table> + <table><title>IPv4 options</title><tgroup cols="3"> <thead> <row><entry>Alias</entry><entry>Property</entry><entry>Note</entry></row> diff --git a/shared/nm-meta-setting.c b/shared/nm-meta-setting.c index 8841273919..ef1daee580 100644 --- a/shared/nm-meta-setting.c +++ b/shared/nm-meta-setting.c @@ -16,7 +16,7 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA. * - * Copyright 2017 Red Hat, Inc. + * Copyright 2017 - 2018 Red Hat, Inc. */ #include "nm-default.h" @@ -63,6 +63,7 @@ #include "nm-setting-wired.h" #include "nm-setting-wireless.h" #include "nm-setting-wireless-security.h" +#include "nm-setting-wpan.h" /*****************************************************************************/ @@ -340,6 +341,11 @@ const NMMetaSettingInfo nm_meta_setting_infos[] = { .setting_name = NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, .get_setting_gtype = nm_setting_wireless_security_get_type, }, + [NM_META_SETTING_TYPE_WPAN] = { + .meta_type = NM_META_SETTING_TYPE_WPAN, + .setting_name = NM_SETTING_WPAN_SETTING_NAME, + .get_setting_gtype = nm_setting_wpan_get_type, + }, [NM_META_SETTING_TYPE_UNKNOWN] = { .meta_type = NM_META_SETTING_TYPE_UNKNOWN, diff --git a/shared/nm-meta-setting.h b/shared/nm-meta-setting.h index 4333001bff..ca77cfdc23 100644 --- a/shared/nm-meta-setting.h +++ b/shared/nm-meta-setting.h @@ -16,7 +16,7 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA. * - * Copyright 2017 Red Hat, Inc. + * Copyright 2017 - 2018 Red Hat, Inc. */ #ifndef __NM_META_SETTING_H__ @@ -95,6 +95,7 @@ typedef enum { NM_META_SETTING_TYPE_WIRED, NM_META_SETTING_TYPE_WIRELESS, NM_META_SETTING_TYPE_WIRELESS_SECURITY, + NM_META_SETTING_TYPE_WPAN, NM_META_SETTING_TYPE_UNKNOWN, |