iproute2: update to 4.3.0

iproute2-4.0 had connmark support added by nbd.  This does not work
with 4.x kernels.  iproute2-4.3 is the latest version and has his
changes mainlined.  This patch updates the package to iproute2-4.3
and fixes the patches so that it compiles.  This should resolve
ticket #21374.

Signed-off-by: Rob Mosher <nyt-openwrt@countercultured.net>

SVN-Revision: 48098
This commit is contained in:
Felix Fietkau 2016-01-03 20:56:45 +00:00
parent f49dadb0bd
commit 8e9eed3442
8 changed files with 68 additions and 120 deletions

View File

@ -8,12 +8,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=iproute2
PKG_VERSION:=4.0.0
PKG_RELEASE:=3
PKG_VERSION:=4.3.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://kernel.org/pub/linux/utils/net/iproute2/
PKG_MD5SUM:=3adc263ade4ee76c35032e8f50b54108
PKG_MD5SUM:=1a2bbb80cfc7ab3f3e987e18b3207c2f
PKG_BUILD_PARALLEL:=1
PKG_LICENSE:=GPL-2.0

View File

@ -1,11 +1,16 @@
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -1,7 +1,7 @@
SSOBJ=ss.o ssfilter.o
LNSTATOBJ=lnstat.o lnstat_util.o
-TARGETS=ss nstat ifstat rtacct arpd lnstat
+TARGETS=ss nstat ifstat rtacct lnstat
@@ -5,9 +5,9 @@
include ../Config
-ifeq ($(HAVE_BERKELEY_DB),y)
- TARGETS += arpd
-endif
+#ifeq ($(HAVE_BERKELEY_DB),y)
+# TARGETS += arpd
+#endif
ifeq ($(HAVE_SELINUX),y)
LDLIBS += $(shell pkg-config --libs libselinux)

View File

@ -1,11 +1,12 @@
--- a/Makefile
+++ b/Makefile
@@ -36,7 +36,7 @@ WFLAGS += -Wmissing-declarations -Wold-s
CFLAGS = $(WFLAGS) $(CCOPTS) -I../include $(DEFINES)
@@ -41,7 +41,7 @@ WFLAGS += -Wmissing-declarations -Wold-s
CFLAGS := $(WFLAGS) $(CCOPTS) -I../include $(DEFINES) $(CFLAGS)
YACCFLAGS = -d -t -v
-SUBDIRS=lib ip tc bridge misc netem genl man
+SUBDIRS=lib ip tc bridge misc genl man
-SUBDIRS=lib ip tc bridge misc netem genl tipc man
+SUBDIRS=lib ip tc bridge misc genl tipc man
LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a
LDLIBS += $(LIBNETLINK)

View File

@ -1,11 +1,10 @@
--- a/Makefile
+++ b/Makefile
@@ -29,7 +29,7 @@ ADDLIB+=ipx_ntop.o ipx_pton.o
CC = gcc
HOSTCC = gcc
@@ -34,7 +34,7 @@ ADDLIB+=ipx_ntop.o ipx_pton.o
DEFINES += -D_GNU_SOURCE
# Turn on transparent support for LFS
DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-CCOPTS = -O2
+CCOPTS = -O2 $(EXTRA_CCOPTS)
WFLAGS := -Wall -Wstrict-prototypes -Wmissing-prototypes
WFLAGS += -Wmissing-declarations -Wold-style-definition -Wformat=2

View File

@ -1,10 +1,10 @@
--- a/lib/namespace.c
+++ b/lib/namespace.c
@@ -9,6 +9,7 @@
@@ -10,6 +10,7 @@
#include <fcntl.h>
#include <dirent.h>
#include <limits.h>
+#include <sys/param.h>
#include "utils.h"
#include "namespace.h"

View File

@ -1,87 +0,0 @@
--- a/tc/Makefile
+++ b/tc/Makefile
@@ -44,6 +44,7 @@ TCMODULES += m_mirred.o
TCMODULES += m_nat.o
TCMODULES += m_pedit.o
TCMODULES += m_skbedit.o
+TCMODULES += m_connmark.o
TCMODULES += m_csum.o
TCMODULES += m_simple.o
TCMODULES += m_vlan.o
--- /dev/null
+++ b/tc/m_connmark.c
@@ -0,0 +1,74 @@
+/*
+ * m_connmark.c Connection tracking marking import
+ *
+ * Copyright (c) 2011 Felix Fietkau <nbd@openwrt.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include "utils.h"
+#include "tc_util.h"
+
+static void
+explain(void)
+{
+ fprintf(stderr, "Usage: ... connmark\n");
+}
+
+static void
+usage(void)
+{
+ explain();
+ exit(-1);
+}
+
+static int
+parse_connmark(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
+ struct nlmsghdr *n)
+{
+ int argc = *argc_p;
+ char **argv = *argv_p;
+
+ if (matches(*argv, "connmark") != 0)
+ return -1;
+
+ NEXT_ARG();
+
+ if (matches(*argv, "help") == 0)
+ usage();
+
+ *argc_p = argc;
+ *argv_p = argv;
+ return 0;
+}
+
+static int print_connmark(struct action_util *au, FILE *f, struct rtattr *arg)
+{
+ if (arg == NULL)
+ return -1;
+
+ fprintf(f, " connmark");
+
+ return 0;
+}
+
+struct action_util connmark_action_util = {
+ .id = "connmark",
+ .parse_aopt = parse_connmark,
+ .print_aopt = print_connmark,
+};

View File

@ -25,7 +25,7 @@
sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:extern char \1[] __attribute__((weak)); if (!strcmp(sym, "\1")) return \1;:;p}' $$files ; \
--- a/ip/ip.c
+++ b/ip/ip.c
@@ -71,30 +71,42 @@ static const struct cmd {
@@ -73,30 +73,42 @@ static const struct cmd {
int (*func)(int argc, char **argv);
} cmds[] = {
{ "address", do_ipaddr },
@ -44,7 +44,7 @@
{ "link", do_iplink },
+#ifndef IPROUTE2_TINY
{ "l2tp", do_ipl2tp },
{ "fou", do_ipfou },
{ "fou", do_ipfou },
+#endif
{ "tunnel", do_iptunnel },
{ "tunl", do_iptunnel },
@ -53,7 +53,7 @@
{ "tap", do_iptuntap },
{ "token", do_iptoken },
{ "tcpmetrics", do_tcp_metrics },
{ "tcp_metrics",do_tcp_metrics },
{ "tcp_metrics", do_tcp_metrics },
+#endif
{ "monitor", do_ipmonitor },
+#ifndef IPROUTE2_TINY
@ -70,22 +70,22 @@
};
--- a/lib/utils.c
+++ b/lib/utils.c
@@ -642,6 +642,7 @@ const char *rt_addr_n2a(int af, const vo
case AF_INET:
case AF_INET6:
@@ -675,6 +675,7 @@ const char *rt_addr_n2a(int af, int len,
return inet_ntop(af, addr, buf, buflen);
case AF_MPLS:
return mpls_ntop(af, addr, buf, buflen);
+#ifndef IPROUTE2_TINY
case AF_IPX:
return ipx_ntop(af, addr, buf, buflen);
case AF_DECnet:
@@ -650,6 +651,7 @@ const char *rt_addr_n2a(int af, const vo
@@ -683,6 +684,7 @@ const char *rt_addr_n2a(int af, int len,
memcpy(dna.a_addr, addr, 2);
return dnet_ntop(af, &dna, buf, buflen);
}
+#endif
case AF_PACKET:
return ll_addr_n2a(addr, len, ARPHRD_VOID, buf, buflen);
default:
return "???";
}
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -4,6 +4,10 @@ ifeq ($(IP_CONFIG_SETNS),y)

View File

@ -0,0 +1,30 @@
--- a/include/linux/in.h
+++ b/include/linux/in.h
@@ -15,6 +15,7 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
+#ifndef _NETINET_IN_H
#ifndef _LINUX_IN_H
#define _LINUX_IN_H
@@ -297,3 +298,4 @@ struct sockaddr_in {
#endif /* _LINUX_IN_H */
+#endif /* _NETINET_IN_H */
--- a/include/linux/in6.h
+++ b/include/linux/in6.h
@@ -18,6 +18,7 @@
* 2 of the License, or (at your option) any later version.
*/
+#ifndef _NETINET_IN_H
#ifndef _LINUX_IN6_H
#define _LINUX_IN6_H
@@ -291,3 +292,4 @@ struct in6_flowlabel_req {
* MRT6_MAX
*/
#endif /* _LINUX_IN6_H */
+#endif /* _NETINET_IN_H */