Merge branch 'main' into next
Signed-off-by: David Ahern <dsahern@kernel.org>
This commit is contained in:
commit
76bfc185f2
9
README
9
README
|
|
@ -28,14 +28,9 @@ The makefile will automatically build a config.mk file which
|
||||||
contains definitions of libraries that may or may not be available
|
contains definitions of libraries that may or may not be available
|
||||||
on the system such as: ATM, ELF, MNL, and SELINUX.
|
on the system such as: ATM, ELF, MNL, and SELINUX.
|
||||||
|
|
||||||
3. To make documentation, cd to doc/ directory , then
|
3. include/uapi
|
||||||
look at start of Makefile and set correct values for
|
|
||||||
PAGESIZE=a4 , ie: a4 , letter ... (string)
|
|
||||||
PAGESPERPAGE=2 , ie: 1 , 2 ... (numeric)
|
|
||||||
and make there. It assumes, that latex, dvips and psnup
|
|
||||||
are in your path.
|
|
||||||
|
|
||||||
4. This package includes matching sanitized kernel headers because
|
This package includes matching sanitized kernel headers because
|
||||||
the build environment may not have up to date versions. See Makefile
|
the build environment may not have up to date versions. See Makefile
|
||||||
if you have special requirements and need to point at different
|
if you have special requirements and need to point at different
|
||||||
kernel include files.
|
kernel include files.
|
||||||
|
|
|
||||||
9
ip/ip.c
9
ip/ip.c
|
|
@ -64,10 +64,11 @@ static void usage(void)
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }\n"
|
"Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }\n"
|
||||||
" ip [ -force ] -batch filename\n"
|
" ip [ -force ] -batch filename\n"
|
||||||
"where OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |\n"
|
"where OBJECT := { address | addrlabel | fou | help | ila | l2tp | link |\n"
|
||||||
" tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |\n"
|
" macsec | maddress | monitor | mptcp | mroute | mrule |\n"
|
||||||
" netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila |\n"
|
" neighbor | neighbour | netconf | netns | nexthop | ntable |\n"
|
||||||
" vrf | sr | nexthop | mptcp }\n"
|
" ntbl | route | rule | sr | tap | tcpmetrics |\n"
|
||||||
|
" token | tunnel | tuntap | vrf | xfrm }\n"
|
||||||
" OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |\n"
|
" OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |\n"
|
||||||
" -h[uman-readable] | -iec | -j[son] | -p[retty] |\n"
|
" -h[uman-readable] | -iec | -j[son] | -p[retty] |\n"
|
||||||
" -f[amily] { inet | inet6 | mpls | bridge | link } |\n"
|
" -f[amily] { inet | inet6 | mpls | bridge | link } |\n"
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ int print_neigh(struct nlmsghdr *n, void *arg);
|
||||||
int ipaddr_list_link(int argc, char **argv);
|
int ipaddr_list_link(int argc, char **argv);
|
||||||
void ipaddr_get_vf_rate(int, int *, int *, const char *);
|
void ipaddr_get_vf_rate(int, int *, int *, const char *);
|
||||||
void iplink_usage(void) __attribute__((noreturn));
|
void iplink_usage(void) __attribute__((noreturn));
|
||||||
|
void iplink_types_usage(void);
|
||||||
|
|
||||||
void iproute_reset_filter(int ifindex);
|
void iproute_reset_filter(int ifindex);
|
||||||
void ipmroute_reset_filter(int ifindex);
|
void ipmroute_reset_filter(int ifindex);
|
||||||
|
|
|
||||||
|
|
@ -73,12 +73,8 @@ static void usage(void)
|
||||||
"CONFFLAG-LIST := [ CONFFLAG-LIST ] CONFFLAG\n"
|
"CONFFLAG-LIST := [ CONFFLAG-LIST ] CONFFLAG\n"
|
||||||
"CONFFLAG := [ home | nodad | mngtmpaddr | noprefixroute | autojoin ]\n"
|
"CONFFLAG := [ home | nodad | mngtmpaddr | noprefixroute | autojoin ]\n"
|
||||||
"LIFETIME := [ valid_lft LFT ] [ preferred_lft LFT ]\n"
|
"LIFETIME := [ valid_lft LFT ] [ preferred_lft LFT ]\n"
|
||||||
"LFT := forever | SECONDS\n"
|
"LFT := forever | SECONDS\n");
|
||||||
"TYPE := { vlan | veth | vcan | vxcan | dummy | ifb | macvlan | macvtap |\n"
|
iplink_types_usage();
|
||||||
" bridge | bond | ipoib | ip6tnl | ipip | sit | vxlan | lowpan |\n"
|
|
||||||
" gre | gretap | erspan | ip6gre | ip6gretap | ip6erspan | vti |\n"
|
|
||||||
" nlmon | can | bond_slave | ipvlan | geneve | bridge_slave |\n"
|
|
||||||
" hsr | macsec | netdevsim }\n");
|
|
||||||
|
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,8 @@ static void usage(void)
|
||||||
"Usage: ip ila add loc_match LOCATOR_MATCH loc LOCATOR [ dev DEV ] OPTIONS\n"
|
"Usage: ip ila add loc_match LOCATOR_MATCH loc LOCATOR [ dev DEV ] OPTIONS\n"
|
||||||
" ip ila del loc_match LOCATOR_MATCH [ loc LOCATOR ] [ dev DEV ]\n"
|
" ip ila del loc_match LOCATOR_MATCH [ loc LOCATOR ] [ dev DEV ]\n"
|
||||||
" ip ila list\n"
|
" ip ila list\n"
|
||||||
"OPTIONS := [ csum-mode { adj-transport | neutral-map | neutral-map-auto | no-action } ]\n"
|
"OPTIONS := [ csum-mode { adj-transport | neutral-map |\n"
|
||||||
|
" neutral-map-auto | no-action } ]\n"
|
||||||
" [ ident-type { luid | use-format } ]\n");
|
" [ ident-type { luid | use-format } ]\n");
|
||||||
|
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
|
|
||||||
22
ip/iplink.c
22
ip/iplink.c
|
|
@ -46,6 +46,19 @@
|
||||||
static void usage(void) __attribute__((noreturn));
|
static void usage(void) __attribute__((noreturn));
|
||||||
static int iplink_have_newlink(void);
|
static int iplink_have_newlink(void);
|
||||||
|
|
||||||
|
void iplink_types_usage(void)
|
||||||
|
{
|
||||||
|
/* Remember to add new entry here if new type is added. */
|
||||||
|
fprintf(stderr,
|
||||||
|
"TYPE := { bareudp | bond | bond_slave | bridge | bridge_slave |\n"
|
||||||
|
" dummy | erspan | geneve | gre | gretap | ifb |\n"
|
||||||
|
" ip6erspan | ip6gre | ip6gretap | ip6tnl |\n"
|
||||||
|
" ipip | ipoib | ipvlan | ipvtap |\n"
|
||||||
|
" macsec | macvlan | macvtap |\n"
|
||||||
|
" netdevsim | nlmon | rmnet | sit | team | team_slave |\n"
|
||||||
|
" vcan | veth | vlan | vrf | vti | vxcan | vxlan | xfrm }\n");
|
||||||
|
}
|
||||||
|
|
||||||
void iplink_usage(void)
|
void iplink_usage(void)
|
||||||
{
|
{
|
||||||
if (iplink_have_newlink()) {
|
if (iplink_have_newlink()) {
|
||||||
|
|
@ -117,13 +130,8 @@ void iplink_usage(void)
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"\n"
|
"\n"
|
||||||
" ip link help [ TYPE ]\n"
|
" ip link help [ TYPE ]\n"
|
||||||
"\n"
|
"\n");
|
||||||
"TYPE := { vlan | veth | vcan | vxcan | dummy | ifb | macvlan | macvtap |\n"
|
iplink_types_usage();
|
||||||
" bridge | bond | team | ipoib | ip6tnl | ipip | sit | vxlan |\n"
|
|
||||||
" gre | gretap | erspan | ip6gre | ip6gretap | ip6erspan |\n"
|
|
||||||
" vti | nlmon | team_slave | bond_slave | bridge_slave |\n"
|
|
||||||
" ipvlan | ipvtap | geneve | bareudp | vrf | macsec | netdevsim | rmnet |\n"
|
|
||||||
" xfrm }\n");
|
|
||||||
}
|
}
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,9 +30,10 @@ int listen_all_nsid;
|
||||||
static void usage(void)
|
static void usage(void)
|
||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Usage: ip monitor [ all | LISTofOBJECTS ] [ FILE ] [ label ] [all-nsid] [dev DEVICE]\n"
|
"Usage: ip monitor [ all | OBJECTS ] [ FILE ] [ label ] [ all-nsid ]\n"
|
||||||
"LISTofOBJECTS := link | address | route | mroute | prefix |\n"
|
" [ dev DEVICE ]\n"
|
||||||
" neigh | netconf | rule | nsid | nexthop\n"
|
"OBJECTS := address | link | mroute | neigh | netconf |\n"
|
||||||
|
" nexthop | nsid | prefix | route | rule\n"
|
||||||
"FILE := file FILENAME\n");
|
"FILE := file FILENAME\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,15 +50,15 @@ static void usage(void)
|
||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Usage: ip neigh { add | del | change | replace }\n"
|
"Usage: ip neigh { add | del | change | replace }\n"
|
||||||
" { ADDR [ lladdr LLADDR ] [ nud STATE ] | proxy ADDR } [ dev DEV ]\n"
|
" { ADDR [ lladdr LLADDR ] [ nud STATE ] proxy ADDR }\n"
|
||||||
" [ router ] [ extern_learn ] [ protocol PROTO ]\n"
|
" [ dev DEV ] [ router ] [ extern_learn ] [ protocol PROTO ]\n"
|
||||||
"\n"
|
"\n"
|
||||||
" ip neigh { show | flush } [ proxy ] [ to PREFIX ] [ dev DEV ] [ nud STATE ]\n"
|
" ip neigh { show | flush } [ proxy ] [ to PREFIX ] [ dev DEV ] [ nud STATE ]\n"
|
||||||
" [ vrf NAME ]\n"
|
" [ vrf NAME ]\n"
|
||||||
" ip neigh get { ADDR | proxy ADDR } dev DEV\n"
|
" ip neigh get { ADDR | proxy ADDR } dev DEV\n"
|
||||||
"\n"
|
"\n"
|
||||||
"STATE := { permanent | noarp | stale | reachable | none |\n"
|
"STATE := { delay | failed | incomplete | noarp | none |\n"
|
||||||
" incomplete | delay | probe | failed }\n");
|
" permanent | probe | reachable | stale }\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,8 @@ static void usage(void)
|
||||||
"Usage: ip rule { add | del } SELECTOR ACTION\n"
|
"Usage: ip rule { add | del } SELECTOR ACTION\n"
|
||||||
" ip rule { flush | save | restore }\n"
|
" ip rule { flush | save | restore }\n"
|
||||||
" ip rule [ list [ SELECTOR ]]\n"
|
" ip rule [ list [ SELECTOR ]]\n"
|
||||||
"SELECTOR := [ not ] [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark FWMARK[/MASK] ]\n"
|
"SELECTOR := [ not ] [ from PREFIX ] [ to PREFIX ] [ tos TOS ]\n"
|
||||||
|
" [ fwmark FWMARK[/MASK] ]\n"
|
||||||
" [ iif STRING ] [ oif STRING ] [ pref NUMBER ] [ l3mdev ]\n"
|
" [ iif STRING ] [ oif STRING ] [ pref NUMBER ] [ l3mdev ]\n"
|
||||||
" [ uidrange NUMBER-NUMBER ]\n"
|
" [ uidrange NUMBER-NUMBER ]\n"
|
||||||
" [ ipproto PROTOCOL ]\n"
|
" [ ipproto PROTOCOL ]\n"
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,8 @@ static void usage(void)
|
||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Usage: ip tunnel { add | change | del | show | prl | 6rd } [ NAME ]\n"
|
"Usage: ip tunnel { add | change | del | show | prl | 6rd } [ NAME ]\n"
|
||||||
" [ mode { ipip | gre | sit | isatap | vti } ] [ remote ADDR ] [ local ADDR ]\n"
|
" [ mode { gre | ipip | isatap | sit | vti } ]\n"
|
||||||
|
" [ remote ADDR ] [ local ADDR ]\n"
|
||||||
" [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
|
" [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
|
||||||
" [ prl-default ADDR ] [ prl-nodefault ADDR ] [ prl-delete ADDR ]\n"
|
" [ prl-default ADDR ] [ prl-nodefault ADDR ] [ prl-delete ADDR ]\n"
|
||||||
" [ 6rd-prefix ADDR ] [ 6rd-relay_prefix ADDR ] [ 6rd-reset ]\n"
|
" [ 6rd-prefix ADDR ] [ 6rd-relay_prefix ADDR ] [ 6rd-reset ]\n"
|
||||||
|
|
|
||||||
43
ip/ipxfrm.c
43
ip/ipxfrm.c
|
|
@ -924,6 +924,19 @@ static int xfrm_selector_iszero(struct xfrm_selector *s)
|
||||||
return (memcmp(&s0, s, sizeof(s0)) == 0);
|
return (memcmp(&s0, s, sizeof(s0)) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void xfrm_sec_ctx_print(FILE *fp, struct rtattr *attr)
|
||||||
|
{
|
||||||
|
struct xfrm_user_sec_ctx *sctx;
|
||||||
|
|
||||||
|
fprintf(fp, "\tsecurity context ");
|
||||||
|
|
||||||
|
if (RTA_PAYLOAD(attr) < sizeof(*sctx))
|
||||||
|
fprintf(fp, "(ERROR truncated)");
|
||||||
|
|
||||||
|
sctx = RTA_DATA(attr);
|
||||||
|
fprintf(fp, "%.*s %s", sctx->ctx_len, (char *)(sctx + 1), _SL_);
|
||||||
|
}
|
||||||
|
|
||||||
void xfrm_state_info_print(struct xfrm_usersa_info *xsinfo,
|
void xfrm_state_info_print(struct xfrm_usersa_info *xsinfo,
|
||||||
struct rtattr *tb[], FILE *fp, const char *prefix,
|
struct rtattr *tb[], FILE *fp, const char *prefix,
|
||||||
const char *title, bool nokeys)
|
const char *title, bool nokeys)
|
||||||
|
|
@ -991,19 +1004,8 @@ void xfrm_state_info_print(struct xfrm_usersa_info *xsinfo,
|
||||||
xfrm_stats_print(&xsinfo->stats, fp, buf);
|
xfrm_stats_print(&xsinfo->stats, fp, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tb[XFRMA_SEC_CTX]) {
|
if (tb[XFRMA_SEC_CTX])
|
||||||
struct xfrm_user_sec_ctx *sctx;
|
xfrm_sec_ctx_print(fp, tb[XFRMA_SEC_CTX]);
|
||||||
|
|
||||||
fprintf(fp, "\tsecurity context ");
|
|
||||||
|
|
||||||
if (RTA_PAYLOAD(tb[XFRMA_SEC_CTX]) < sizeof(*sctx))
|
|
||||||
fprintf(fp, "(ERROR truncated)");
|
|
||||||
|
|
||||||
sctx = RTA_DATA(tb[XFRMA_SEC_CTX]);
|
|
||||||
|
|
||||||
fprintf(fp, "%s %s", (char *)(sctx + 1), _SL_);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void xfrm_policy_info_print(struct xfrm_userpolicy_info *xpinfo,
|
void xfrm_policy_info_print(struct xfrm_userpolicy_info *xpinfo,
|
||||||
|
|
@ -1014,19 +1016,8 @@ void xfrm_policy_info_print(struct xfrm_userpolicy_info *xpinfo,
|
||||||
|
|
||||||
xfrm_selector_print(&xpinfo->sel, preferred_family, fp, title);
|
xfrm_selector_print(&xpinfo->sel, preferred_family, fp, title);
|
||||||
|
|
||||||
if (tb[XFRMA_SEC_CTX]) {
|
if (tb[XFRMA_SEC_CTX])
|
||||||
struct xfrm_user_sec_ctx *sctx;
|
xfrm_sec_ctx_print(fp, tb[XFRMA_SEC_CTX]);
|
||||||
|
|
||||||
fprintf(fp, "\tsecurity context ");
|
|
||||||
|
|
||||||
if (RTA_PAYLOAD(tb[XFRMA_SEC_CTX]) < sizeof(*sctx))
|
|
||||||
fprintf(fp, "(ERROR truncated)");
|
|
||||||
|
|
||||||
sctx = RTA_DATA(tb[XFRMA_SEC_CTX]);
|
|
||||||
|
|
||||||
fprintf(fp, "%s ", (char *)(sctx + 1));
|
|
||||||
fprintf(fp, "%s", _SL_);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (prefix)
|
if (prefix)
|
||||||
strlcat(buf, prefix, sizeof(buf));
|
strlcat(buf, prefix, sizeof(buf));
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
* Authors: Hangbin Liu <haliu@redhat.com>
|
* Authors: Hangbin Liu <haliu@redhat.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
#include <limits.h>
|
||||||
|
|
||||||
#include "bpf_util.h"
|
#include "bpf_util.h"
|
||||||
#ifdef HAVE_LIBBPF
|
#ifdef HAVE_LIBBPF
|
||||||
#include <bpf/bpf.h>
|
#include <bpf/bpf.h>
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <limits.h>
|
||||||
|
|
||||||
#include <libelf.h>
|
#include <libelf.h>
|
||||||
#include <gelf.h>
|
#include <gelf.h>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue