diff options
Diffstat (limited to 'package/utils/busybox/patches/302-netlink-alignment.patch')
-rw-r--r-- | package/utils/busybox/patches/302-netlink-alignment.patch | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/package/utils/busybox/patches/302-netlink-alignment.patch b/package/utils/busybox/patches/302-netlink-alignment.patch deleted file mode 100644 index 4cd25b1872..0000000000 --- a/package/utils/busybox/patches/302-netlink-alignment.patch +++ /dev/null @@ -1,100 +0,0 @@ -From a843f09a4d4428cf11ca02307e60058251b05743 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 16 Sep 2016 21:52:03 +0200 -Subject: [PATCH] libnetlink: fix alignment of netlink messages - -An padding to align a message should not only be added between -different attributes of a netlink message, but also at the end of the -message to pad it to the correct size. - -Without this patch the following command does not work and returns an -error code: -ip link add type nlmon - -Without this ip from busybox sends this: -sendmsg(3, {msg_name={sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, msg_namelen=12, msg_iov=[{iov_base={{len=45, type=0x10 /* NLMSG_??? */, flags=NLM_F_REQUEST|NLM_F_ACK|0x600, seq=1474057401, pid=0}, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\22\0\t\0\1nlmon"}, iov_len=45}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 45 -return value: 2 - -The normal ip utile from iproute2 sends this: -sendmsg(3, {msg_name={sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, msg_namelen=12, msg_iov=[{iov_base={{len=48, type=0x10 /* NLMSG_??? */, flags=NLM_F_REQUEST|NLM_F_ACK|0x600, seq=1473716938, pid=0}, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\22\0\t\0\1nlmon\0\0\0"}, iov_len=48}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 48 -return value: 0 - -With this patch ip from busybox sends this: -sendmsg(3, {msg_name={sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, msg_namelen=12, msg_iov=[{iov_base={{len=48, type=0x10 /* NLMSG_??? */, flags=NLM_F_REQUEST|NLM_F_ACK|0x600, seq=1473716908, pid=0}, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\22\0\t\0\1nlmon\0\0\0"}, iov_len=48}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 48 -return value: 0 - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> ---- - networking/libiproute/libnetlink.c | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - ---- a/networking/libiproute/libnetlink.c -+++ b/networking/libiproute/libnetlink.c -@@ -338,14 +338,14 @@ int FAST_FUNC addattr32(struct nlmsghdr - int len = RTA_LENGTH(4); - struct rtattr *rta; - -- if ((int)(NLMSG_ALIGN(n->nlmsg_len) + len) > maxlen) { -+ if ((int)(NLMSG_ALIGN(n->nlmsg_len + len)) > maxlen) { - return -1; - } - rta = (struct rtattr*)(((char*)n) + NLMSG_ALIGN(n->nlmsg_len)); - rta->rta_type = type; - rta->rta_len = len; - move_to_unaligned32(RTA_DATA(rta), data); -- n->nlmsg_len = NLMSG_ALIGN(n->nlmsg_len) + len; -+ n->nlmsg_len = NLMSG_ALIGN(n->nlmsg_len + len); - return 0; - } - -@@ -354,14 +354,14 @@ int FAST_FUNC addattr_l(struct nlmsghdr - int len = RTA_LENGTH(alen); - struct rtattr *rta; - -- if ((int)(NLMSG_ALIGN(n->nlmsg_len) + len) > maxlen) { -+ if ((int)(NLMSG_ALIGN(n->nlmsg_len + len)) > maxlen) { - return -1; - } - rta = (struct rtattr*)(((char*)n) + NLMSG_ALIGN(n->nlmsg_len)); - rta->rta_type = type; - rta->rta_len = len; - memcpy(RTA_DATA(rta), data, alen); -- n->nlmsg_len = NLMSG_ALIGN(n->nlmsg_len) + len; -+ n->nlmsg_len = NLMSG_ALIGN(n->nlmsg_len + len); - return 0; - } - -@@ -370,14 +370,14 @@ int FAST_FUNC rta_addattr32(struct rtatt - int len = RTA_LENGTH(4); - struct rtattr *subrta; - -- if (RTA_ALIGN(rta->rta_len) + len > maxlen) { -+ if (RTA_ALIGN(rta->rta_len + len) > maxlen) { - return -1; - } - subrta = (struct rtattr*)(((char*)rta) + RTA_ALIGN(rta->rta_len)); - subrta->rta_type = type; - subrta->rta_len = len; - move_to_unaligned32(RTA_DATA(subrta), data); -- rta->rta_len = NLMSG_ALIGN(rta->rta_len) + len; -+ rta->rta_len = NLMSG_ALIGN(rta->rta_len + len); - return 0; - } - -@@ -386,14 +386,14 @@ int FAST_FUNC rta_addattr_l(struct rtatt - struct rtattr *subrta; - int len = RTA_LENGTH(alen); - -- if (RTA_ALIGN(rta->rta_len) + len > maxlen) { -+ if (RTA_ALIGN(rta->rta_len + len) > maxlen) { - return -1; - } - subrta = (struct rtattr*)(((char*)rta) + RTA_ALIGN(rta->rta_len)); - subrta->rta_type = type; - subrta->rta_len = len; - memcpy(RTA_DATA(subrta), data, alen); -- rta->rta_len = NLMSG_ALIGN(rta->rta_len) + len; -+ rta->rta_len = NLMSG_ALIGN(rta->rta_len + len); - return 0; - } - |