Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
iproute2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
iproute2
Commits
c9b8aef6
Commit
c9b8aef6
authored
Dec 09, 2014
by
Stephen Hemminger
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into net-next
parents
29d1f730
85c1807f
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
414 additions
and
6 deletions
+414
-6
bridge/fdb.c
bridge/fdb.c
+1
-1
etc/iproute2/rt_dsfield
etc/iproute2/rt_dsfield
+2
-1
include/linux/in6.h
include/linux/in6.h
+292
-0
include/linux/libc-compat.h
include/linux/libc-compat.h
+112
-0
ip/tunnel.c
ip/tunnel.c
+3
-0
man/man8/ip-link.8.in
man/man8/ip-link.8.in
+1
-1
tc/m_simple.c
tc/m_simple.c
+1
-1
tc/m_xt.c
tc/m_xt.c
+2
-2
No files found.
bridge/fdb.c
View file @
c9b8aef6
...
...
@@ -142,7 +142,7 @@ int print_fdb(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
struct
nda_cacheinfo
*
ci
=
RTA_DATA
(
tb
[
NDA_CACHEINFO
]);
int
hz
=
get_user_hz
();
fprintf
(
fp
,
"
used %d/%d
"
,
ci
->
ndm_used
/
hz
,
fprintf
(
fp
,
"
used %d/%d
"
,
ci
->
ndm_used
/
hz
,
ci
->
ndm_updated
/
hz
);
}
if
(
r
->
ndm_flags
&
NTF_SELF
)
...
...
etc/iproute2/rt_dsfield
View file @
c9b8aef6
...
...
@@ -22,4 +22,5 @@
0xA0 CS5
0xC0 CS6
0xE0 CS7
0x5C EF
# RFC 2598
0xB8 EF
include/linux/in6.h
0 → 100644
View file @
c9b8aef6
/*
* Types and definitions for AF_INET6
* Linux INET6 implementation
*
* Authors:
* Pedro Roque <roque@di.fc.ul.pt>
*
* Sources:
* IPv6 Program Interfaces for BSD Systems
* <draft-ietf-ipngwg-bsd-api-05.txt>
*
* Advanced Sockets API for IPv6
* <draft-stevens-advanced-api-00.txt>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#ifndef _LINUX_IN6_H
#define _LINUX_IN6_H
#include <linux/types.h>
#include <linux/libc-compat.h>
/*
* IPv6 address structure
*/
#if __UAPI_DEF_IN6_ADDR
struct
in6_addr
{
union
{
__u8
u6_addr8
[
16
];
#if __UAPI_DEF_IN6_ADDR_ALT
__be16
u6_addr16
[
8
];
__be32
u6_addr32
[
4
];
#endif
}
in6_u
;
#define s6_addr in6_u.u6_addr8
#if __UAPI_DEF_IN6_ADDR_ALT
#define s6_addr16 in6_u.u6_addr16
#define s6_addr32 in6_u.u6_addr32
#endif
};
#endif
/* __UAPI_DEF_IN6_ADDR */
#if __UAPI_DEF_SOCKADDR_IN6
struct
sockaddr_in6
{
unsigned
short
int
sin6_family
;
/* AF_INET6 */
__be16
sin6_port
;
/* Transport layer port # */
__be32
sin6_flowinfo
;
/* IPv6 flow information */
struct
in6_addr
sin6_addr
;
/* IPv6 address */
__u32
sin6_scope_id
;
/* scope id (new in RFC2553) */
};
#endif
/* __UAPI_DEF_SOCKADDR_IN6 */
#if __UAPI_DEF_IPV6_MREQ
struct
ipv6_mreq
{
/* IPv6 multicast address of group */
struct
in6_addr
ipv6mr_multiaddr
;
/* local IPv6 address of interface */
int
ipv6mr_ifindex
;
};
#endif
/* __UAPI_DEF_IVP6_MREQ */
#define ipv6mr_acaddr ipv6mr_multiaddr
struct
in6_flowlabel_req
{
struct
in6_addr
flr_dst
;
__be32
flr_label
;
__u8
flr_action
;
__u8
flr_share
;
__u16
flr_flags
;
__u16
flr_expires
;
__u16
flr_linger
;
__u32
__flr_pad
;
/* Options in format of IPV6_PKTOPTIONS */
};
#define IPV6_FL_A_GET 0
#define IPV6_FL_A_PUT 1
#define IPV6_FL_A_RENEW 2
#define IPV6_FL_F_CREATE 1
#define IPV6_FL_F_EXCL 2
#define IPV6_FL_F_REFLECT 4
#define IPV6_FL_F_REMOTE 8
#define IPV6_FL_S_NONE 0
#define IPV6_FL_S_EXCL 1
#define IPV6_FL_S_PROCESS 2
#define IPV6_FL_S_USER 3
#define IPV6_FL_S_ANY 255
/*
* Bitmask constant declarations to help applications select out the
* flow label and priority fields.
*
* Note that this are in host byte order while the flowinfo field of
* sockaddr_in6 is in network byte order.
*/
#define IPV6_FLOWINFO_FLOWLABEL 0x000fffff
#define IPV6_FLOWINFO_PRIORITY 0x0ff00000
/* These definitions are obsolete */
#define IPV6_PRIORITY_UNCHARACTERIZED 0x0000
#define IPV6_PRIORITY_FILLER 0x0100
#define IPV6_PRIORITY_UNATTENDED 0x0200
#define IPV6_PRIORITY_RESERVED1 0x0300
#define IPV6_PRIORITY_BULK 0x0400
#define IPV6_PRIORITY_RESERVED2 0x0500
#define IPV6_PRIORITY_INTERACTIVE 0x0600
#define IPV6_PRIORITY_CONTROL 0x0700
#define IPV6_PRIORITY_8 0x0800
#define IPV6_PRIORITY_9 0x0900
#define IPV6_PRIORITY_10 0x0a00
#define IPV6_PRIORITY_11 0x0b00
#define IPV6_PRIORITY_12 0x0c00
#define IPV6_PRIORITY_13 0x0d00
#define IPV6_PRIORITY_14 0x0e00
#define IPV6_PRIORITY_15 0x0f00
/*
* IPV6 extension headers
*/
#if __UAPI_DEF_IPPROTO_V6
#define IPPROTO_HOPOPTS 0
/* IPv6 hop-by-hop options */
#define IPPROTO_ROUTING 43
/* IPv6 routing header */
#define IPPROTO_FRAGMENT 44
/* IPv6 fragmentation header */
#define IPPROTO_ICMPV6 58
/* ICMPv6 */
#define IPPROTO_NONE 59
/* IPv6 no next header */
#define IPPROTO_DSTOPTS 60
/* IPv6 destination options */
#define IPPROTO_MH 135
/* IPv6 mobility header */
#endif
/* __UAPI_DEF_IPPROTO_V6 */
/*
* IPv6 TLV options.
*/
#define IPV6_TLV_PAD1 0
#define IPV6_TLV_PADN 1
#define IPV6_TLV_ROUTERALERT 5
#define IPV6_TLV_JUMBO 194
#define IPV6_TLV_HAO 201
/* home address option */
/*
* IPV6 socket options
*/
#define IPV6_ADDRFORM 1
#define IPV6_2292PKTINFO 2
#define IPV6_2292HOPOPTS 3
#define IPV6_2292DSTOPTS 4
#define IPV6_2292RTHDR 5
#define IPV6_2292PKTOPTIONS 6
#define IPV6_CHECKSUM 7
#define IPV6_2292HOPLIMIT 8
#define IPV6_NEXTHOP 9
#define IPV6_AUTHHDR 10
/* obsolete */
#define IPV6_FLOWINFO 11
#define IPV6_UNICAST_HOPS 16
#define IPV6_MULTICAST_IF 17
#define IPV6_MULTICAST_HOPS 18
#define IPV6_MULTICAST_LOOP 19
#define IPV6_ADD_MEMBERSHIP 20
#define IPV6_DROP_MEMBERSHIP 21
#define IPV6_ROUTER_ALERT 22
#define IPV6_MTU_DISCOVER 23
#define IPV6_MTU 24
#define IPV6_RECVERR 25
#define IPV6_V6ONLY 26
#define IPV6_JOIN_ANYCAST 27
#define IPV6_LEAVE_ANYCAST 28
/* IPV6_MTU_DISCOVER values */
#define IPV6_PMTUDISC_DONT 0
#define IPV6_PMTUDISC_WANT 1
#define IPV6_PMTUDISC_DO 2
#define IPV6_PMTUDISC_PROBE 3
/* same as IPV6_PMTUDISC_PROBE, provided for symetry with IPv4
* also see comments on IP_PMTUDISC_INTERFACE
*/
#define IPV6_PMTUDISC_INTERFACE 4
/* weaker version of IPV6_PMTUDISC_INTERFACE, which allows packets to
* get fragmented if they exceed the interface mtu
*/
#define IPV6_PMTUDISC_OMIT 5
/* Flowlabel */
#define IPV6_FLOWLABEL_MGR 32
#define IPV6_FLOWINFO_SEND 33
#define IPV6_IPSEC_POLICY 34
#define IPV6_XFRM_POLICY 35
/*
* Multicast:
* Following socket options are shared between IPv4 and IPv6.
*
* MCAST_JOIN_GROUP 42
* MCAST_BLOCK_SOURCE 43
* MCAST_UNBLOCK_SOURCE 44
* MCAST_LEAVE_GROUP 45
* MCAST_JOIN_SOURCE_GROUP 46
* MCAST_LEAVE_SOURCE_GROUP 47
* MCAST_MSFILTER 48
*/
/*
* Advanced API (RFC3542) (1)
*
* Note: IPV6_RECVRTHDRDSTOPTS does not exist. see net/ipv6/datagram.c.
*/
#define IPV6_RECVPKTINFO 49
#define IPV6_PKTINFO 50
#define IPV6_RECVHOPLIMIT 51
#define IPV6_HOPLIMIT 52
#define IPV6_RECVHOPOPTS 53
#define IPV6_HOPOPTS 54
#define IPV6_RTHDRDSTOPTS 55
#define IPV6_RECVRTHDR 56
#define IPV6_RTHDR 57
#define IPV6_RECVDSTOPTS 58
#define IPV6_DSTOPTS 59
#define IPV6_RECVPATHMTU 60
#define IPV6_PATHMTU 61
#define IPV6_DONTFRAG 62
#if 0 /* not yet */
#define IPV6_USE_MIN_MTU 63
#endif
/*
* Netfilter (1)
*
* Following socket options are used in ip6_tables;
* see include/linux/netfilter_ipv6/ip6_tables.h.
*
* IP6T_SO_SET_REPLACE / IP6T_SO_GET_INFO 64
* IP6T_SO_SET_ADD_COUNTERS / IP6T_SO_GET_ENTRIES 65
*/
/*
* Advanced API (RFC3542) (2)
*/
#define IPV6_RECVTCLASS 66
#define IPV6_TCLASS 67
/*
* Netfilter (2)
*
* Following socket options are used in ip6_tables;
* see include/linux/netfilter_ipv6/ip6_tables.h.
*
* IP6T_SO_GET_REVISION_MATCH 68
* IP6T_SO_GET_REVISION_TARGET 69
* IP6T_SO_ORIGINAL_DST 80
*/
#define IPV6_AUTOFLOWLABEL 70
/* RFC5014: Source address selection */
#define IPV6_ADDR_PREFERENCES 72
#define IPV6_PREFER_SRC_TMP 0x0001
#define IPV6_PREFER_SRC_PUBLIC 0x0002
#define IPV6_PREFER_SRC_PUBTMP_DEFAULT 0x0100
#define IPV6_PREFER_SRC_COA 0x0004
#define IPV6_PREFER_SRC_HOME 0x0400
#define IPV6_PREFER_SRC_CGA 0x0008
#define IPV6_PREFER_SRC_NONCGA 0x0800
/* RFC5082: Generalized Ttl Security Mechanism */
#define IPV6_MINHOPCOUNT 73
#define IPV6_ORIGDSTADDR 74
#define IPV6_RECVORIGDSTADDR IPV6_ORIGDSTADDR
#define IPV6_TRANSPARENT 75
#define IPV6_UNICAST_IF 76
/*
* Multicast Routing:
* see include/uapi/linux/mroute6.h.
*
* MRT6_BASE 200
* ...
* MRT6_MAX
*/
#endif
/* _LINUX_IN6_H */
include/linux/libc-compat.h
0 → 100644
View file @
c9b8aef6
/*
* Compatibility interface for userspace libc header coordination:
*
* Define compatibility macros that are used to control the inclusion or
* exclusion of UAPI structures and definitions in coordination with another
* userspace C library.
*
* This header is intended to solve the problem of UAPI definitions that
* conflict with userspace definitions. If a UAPI header has such conflicting
* definitions then the solution is as follows:
*
* * Synchronize the UAPI header and the libc headers so either one can be
* used and such that the ABI is preserved. If this is not possible then
* no simple compatibility interface exists (you need to write translating
* wrappers and rename things) and you can't use this interface.
*
* Then follow this process:
*
* (a) Include libc-compat.h in the UAPI header.
* e.g. #include <linux/libc-compat.h>
* This include must be as early as possible.
*
* (b) In libc-compat.h add enough code to detect that the comflicting
* userspace libc header has been included first.
*
* (c) If the userspace libc header has been included first define a set of
* guard macros of the form __UAPI_DEF_FOO and set their values to 1, else
* set their values to 0.
*
* (d) Back in the UAPI header with the conflicting definitions, guard the
* definitions with:
* #if __UAPI_DEF_FOO
* ...
* #endif
*
* This fixes the situation where the linux headers are included *after* the
* libc headers. To fix the problem with the inclusion in the other order the
* userspace libc headers must be fixed like this:
*
* * For all definitions that conflict with kernel definitions wrap those
* defines in the following:
* #if !__UAPI_DEF_FOO
* ...
* #endif
*
* This prevents the redefinition of a construct already defined by the kernel.
*/
#ifndef _LIBC_COMPAT_H
#define _LIBC_COMPAT_H
/* We have included glibc headers... */
#if defined(__GLIBC__)
/* Coordinate with glibc netinet/in.h header. */
#if defined(_NETINET_IN_H)
/* GLIBC headers included first so don't define anything
* that would already be defined. */
#define __UAPI_DEF_IN6_ADDR 0
/* The exception is the in6_addr macros which must be defined
* if the glibc code didn't define them. This guard matches
* the guard in glibc/inet/netinet/in.h which defines the
* additional in6_addr macros e.g. s6_addr16, and s6_addr32. */
#if defined(__USE_MISC) || defined (__USE_GNU)
#define __UAPI_DEF_IN6_ADDR_ALT 0
#else
#define __UAPI_DEF_IN6_ADDR_ALT 1
#endif
#define __UAPI_DEF_SOCKADDR_IN6 0
#define __UAPI_DEF_IPV6_MREQ 0
#define __UAPI_DEF_IPPROTO_V6 0
#else
/* Linux headers included first, and we must define everything
* we need. The expectation is that glibc will check the
* __UAPI_DEF_* defines and adjust appropriately. */
#define __UAPI_DEF_IN6_ADDR 1
/* We unconditionally define the in6_addr macros and glibc must
* coordinate. */
#define __UAPI_DEF_IN6_ADDR_ALT 1
#define __UAPI_DEF_SOCKADDR_IN6 1
#define __UAPI_DEF_IPV6_MREQ 1
#define __UAPI_DEF_IPPROTO_V6 1
#endif
/* _NETINET_IN_H */
/* Definitions for xattr.h */
#if defined(_SYS_XATTR_H)
#define __UAPI_DEF_XATTR 0
#else
#define __UAPI_DEF_XATTR 1
#endif
/* If we did not see any headers from any supported C libraries,
* or we are being included in the kernel, then define everything
* that we need. */
#else
/* !defined(__GLIBC__) */
/* Definitions for in6.h */
#define __UAPI_DEF_IN6_ADDR 1
#define __UAPI_DEF_IN6_ADDR_ALT 1
#define __UAPI_DEF_SOCKADDR_IN6 1
#define __UAPI_DEF_IPV6_MREQ 1
#define __UAPI_DEF_IPPROTO_V6 1
/* Definitions for xattr.h */
#define __UAPI_DEF_XATTR 1
#endif
/* __GLIBC__ */
#endif
/* _LIBC_COMPAT_H */
ip/tunnel.c
View file @
c9b8aef6
...
...
@@ -51,6 +51,9 @@ const char *tnl_strproto(__u8 proto)
case
IPPROTO_IPV6
:
strcpy
(
buf
,
"ipv6"
);
break
;
case
IPPROTO_ESP
:
strcpy
(
buf
,
"esp"
);
break
;
case
0
:
strcpy
(
buf
,
"any"
);
break
;
...
...
man/man8/ip-link.8.in
View file @
c9b8aef6
...
...
@@ -247,7 +247,7 @@ For a link of type
the following additional arguments are supported:
.BI "ip link add " DEVICE
.BI type " vxlan " id " ID
.BI type " vxlan " id " ID
"
.R " [ "
.BI dev " PHYS_DEV "
.RB " ] [ { " group " | " remote " } "
...
...
tc/m_simple.c
View file @
c9b8aef6
...
...
@@ -8,7 +8,7 @@
*
* Authors: J Hadi Salim <jhs@mojatatu.com>
*
* Pedagogical example. Adds a string that will be printed everytime
* Pedagogical example. Adds a string that will be printed every
time
* the simple instance is hit.
* Use this as a skeleton action and keep modifying it to meet your needs.
* Look at linux/tc_act/tc_defact.h for the different components ids and
...
...
tc/m_xt.c
View file @
c9b8aef6
...
...
@@ -175,7 +175,7 @@ static int parse_ipt(struct action_util *a,int *argc_p,
&
m
->
option_offset
);
#endif
if
(
opts
==
NULL
)
{
fprintf
(
stderr
,
" failed to find aditional options for target %s
\n\n
"
,
optarg
);
fprintf
(
stderr
,
" failed to find ad
d
itional options for target %s
\n\n
"
,
optarg
);
return
-
1
;
}
else
tcipt_globals
.
opts
=
opts
;
...
...
@@ -346,7 +346,7 @@ print_ipt(struct action_util *au,FILE * f, struct rtattr *arg)
&
m
->
option_offset
);
#endif
if
(
opts
==
NULL
)
{
fprintf
(
stderr
,
" failed to find aditional options for target %s
\n\n
"
,
optarg
);
fprintf
(
stderr
,
" failed to find ad
d
itional options for target %s
\n\n
"
,
optarg
);
return
-
1
;
}
else
tmp_tcipt_globals
.
opts
=
opts
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment