]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
Merge branch 'master' into net-next
authorStephen Hemminger <stephen@networkplumber.org>
Tue, 14 Mar 2017 23:42:59 +0000 (16:42 -0700)
committerStephen Hemminger <stephen@networkplumber.org>
Tue, 14 Mar 2017 23:42:59 +0000 (16:42 -0700)
include/linux/ipv6.h
include/linux/mpls_iptunnel.h
include/linux/rtnetlink.h
include/linux/sctp.h
tc/tc_qdisc.c

index 26ee549f6180d238728208c86dda1fdef519f143..75eed60890b4e5834c50885e58e94606da5b7373 100644 (file)
@@ -183,6 +183,7 @@ enum {
        DEVCONF_SEG6_REQUIRE_HMAC,
        DEVCONF_ENHANCED_DAD,
        DEVCONF_ADDR_GEN_MODE,
+       DEVCONF_DISABLE_POLICY,
        DEVCONF_MAX
 };
 
index 4132c3c59572b525f168447c5107deebb254daad..1a0e57b45a8ce0fe2271282eac75d7e85eb571bc 100644 (file)
 /* MPLS tunnel attributes
  * [RTA_ENCAP] = {
  *     [MPLS_IPTUNNEL_DST]
+ *     [MPLS_IPTUNNEL_TTL]
  * }
  */
 enum {
        MPLS_IPTUNNEL_UNSPEC,
        MPLS_IPTUNNEL_DST,
+       MPLS_IPTUNNEL_TTL,
        __MPLS_IPTUNNEL_MAX,
 };
 #define MPLS_IPTUNNEL_MAX (__MPLS_IPTUNNEL_MAX - 1)
index d42fe83cec694db28f54cc0529defd96e5a5be5b..86c605b9168943d8be74fb60871e7e79665cce40 100644 (file)
@@ -319,6 +319,7 @@ enum rtattr_type_t {
        RTA_EXPIRES,
        RTA_PAD,
        RTA_UID,
+       RTA_TTL_PROPAGATE,
        __RTA_MAX
 };
 
@@ -545,6 +546,7 @@ enum {
        TCA_STATS2,
        TCA_STAB,
        TCA_PAD,
+       TCA_DUMP_INVISIBLE,
        __TCA_MAX
 };
 
index 5e08b3de809ebae1307e88ef4f7ff391cac582fb..008cf5f91c2034f4bb7119cd20e4032554fc5def 100644 (file)
@@ -115,6 +115,7 @@ typedef __s32 sctp_assoc_t;
 #define SCTP_PR_SUPPORTED      113
 #define SCTP_DEFAULT_PRINFO    114
 #define SCTP_PR_ASSOC_STATUS   115
+#define SCTP_RECONFIG_SUPPORTED        117
 #define SCTP_ENABLE_STREAM_RESET       118
 #define SCTP_RESET_STREAMS     119
 #define SCTP_RESET_ASSOC       120
@@ -502,6 +503,28 @@ struct sctp_stream_reset_event {
        __u16 strreset_stream_list[];
 };
 
