platform/trivial: rename netlink sockets in NMLinuxPlatform
- "priv->nlh" to "priv->sk_rtnl": as we also have an genl socket, "nlh" is not a good name. The point is that this is rtnetlink. Also, "h" sounds like a handle, that is, a file descriptor. Make this clearer with a "sk_" prefix. - "priv->genl" to "priv->sk_genl_sync": This socket is only used for synchronous operations, that is, it is passed to various independent components, that use it to send a request and wait for the response (while consuming all messages). We will have a use for a second socket, hence the "_sync" part. The "sk_" prefix is for consistency with "sk_rtnl". - "priv->event_source" to "priv->rtnl_event_source". Just make it clearer, that this is for the rtnetlink socket. In any case, this field is hardly used at all, it can have a sturdy name.
This commit is contained in:
@@ -415,11 +415,11 @@ typedef struct {
|
|||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
struct nl_sock *genl;
|
struct nl_sock *sk_genl_sync;
|
||||||
|
|
||||||
struct nl_sock *nlh;
|
struct nl_sock *sk_rtnl;
|
||||||
|
|
||||||
GSource *event_source;
|
GSource *rtnl_event_source;
|
||||||
|
|
||||||
guint32 nlh_seq_next;
|
guint32 nlh_seq_next;
|
||||||
#if NM_MORE_LOGGING
|
#if NM_MORE_LOGGING
|
||||||
@@ -2542,7 +2542,7 @@ _wireguard_get_family_id(NMPlatform *platform, int ifindex_try)
|
|||||||
wireguard_family_id = NMP_OBJECT_UP_CAST(plink)->_link.wireguard_family_id;
|
wireguard_family_id = NMP_OBJECT_UP_CAST(plink)->_link.wireguard_family_id;
|
||||||
}
|
}
|
||||||
if (wireguard_family_id < 0)
|
if (wireguard_family_id < 0)
|
||||||
wireguard_family_id = genl_ctrl_resolve(priv->genl, "wireguard");
|
wireguard_family_id = genl_ctrl_resolve(priv->sk_genl_sync, "wireguard");
|
||||||
return wireguard_family_id;
|
return wireguard_family_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2572,7 +2572,7 @@ _wireguard_refresh_link(NMPlatform *platform, int wireguard_family_id, int ifind
|
|||||||
if (NMP_OBJECT_GET_TYPE(plink->_link.netlink.lnk) == NMP_OBJECT_TYPE_LNK_WIREGUARD)
|
if (NMP_OBJECT_GET_TYPE(plink->_link.netlink.lnk) == NMP_OBJECT_TYPE_LNK_WIREGUARD)
|
||||||
lnk_new = nmp_object_ref(plink->_link.netlink.lnk);
|
lnk_new = nmp_object_ref(plink->_link.netlink.lnk);
|
||||||
} else {
|
} else {
|
||||||
lnk_new = _wireguard_read_info(platform, priv->genl, wireguard_family_id, ifindex);
|
lnk_new = _wireguard_read_info(platform, priv->sk_genl_sync, wireguard_family_id, ifindex);
|
||||||
if (!lnk_new) {
|
if (!lnk_new) {
|
||||||
if (NMP_OBJECT_GET_TYPE(plink->_link.netlink.lnk) == NMP_OBJECT_TYPE_LNK_WIREGUARD)
|
if (NMP_OBJECT_GET_TYPE(plink->_link.netlink.lnk) == NMP_OBJECT_TYPE_LNK_WIREGUARD)
|
||||||
lnk_new = nmp_object_ref(plink->_link.netlink.lnk);
|
lnk_new = nmp_object_ref(plink->_link.netlink.lnk);
|
||||||
@@ -2881,14 +2881,14 @@ link_wireguard_change(NMPlatform *platform,
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < msgs->len; i++) {
|
for (i = 0; i < msgs->len; i++) {
|
||||||
r = nl_send_auto(priv->genl, msgs->pdata[i]);
|
r = nl_send_auto(priv->sk_genl_sync, msgs->pdata[i]);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
_LOGW("wireguard: set-device, send netlink message #%u failed: %s", i, nm_strerror(r));
|
_LOGW("wireguard: set-device, send netlink message #%u failed: %s", i, nm_strerror(r));
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
r = nl_recvmsgs(priv->genl, NULL);
|
r = nl_recvmsgs(priv->sk_genl_sync, NULL);
|
||||||
} while (r == -EAGAIN);
|
} while (r == -EAGAIN);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
_LOGW("wireguard: set-device, message #%u was rejected: %s", i, nm_strerror(r));
|
_LOGW("wireguard: set-device, message #%u was rejected: %s", i, nm_strerror(r));
|
||||||
@@ -3221,13 +3221,13 @@ _new_from_nl_link(NMPlatform *platform,
|
|||||||
case NM_LINK_TYPE_OLPC_MESH:
|
case NM_LINK_TYPE_OLPC_MESH:
|
||||||
obj->_link.ext_data =
|
obj->_link.ext_data =
|
||||||
(GObject *) nm_wifi_utils_new(ifi->ifi_index,
|
(GObject *) nm_wifi_utils_new(ifi->ifi_index,
|
||||||
NM_LINUX_PLATFORM_GET_PRIVATE(platform)->genl,
|
NM_LINUX_PLATFORM_GET_PRIVATE(platform)->sk_genl_sync,
|
||||||
TRUE);
|
TRUE);
|
||||||
break;
|
break;
|
||||||
case NM_LINK_TYPE_WPAN:
|
case NM_LINK_TYPE_WPAN:
|
||||||
obj->_link.ext_data =
|
obj->_link.ext_data =
|
||||||
(GObject *) nm_wpan_utils_new(ifi->ifi_index,
|
(GObject *) nm_wpan_utils_new(ifi->ifi_index,
|
||||||
NM_LINUX_PLATFORM_GET_PRIVATE(platform)->genl,
|
NM_LINUX_PLATFORM_GET_PRIVATE(platform)->sk_genl_sync,
|
||||||
TRUE);
|
TRUE);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -3237,7 +3237,7 @@ _new_from_nl_link(NMPlatform *platform,
|
|||||||
|
|
||||||
if (obj->link.type == NM_LINK_TYPE_WIREGUARD) {
|
if (obj->link.type == NM_LINK_TYPE_WIREGUARD) {
|
||||||
const NMPObject *lnk_data_new = NULL;
|
const NMPObject *lnk_data_new = NULL;
|
||||||
struct nl_sock *genl = NM_LINUX_PLATFORM_GET_PRIVATE(platform)->genl;
|
struct nl_sock *genl = NM_LINUX_PLATFORM_GET_PRIVATE(platform)->sk_genl_sync;
|
||||||
|
|
||||||
/* The WireGuard kernel module does not yet send link update
|
/* The WireGuard kernel module does not yet send link update
|
||||||
* notifications, so we don't actually update the cache. For
|
* notifications, so we don't actually update the cache. For
|
||||||
@@ -6680,12 +6680,12 @@ _nl_send_nlmsghdr(NMPlatform *platform,
|
|||||||
int try_count;
|
int try_count;
|
||||||
|
|
||||||
if (!nlhdr->nlmsg_pid)
|
if (!nlhdr->nlmsg_pid)
|
||||||
nlhdr->nlmsg_pid = nl_socket_get_local_port(priv->nlh);
|
nlhdr->nlmsg_pid = nl_socket_get_local_port(priv->sk_rtnl);
|
||||||
nlhdr->nlmsg_flags |= (NLM_F_REQUEST | NLM_F_ACK);
|
nlhdr->nlmsg_flags |= (NLM_F_REQUEST | NLM_F_ACK);
|
||||||
|
|
||||||
try_count = 0;
|
try_count = 0;
|
||||||
again:
|
again:
|
||||||
errsv = sendmsg(nl_socket_get_fd(priv->nlh), &msg, 0);
|
errsv = sendmsg(nl_socket_get_fd(priv->sk_rtnl), &msg, 0);
|
||||||
if (errsv < 0) {
|
if (errsv < 0) {
|
||||||
errsv = errno;
|
errsv = errno;
|
||||||
if (errsv == EINTR && try_count++ < 100)
|
if (errsv == EINTR && try_count++ < 100)
|
||||||
@@ -6733,7 +6733,7 @@ _nl_send_nlmsg(NMPlatform *platform,
|
|||||||
seq = _nlh_seq_next_get(priv);
|
seq = _nlh_seq_next_get(priv);
|
||||||
nlhdr->nlmsg_seq = seq;
|
nlhdr->nlmsg_seq = seq;
|
||||||
|
|
||||||
nle = nl_send_auto(priv->nlh, nlmsg);
|
nle = nl_send_auto(priv->sk_rtnl, nlmsg);
|
||||||
if (nle < 0) {
|
if (nle < 0) {
|
||||||
_LOGD("netlink: nl-send-nlmsg: failed sending message: %s (%d)", nm_strerror(nle), nle);
|
_LOGD("netlink: nl-send-nlmsg: failed sending message: %s (%d)", nm_strerror(nle), nle);
|
||||||
return nle;
|
return nle;
|
||||||
@@ -9190,7 +9190,7 @@ tfilter_delete(NMPlatform *platform, int ifindex, guint32 parent, gboolean log_e
|
|||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
event_handler(int fd, GIOCondition io_condition, gpointer user_data)
|
rtnl_event_handler(int fd, GIOCondition io_condition, gpointer user_data)
|
||||||
{
|
{
|
||||||
delayed_action_handle_all(NM_PLATFORM(user_data), TRUE);
|
delayed_action_handle_all(NM_PLATFORM(user_data), TRUE);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -9203,7 +9203,7 @@ static int
|
|||||||
event_handler_recvmsgs(NMPlatform *platform, gboolean handle_events)
|
event_handler_recvmsgs(NMPlatform *platform, gboolean handle_events)
|
||||||
{
|
{
|
||||||
NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE(platform);
|
NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE(platform);
|
||||||
struct nl_sock *sk = priv->nlh;
|
struct nl_sock *sk = priv->sk_rtnl;
|
||||||
int n;
|
int n;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
gboolean multipart = 0;
|
gboolean multipart = 0;
|
||||||
@@ -9512,7 +9512,7 @@ after_read:
|
|||||||
timeout_msec);
|
timeout_msec);
|
||||||
|
|
||||||
memset(&pfd, 0, sizeof(pfd));
|
memset(&pfd, 0, sizeof(pfd));
|
||||||
pfd.fd = nl_socket_get_fd(priv->nlh);
|
pfd.fd = nl_socket_get_fd(priv->sk_rtnl);
|
||||||
pfd.events = POLLIN;
|
pfd.events = POLLIN;
|
||||||
r = poll(&pfd, 1, timeout_msec);
|
r = poll(&pfd, 1, timeout_msec);
|
||||||
|
|
||||||
@@ -9712,30 +9712,30 @@ constructed(GObject *_object)
|
|||||||
nm_platform_get_use_udev(platform) ? "use" : "no",
|
nm_platform_get_use_udev(platform) ? "use" : "no",
|
||||||
nm_platform_get_cache_tc(platform) ? "use" : "no");
|
nm_platform_get_cache_tc(platform) ? "use" : "no");
|
||||||
|
|
||||||
nle = nl_socket_new(&priv->genl, NETLINK_GENERIC);
|
nle = nl_socket_new(&priv->sk_genl_sync, NETLINK_GENERIC);
|
||||||
g_assert(!nle);
|
g_assert(!nle);
|
||||||
|
|
||||||
nle = nl_socket_new(&priv->nlh, NETLINK_ROUTE);
|
nle = nl_socket_new(&priv->sk_rtnl, NETLINK_ROUTE);
|
||||||
g_assert(!nle);
|
g_assert(!nle);
|
||||||
|
|
||||||
nle = nl_socket_set_passcred(priv->nlh, 1);
|
nle = nl_socket_set_passcred(priv->sk_rtnl, 1);
|
||||||
g_assert(!nle);
|
g_assert(!nle);
|
||||||
|
|
||||||
/* No blocking for event socket, so that we can drain it safely. */
|
/* No blocking for event socket, so that we can drain it safely. */
|
||||||
nle = nl_socket_set_nonblocking(priv->nlh);
|
nle = nl_socket_set_nonblocking(priv->sk_rtnl);
|
||||||
g_assert(!nle);
|
g_assert(!nle);
|
||||||
|
|
||||||
/* use 8 MB for receive socket kernel queue. */
|
/* use 8 MB for receive socket kernel queue. */
|
||||||
nle = nl_socket_set_buffer_size(priv->nlh, 8 * 1024 * 1024, 0);
|
nle = nl_socket_set_buffer_size(priv->sk_rtnl, 8 * 1024 * 1024, 0);
|
||||||
g_assert(!nle);
|
g_assert(!nle);
|
||||||
|
|
||||||
/* explicitly set the msg buffer size and disable MSG_PEEK.
|
/* explicitly set the msg buffer size and disable MSG_PEEK.
|
||||||
* We use our own receive buffer priv->netlink_recv_buf.
|
* We use our own receive buffer priv->netlink_recv_buf.
|
||||||
* If we encounter NME_NL_MSG_TRUNC, we will increase the buffer
|
* If we encounter NME_NL_MSG_TRUNC, we will increase the buffer
|
||||||
* and resync (as we would have lost the message without NL_MSG_PEEK). */
|
* and resync (as we would have lost the message without NL_MSG_PEEK). */
|
||||||
nl_socket_disable_msg_peek(priv->nlh);
|
nl_socket_disable_msg_peek(priv->sk_rtnl);
|
||||||
|
|
||||||
nle = nl_socket_add_memberships(priv->nlh,
|
nle = nl_socket_add_memberships(priv->sk_rtnl,
|
||||||
RTNLGRP_IPV4_IFADDR,
|
RTNLGRP_IPV4_IFADDR,
|
||||||
RTNLGRP_IPV4_ROUTE,
|
RTNLGRP_IPV4_ROUTE,
|
||||||
RTNLGRP_IPV4_RULE,
|
RTNLGRP_IPV4_RULE,
|
||||||
@@ -9747,20 +9747,20 @@ constructed(GObject *_object)
|
|||||||
g_assert(!nle);
|
g_assert(!nle);
|
||||||
|
|
||||||
if (nm_platform_get_cache_tc(platform)) {
|
if (nm_platform_get_cache_tc(platform)) {
|
||||||
nle = nl_socket_add_memberships(priv->nlh, RTNLGRP_TC, 0);
|
nle = nl_socket_add_memberships(priv->sk_rtnl, RTNLGRP_TC, 0);
|
||||||
nm_assert(!nle);
|
nm_assert(!nle);
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = nl_socket_get_fd(priv->nlh);
|
fd = nl_socket_get_fd(priv->sk_rtnl);
|
||||||
|
|
||||||
_LOGD("Netlink socket for events established: port=%u, fd=%d",
|
_LOGD("Netlink socket for events established: port=%u, fd=%d",
|
||||||
nl_socket_get_local_port(priv->nlh),
|
nl_socket_get_local_port(priv->sk_rtnl),
|
||||||
fd);
|
fd);
|
||||||
|
|
||||||
priv->event_source =
|
priv->rtnl_event_source =
|
||||||
nm_g_unix_fd_add_source(fd,
|
nm_g_unix_fd_add_source(fd,
|
||||||
G_IO_IN | G_IO_NVAL | G_IO_PRI | G_IO_ERR | G_IO_HUP,
|
G_IO_IN | G_IO_NVAL | G_IO_PRI | G_IO_ERR | G_IO_HUP,
|
||||||
event_handler,
|
rtnl_event_handler,
|
||||||
platform);
|
platform);
|
||||||
|
|
||||||
/* complete construction of the GObject instance before populating the cache. */
|
/* complete construction of the GObject instance before populating the cache. */
|
||||||
@@ -9877,11 +9877,11 @@ finalize(GObject *object)
|
|||||||
g_ptr_array_unref(priv->delayed_action.list_refresh_link);
|
g_ptr_array_unref(priv->delayed_action.list_refresh_link);
|
||||||
g_array_unref(priv->delayed_action.list_wait_for_nl_response);
|
g_array_unref(priv->delayed_action.list_wait_for_nl_response);
|
||||||
|
|
||||||
nl_socket_free(priv->genl);
|
nl_socket_free(priv->sk_genl_sync);
|
||||||
|
|
||||||
nm_clear_g_source_inst(&priv->event_source);
|
nm_clear_g_source_inst(&priv->rtnl_event_source);
|
||||||
|
|
||||||
nl_socket_free(priv->nlh);
|
nl_socket_free(priv->sk_rtnl);
|
||||||
|
|
||||||
{
|
{
|
||||||
NM_G_MUTEX_LOCKED(&sysctl_clear_cache_lock);
|
NM_G_MUTEX_LOCKED(&sysctl_clear_cache_lock);
|
||||||
|
Reference in New Issue
Block a user