]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
Merge branch 'iproute2-master' into next
authorDavid Ahern <dsahern@gmail.com>
Wed, 20 Mar 2019 07:38:08 +0000 (00:38 -0700)
committerDavid Ahern <dsahern@gmail.com>
Wed, 20 Mar 2019 07:38:08 +0000 (00:38 -0700)
Signed-off-by: David Ahern <dsahern@gmail.com>
include/SNAPSHOT.h
include/uapi/linux/bpf.h
include/uapi/linux/in6.h
include/uapi/linux/pkt_sched.h
ip/ipaddress.c
ip/iproute.c
ip/iprule.c
rdma/include/uapi/rdma/ib_user_verbs.h
rdma/include/uapi/rdma/rdma_netlink.h
rdma/include/uapi/rdma/rdma_user_cm.h
tc/m_connmark.c

index e9d546d029054618a6703a71ccc8b40fc64e99c1..3b2f8f1b18ee60e77bd61dc1fd93b01b19429ef7 100644 (file)
@@ -1 +1 @@
-static const char SNAPSHOT[] = "190107";
+static const char SNAPSHOT[] = "190319";
index b7b748f15da107d6a637f0c7ed79d8ca06652cbe..a857878ff28777ca8430eee8d38de1341d92d5a7 100644 (file)
@@ -2359,6 +2359,13 @@ union bpf_attr {
  *     Return
  *             A **struct bpf_tcp_sock** pointer on success, or NULL in
  *             case of failure.
+ *
+ * int bpf_skb_ecn_set_ce(struct sk_buf *skb)
+ *     Description
+ *             Sets ECN of IP header to ce (congestion encountered) if
+ *             current value is ect (ECN capable). Works with IPv6 and IPv4.
+ *     Return
+ *             1 if set, 0 if not set.
  */
 #define __BPF_FUNC_MAPPER(FN)          \
        FN(unspec),                     \
@@ -2457,7 +2464,8 @@ union bpf_attr {
        FN(spin_lock),                  \
        FN(spin_unlock),                \
        FN(sk_fullsock),                \
-       FN(tcp_sock),
+       FN(tcp_sock),                   \
+       FN(skb_ecn_set_ce),
 
 /* integer value in 'imm' field of BPF_CALL instruction selects which helper
  * function eBPF program intends to call
@@ -2813,6 +2821,8 @@ struct bpf_prog_info {
        __u32 jited_line_info_rec_size;
        __u32 nr_prog_tags;
        __aligned_u64 prog_tags;
+       __u64 run_time_ns;
+       __u64 run_cnt;
 } __attribute__((aligned(8)));
 
 struct bpf_map_info {
index 2bb132a97333e55a7e67900f77c0666666b4d297..d016ac9f832ece9a3dba2b01deec0a54c1031c1d 100644 (file)
@@ -178,6 +178,7 @@ struct in6_flowlabel_req {
 #define IPV6_JOIN_ANYCAST      27
 #define IPV6_LEAVE_ANYCAST     28
 #define IPV6_MULTICAST_ALL     29
+#define IPV6_ROUTER_ALERT_ISOLATE      30
 
 /* IPV6_MTU_DISCOVER values */
 #define IPV6_PMTUDISC_DONT             0
index 1eb572ef3f2775686d4f5c7d0e6c2582a9c16f3b..7ee74c3474bff4b39b11fc48cb6154fdb4b6aad0 100644 (file)
@@ -1021,6 +1021,7 @@ enum {
        TCA_CAKE_INGRESS,
        TCA_CAKE_ACK_FILTER,
        TCA_CAKE_SPLIT_GSO,
+       TCA_CAKE_FWMARK,
        __TCA_CAKE_MAX
 };
 #define TCA_CAKE_MAX   (__TCA_CAKE_MAX - 1)
index 76edf7064819c08970db32e5ddf665112996be9a..b504200bb3776a09d90a6ff697da4846bcb890d4 100644 (file)
@@ -174,7 +174,9 @@ static void print_queuelen(FILE *f, struct rtattr *tb[IFLA_MAX + 1])
 
                strcpy(ifr.ifr_name, rta_getattr_str(tb[IFLA_IFNAME]));
                if (ioctl(s, SIOCGIFTXQLEN, &ifr) < 0) {
-                       fprintf(f, "ioctl(SIOCGIFTXQLEN) failed: %s\n", strerror(errno));
+                       fprintf(stderr,
+                               "ioctl(SIOCGIFTXQLEN) failed: %s\n",
+                               strerror(errno));
                        close(s);
                        return;
                }
index cc02a3e1b0aa65ba1e4f1c4e701d3897a1e14ff6..2b3dcc5dbd53fc2318853f40f35c87c81561e5ff 100644 (file)
@@ -450,10 +450,8 @@ static void print_cache_flags(FILE *fp, __u32 flags)
        if (flags)
                print_hex(PRINT_ANY, "flags", "%x>", flags);
 
-       if (jw) {
+       if (jw)
                jsonw_end_array(jw);
-               jsonw_destroy(&jw);
-       }
 }
 
 static void print_rta_cacheinfo(FILE *fp, const struct rta_cacheinfo *ci)
@@ -766,7 +764,7 @@ int print_route(struct nlmsghdr *n, void *arg)
 
        if ((r->rtm_type != RTN_UNICAST || show_details > 0) &&
            (!filter.typemask || (filter.typemask & (1 << r->rtm_type))))
-               print_string(PRINT_ANY, NULL, "%s ",
+               print_string(PRINT_ANY, "type", "%s ",
                             rtnl_rtntype_n2a(r->rtm_type, b1, sizeof(b1)));
 
        color = COLOR_NONE;
@@ -2079,6 +2077,8 @@ static int iproute_get(int argc, char **argv)
        if (rtnl_talk(&rth, &req.n, &answer) < 0)
                return -2;
 
+       new_json_obj(json);
+
        if (connected && !from_ok) {
                struct rtmsg *r = NLMSG_DATA(answer);
                int len = answer->nlmsg_len;
@@ -2123,6 +2123,7 @@ static int iproute_get(int argc, char **argv)
                req.n.nlmsg_flags = NLM_F_REQUEST;
                req.n.nlmsg_type = RTM_GETROUTE;
 
+               delete_json_obj();
                free(answer);
                if (rtnl_talk(&rth, &req.n, &answer) < 0)
                        return -2;
@@ -2134,6 +2135,7 @@ static int iproute_get(int argc, char **argv)
                return -1;
        }
 
+       delete_json_obj();
        free(answer);
        return 0;
 }
index 4e9437de343780df8c56c68a8d8792ec4ece5a7a..83aef38e0dc7362efc5caacc8eec67154d0f5fce 100644 (file)
@@ -455,7 +455,8 @@ int print_rule(struct nlmsghdr *n, void *arg)
                        print_string(PRINT_ANY, "goto", "goto %s", "none");
 
                if (frh->flags & FIB_RULE_UNRESOLVED)
-                       print_null(PRINT_ANY, "unresolved", "unresolved", NULL);
+                       print_null(PRINT_ANY, "unresolved",
+                                  " [unresolved]", NULL);
        } else if (frh->action == FR_ACT_NOP) {
                print_null(PRINT_ANY, "nop", "nop", NULL);
        } else if (frh->action != FR_ACT_TO_TBL) {
index 480d9a60b68e475a7dcd20fe326cbe9706ba11c2..0474c74002685d9c75cff30fd9faf88f1d9c4337 100644 (file)
@@ -270,6 +270,8 @@ struct ib_uverbs_ex_query_device_resp {
        struct ib_uverbs_tm_caps tm_caps;
        struct ib_uverbs_cq_moderation_caps cq_moderation_caps;
        __aligned_u64 max_dm_size;
+       __u32 xrc_odp_caps;
+       __u32 reserved;
 };
 
 struct ib_uverbs_query_port {
index 5027c6274ded5a2ec60f4d88b24e2669d4b0b632..23a90ad52485c713b1f3c15ef70473b04861407c 100644 (file)
@@ -255,9 +255,11 @@ enum rdma_nldev_command {
        RDMA_NLDEV_CMD_GET, /* can dump */
        RDMA_NLDEV_CMD_SET,
 
-       /* 3 - 4 are free to use */
+       RDMA_NLDEV_CMD_NEWLINK,
 
-       RDMA_NLDEV_CMD_PORT_GET = 5, /* can dump */
+       RDMA_NLDEV_CMD_DELLINK,
+
+       RDMA_NLDEV_CMD_PORT_GET, /* can dump */
 
        /* 6 - 8 are free to use */
 
@@ -465,6 +467,10 @@ enum rdma_nldev_attr {
        RDMA_NLDEV_ATTR_RES_MRN,               /* u32 */
        RDMA_NLDEV_ATTR_RES_CM_IDN,            /* u32 */
        RDMA_NLDEV_ATTR_RES_CTXN,              /* u32 */
+       /*
+        * Identifies the rdma driver. eg: "rxe" or "siw"
+        */
+       RDMA_NLDEV_ATTR_LINK_TYPE,              /* string */
 
        /*
         * Always the end
index 0d1e78ebad05154097ffa8b3bfb8708f5c7a0cb3..e42940a215a3058845e3e4971b6b7ea5cdd644e7 100644 (file)
@@ -300,6 +300,10 @@ enum {
        RDMA_OPTION_ID_TOS       = 0,
        RDMA_OPTION_ID_REUSEADDR = 1,
        RDMA_OPTION_ID_AFONLY    = 2,
+       RDMA_OPTION_ID_ACK_TIMEOUT = 3
+};
+
+enum {
        RDMA_OPTION_IB_PATH      = 1
 };
 
index 45e2d05f1a9114f7df37c88ee79a11e109390bf8..13543d337cc2dec9d842fecae97cdd1319174642 100644 (file)
@@ -73,7 +73,7 @@ parse_connmark(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
                if (matches(*argv, "zone") == 0) {
                        NEXT_ARG();
                        if (get_u16(&sel.zone, *argv, 10)) {
-                               fprintf(stderr, "simple: Illegal \"index\"\n");
+                               fprintf(stderr, "connmark: Illegal \"zone\"\n");
                                return -1;
                        }
                        argc--;
@@ -87,7 +87,7 @@ parse_connmark(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
                if (matches(*argv, "index") == 0) {
                        NEXT_ARG();
                        if (get_u32(&sel.index, *argv, 10)) {
-                               fprintf(stderr, "simple: Illegal \"index\"\n");
+                               fprintf(stderr, "connmark: Illegal \"index\"\n");
                                return -1;
                        }
                        argc--;