Merge branch 'iproute2-master' into next
Signed-off-by: David Ahern <dsahern@gmail.com>
This commit is contained in:
commit
3efdd43667
|
|
@ -1 +1 @@
|
||||||
static const char SNAPSHOT[] = "190107";
|
static const char SNAPSHOT[] = "190319";
|
||||||
|
|
|
||||||
|
|
@ -2359,6 +2359,13 @@ union bpf_attr {
|
||||||
* Return
|
* Return
|
||||||
* A **struct bpf_tcp_sock** pointer on success, or NULL in
|
* A **struct bpf_tcp_sock** pointer on success, or NULL in
|
||||||
* case of failure.
|
* 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) \
|
#define __BPF_FUNC_MAPPER(FN) \
|
||||||
FN(unspec), \
|
FN(unspec), \
|
||||||
|
|
@ -2457,7 +2464,8 @@ union bpf_attr {
|
||||||
FN(spin_lock), \
|
FN(spin_lock), \
|
||||||
FN(spin_unlock), \
|
FN(spin_unlock), \
|
||||||
FN(sk_fullsock), \
|
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
|
/* integer value in 'imm' field of BPF_CALL instruction selects which helper
|
||||||
* function eBPF program intends to call
|
* function eBPF program intends to call
|
||||||
|
|
@ -2813,6 +2821,8 @@ struct bpf_prog_info {
|
||||||
__u32 jited_line_info_rec_size;
|
__u32 jited_line_info_rec_size;
|
||||||
__u32 nr_prog_tags;
|
__u32 nr_prog_tags;
|
||||||
__aligned_u64 prog_tags;
|
__aligned_u64 prog_tags;
|
||||||
|
__u64 run_time_ns;
|
||||||
|
__u64 run_cnt;
|
||||||
} __attribute__((aligned(8)));
|
} __attribute__((aligned(8)));
|
||||||
|
|
||||||
struct bpf_map_info {
|
struct bpf_map_info {
|
||||||
|
|
|
||||||
|
|
@ -178,6 +178,7 @@ struct in6_flowlabel_req {
|
||||||
#define IPV6_JOIN_ANYCAST 27
|
#define IPV6_JOIN_ANYCAST 27
|
||||||
#define IPV6_LEAVE_ANYCAST 28
|
#define IPV6_LEAVE_ANYCAST 28
|
||||||
#define IPV6_MULTICAST_ALL 29
|
#define IPV6_MULTICAST_ALL 29
|
||||||
|
#define IPV6_ROUTER_ALERT_ISOLATE 30
|
||||||
|
|
||||||
/* IPV6_MTU_DISCOVER values */
|
/* IPV6_MTU_DISCOVER values */
|
||||||
#define IPV6_PMTUDISC_DONT 0
|
#define IPV6_PMTUDISC_DONT 0
|
||||||
|
|
|
||||||
|
|
@ -1021,6 +1021,7 @@ enum {
|
||||||
TCA_CAKE_INGRESS,
|
TCA_CAKE_INGRESS,
|
||||||
TCA_CAKE_ACK_FILTER,
|
TCA_CAKE_ACK_FILTER,
|
||||||
TCA_CAKE_SPLIT_GSO,
|
TCA_CAKE_SPLIT_GSO,
|
||||||
|
TCA_CAKE_FWMARK,
|
||||||
__TCA_CAKE_MAX
|
__TCA_CAKE_MAX
|
||||||
};
|
};
|
||||||
#define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1)
|
#define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1)
|
||||||
|
|
|
||||||
|
|
@ -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]));
|
strcpy(ifr.ifr_name, rta_getattr_str(tb[IFLA_IFNAME]));
|
||||||
if (ioctl(s, SIOCGIFTXQLEN, &ifr) < 0) {
|
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);
|
close(s);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
10
ip/iproute.c
10
ip/iproute.c
|
|
@ -450,10 +450,8 @@ static void print_cache_flags(FILE *fp, __u32 flags)
|
||||||
if (flags)
|
if (flags)
|
||||||
print_hex(PRINT_ANY, "flags", "%x>", flags);
|
print_hex(PRINT_ANY, "flags", "%x>", flags);
|
||||||
|
|
||||||
if (jw) {
|
if (jw)
|
||||||
jsonw_end_array(jw);
|
jsonw_end_array(jw);
|
||||||
jsonw_destroy(&jw);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_rta_cacheinfo(FILE *fp, const struct rta_cacheinfo *ci)
|
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) &&
|
if ((r->rtm_type != RTN_UNICAST || show_details > 0) &&
|
||||||
(!filter.typemask || (filter.typemask & (1 << r->rtm_type))))
|
(!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)));
|
rtnl_rtntype_n2a(r->rtm_type, b1, sizeof(b1)));
|
||||||
|
|
||||||
color = COLOR_NONE;
|
color = COLOR_NONE;
|
||||||
|
|
@ -2079,6 +2077,8 @@ static int iproute_get(int argc, char **argv)
|
||||||
if (rtnl_talk(&rth, &req.n, &answer) < 0)
|
if (rtnl_talk(&rth, &req.n, &answer) < 0)
|
||||||
return -2;
|
return -2;
|
||||||
|
|
||||||
|
new_json_obj(json);
|
||||||
|
|
||||||
if (connected && !from_ok) {
|
if (connected && !from_ok) {
|
||||||
struct rtmsg *r = NLMSG_DATA(answer);
|
struct rtmsg *r = NLMSG_DATA(answer);
|
||||||
int len = answer->nlmsg_len;
|
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_flags = NLM_F_REQUEST;
|
||||||
req.n.nlmsg_type = RTM_GETROUTE;
|
req.n.nlmsg_type = RTM_GETROUTE;
|
||||||
|
|
||||||
|
delete_json_obj();
|
||||||
free(answer);
|
free(answer);
|
||||||
if (rtnl_talk(&rth, &req.n, &answer) < 0)
|
if (rtnl_talk(&rth, &req.n, &answer) < 0)
|
||||||
return -2;
|
return -2;
|
||||||
|
|
@ -2134,6 +2135,7 @@ static int iproute_get(int argc, char **argv)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete_json_obj();
|
||||||
free(answer);
|
free(answer);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -455,7 +455,8 @@ int print_rule(struct nlmsghdr *n, void *arg)
|
||||||
print_string(PRINT_ANY, "goto", "goto %s", "none");
|
print_string(PRINT_ANY, "goto", "goto %s", "none");
|
||||||
|
|
||||||
if (frh->flags & FIB_RULE_UNRESOLVED)
|
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) {
|
} else if (frh->action == FR_ACT_NOP) {
|
||||||
print_null(PRINT_ANY, "nop", "nop", NULL);
|
print_null(PRINT_ANY, "nop", "nop", NULL);
|
||||||
} else if (frh->action != FR_ACT_TO_TBL) {
|
} else if (frh->action != FR_ACT_TO_TBL) {
|
||||||
|
|
|
||||||
|
|
@ -270,6 +270,8 @@ struct ib_uverbs_ex_query_device_resp {
|
||||||
struct ib_uverbs_tm_caps tm_caps;
|
struct ib_uverbs_tm_caps tm_caps;
|
||||||
struct ib_uverbs_cq_moderation_caps cq_moderation_caps;
|
struct ib_uverbs_cq_moderation_caps cq_moderation_caps;
|
||||||
__aligned_u64 max_dm_size;
|
__aligned_u64 max_dm_size;
|
||||||
|
__u32 xrc_odp_caps;
|
||||||
|
__u32 reserved;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ib_uverbs_query_port {
|
struct ib_uverbs_query_port {
|
||||||
|
|
|
||||||
|
|
@ -255,9 +255,11 @@ enum rdma_nldev_command {
|
||||||
RDMA_NLDEV_CMD_GET, /* can dump */
|
RDMA_NLDEV_CMD_GET, /* can dump */
|
||||||
RDMA_NLDEV_CMD_SET,
|
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 */
|
/* 6 - 8 are free to use */
|
||||||
|
|
||||||
|
|
@ -465,6 +467,10 @@ enum rdma_nldev_attr {
|
||||||
RDMA_NLDEV_ATTR_RES_MRN, /* u32 */
|
RDMA_NLDEV_ATTR_RES_MRN, /* u32 */
|
||||||
RDMA_NLDEV_ATTR_RES_CM_IDN, /* u32 */
|
RDMA_NLDEV_ATTR_RES_CM_IDN, /* u32 */
|
||||||
RDMA_NLDEV_ATTR_RES_CTXN, /* u32 */
|
RDMA_NLDEV_ATTR_RES_CTXN, /* u32 */
|
||||||
|
/*
|
||||||
|
* Identifies the rdma driver. eg: "rxe" or "siw"
|
||||||
|
*/
|
||||||
|
RDMA_NLDEV_ATTR_LINK_TYPE, /* string */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Always the end
|
* Always the end
|
||||||
|
|
|
||||||
|
|
@ -300,6 +300,10 @@ enum {
|
||||||
RDMA_OPTION_ID_TOS = 0,
|
RDMA_OPTION_ID_TOS = 0,
|
||||||
RDMA_OPTION_ID_REUSEADDR = 1,
|
RDMA_OPTION_ID_REUSEADDR = 1,
|
||||||
RDMA_OPTION_ID_AFONLY = 2,
|
RDMA_OPTION_ID_AFONLY = 2,
|
||||||
|
RDMA_OPTION_ID_ACK_TIMEOUT = 3
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
RDMA_OPTION_IB_PATH = 1
|
RDMA_OPTION_IB_PATH = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ parse_connmark(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
|
||||||
if (matches(*argv, "zone") == 0) {
|
if (matches(*argv, "zone") == 0) {
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
if (get_u16(&sel.zone, *argv, 10)) {
|
if (get_u16(&sel.zone, *argv, 10)) {
|
||||||
fprintf(stderr, "simple: Illegal \"index\"\n");
|
fprintf(stderr, "connmark: Illegal \"zone\"\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
argc--;
|
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) {
|
if (matches(*argv, "index") == 0) {
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
if (get_u32(&sel.index, *argv, 10)) {
|
if (get_u32(&sel.index, *argv, 10)) {
|
||||||
fprintf(stderr, "simple: Illegal \"index\"\n");
|
fprintf(stderr, "connmark: Illegal \"index\"\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
argc--;
|
argc--;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue