diff options
-rw-r--r-- | package/iw/Makefile | 4 | ||||
-rw-r--r-- | package/iw/patches/000-upstream.patch | 155 | ||||
-rw-r--r-- | package/iw/patches/100-4addr.patch | 76 | ||||
-rw-r--r-- | package/iw/patches/110-sta_vlan.patch | 69 |
4 files changed, 2 insertions, 302 deletions
diff --git a/package/iw/Makefile b/package/iw/Makefile index ce3b4ec486..827413ab44 100644 --- a/package/iw/Makefile +++ b/package/iw/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=iw -PKG_VERSION:=0.9.17 +PKG_VERSION:=0.9.18 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=http://wireless.kernel.org/download/iw/ -PKG_MD5SUM:=427841093ac11c5cbc025a3e13aac139 +PKG_MD5SUM:=9734080d8a5c4b768c5e0da665a48950 PKG_BUILD_DEPENDS:=mac80211 include $(INCLUDE_DIR)/package.mk diff --git a/package/iw/patches/000-upstream.patch b/package/iw/patches/000-upstream.patch deleted file mode 100644 index 8aee7758ae..0000000000 --- a/package/iw/patches/000-upstream.patch +++ /dev/null @@ -1,155 +0,0 @@ ---- a/Makefile -+++ b/Makefile -@@ -3,7 +3,7 @@ - MAKEFLAGS += --no-print-directory - - PREFIX ?= /usr --BINDIR ?= $(PREFIX)/bin -+SBINDIR ?= $(PREFIX)/sbin - MANDIR ?= $(PREFIX)/share/man - PKG_CONFIG ?= pkg-config - -@@ -85,8 +85,8 @@ check: - - install: iw iw.8.gz - @$(NQ) ' INST iw' -- $(Q)$(MKDIR) $(DESTDIR)$(BINDIR) -- $(Q)$(INSTALL) -m 755 -t $(DESTDIR)$(BINDIR) iw -+ $(Q)$(MKDIR) $(DESTDIR)$(SBINDIR) -+ $(Q)$(INSTALL) -m 755 -t $(DESTDIR)$(SBINDIR) iw - @$(NQ) ' INST iw.8' - $(Q)$(MKDIR) $(DESTDIR)$(MANDIR)/man8/ - $(Q)$(INSTALL) -m 644 -t $(DESTDIR)$(MANDIR)/man8/ iw.8.gz ---- a/iw.c -+++ b/iw.c -@@ -223,9 +223,12 @@ static int phy_lookup(char *name) - if (fd < 0) - return -1; - pos = read(fd, buf, sizeof(buf) - 1); -- if (pos < 0) -+ if (pos < 0) { -+ close(fd); - return -1; -+ } - buf[pos] = '\0'; -+ close(fd); - return atoi(buf); - } - ---- a/nl80211.h -+++ b/nl80211.h -@@ -262,6 +262,9 @@ - * reasons, for this the %NL80211_ATTR_DISCONNECTED_BY_AP and - * %NL80211_ATTR_REASON_CODE attributes are used. - * -+ * @NL80211_CMD_SET_WIPHY_NETNS: Set a wiphy's netns. Note that all devices -+ * associated with this wiphy must be down and will follow. -+ * - * @NL80211_CMD_MAX: highest used command number - * @__NL80211_CMD_AFTER_LAST: internal use - */ -@@ -336,6 +339,8 @@ enum nl80211_commands { - NL80211_CMD_ROAM, - NL80211_CMD_DISCONNECT, - -+ NL80211_CMD_SET_WIPHY_NETNS, -+ - /* add new commands above here */ - - /* used to define NL80211_CMD_MAX below */ -@@ -475,10 +480,6 @@ enum nl80211_commands { - * @NL80211_ATTR_SCAN_FREQUENCIES: nested attribute with frequencies (in MHz) - * @NL80211_ATTR_SCAN_SSIDS: nested attribute with SSIDs, leave out for passive - * scanning and include a zero-length SSID (wildcard) for wildcard scan -- * @NL80211_ATTR_SCAN_GENERATION: the scan generation increases whenever the -- * scan result list changes (BSS expired or added) so that applications -- * can verify that they got a single, consistent snapshot (when all dump -- * messages carried the same generation number) - * @NL80211_ATTR_BSS: scan result BSS - * - * @NL80211_ATTR_REG_INITIATOR: indicates who requested the regulatory domain -@@ -573,6 +574,16 @@ enum nl80211_commands { - * and join_ibss(), key information is in a nested attribute each - * with %NL80211_KEY_* sub-attributes - * -+ * @NL80211_ATTR_PID: Process ID of a network namespace. -+ * -+ * @NL80211_ATTR_GENERATION: Used to indicate consistent snapshots for -+ * dumps. This number increases whenever the object list being -+ * dumped changes, and as such userspace can verify that it has -+ * obtained a complete and consistent snapshot by verifying that -+ * all dump messages contain the same generation number. If it -+ * changed then the list changed and the dump should be repeated -+ * completely from scratch. -+ * - * @NL80211_ATTR_MAX: highest attribute number currently defined - * @__NL80211_ATTR_AFTER_LAST: internal use - */ -@@ -644,7 +655,7 @@ enum nl80211_attrs { - - NL80211_ATTR_SCAN_FREQUENCIES, - NL80211_ATTR_SCAN_SSIDS, -- NL80211_ATTR_SCAN_GENERATION, -+ NL80211_ATTR_GENERATION, /* replaces old SCAN_GENERATION */ - NL80211_ATTR_BSS, - - NL80211_ATTR_REG_INITIATOR, -@@ -701,12 +712,17 @@ enum nl80211_attrs { - NL80211_ATTR_KEY, - NL80211_ATTR_KEYS, - -+ NL80211_ATTR_PID, -+ - /* add attributes here, update the policy in nl80211.c */ - - __NL80211_ATTR_AFTER_LAST, - NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1 - }; - -+/* source-level API compatibility */ -+#define NL80211_ATTR_SCAN_GENERATION NL80211_ATTR_GENERATION -+ - /* - * Allow user space programs to use #ifdef on new attributes by defining them - * here ---- a/phy.c -+++ b/phy.c -@@ -140,3 +140,27 @@ static int handle_rts(struct nl80211_sta - COMMAND(set, rts, "<rts threshold|off>", - NL80211_CMD_SET_WIPHY, 0, CIB_PHY, handle_rts, - "Set rts threshold."); -+ -+static int handle_netns(struct nl80211_state *state, -+ struct nl_cb *cb, -+ struct nl_msg *msg, -+ int argc, char **argv) -+{ -+ char *end; -+ -+ if (argc != 1) -+ return 1; -+ -+ NLA_PUT_U32(msg, NL80211_ATTR_PID, -+ strtoul(argv[0], &end, 10)); -+ -+ if (*end != '\0') -+ return 1; -+ -+ return 0; -+ nla_put_failure: -+ return -ENOBUFS; -+} -+COMMAND(set, netns, "<pid>", -+ NL80211_CMD_SET_WIPHY_NETNS, 0, CIB_PHY, handle_netns, -+ "Put this wireless device into a different network namespace"); ---- a/station.c -+++ b/station.c -@@ -127,7 +127,7 @@ static int print_sta_handler(struct nl_m - printf("\n\tmesh plid:\t%d", - nla_get_u16(sinfo[NL80211_STA_INFO_PLID])); - if (sinfo[NL80211_STA_INFO_PLINK_STATE]) { -- switch (nla_get_u16(sinfo[NL80211_STA_INFO_PLINK_STATE])) { -+ switch (nla_get_u8(sinfo[NL80211_STA_INFO_PLINK_STATE])) { - case LISTEN: - strcpy(state_name, "LISTEN"); - break; diff --git a/package/iw/patches/100-4addr.patch b/package/iw/patches/100-4addr.patch deleted file mode 100644 index db6b88010b..0000000000 --- a/package/iw/patches/100-4addr.patch +++ /dev/null @@ -1,76 +0,0 @@ ---- a/interface.c -+++ b/interface.c -@@ -137,6 +137,20 @@ static int get_if_type(int *argc, char * - return 2; - } - -+static int parse_wds_flag(const char *value, struct nl_msg *msg) -+{ -+ if (strcmp(value, "on") == 0) -+ NLA_PUT_U8(msg, NL80211_ATTR_4ADDR, 1); -+ else if (strcmp(value, "off") == 0) -+ NLA_PUT_U8(msg, NL80211_ATTR_4ADDR, 0); -+ else -+ return 1; -+ return 0; -+ -+nla_put_failure: -+ return 1; -+} -+ - static int handle_interface_add(struct nl80211_state *state, - struct nl_cb *cb, - struct nl_msg *msg, -@@ -168,6 +182,15 @@ static int handle_interface_add(struct n - mesh_id = argv[0]; - argc--; - argv++; -+ } else if (strcmp(argv[0], "wds") == 0) { -+ argc--; -+ argv++; -+ if (parse_wds_flag(argv[0], msg)) { -+ fprintf(stderr, "wds error\n"); -+ return 2; -+ } -+ argc--; -+ argv++; - } else if (strcmp(argv[0], "flags") == 0) { - argc--; - argv++; -@@ -192,14 +215,14 @@ static int handle_interface_add(struct n - nla_put_failure: - return -ENOBUFS; - } --COMMAND(interface, add, "<name> type <type> [mesh_id <meshid>] [flags <flag>*]", -+COMMAND(interface, add, "<name> type <type> [mesh_id <meshid>] [wds on|off] [flags <flag>*]", - NL80211_CMD_NEW_INTERFACE, 0, CIB_PHY, handle_interface_add, - "Add a new virtual interface with the given configuration.\n" - IFACE_TYPES "\n\n" - "The flags are only used for monitor interfaces, valid flags are:\n" - VALID_FLAGS "\n\n" - "The mesh_id is used only for mesh mode."); --COMMAND(interface, add, "<name> type <type> [mesh_id <meshid>] [flags <flag>*]", -+COMMAND(interface, add, "<name> type <type> [mesh_id <meshid>] [wds on|off] [flags <flag>*]", - NL80211_CMD_NEW_INTERFACE, 0, CIB_NETDEV, handle_interface_add, NULL); - - static int handle_interface_del(struct nl80211_state *state, ---- a/nl80211.h -+++ b/nl80211.h -@@ -584,6 +584,8 @@ enum nl80211_commands { - * changed then the list changed and the dump should be repeated - * completely from scratch. - * -+ * @NL80211_ATTR_4ADDR: Use 4-address frames on a virtual interface -+ * - * @NL80211_ATTR_MAX: highest attribute number currently defined - * @__NL80211_ATTR_AFTER_LAST: internal use - */ -@@ -714,6 +716,8 @@ enum nl80211_attrs { - - NL80211_ATTR_PID, - -+ NL80211_ATTR_4ADDR, -+ - /* add attributes here, update the policy in nl80211.c */ - - __NL80211_ATTR_AFTER_LAST, diff --git a/package/iw/patches/110-sta_vlan.patch b/package/iw/patches/110-sta_vlan.patch deleted file mode 100644 index 913c698bbc..0000000000 --- a/package/iw/patches/110-sta_vlan.patch +++ /dev/null @@ -1,69 +0,0 @@ ---- a/station.c -+++ b/station.c -@@ -196,7 +196,7 @@ COMMAND(station, del, "<MAC address>", - NL80211_CMD_DEL_STATION, 0, CIB_NETDEV, handle_station_get, - "Remove the given station entry (use with caution!)"); - --static int handle_station_set(struct nl80211_state *state, -+static int handle_station_set_plink(struct nl80211_state *state, - struct nl_cb *cb, - struct nl_msg *msg, - int argc, char **argv) -@@ -241,9 +241,56 @@ static int handle_station_set(struct nl8 - return -ENOBUFS; - } - COMMAND(station, set, "<MAC address> plink_action <open|block>", -- NL80211_CMD_SET_STATION, 0, CIB_NETDEV, handle_station_set, -+ NL80211_CMD_SET_STATION, 0, CIB_NETDEV, handle_station_set_plink, - "Set mesh peer link action for this station (peer)."); - -+static int handle_station_set_vlan(struct nl80211_state *state, -+ struct nl_cb *cb, -+ struct nl_msg *msg, -+ int argc, char **argv) -+{ -+ unsigned char mac_addr[ETH_ALEN]; -+ unsigned long sta_vlan = 0; -+ char *err = NULL; -+ -+ if (argc < 3) -+ return 1; -+ -+ if (mac_addr_a2n(mac_addr, argv[0])) { -+ fprintf(stderr, "invalid mac address\n"); -+ return 2; -+ } -+ argc--; -+ argv++; -+ -+ if (strcmp("vlan", argv[0]) != 0) -+ return 1; -+ argc--; -+ argv++; -+ -+ sta_vlan = strtoul(argv[0], &err, 0); -+ if (err && *err) { -+ fprintf(stderr, "invalid vlan id\n"); -+ return 2; -+ } -+ argc--; -+ argv++; -+ -+ if (argc) -+ return 1; -+ -+ NLA_PUT(msg, NL80211_ATTR_MAC, ETH_ALEN, mac_addr); -+ NLA_PUT_U32(msg, NL80211_ATTR_STA_VLAN, sta_vlan); -+ -+ return 0; -+ nla_put_failure: -+ return -ENOBUFS; -+} -+COMMAND(station, set, "<MAC address> vlan <ifindex>", -+ NL80211_CMD_SET_STATION, 0, CIB_NETDEV, handle_station_set_vlan, -+ "Set an AP VLAN for this station."); -+ -+ - static int handle_station_dump(struct nl80211_state *state, - struct nl_cb *cb, - struct nl_msg *msg, |