Merge branch 'master' into net-next
This commit is contained in:
commit
5c6e3478ac
|
|
@ -1,3 +1,4 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||||
/* AF_VSOCK sock_diag(7) interface for querying open sockets */
|
/* AF_VSOCK sock_diag(7) interface for querying open sockets */
|
||||||
|
|
||||||
#ifndef __VM_SOCKETS_DIAG_H__
|
#ifndef __VM_SOCKETS_DIAG_H__
|
||||||
|
|
|
||||||
|
|
@ -53,8 +53,8 @@ SCTP header
|
||||||
.B SWEETS
|
.B SWEETS
|
||||||
These are merely syntactic sugar and ignored internally.
|
These are merely syntactic sugar and ignored internally.
|
||||||
.SH EXAMPLES
|
.SH EXAMPLES
|
||||||
The following performs stateless NAT for incoming packets from 192.168.1.100 to
|
The following performs stateless NAT for incoming packets from 192.0.2.100 to
|
||||||
new destination 18.52.86.120 (0x12345678 in hex). Assuming these are UDP
|
new destination 198.51.100.1. Assuming these are UDP
|
||||||
packets, both IP and UDP checksums have to be recalculated:
|
packets, both IP and UDP checksums have to be recalculated:
|
||||||
|
|
||||||
.RS
|
.RS
|
||||||
|
|
|
||||||
|
|
@ -751,6 +751,7 @@ struct tcpstat {
|
||||||
double rcv_rtt;
|
double rcv_rtt;
|
||||||
double min_rtt;
|
double min_rtt;
|
||||||
int rcv_space;
|
int rcv_space;
|
||||||
|
unsigned int rcv_ssthresh;
|
||||||
unsigned long long busy_time;
|
unsigned long long busy_time;
|
||||||
unsigned long long rwnd_limited;
|
unsigned long long rwnd_limited;
|
||||||
unsigned long long sndbuf_limited;
|
unsigned long long sndbuf_limited;
|
||||||
|
|
@ -2058,6 +2059,8 @@ static void tcp_stats_print(struct tcpstat *s)
|
||||||
printf(" rcv_rtt:%g", s->rcv_rtt);
|
printf(" rcv_rtt:%g", s->rcv_rtt);
|
||||||
if (s->rcv_space)
|
if (s->rcv_space)
|
||||||
printf(" rcv_space:%d", s->rcv_space);
|
printf(" rcv_space:%d", s->rcv_space);
|
||||||
|
if (s->rcv_ssthresh)
|
||||||
|
printf(" rcv_ssthresh:%u", s->rcv_ssthresh);
|
||||||
if (s->not_sent)
|
if (s->not_sent)
|
||||||
printf(" notsent:%u", s->not_sent);
|
printf(" notsent:%u", s->not_sent);
|
||||||
if (s->min_rtt)
|
if (s->min_rtt)
|
||||||
|
|
@ -2304,6 +2307,7 @@ static void tcp_show_info(const struct nlmsghdr *nlh, struct inet_diag_msg *r,
|
||||||
s.fackets = info->tcpi_fackets;
|
s.fackets = info->tcpi_fackets;
|
||||||
s.reordering = info->tcpi_reordering;
|
s.reordering = info->tcpi_reordering;
|
||||||
s.rcv_space = info->tcpi_rcv_space;
|
s.rcv_space = info->tcpi_rcv_space;
|
||||||
|
s.rcv_ssthresh = info->tcpi_rcv_ssthresh;
|
||||||
s.cwnd = info->tcpi_snd_cwnd;
|
s.cwnd = info->tcpi_snd_cwnd;
|
||||||
|
|
||||||
if (info->tcpi_snd_ssthresh < 0xFFFF)
|
if (info->tcpi_snd_ssthresh < 0xFFFF)
|
||||||
|
|
|
||||||
|
|
@ -129,6 +129,7 @@ opt_bpf:
|
||||||
|
|
||||||
parse_action_control_dflt(&argc, &argv, &parm.action,
|
parse_action_control_dflt(&argc, &argv, &parm.action,
|
||||||
false, TC_ACT_PIPE);
|
false, TC_ACT_PIPE);
|
||||||
|
NEXT_ARG_FWD();
|
||||||
|
|
||||||
if (argc) {
|
if (argc) {
|
||||||
if (matches(*argv, "index") == 0) {
|
if (matches(*argv, "index") == 0) {
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,7 @@ parse_connmark(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
|
||||||
}
|
}
|
||||||
|
|
||||||
parse_action_control_dflt(&argc, &argv, &sel.action, false, TC_ACT_PIPE);
|
parse_action_control_dflt(&argc, &argv, &sel.action, false, TC_ACT_PIPE);
|
||||||
|
NEXT_ARG_FWD();
|
||||||
|
|
||||||
if (argc) {
|
if (argc) {
|
||||||
if (matches(*argv, "index") == 0) {
|
if (matches(*argv, "index") == 0) {
|
||||||
|
|
|
||||||
|
|
@ -124,6 +124,7 @@ parse_csum(struct action_util *a, int *argc_p,
|
||||||
}
|
}
|
||||||
|
|
||||||
parse_action_control_dflt(&argc, &argv, &sel.action, false, TC_ACT_OK);
|
parse_action_control_dflt(&argc, &argv, &sel.action, false, TC_ACT_OK);
|
||||||
|
NEXT_ARG_FWD();
|
||||||
|
|
||||||
if (argc) {
|
if (argc) {
|
||||||
if (matches(*argv, "index") == 0) {
|
if (matches(*argv, "index") == 0) {
|
||||||
|
|
|
||||||
10
tc/m_gact.c
10
tc/m_gact.c
|
|
@ -87,14 +87,13 @@ parse_gact(struct action_util *a, int *argc_p, char ***argv_p,
|
||||||
if (argc < 0)
|
if (argc < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
if (matches(*argv, "gact") != 0 &&
|
||||||
if (matches(*argv, "gact") == 0) {
|
parse_action_control(&argc, &argv, &p.action, false) == -1) {
|
||||||
argc--;
|
|
||||||
argv++;
|
|
||||||
} else if (parse_action_control(&argc, &argv, &p.action, false) == -1) {
|
|
||||||
usage(); /* does not return */
|
usage(); /* does not return */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NEXT_ARG_FWD();
|
||||||
|
|
||||||
#ifdef CONFIG_GACT_PROB
|
#ifdef CONFIG_GACT_PROB
|
||||||
if (argc > 0) {
|
if (argc > 0) {
|
||||||
if (matches(*argv, "random") == 0) {
|
if (matches(*argv, "random") == 0) {
|
||||||
|
|
@ -114,6 +113,7 @@ parse_gact(struct action_util *a, int *argc_p, char ***argv_p,
|
||||||
if (parse_action_control(&argc, &argv,
|
if (parse_action_control(&argc, &argv,
|
||||||
&pp.paction, false) == -1)
|
&pp.paction, false) == -1)
|
||||||
usage();
|
usage();
|
||||||
|
NEXT_ARG_FWD();
|
||||||
if (get_u16(&pp.pval, *argv, 10)) {
|
if (get_u16(&pp.pval, *argv, 10)) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Illegal probability val 0x%x\n",
|
"Illegal probability val 0x%x\n",
|
||||||
|
|
|
||||||
|
|
@ -159,6 +159,7 @@ static int parse_ife(struct action_util *a, int *argc_p, char ***argv_p,
|
||||||
|
|
||||||
parse_action_control_dflt(&argc, &argv, &p.action, false, TC_ACT_PIPE);
|
parse_action_control_dflt(&argc, &argv, &p.action, false, TC_ACT_PIPE);
|
||||||
|
|
||||||
|
NEXT_ARG_FWD();
|
||||||
if (argc) {
|
if (argc) {
|
||||||
if (matches(*argv, "index") == 0) {
|
if (matches(*argv, "index") == 0) {
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
|
|
|
||||||
|
|
@ -202,8 +202,10 @@ parse_direction(struct action_util *a, int *argc_p, char ***argv_p,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (p.eaction == TCA_EGRESS_MIRROR || p.eaction == TCA_INGRESS_MIRROR)
|
if (p.eaction == TCA_EGRESS_MIRROR || p.eaction == TCA_INGRESS_MIRROR) {
|
||||||
parse_action_control(&argc, &argv, &p.action, false);
|
parse_action_control(&argc, &argv, &p.action, false);
|
||||||
|
NEXT_ARG_FWD();
|
||||||
|
}
|
||||||
|
|
||||||
if (argc) {
|
if (argc) {
|
||||||
if (iok && matches(*argv, "index") == 0) {
|
if (iok && matches(*argv, "index") == 0) {
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,7 @@ parse_nat(struct action_util *a, int *argc_p, char ***argv_p, int tca_id, struct
|
||||||
|
|
||||||
parse_action_control_dflt(&argc, &argv, &sel.action, false, TC_ACT_OK);
|
parse_action_control_dflt(&argc, &argv, &sel.action, false, TC_ACT_OK);
|
||||||
|
|
||||||
|
NEXT_ARG_FWD();
|
||||||
if (argc) {
|
if (argc) {
|
||||||
if (matches(*argv, "index") == 0) {
|
if (matches(*argv, "index") == 0) {
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
|
|
|
||||||
|
|
@ -672,6 +672,7 @@ int parse_pedit(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
|
||||||
|
|
||||||
parse_action_control_dflt(&argc, &argv, &sel.sel.action, false, TC_ACT_OK);
|
parse_action_control_dflt(&argc, &argv, &sel.sel.action, false, TC_ACT_OK);
|
||||||
|
|
||||||
|
NEXT_ARG_FWD();
|
||||||
if (argc) {
|
if (argc) {
|
||||||
if (matches(*argv, "index") == 0) {
|
if (matches(*argv, "index") == 0) {
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,7 @@ static int parse_sample(struct action_util *a, int *argc_p, char ***argv_p,
|
||||||
|
|
||||||
parse_action_control_dflt(&argc, &argv, &p.action, false, TC_ACT_PIPE);
|
parse_action_control_dflt(&argc, &argv, &p.action, false, TC_ACT_PIPE);
|
||||||
|
|
||||||
|
NEXT_ARG_FWD();
|
||||||
if (argc) {
|
if (argc) {
|
||||||
if (matches(*argv, "index") == 0) {
|
if (matches(*argv, "index") == 0) {
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
|
|
|
||||||
|
|
@ -123,6 +123,7 @@ parse_skbedit(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
|
||||||
parse_action_control_dflt(&argc, &argv, &sel.action,
|
parse_action_control_dflt(&argc, &argv, &sel.action,
|
||||||
false, TC_ACT_PIPE);
|
false, TC_ACT_PIPE);
|
||||||
|
|
||||||
|
NEXT_ARG_FWD();
|
||||||
if (argc) {
|
if (argc) {
|
||||||
if (matches(*argv, "index") == 0) {
|
if (matches(*argv, "index") == 0) {
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
|
|
|
||||||
|
|
@ -124,6 +124,7 @@ static int parse_skbmod(struct action_util *a, int *argc_p, char ***argv_p,
|
||||||
|
|
||||||
parse_action_control_dflt(&argc, &argv, &p.action, false, TC_ACT_PIPE);
|
parse_action_control_dflt(&argc, &argv, &p.action, false, TC_ACT_PIPE);
|
||||||
|
|
||||||
|
NEXT_ARG_FWD();
|
||||||
if (argc) {
|
if (argc) {
|
||||||
if (matches(*argv, "index") == 0) {
|
if (matches(*argv, "index") == 0) {
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
|
|
|
||||||
|
|
@ -175,6 +175,7 @@ static int parse_tunnel_key(struct action_util *a, int *argc_p, char ***argv_p,
|
||||||
parse_action_control_dflt(&argc, &argv, &parm.action,
|
parse_action_control_dflt(&argc, &argv, &parm.action,
|
||||||
false, TC_ACT_PIPE);
|
false, TC_ACT_PIPE);
|
||||||
|
|
||||||
|
NEXT_ARG_FWD();
|
||||||
if (argc) {
|
if (argc) {
|
||||||
if (matches(*argv, "index") == 0) {
|
if (matches(*argv, "index") == 0) {
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
|
|
|
||||||
|
|
@ -131,6 +131,7 @@ static int parse_vlan(struct action_util *a, int *argc_p, char ***argv_p,
|
||||||
parse_action_control_dflt(&argc, &argv, &parm.action,
|
parse_action_control_dflt(&argc, &argv, &parm.action,
|
||||||
false, TC_ACT_PIPE);
|
false, TC_ACT_PIPE);
|
||||||
|
|
||||||
|
NEXT_ARG_FWD();
|
||||||
if (argc) {
|
if (argc) {
|
||||||
if (matches(*argv, "index") == 0) {
|
if (matches(*argv, "index") == 0) {
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
|
|
|
||||||
|
|
@ -586,7 +586,6 @@ static int __parse_action_control(int *argc_p, char ***argv_p, int *result_p,
|
||||||
}
|
}
|
||||||
result |= jump_cnt;
|
result |= jump_cnt;
|
||||||
}
|
}
|
||||||
NEXT_ARG_FWD();
|
|
||||||
*argc_p = argc;
|
*argc_p = argc;
|
||||||
*argv_p = argv;
|
*argv_p = argv;
|
||||||
*result_p = result;
|
*result_p = result;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue