]> git.ipfire.org Git - people/ms/ipfire-3.x.git/commitdiff
rstp: Fix the package.
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 31 Oct 2011 21:52:41 +0000 (21:52 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 31 Oct 2011 21:52:41 +0000 (21:52 +0000)
It is pretty messed up and with the fixes patch, nothing
works at all. So revert the changes and see how far we
can get with this.

Revert "rstp: Apply some fixes from upstream."

This reverts commit 23704de3ed9b51a9f0a57817e3987ac441f1db6a.

Conflicts:

pkgs/rstp/rstp.nm
rstp/patches/rstp-0.21-upstream-fixes.patch

rstp/patches/rstp-0.21-netlink-fix.patch [new file with mode: 0644]
rstp/patches/rstp-0.21-upstream-fixes.patch [deleted file]
rstp/rstp.nm

diff --git a/rstp/patches/rstp-0.21-netlink-fix.patch b/rstp/patches/rstp-0.21-netlink-fix.patch
new file mode 100644 (file)
index 0000000..b834791
--- /dev/null
@@ -0,0 +1,27 @@
+From 434d24bae108dbb21461a13a4abcf014afa8b029 Mon Sep 17 00:00:00 2001
+From: Stephen Hemminger <shemminger@vyatta.com>
+Date: Tue, 11 Oct 2011 16:07:27 -0700
+Subject: [PATCH] fix bridge port state in netlink message
+
+The IFLA_PROTINFO is a u8 not u32, and sending a bigger value
+to kernel means extra bytes are ignored, leaving state as always 0.
+---
+ brstate.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/brstate.c b/brstate.c
+index 1fe792e..889c2ea 100644
+--- a/brstate.c
++++ b/brstate.c
+@@ -42,7 +42,7 @@ static int br_set_state(struct rtnl_handle *rth, unsigned ifindex, __u8 state)
+       req.ifi.ifi_family = AF_BRIDGE;
+       req.ifi.ifi_index = ifindex;
+-      addattr32(&req.n, sizeof(req.buf), IFLA_PROTINFO, state);
++      addattr_l(&req.n, sizeof(req.buf), IFLA_PROTINFO, &state, sizeof(state));
+       return rtnl_talk(rth, &req.n, 0, 0, NULL, NULL, NULL);
+ }
+-- 
+1.7.6.2
+
diff --git a/rstp/patches/rstp-0.21-upstream-fixes.patch b/rstp/patches/rstp-0.21-upstream-fixes.patch
deleted file mode 100644 (file)
index c209e99..0000000
+++ /dev/null
@@ -1,784 +0,0 @@
-diff --git a/Makefile b/Makefile
-index c65dd39..f672a45 100644
---- a/Makefile
-+++ b/Makefile
-@@ -9,7 +9,8 @@ CTLSOURCES = ctl_main.c ctl_cli_wrap.c ctl_socket_client.c
- CTLOBJECTS = $(CTLSOURCES:.c=.o)
- CC=gcc
--CFLAGS = -Wall -Werror -O2 -g -D_REENTRANT -D__LINUX__ -DVERSION=$(version) -DBUILD=$(build) -I. -I./include
-+CFLAGS = -Wall -Werror -fno-strict-aliasing -O2 -g -D_REENTRANT -D__LINUX__ \
-+      -DVERSION=$(version) -DBUILD=$(build) -I. -I./include -I./rstplib
- all: rstpd rstpctl
-diff --git a/bridge-stp b/bridge-stp
-index 49d5a41..5e663a9 100755
---- a/bridge-stp
-+++ b/bridge-stp
-@@ -53,9 +53,9 @@ start() {
- case $2 in
-      start) 
-       daemon
--      exec /sbin/rstpctl $bridge on ;;
-+      exec /sbin/rstpctl rstp $bridge on ;;
-      stop)  
--      exec /sbin/rstpctl $bridge off ;;
-+      exec /sbin/rstpctl rstp $bridge off ;;
-      *)
-       echo "Unknown action:" $2
-       echo "Usage: bridge-stp <bridge> {start|stop}"
-diff --git a/bridge_track.c b/bridge_track.c
-index c685935..f5efa3f 100644
---- a/bridge_track.c
-+++ b/bridge_track.c
-@@ -449,7 +449,7 @@ void bridge_bpdu_rcv(int if_index, const unsigned char *data, int len)
-       struct ifdata *ifc = find_if(if_index);
-       LOG("ifindex %d, len %d", if_index, len);
--      if (!ifc)
-+      if (!ifc || !ifc->master)
-               return;
-       TST(ifc->up,);
-diff --git a/brmon.c b/brmon.c
-index d29e7f5..fd4dacd 100644
---- a/brmon.c
-+++ b/brmon.c
-@@ -30,32 +30,10 @@
- static const char SNAPSHOT[] = "v0.1";
--
--/* RFC 2863 operational status */
--enum {
--      IF_OPER_UNKNOWN,
--      IF_OPER_NOTPRESENT,
--      IF_OPER_DOWN,
--      IF_OPER_LOWERLAYERDOWN,
--      IF_OPER_TESTING,
--      IF_OPER_DORMANT,
--      IF_OPER_UP,
--};
--
--/* link modes */
--enum {
--      IF_LINK_MODE_DEFAULT,
--      IF_LINK_MODE_DORMANT,   /* limit upward transition to dormant */
--};
--
--static const char *port_states[] = {
--      [BR_STATE_DISABLED] = "disabled",
--      [BR_STATE_LISTENING] = "listening",
--      [BR_STATE_LEARNING] = "learning",
--      [BR_STATE_FORWARDING] = "forwarding",
--      [BR_STATE_BLOCKING] = "blocking",
--};
--
-+static int is_up(const struct ifinfomsg *ifi)
-+{
-+      return (ifi->ifi_flags & IFF_UP) && (ifi->ifi_flags & IFF_RUNNING);
-+}
- static int dump_msg(const struct sockaddr_nl *who, struct nlmsghdr *n,
-                   void *arg)
-@@ -64,25 +42,16 @@ static int dump_msg(const struct sockaddr_nl *who, struct nlmsghdr *n,
-       struct ifinfomsg *ifi = NLMSG_DATA(n);
-       struct rtattr * tb[IFLA_MAX+1];
-       int len = n->nlmsg_len;
-+      int master = -1;
-       char b1[IFNAMSIZ];
--      int af_family = ifi->ifi_family;
-         if (n->nlmsg_type == NLMSG_DONE)
-           return 0;
--        
-+
-       len -= NLMSG_LENGTH(sizeof(*ifi));
--      if (len < 0) {
-+      if (len < 0)
-           return -1;
--        }
--        
--#if 0
--
--      if (filter.ifindex && ifi->ifi_index != filter.ifindex)
--              return 0;
--      if (filter.up && !(ifi->ifi_flags&IFF_UP))
--              return 0;
--#endif
-         if (ifi->ifi_family != AF_BRIDGE && ifi->ifi_family != AF_UNSPEC)
-           return 0;
-@@ -93,73 +62,41 @@ static int dump_msg(const struct sockaddr_nl *who, struct nlmsghdr *n,
-       parse_rtattr(tb, IFLA_MAX, IFLA_RTA(ifi), len);
-         /* Check if we got this from bonding */
--        if (tb[IFLA_MASTER] && af_family != AF_BRIDGE)
--          return 0;
-+        if (tb[IFLA_MASTER] && ifi->ifi_family != AF_BRIDGE)
-+           return 0;
-+
-+      /* Check if hearing our own state changes */
-+      if (n->nlmsg_type == RTM_NEWLINK && tb[IFLA_PROTINFO]) {
-+         uint8_t state = *(uint8_t *)RTA_DATA(tb[IFLA_PROTINFO]);
-+
-+         if (state != BR_STATE_DISABLED)
-+            return 0;
-+      }
-       if (tb[IFLA_IFNAME] == NULL) {
--              fprintf(stderr, "BUG: nil ifname\n");
--              return -1;
-+         fprintf(stderr, "BUG: nil ifname\n");
-+         return -1;
-       }
-       if (n->nlmsg_type == RTM_DELLINK)
--              fprintf(fp, "Deleted ");
-+         fprintf(fp, "Deleted ");
-       fprintf(fp, "%d: %s ", ifi->ifi_index,
--              tb[IFLA_IFNAME] ? (char*)RTA_DATA(tb[IFLA_IFNAME]) : "<nil>");
--
--
--      if (tb[IFLA_OPERSTATE]) {
--              int state = *(int*)RTA_DATA(tb[IFLA_OPERSTATE]);
--              switch (state) {
--              case IF_OPER_UNKNOWN: 
--                      fprintf(fp, "Unknown "); break;
--              case IF_OPER_NOTPRESENT:
--                      fprintf(fp, "Not Present "); break;
--              case IF_OPER_DOWN:
--                      fprintf(fp, "Down "); break;
--              case IF_OPER_LOWERLAYERDOWN:
--                      fprintf(fp, "Lowerlayerdown "); break;
--              case IF_OPER_TESTING:
--                      fprintf(fp, "Testing "); break;
--              case IF_OPER_DORMANT:
--                      fprintf(fp, "Dormant "); break;
--              case IF_OPER_UP:
--                      fprintf(fp, "Up "); break;
--              default:
--                      fprintf(fp, "State(%d) ", state);
--              }
--      }
--      
--      if (tb[IFLA_MTU])
--              fprintf(fp, "mtu %u ", *(int*)RTA_DATA(tb[IFLA_MTU]));
-+              (const char*)RTA_DATA(tb[IFLA_IFNAME]));
-       if (tb[IFLA_MASTER]) {
--              fprintf(fp, "master %s ", 
--                      if_indextoname(*(int*)RTA_DATA(tb[IFLA_MASTER]), b1));
--      }
--
--      if (tb[IFLA_PROTINFO]) {
--              uint8_t state = *(uint8_t *)RTA_DATA(tb[IFLA_PROTINFO]);
--              if (state <= BR_STATE_BLOCKING)
--                      fprintf(fp, "state %s", port_states[state]);
--              else
--                      fprintf(fp, "state (%d)", state);
-+         master = *(int*)RTA_DATA(tb[IFLA_MASTER]);
-+         fprintf(fp, "master %s ", if_indextoname(master, b1));
-       }
--
-       fprintf(fp, "\n");
-       fflush(fp);
--        {
--          int newlink = (n->nlmsg_type == RTM_NEWLINK);
--          int up = 0;
--          if (newlink && tb[IFLA_OPERSTATE]) {
--            int state = *(int*)RTA_DATA(tb[IFLA_OPERSTATE]);
--            up = (state == IF_OPER_UP) || (state == IF_OPER_UNKNOWN);
--          }
--
--          bridge_notify((tb[IFLA_MASTER]?*(int*)RTA_DATA(tb[IFLA_MASTER]):-1), 
--                        ifi->ifi_index, newlink, up);
--        }
-+
-+
-+      bridge_notify(master, ifi->ifi_index,
-+                    (n->nlmsg_type == RTM_NEWLINK),
-+                    is_up(ifi));
-+
-       return 0;
- }
-@@ -252,7 +189,7 @@ int init_bridge_ops(void)
-     fprintf(stderr, "Couldn't open rtnl socket for monitoring\n");
-     return -1;
-   }
--  
-+
-   if (rtnl_open(&rth_state, 0) < 0) {
-     fprintf(stderr, "Couldn't open rtnl socket for setting state\n");
-     return -1;
-@@ -262,7 +199,7 @@ int init_bridge_ops(void)
-     fprintf(stderr, "Cannot send dump request: %m\n");
-     return -1;
-   }
--  
-+
-   if (rtnl_dump_filter(&rth, dump_msg, stdout, NULL, NULL) < 0) {
-     fprintf(stderr, "Dump terminated\n");
-     return -1;
-@@ -276,10 +213,10 @@ int init_bridge_ops(void)
-   br_handler.fd = rth.fd;
-   br_handler.arg = NULL;
-   br_handler.handler = br_ev_handler;
--  
-+
-   if (add_epoll(&br_handler) < 0)
-     return -1;
--  
-+
-   return 0;
- }
-diff --git a/include/linux/llc.h b/include/linux/llc.h
-index 09f2e6d..6bb32fe 100644
---- a/include/linux/llc.h
-+++ b/include/linux/llc.h
-@@ -49,9 +49,9 @@ enum llc_sockopts {
- /* LLC SAP types. */
- #define LLC_SAP_NULL  0x00            /* NULL SAP.                    */
--#define LLC_SAP_LLC   0x02            /* LLC Sublayer Managment.      */
-+#define LLC_SAP_LLC   0x02            /* LLC Sublayer Management.     */
- #define LLC_SAP_SNA   0x04            /* SNA Path Control.            */
--#define LLC_SAP_PNM   0x0E            /* Proway Network Managment.    */      
-+#define LLC_SAP_PNM   0x0E            /* Proway Network Management.   */      
- #define LLC_SAP_IP    0x06            /* TCP/IP.                      */
- #define LLC_SAP_BSPAN 0x42            /* Bridge Spanning Tree Proto   */
- #define LLC_SAP_MMS   0x4E            /* Manufacturing Message Srv.   */
-@@ -70,11 +70,4 @@ enum llc_sockopts {
- #define LLC_SAP_RM    0xD4            /* Resource Management          */
- #define LLC_SAP_GLOBAL        0xFF            /* Global SAP.                  */
--#ifdef __KERNEL__
--#define LLC_SAP_DYN_START     0xC0
--#define LLC_SAP_DYN_STOP      0xDE
--#define LLC_SAP_DYN_TRIES     4
--
--#define llc_ui_skb_cb(__skb) ((struct sockaddr_llc *)&((__skb)->cb[0]))
--#endif /* __KERNEL__ */
- #endif /* __LINUX_LLC_H */
-diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h
-index 5e33a20..ba9e46c 100644
---- a/include/linux/rtnetlink.h
-+++ b/include/linux/rtnetlink.h
-@@ -1,7 +1,11 @@
- #ifndef __LINUX_RTNETLINK_H
- #define __LINUX_RTNETLINK_H
-+#include <linux/types.h>
- #include <linux/netlink.h>
-+#include <linux/if_link.h>
-+#include <linux/if_addr.h>
-+#include <linux/neighbour.h>
- /****
-  *            Routing/neighbour discovery messages.
-@@ -80,8 +84,6 @@ enum {
-       RTM_NEWPREFIX   = 52,
- #define RTM_NEWPREFIX RTM_NEWPREFIX
--      RTM_GETPREFIX   = 54,
--#define RTM_GETPREFIX RTM_GETPREFIX
-       RTM_GETMULTICAST = 58,
- #define RTM_GETMULTICAST RTM_GETMULTICAST
-@@ -96,6 +98,21 @@ enum {
-       RTM_SETNEIGHTBL,
- #define RTM_SETNEIGHTBL       RTM_SETNEIGHTBL
-+      RTM_NEWNDUSEROPT = 68,
-+#define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
-+
-+      RTM_NEWADDRLABEL = 72,
-+#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
-+      RTM_DELADDRLABEL,
-+#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
-+      RTM_GETADDRLABEL,
-+#define RTM_GETADDRLABEL RTM_GETADDRLABEL
-+
-+      RTM_GETDCB = 78,
-+#define RTM_GETDCB RTM_GETDCB
-+      RTM_SETDCB,
-+#define RTM_SETDCB RTM_SETDCB
-+
-       __RTM_MAX,
- #define RTM_MAX               (((__RTM_MAX + 3) & ~3) - 1)
- };
-@@ -235,13 +252,12 @@ enum rt_class_t
- {
-       RT_TABLE_UNSPEC=0,
- /* User defined values */
-+      RT_TABLE_COMPAT=252,
-       RT_TABLE_DEFAULT=253,
-       RT_TABLE_MAIN=254,
-       RT_TABLE_LOCAL=255,
--      __RT_TABLE_MAX
-+      RT_TABLE_MAX=0xFFFFFFFF
- };
--#define RT_TABLE_MAX (__RT_TABLE_MAX - 1)
--
- /* Routing message attributes */
-@@ -258,11 +274,12 @@ enum rtattr_type_t
-       RTA_PREFSRC,
-       RTA_METRICS,
-       RTA_MULTIPATH,
--      RTA_PROTOINFO,
-+      RTA_PROTOINFO, /* no longer used */
-       RTA_FLOW,
-       RTA_CACHEINFO,
--      RTA_SESSION,
--      RTA_MP_ALGO,
-+      RTA_SESSION, /* no longer used */
-+      RTA_MP_ALGO, /* no longer used */
-+      RTA_TABLE,
-       __RTA_MAX
- };
-@@ -351,6 +368,8 @@ enum
- #define RTAX_INITCWND RTAX_INITCWND
-       RTAX_FEATURES,
- #define RTAX_FEATURES RTAX_FEATURES
-+      RTAX_RTO_MIN,
-+#define RTAX_RTO_MIN RTAX_RTO_MIN
-       __RTAX_MAX
- };
-@@ -383,226 +402,6 @@ struct rta_session
-       } u;
- };
--
--/*********************************************************
-- *            Interface address.
-- ****/
--
--struct ifaddrmsg
--{
--      unsigned char   ifa_family;
--      unsigned char   ifa_prefixlen;  /* The prefix length            */
--      unsigned char   ifa_flags;      /* Flags                        */
--      unsigned char   ifa_scope;      /* See above                    */
--      int             ifa_index;      /* Link index                   */
--};
--
--enum
--{
--      IFA_UNSPEC,
--      IFA_ADDRESS,
--      IFA_LOCAL,
--      IFA_LABEL,
--      IFA_BROADCAST,
--      IFA_ANYCAST,
--      IFA_CACHEINFO,
--      IFA_MULTICAST,
--      __IFA_MAX
--};
--
--#define IFA_MAX (__IFA_MAX - 1)
--
--/* ifa_flags */
--
--#define IFA_F_SECONDARY               0x01
--#define IFA_F_TEMPORARY               IFA_F_SECONDARY
--
--#define IFA_F_DEPRECATED      0x20
--#define IFA_F_TENTATIVE               0x40
--#define IFA_F_PERMANENT               0x80
--
--struct ifa_cacheinfo
--{
--      __u32   ifa_prefered;
--      __u32   ifa_valid;
--      __u32   cstamp; /* created timestamp, hundredths of seconds */
--      __u32   tstamp; /* updated timestamp, hundredths of seconds */
--};
--
--
--#define IFA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
--#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
--
--/*
--   Important comment:
--   IFA_ADDRESS is prefix address, rather than local interface address.
--   It makes no difference for normally configured broadcast interfaces,
--   but for point-to-point IFA_ADDRESS is DESTINATION address,
--   local address is supplied in IFA_LOCAL attribute.
-- */
--
--/**************************************************************
-- *            Neighbour discovery.
-- ****/
--
--struct ndmsg
--{
--      unsigned char   ndm_family;
--      unsigned char   ndm_pad1;
--      unsigned short  ndm_pad2;
--      int             ndm_ifindex;    /* Link index                   */
--      __u16           ndm_state;
--      __u8            ndm_flags;
--      __u8            ndm_type;
--};
--
--enum
--{
--      NDA_UNSPEC,
--      NDA_DST,
--      NDA_LLADDR,
--      NDA_CACHEINFO,
--      NDA_PROBES,
--      __NDA_MAX
--};
--
--#define NDA_MAX (__NDA_MAX - 1)
--
--#define NDA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ndmsg))))
--#define NDA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ndmsg))
--
--/*
-- *    Neighbor Cache Entry Flags
-- */
--
--#define NTF_PROXY     0x08    /* == ATF_PUBL */
--#define NTF_ROUTER    0x80
--
--/*
-- *    Neighbor Cache Entry States.
-- */
--
--#define NUD_INCOMPLETE        0x01
--#define NUD_REACHABLE 0x02
--#define NUD_STALE     0x04
--#define NUD_DELAY     0x08
--#define NUD_PROBE     0x10
--#define NUD_FAILED    0x20
--
--/* Dummy states */
--#define NUD_NOARP     0x40
--#define NUD_PERMANENT 0x80
--#define NUD_NONE      0x00
--
--
--struct nda_cacheinfo
--{
--      __u32           ndm_confirmed;
--      __u32           ndm_used;
--      __u32           ndm_updated;
--      __u32           ndm_refcnt;
--};
--
--
--/*****************************************************************
-- *            Neighbour tables specific messages.
-- *
-- * To retrieve the neighbour tables send RTM_GETNEIGHTBL with the
-- * NLM_F_DUMP flag set. Every neighbour table configuration is
-- * spread over multiple messages to avoid running into message
-- * size limits on systems with many interfaces. The first message
-- * in the sequence transports all not device specific data such as
-- * statistics, configuration, and the default parameter set.
-- * This message is followed by 0..n messages carrying device
-- * specific parameter sets.
-- * Although the ordering should be sufficient, NDTA_NAME can be
-- * used to identify sequences. The initial message can be identified
-- * by checking for NDTA_CONFIG. The device specific messages do
-- * not contain this TLV but have NDTPA_IFINDEX set to the
-- * corresponding interface index.
-- *
-- * To change neighbour table attributes, send RTM_SETNEIGHTBL
-- * with NDTA_NAME set. Changeable attribute include NDTA_THRESH[1-3],
-- * NDTA_GC_INTERVAL, and all TLVs in NDTA_PARMS unless marked
-- * otherwise. Device specific parameter sets can be changed by
-- * setting NDTPA_IFINDEX to the interface index of the corresponding
-- * device.
-- ****/
--
--struct ndt_stats
--{
--      __u64           ndts_allocs;
--      __u64           ndts_destroys;
--      __u64           ndts_hash_grows;
--      __u64           ndts_res_failed;
--      __u64           ndts_lookups;
--      __u64           ndts_hits;
--      __u64           ndts_rcv_probes_mcast;
--      __u64           ndts_rcv_probes_ucast;
--      __u64           ndts_periodic_gc_runs;
--      __u64           ndts_forced_gc_runs;
--};
--
--enum {
--      NDTPA_UNSPEC,
--      NDTPA_IFINDEX,                  /* u32, unchangeable */
--      NDTPA_REFCNT,                   /* u32, read-only */
--      NDTPA_REACHABLE_TIME,           /* u64, read-only, msecs */
--      NDTPA_BASE_REACHABLE_TIME,      /* u64, msecs */
--      NDTPA_RETRANS_TIME,             /* u64, msecs */
--      NDTPA_GC_STALETIME,             /* u64, msecs */
--      NDTPA_DELAY_PROBE_TIME,         /* u64, msecs */
--      NDTPA_QUEUE_LEN,                /* u32 */
--      NDTPA_APP_PROBES,               /* u32 */
--      NDTPA_UCAST_PROBES,             /* u32 */
--      NDTPA_MCAST_PROBES,             /* u32 */
--      NDTPA_ANYCAST_DELAY,            /* u64, msecs */
--      NDTPA_PROXY_DELAY,              /* u64, msecs */
--      NDTPA_PROXY_QLEN,               /* u32 */
--      NDTPA_LOCKTIME,                 /* u64, msecs */
--      __NDTPA_MAX
--};
--#define NDTPA_MAX (__NDTPA_MAX - 1)
--
--struct ndtmsg
--{
--      __u8            ndtm_family;
--      __u8            ndtm_pad1;
--      __u16           ndtm_pad2;
--};
--
--struct ndt_config
--{
--      __u16           ndtc_key_len;
--      __u16           ndtc_entry_size;
--      __u32           ndtc_entries;
--      __u32           ndtc_last_flush;        /* delta to now in msecs */
--      __u32           ndtc_last_rand;         /* delta to now in msecs */
--      __u32           ndtc_hash_rnd;
--      __u32           ndtc_hash_mask;
--      __u32           ndtc_hash_chain_gc;
--      __u32           ndtc_proxy_qlen;
--};
--
--enum {
--      NDTA_UNSPEC,
--      NDTA_NAME,                      /* char *, unchangeable */
--      NDTA_THRESH1,                   /* u32 */
--      NDTA_THRESH2,                   /* u32 */
--      NDTA_THRESH3,                   /* u32 */
--      NDTA_CONFIG,                    /* struct ndt_config, read-only */
--      NDTA_PARMS,                     /* nested TLV NDTPA_* */
--      NDTA_STATS,                     /* struct ndt_stats, read-only */
--      NDTA_GC_INTERVAL,               /* u64, msecs */
--      __NDTA_MAX
--};
--#define NDTA_MAX (__NDTA_MAX - 1)
--
--#define NDTA_RTA(r) ((struct rtattr*)(((char*)(r)) + \
--                   NLMSG_ALIGN(sizeof(struct ndtmsg))))
--#define NDTA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ndtmsg))
--
--
- /****
-  *            General form of address family dependent message.
-  ****/
-@@ -663,138 +462,6 @@ struct prefix_cacheinfo
-       __u32   valid_time;
- };
--/* The struct should be in sync with struct net_device_stats */
--struct rtnl_link_stats
--{
--      __u32   rx_packets;             /* total packets received       */
--      __u32   tx_packets;             /* total packets transmitted    */
--      __u32   rx_bytes;               /* total bytes received         */
--      __u32   tx_bytes;               /* total bytes transmitted      */
--      __u32   rx_errors;              /* bad packets received         */
--      __u32   tx_errors;              /* packet transmit problems     */
--      __u32   rx_dropped;             /* no space in linux buffers    */
--      __u32   tx_dropped;             /* no space available in linux  */
--      __u32   multicast;              /* multicast packets received   */
--      __u32   collisions;
--
--      /* detailed rx_errors: */
--      __u32   rx_length_errors;
--      __u32   rx_over_errors;         /* receiver ring buff overflow  */
--      __u32   rx_crc_errors;          /* recved pkt with crc error    */
--      __u32   rx_frame_errors;        /* recv'd frame alignment error */
--      __u32   rx_fifo_errors;         /* recv'r fifo overrun          */
--      __u32   rx_missed_errors;       /* receiver missed packet       */
--
--      /* detailed tx_errors */
--      __u32   tx_aborted_errors;
--      __u32   tx_carrier_errors;
--      __u32   tx_fifo_errors;
--      __u32   tx_heartbeat_errors;
--      __u32   tx_window_errors;
--      
--      /* for cslip etc */
--      __u32   rx_compressed;
--      __u32   tx_compressed;
--};
--
--/* The struct should be in sync with struct ifmap */
--struct rtnl_link_ifmap
--{
--      __u64   mem_start;
--      __u64   mem_end;
--      __u64   base_addr;
--      __u16   irq;
--      __u8    dma;
--      __u8    port;
--};
--
--enum
--{
--      IFLA_UNSPEC,
--      IFLA_ADDRESS,
--      IFLA_BROADCAST,
--      IFLA_IFNAME,
--      IFLA_MTU,
--      IFLA_LINK,
--      IFLA_QDISC,
--      IFLA_STATS,
--      IFLA_COST,
--#define IFLA_COST IFLA_COST
--      IFLA_PRIORITY,
--#define IFLA_PRIORITY IFLA_PRIORITY
--      IFLA_MASTER,
--#define IFLA_MASTER IFLA_MASTER
--      IFLA_WIRELESS,          /* Wireless Extension event - see wireless.h */
--#define IFLA_WIRELESS IFLA_WIRELESS
--      IFLA_PROTINFO,          /* Protocol specific information for a link */
--#define IFLA_PROTINFO IFLA_PROTINFO
--      IFLA_TXQLEN,
--#define IFLA_TXQLEN IFLA_TXQLEN
--      IFLA_MAP,
--#define IFLA_MAP IFLA_MAP
--      IFLA_WEIGHT,
--#define IFLA_WEIGHT IFLA_WEIGHT
--      IFLA_OPERSTATE,
--      IFLA_LINKMODE,
--      __IFLA_MAX
--};
--
--
--#define IFLA_MAX (__IFLA_MAX - 1)
--
--#define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
--#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
--
--/* ifi_flags.
--
--   IFF_* flags.
--
--   The only change is:
--   IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
--   more not changeable by user. They describe link media
--   characteristics and set by device driver.
--
--   Comments:
--   - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
--   - If neither of these three flags are set;
--     the interface is NBMA.
--
--   - IFF_MULTICAST does not mean anything special:
--   multicasts can be used on all not-NBMA links.
--   IFF_MULTICAST means that this media uses special encapsulation
--   for multicast frames. Apparently, all IFF_POINTOPOINT and
--   IFF_BROADCAST devices are able to use multicasts too.
-- */
--
--/* IFLA_LINK.
--   For usual devices it is equal ifi_index.
--   If it is a "virtual interface" (f.e. tunnel), ifi_link
--   can point to real physical interface (f.e. for bandwidth calculations),
--   or maybe 0, what means, that real media is unknown (usual
--   for IPIP tunnels, when route to endpoint is allowed to change)
-- */
--
--/* Subtype attributes for IFLA_PROTINFO */
--enum
--{
--      IFLA_INET6_UNSPEC,
--      IFLA_INET6_FLAGS,       /* link flags                   */
--      IFLA_INET6_CONF,        /* sysctl parameters            */
--      IFLA_INET6_STATS,       /* statistics                   */
--      IFLA_INET6_MCAST,       /* MC things. What of them?     */
--      IFLA_INET6_CACHEINFO,   /* time values and max reasm size */
--      __IFLA_INET6_MAX
--};
--
--#define IFLA_INET6_MAX        (__IFLA_INET6_MAX - 1)
--
--struct ifla_cacheinfo
--{
--      __u32   max_reasm_len;
--      __u32   tstamp;         /* ipv6InterfaceTable updated timestamp */
--      __u32   reachable_time;
--      __u32   retrans_time;
--};
- /*****************************************************************
-  *            Traffic control messages.
-@@ -821,6 +488,7 @@ enum
-       TCA_RATE,
-       TCA_FCNT,
-       TCA_STATS2,
-+      TCA_STAB,
-       __TCA_MAX
- };
-@@ -829,6 +497,32 @@ enum
- #define TCA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
- #define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
-+/********************************************************************
-+ *            Neighbor Discovery userland options
-+ ****/
-+
-+struct nduseroptmsg
-+{
-+      unsigned char   nduseropt_family;
-+      unsigned char   nduseropt_pad1;
-+      unsigned short  nduseropt_opts_len;     /* Total length of options */
-+      int             nduseropt_ifindex;
-+      __u8            nduseropt_icmp_type;
-+      __u8            nduseropt_icmp_code;
-+      unsigned short  nduseropt_pad2;
-+      unsigned int    nduseropt_pad3;
-+      /* Followed by one or more ND options */
-+};
-+
-+enum
-+{
-+      NDUSEROPT_UNSPEC,
-+      NDUSEROPT_SRCADDR,
-+      __NDUSEROPT_MAX
-+};
-+
-+#define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
-+
- /* RTnetlink multicast groups - backwards compatibility for userspace */
- #define RTMGRP_LINK           1
- #define RTMGRP_NOTIFY         2
-@@ -883,10 +577,19 @@ enum rtnetlink_groups {
-       RTNLGRP_NOP2,
-       RTNLGRP_DECnet_ROUTE,
- #define RTNLGRP_DECnet_ROUTE  RTNLGRP_DECnet_ROUTE
--      RTNLGRP_NOP3,
-+      RTNLGRP_DECnet_RULE,
-+#define RTNLGRP_DECnet_RULE   RTNLGRP_DECnet_RULE
-       RTNLGRP_NOP4,
-       RTNLGRP_IPV6_PREFIX,
- #define RTNLGRP_IPV6_PREFIX   RTNLGRP_IPV6_PREFIX
-+      RTNLGRP_IPV6_RULE,
-+#define RTNLGRP_IPV6_RULE     RTNLGRP_IPV6_RULE
-+      RTNLGRP_ND_USEROPT,
-+#define RTNLGRP_ND_USEROPT    RTNLGRP_ND_USEROPT
-+      RTNLGRP_PHONET_IFADDR,
-+#define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR
-+      RTNLGRP_PHONET_ROUTE,
-+#define RTNLGRP_PHONET_ROUTE  RTNLGRP_PHONET_ROUTE
-       __RTNLGRP_MAX
- };
- #define RTNLGRP_MAX   (__RTNLGRP_MAX - 1)
index 1fb976ac503d6f7cc8968aee837ac5851a3c4628..6bbc3ff14c2449cb74a63baf50a68652a92a0486 100644 (file)
@@ -5,7 +5,7 @@
 
 name       = rstp
 version    = 0.21
-release    = 6
+release    = 7
 
 groups     = Networking/Tools
 url        = http://git.ipfire.org/?p=thirdparty/rstp.git;a=summary