+#define SCTP_ASSOC_RESET_DENIED                0x0004
+#define SCTP_ASSOC_RESET_FAILED                0x0008
+struct sctp_assoc_reset_event {
+       __u16 assocreset_type;
+       __u16 assocreset_flags;
+       __u32 assocreset_length;
+       sctp_assoc_t assocreset_assoc_id;
+       __u32 assocreset_local_tsn;
+       __u32 assocreset_remote_tsn;
+};
+
+#define SCTP_ASSOC_CHANGE_DENIED       0x0004
+#define SCTP_ASSOC_CHANGE_FAILED       0x0008
+struct sctp_stream_change_event {
+       __u16 strchange_type;
+       __u16 strchange_flags;
+       __u32 strchange_length;
+       sctp_assoc_t strchange_assoc_id;
+       __u16 strchange_instrms;
+       __u16 strchange_outstrms;
+};
+
 /*
  * Described in Section 7.3
  *   Ancillary Data and Notification Interest Options
@@ -518,6 +541,8 @@ struct sctp_event_subscribe {
        __u8 sctp_authentication_event;
        __u8 sctp_sender_dry_event;
        __u8 sctp_stream_reset_event;
+       __u8 sctp_assoc_reset_event;
+       __u8 sctp_stream_change_event;
 };
 
 /*
@@ -543,6 +568,8 @@ union sctp_notification {
        struct sctp_authkey_event sn_authkey_event;
        struct sctp_sender_dry_event sn_sender_dry_event;
        struct sctp_stream_reset_event sn_strreset_event;
+       struct sctp_assoc_reset_event sn_assocreset_event;
+       struct sctp_stream_change_event sn_strchange_event;
 };
 
 /* Section 5.3.1
@@ -572,6 +599,10 @@ enum sctp_sn_type {
 #define SCTP_SENDER_DRY_EVENT          SCTP_SENDER_DRY_EVENT
        SCTP_STREAM_RESET_EVENT,
 #define SCTP_STREAM_RESET_EVENT                SCTP_STREAM_RESET_EVENT
+       SCTP_ASSOC_RESET_EVENT,
+#define SCTP_ASSOC_RESET_EVENT         SCTP_ASSOC_RESET_EVENT
+       SCTP_STREAM_CHANGE_EVENT,
+#define SCTP_STREAM_CHANGE_EVENT       SCTP_STREAM_CHANGE_EVENT
 };
 
 /* Notification error codes used to fill up the error fields in some
index 3a3701c20470436a6481f58d0fcc3d6843a78655..1e9d909789e60637173c8a9cc5e1975eccb156a9 100644 (file)
@@ -34,7 +34,7 @@ static int usage(void)
        fprintf(stderr, "       [ stab [ help | STAB_OPTIONS] ]\n");
        fprintf(stderr, "       [ [ QDISC_KIND ] [ help | OPTIONS ] ]\n");
        fprintf(stderr, "\n");
-       fprintf(stderr, "       tc qdisc show [ dev STRING ] [ ingress | clsact ]\n");
+       fprintf(stderr, "       tc qdisc show [ dev STRING ] [ ingress | clsact ] [ invisible ]\n");
        fprintf(stderr, "Where:\n");
        fprintf(stderr, "QDISC_KIND := { [p|b]fifo | tbf | prio | cbq | red | etc. }\n");
        fprintf(stderr, "OPTIONS := ... try tc qdisc add <desired QDISC_KIND> help\n");
@@ -292,6 +292,7 @@ static int tc_qdisc_list(int argc, char **argv)
 {
        struct tcmsg t = { .tcm_family = AF_UNSPEC };
        char d[16] = {};
+       bool dump_invisible = false;
 
        while (argc > 0) {
                if (strcmp(*argv, "dev") == 0) {
@@ -306,6 +307,8 @@ static int tc_qdisc_list(int argc, char **argv)
                        t.tcm_parent = TC_H_INGRESS;
                } else if (matches(*argv, "help") == 0) {
                        usage();
+               } else if (strcmp(*argv, "invisible") == 0) {
+                       dump_invisible = true;
                } else {
                        fprintf(stderr, "What is \"%s\"? Try \"tc qdisc help\".\n", *argv);
                        return -1;
@@ -325,7 +328,25 @@ static int tc_qdisc_list(int argc, char **argv)
                filter_ifindex = t.tcm_ifindex;
        }
 
-       if (rtnl_dump_request(&rth, RTM_GETQDISC, &t, sizeof(t)) < 0) {
+       if (dump_invisible) {
+               struct {
+                       struct nlmsghdr n;
+                       struct tcmsg t;
+                       char buf[256];
+               } req = {
+                       .n.nlmsg_type = RTM_GETQDISC,
+                       .n.nlmsg_len = NLMSG_LENGTH(sizeof(struct tcmsg)),
+               };
+
+               req.t.tcm_family = AF_UNSPEC;
+
+               addattr(&req.n, 256, TCA_DUMP_INVISIBLE);
+               if (rtnl_dump_request_n(&rth, &req.n) < 0) {
+                       perror("Cannot send dump request");
+                       return 1;
+               }
+
+       } else if (rtnl_dump_request(&rth, RTM_GETQDISC, &t, sizeof(t)) < 0) {
                perror("Cannot send dump request");
                return 1;
        }