mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-09-29 21:04:22 +00:00
merge: branch 'bg/netlink-strict-check'
Enable strict check on the netlink socket https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1962
This commit is contained in:
commit
14eaf4e419
|
@ -337,6 +337,11 @@ struct _ifla_vf_vlan_info {
|
|||
#define BRIDGE_VLAN_INFO_RANGE_END (1 << 4) /* VLAN is end of vlan range */
|
||||
#endif
|
||||
|
||||
/* Appeared in kernel 4.2 dated August 2015 */
|
||||
#ifndef RTM_F_LOOKUP_TABLE
|
||||
#define RTM_F_LOOKUP_TABLE 0x1000 /* set rtm_table to FIB lookup result */
|
||||
#endif
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
#define PSCHED_TIME_UNITS_PER_SEC 1000000
|
||||
|
@ -7784,17 +7789,42 @@ _nl_msg_new_dump_rtnl(NMPObjectType obj_type, int preferred_addr_family)
|
|||
g_return_val_if_reached(NULL);
|
||||
} break;
|
||||
case NMP_OBJECT_TYPE_LINK:
|
||||
{
|
||||
struct ifinfomsg ifm = {};
|
||||
|
||||
if (nlmsg_append_struct(nlmsg, &ifm) < 0)
|
||||
g_return_val_if_reached(NULL);
|
||||
break;
|
||||
}
|
||||
case NMP_OBJECT_TYPE_IP4_ADDRESS:
|
||||
case NMP_OBJECT_TYPE_IP6_ADDRESS:
|
||||
case NMP_OBJECT_TYPE_IP4_ROUTE:
|
||||
case NMP_OBJECT_TYPE_IP6_ROUTE:
|
||||
case NMP_OBJECT_TYPE_ROUTING_RULE:
|
||||
{
|
||||
const struct rtgenmsg gmsg = {
|
||||
.rtgen_family = preferred_addr_family,
|
||||
struct ifaddrmsg ifm = {
|
||||
.ifa_family = preferred_addr_family,
|
||||
};
|
||||
|
||||
if (nlmsg_append_struct(nlmsg, &gmsg) < 0)
|
||||
if (nlmsg_append_struct(nlmsg, &ifm) < 0)
|
||||
g_return_val_if_reached(NULL);
|
||||
break;
|
||||
}
|
||||
case NMP_OBJECT_TYPE_IP4_ROUTE:
|
||||
case NMP_OBJECT_TYPE_IP6_ROUTE:
|
||||
{
|
||||
struct rtmsg rtm = {
|
||||
.rtm_family = preferred_addr_family,
|
||||
};
|
||||
|
||||
if (nlmsg_append_struct(nlmsg, &rtm) < 0)
|
||||
g_return_val_if_reached(NULL);
|
||||
break;
|
||||
}
|
||||
case NMP_OBJECT_TYPE_ROUTING_RULE:
|
||||
{
|
||||
struct fib_rule_hdr frh = {
|
||||
.family = preferred_addr_family,
|
||||
};
|
||||
|
||||
if (nlmsg_append_struct(nlmsg, &frh) < 0)
|
||||
g_return_val_if_reached(NULL);
|
||||
} break;
|
||||
default:
|
||||
|
@ -10307,7 +10337,7 @@ ip_route_get(NMPlatform *platform,
|
|||
.r.rtm_family = addr_family,
|
||||
.r.rtm_tos = 0,
|
||||
.r.rtm_dst_len = IS_IPv4 ? 32 : 128,
|
||||
.r.rtm_flags = 0x1000 /* RTM_F_LOOKUP_TABLE */,
|
||||
.r.rtm_flags = IS_IPv4 ? RTM_F_LOOKUP_TABLE : 0,
|
||||
};
|
||||
|
||||
nm_clear_pointer(&route, nmp_object_unref);
|
||||
|
|
|
@ -1152,6 +1152,7 @@ nl_socket_new(struct nl_sock **out_sk,
|
|||
|
||||
i_val = 1;
|
||||
(void) setsockopt(sk->s_fd, SOL_NETLINK, NETLINK_EXT_ACK, &i_val, sizeof(i_val));
|
||||
(void) setsockopt(sk->s_fd, SOL_NETLINK, NETLINK_GET_STRICT_CHK, &i_val, sizeof(i_val));
|
||||
|
||||
if (NM_FLAGS_HAS(flags, NL_SOCKET_FLAGS_PASSCRED)) {
|
||||
err = nl_socket_set_passcred(sk, 1);
|
||||
|
|
Loading…
Reference in a new issue