core: merge IPv4 and IPv6 implementation of nm_utils_ip4_property_path()
and nm_utils_ip6_property_path(). Also, rename to nm_utils_sysctl_ip_conf_path().
This commit is contained in:
@@ -852,29 +852,29 @@ nm_device_ipv4_sysctl_set (NMDevice *self, const char *property, const char *val
|
||||
NMPlatform *platform = nm_device_get_platform (self);
|
||||
gs_free char *value_to_free = NULL;
|
||||
const char *value_to_set;
|
||||
char buf[NM_UTILS_IP_PROPERTY_PATH_BUFSIZE];
|
||||
char buf[NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE];
|
||||
|
||||
if (value) {
|
||||
value_to_set = value;
|
||||
} else {
|
||||
/* Set to a default value when we've got a NULL @value. */
|
||||
value_to_free = nm_platform_sysctl_get (platform,
|
||||
NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_ip4_property_path (buf, "default", property)));
|
||||
NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET, buf, "default", property)));
|
||||
value_to_set = value_to_free;
|
||||
}
|
||||
|
||||
return nm_platform_sysctl_set (platform,
|
||||
NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_ip4_property_path (buf, nm_device_get_ip_iface (self), property)),
|
||||
NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET, buf, nm_device_get_ip_iface (self), property)),
|
||||
value_to_set);
|
||||
}
|
||||
|
||||
static guint32
|
||||
nm_device_ipv4_sysctl_get_uint32 (NMDevice *self, const char *property, guint32 fallback)
|
||||
{
|
||||
char buf[NM_UTILS_IP_PROPERTY_PATH_BUFSIZE];
|
||||
char buf[NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE];
|
||||
|
||||
return nm_platform_sysctl_get_int_checked (nm_device_get_platform (self),
|
||||
NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_ip4_property_path (buf, nm_device_get_ip_iface (self), property)),
|
||||
NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET, buf, nm_device_get_ip_iface (self), property)),
|
||||
10,
|
||||
0,
|
||||
G_MAXUINT32,
|
||||
@@ -884,18 +884,18 @@ nm_device_ipv4_sysctl_get_uint32 (NMDevice *self, const char *property, guint32
|
||||
gboolean
|
||||
nm_device_ipv6_sysctl_set (NMDevice *self, const char *property, const char *value)
|
||||
{
|
||||
char buf[NM_UTILS_IP_PROPERTY_PATH_BUFSIZE];
|
||||
char buf[NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE];
|
||||
|
||||
return nm_platform_sysctl_set (nm_device_get_platform (self), NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_ip6_property_path (buf, nm_device_get_ip_iface (self), property)), value);
|
||||
return nm_platform_sysctl_set (nm_device_get_platform (self), NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET6, buf, nm_device_get_ip_iface (self), property)), value);
|
||||
}
|
||||
|
||||
static guint32
|
||||
nm_device_ipv6_sysctl_get_uint32 (NMDevice *self, const char *property, guint32 fallback)
|
||||
{
|
||||
char buf[NM_UTILS_IP_PROPERTY_PATH_BUFSIZE];
|
||||
char buf[NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE];
|
||||
|
||||
return nm_platform_sysctl_get_int_checked (nm_device_get_platform (self),
|
||||
NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_ip6_property_path (buf, nm_device_get_ip_iface (self), property)),
|
||||
NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET6, buf, nm_device_get_ip_iface (self), property)),
|
||||
10,
|
||||
0,
|
||||
G_MAXUINT32,
|
||||
@@ -7685,9 +7685,9 @@ save_ip6_properties (NMDevice *self)
|
||||
g_hash_table_remove_all (priv->ip6_saved_properties);
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (ip6_properties_to_save); i++) {
|
||||
char buf[NM_UTILS_IP_PROPERTY_PATH_BUFSIZE];
|
||||
char buf[NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE];
|
||||
|
||||
value = nm_platform_sysctl_get (nm_device_get_platform (self), NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_ip6_property_path (buf, ifname, ip6_properties_to_save[i])));
|
||||
value = nm_platform_sysctl_get (nm_device_get_platform (self), NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET6, buf, ifname, ip6_properties_to_save[i])));
|
||||
if (value) {
|
||||
g_hash_table_insert (priv->ip6_saved_properties,
|
||||
(char *) ip6_properties_to_save[i],
|
||||
@@ -7747,11 +7747,11 @@ set_nm_ipv6ll (NMDevice *self, gboolean enable)
|
||||
}
|
||||
|
||||
if (enable) {
|
||||
char buf[NM_UTILS_IP_PROPERTY_PATH_BUFSIZE];
|
||||
char buf[NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE];
|
||||
|
||||
/* Bounce IPv6 to ensure the kernel stops IPv6LL address generation */
|
||||
value = nm_platform_sysctl_get (nm_device_get_platform (self),
|
||||
NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_ip6_property_path (buf, nm_device_get_ip_iface (self), "disable_ipv6")));
|
||||
NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET6, buf, nm_device_get_ip_iface (self), "disable_ipv6")));
|
||||
if (g_strcmp0 (value, "0") == 0)
|
||||
nm_device_ipv6_sysctl_set (self, "disable_ipv6", "1");
|
||||
g_free (value);
|
||||
|
@@ -531,10 +531,10 @@ start (NMNDisc *ndisc)
|
||||
static inline int
|
||||
ipv6_sysctl_get (NMPlatform *platform, const char *ifname, const char *property, int min, int max, int defval)
|
||||
{
|
||||
char buf[NM_UTILS_IP_PROPERTY_PATH_BUFSIZE];
|
||||
char buf[NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE];
|
||||
|
||||
return (int) nm_platform_sysctl_get_int_checked (platform,
|
||||
NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_ip6_property_path (buf, ifname, property)),
|
||||
NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET6, buf, ifname, property)),
|
||||
10,
|
||||
min,
|
||||
max,
|
||||
|
@@ -2525,65 +2525,41 @@ nm_utils_monotonic_timestamp_as_boottime (gint64 timestamp, gint64 timestamp_ns_
|
||||
#define IPV6_PROPERTY_DIR "/proc/sys/net/ipv6/conf/"
|
||||
#define IPV4_PROPERTY_DIR "/proc/sys/net/ipv4/conf/"
|
||||
G_STATIC_ASSERT (sizeof (IPV4_PROPERTY_DIR) == sizeof (IPV6_PROPERTY_DIR));
|
||||
G_STATIC_ASSERT (NM_STRLEN (IPV6_PROPERTY_DIR) + IFNAMSIZ + 60 == NM_UTILS_IP_PROPERTY_PATH_BUFSIZE);
|
||||
G_STATIC_ASSERT (NM_STRLEN (IPV6_PROPERTY_DIR) + IFNAMSIZ + 60 == NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE);
|
||||
|
||||
static const char *
|
||||
_get_property_path (char *buf,
|
||||
const char *ifname,
|
||||
const char *property,
|
||||
gboolean ipv6)
|
||||
/**
|
||||
* nm_utils_sysctl_ip_conf_path:
|
||||
* @addr_family: either AF_INET or AF_INET6.
|
||||
* @buf: the output buffer where to write the path. It
|
||||
* must be at least NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE bytes
|
||||
* long.
|
||||
* @ifname: an interface name
|
||||
* @property: a property name
|
||||
*
|
||||
* Returns: the path to IPv6 property @property on @ifname. Note that
|
||||
* this returns the input argument @buf.
|
||||
*/
|
||||
const char *
|
||||
nm_utils_sysctl_ip_conf_path (int addr_family, char *buf, const char *ifname, const char *property)
|
||||
{
|
||||
int len;
|
||||
|
||||
nm_assert (buf);
|
||||
nm_assert_addr_family (addr_family);
|
||||
|
||||
ifname = NM_ASSERT_VALID_PATH_COMPONENT (ifname);
|
||||
property = NM_ASSERT_VALID_PATH_COMPONENT (property);
|
||||
|
||||
len = g_snprintf (buf,
|
||||
NM_UTILS_IP_PROPERTY_PATH_BUFSIZE,
|
||||
NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE,
|
||||
"%s%s/%s",
|
||||
ipv6 ? IPV6_PROPERTY_DIR : IPV4_PROPERTY_DIR,
|
||||
addr_family == AF_INET6 ? IPV6_PROPERTY_DIR : IPV4_PROPERTY_DIR,
|
||||
ifname,
|
||||
property);
|
||||
g_assert (len < NM_UTILS_IP_PROPERTY_PATH_BUFSIZE - 1);
|
||||
g_assert (len < NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE - 1);
|
||||
return buf;
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_utils_ip6_property_path:
|
||||
* @buf: the output buffer where to write the path. It
|
||||
* must be at least NM_UTILS_IP_PROPERTY_PATH_BUFSIZE bytes
|
||||
* long.
|
||||
* @ifname: an interface name
|
||||
* @property: a property name
|
||||
*
|
||||
* Returns: the path to IPv6 property @property on @ifname. Note that
|
||||
* this returns the input argument @buf.
|
||||
*/
|
||||
const char *
|
||||
nm_utils_ip6_property_path (char *buf, const char *ifname, const char *property)
|
||||
{
|
||||
return _get_property_path (buf, ifname, property, TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_utils_ip4_property_path:
|
||||
* @buf: the output buffer where to write the path. It
|
||||
* must be at least NM_UTILS_IP_PROPERTY_PATH_BUFSIZE bytes
|
||||
* long.
|
||||
* @ifname: an interface name
|
||||
* @property: a property name
|
||||
*
|
||||
* Returns: the path to IPv6 property @property on @ifname. Note that
|
||||
* this returns the input argument @buf.
|
||||
*/
|
||||
const char *
|
||||
nm_utils_ip4_property_path (char *buf, const char *ifname, const char *property)
|
||||
{
|
||||
return _get_property_path (buf, ifname, property, FALSE);
|
||||
}
|
||||
|
||||
gboolean
|
||||
nm_utils_is_valid_path_component (const char *name)
|
||||
{
|
||||
|
@@ -249,10 +249,9 @@ gint64 nm_utils_monotonic_timestamp_as_boottime (gint64 timestamp, gint64 timest
|
||||
gboolean nm_utils_is_valid_path_component (const char *name);
|
||||
const char *NM_ASSERT_VALID_PATH_COMPONENT (const char *name);
|
||||
|
||||
#define NM_UTILS_IP_PROPERTY_PATH_BUFSIZE 100
|
||||
#define NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE 100
|
||||
|
||||
const char *nm_utils_ip6_property_path (char *buf, const char *ifname, const char *property);
|
||||
const char *nm_utils_ip4_property_path (char *buf, const char *ifname, const char *property);
|
||||
const char *nm_utils_sysctl_ip_conf_path (int addr_family, char *buf, const char *ifname, const char *property);
|
||||
|
||||
gboolean nm_utils_is_specific_hostname (const char *name);
|
||||
|
||||
|
@@ -222,10 +222,10 @@ ndisc_config_changed (NMNDisc *ndisc, const NMNDiscData *rdata, guint changed_in
|
||||
|
||||
if (changed & NM_NDISC_CONFIG_MTU) {
|
||||
char val[16];
|
||||
char sysctl_path_buf[NM_UTILS_IP_PROPERTY_PATH_BUFSIZE];
|
||||
char sysctl_path_buf[NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE];
|
||||
|
||||
g_snprintf (val, sizeof (val), "%d", rdata->mtu);
|
||||
nm_platform_sysctl_set (NM_PLATFORM_GET, NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_ip6_property_path (sysctl_path_buf, global_opt.ifname, "mtu")), val);
|
||||
nm_platform_sysctl_set (NM_PLATFORM_GET, NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET6, sysctl_path_buf, global_opt.ifname, "mtu")), val);
|
||||
}
|
||||
|
||||
nm_ip6_config_merge (existing, ndisc_config, NM_IP_CONFIG_MERGE_DEFAULT, 0);
|
||||
@@ -345,7 +345,7 @@ main (int argc, char *argv[])
|
||||
gconstpointer tmp;
|
||||
gs_free NMUtilsIPv6IfaceId *iid = NULL;
|
||||
guint sd_id;
|
||||
char sysctl_path_buf[NM_UTILS_IP_PROPERTY_PATH_BUFSIZE];
|
||||
char sysctl_path_buf[NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE];
|
||||
|
||||
nm_g_type_init ();
|
||||
|
||||
@@ -450,7 +450,7 @@ main (int argc, char *argv[])
|
||||
}
|
||||
|
||||
if (global_opt.dhcp4_address) {
|
||||
nm_platform_sysctl_set (NM_PLATFORM_GET, NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_ip4_property_path (sysctl_path_buf, global_opt.ifname, "promote_secondaries")), "1");
|
||||
nm_platform_sysctl_set (NM_PLATFORM_GET, NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET, sysctl_path_buf, global_opt.ifname, "promote_secondaries")), "1");
|
||||
|
||||
dhcp4_client = nm_dhcp_manager_start_ip4 (nm_dhcp_manager_get (),
|
||||
nm_platform_get_multi_idx (NM_PLATFORM_GET),
|
||||
@@ -499,10 +499,10 @@ main (int argc, char *argv[])
|
||||
if (iid)
|
||||
nm_ndisc_set_iid (ndisc, *iid);
|
||||
|
||||
nm_platform_sysctl_set (NM_PLATFORM_GET, NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_ip6_property_path (sysctl_path_buf, global_opt.ifname, "accept_ra")), "1");
|
||||
nm_platform_sysctl_set (NM_PLATFORM_GET, NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_ip6_property_path (sysctl_path_buf, global_opt.ifname, "accept_ra_defrtr")), "0");
|
||||
nm_platform_sysctl_set (NM_PLATFORM_GET, NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_ip6_property_path (sysctl_path_buf, global_opt.ifname, "accept_ra_pinfo")), "0");
|
||||
nm_platform_sysctl_set (NM_PLATFORM_GET, NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_ip6_property_path (sysctl_path_buf, global_opt.ifname, "accept_ra_rtr_pref")), "0");
|
||||
nm_platform_sysctl_set (NM_PLATFORM_GET, NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET6, sysctl_path_buf, global_opt.ifname, "accept_ra")), "1");
|
||||
nm_platform_sysctl_set (NM_PLATFORM_GET, NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET6, sysctl_path_buf, global_opt.ifname, "accept_ra_defrtr")), "0");
|
||||
nm_platform_sysctl_set (NM_PLATFORM_GET, NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET6, sysctl_path_buf, global_opt.ifname, "accept_ra_pinfo")), "0");
|
||||
nm_platform_sysctl_set (NM_PLATFORM_GET, NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET6, sysctl_path_buf, global_opt.ifname, "accept_ra_rtr_pref")), "0");
|
||||
|
||||
g_signal_connect (NM_PLATFORM_GET,
|
||||
NM_PLATFORM_SIGNAL_IP6_ADDRESS_CHANGED,
|
||||
|
@@ -414,7 +414,7 @@ nm_platform_sysctl_set_ip6_hop_limit_safe (NMPlatform *self, const char *iface,
|
||||
{
|
||||
const char *path;
|
||||
gint64 cur;
|
||||
char buf[NM_UTILS_IP_PROPERTY_PATH_BUFSIZE];
|
||||
char buf[NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE];
|
||||
|
||||
_CHECK_SELF (self, klass, FALSE);
|
||||
|
||||
@@ -426,7 +426,7 @@ nm_platform_sysctl_set_ip6_hop_limit_safe (NMPlatform *self, const char *iface,
|
||||
if (value < 10)
|
||||
return FALSE;
|
||||
|
||||
path = nm_utils_ip6_property_path (buf, iface, "hop_limit");
|
||||
path = nm_utils_sysctl_ip_conf_path (AF_INET6, buf, iface, "hop_limit");
|
||||
cur = nm_platform_sysctl_get_int_checked (self, NMP_SYSCTL_PATHID_ABSOLUTE (path), 10, 1, G_MAXINT32, -1);
|
||||
|
||||
/* only allow increasing the hop-limit to avoid DOS by an attacker
|
||||
|
Reference in New Issue
Block a user