summaryrefslogtreecommitdiffstats
path: root/include
Commit message (Collapse)AuthorAgeFilesLines
* libnl-3.5.0 releaselibnl3_5_0Thomas Haller2019-09-011-0/+6
|
* route/qdisc: adjust API for 64 bit rate/ceil support for htb classThomas Haller2019-09-014-12/+27
| | | | | | | | | | | | | | | | - existing API/ABI must stay unchanged. We cannot change parameter types. Ad most we can add new variants that support 64 bit integers. - rtnl_tc_calc_txtime64() and rtnl_tc_calc_bufsize64() are trivial. We should not blow up the public API of libnl for such a thing. If the users needs it, they can just reimplement it. - getters should return an error code. Especially if the return type does not support encoding an error there. - don't add separate rs_rate64/rs_ceil64 field. Instead, extend the "rs_rate" field of "struct rtnl_ratespec" to 64 bits. It's internal API.
* Add 64bit rate/ceil support for htb classd0u92019-09-013-6/+8
| | | | | Htb class has already supported 64bit rate and ceil settings for times. Now, in this patch, we grant this ability to libnl library.
* xfrmi: return error code from getters for XFRM linksThomas Haller2019-09-011-2/+2
| | | | | | | | Returning the value directly as uint32_t does not leave room for an error code. E.g. we want to indicate to the caller whether the attribute is present or not (-NLE_NOATTR). Currenlty, the code is quite unforgiving and will just crash/assert against invalid arguments. In theory, we could also be more forgiving and return a error code if the link argument is invalid.
* xfrmi: introduce XFRM interfaces supportEyal Birger2019-09-011-0/+37
| | | | | | | XFRM interfaces were introduced in kernel 4.19. This commit adds link support for these interfaces. Signed-off-by: Eyal Birger <eyal.birger@gmail.com>
* Sync linux headers to 4.19.66Michael Forney2019-08-2643-188/+1442
| | | | | | | | | | | | | | | | | | | This fixes the build with musl libc. Additionally, several changes were made to account for changes to the headers: - ip_mp_alg.h was removed, since it was removed in linux commit e06e7c61 (v2.6.23), and the last use of those constants was removed in libnl commit 535e8316. - Uses of TCF_META_ID_SK_ROUTE_CAPS were updated to __TCF_META_ID_SK_ROUTE_CAPS, since it was renamed in linux commit e20e6940 (v3.1). - Uses of IF_CARRIER_DOWN and IF_CARRIER_UP were replaced with their values, 0 and 1, since they are not in linux/if.h (they appear to be libnl-specific, added in libnl commit 3540e44b). https://github.com/thom311/libnl/pull/222
* all: Use __typeof__ instead of typeofMichael Forney2019-08-163-16/+16
| | | | | This allows libnl to be built with -std=c99, which prevents the compiler from using non-reserved identifiers for extensions.
* dbg: Use __func__ instead of __PRETTY_FUNCTION__Michael Forney2019-08-161-3/+3
| | | | | | | | These behave the same, except when used at top-level. This can't happen since the macro body is a statement. __func__ is standardized since C99, while __PRETTY_FUNCTION__ is a GNU extension.
* utils: add internal helper macros for cleanupThomas Haller2019-08-091-1/+194
| | | | | | | | | | | | | | | | | | | | | | | | | Yes, these use gcc-isms like typeof(), __attribute__((__unused__)), __attribute__((__cleanup__(fcn))) and expression statements. First of all, this is now only required when building libnl3 itself. The public headers still should to be conservative and only use C89 features. Also, clang supports these too, so you can at least build libnl3 with gcc and clang. Since libnl3 uses internally linux headers, and the linux kernel also can only be compiled with gcc (and maybe clang), it seems clear that on the target platform a suitable compiler is available. If there is a reasonable request of a real-world compiler that is not able to compile this, we can revisit some choices. But not having __attribute__((__cleanup__(fcn))) is like programming C from a decade ago. Especially during parsing (which libnl3 does obviously a lot), this allows to return-early while cleanup up memory. While this sounds simple to get right manually, in practice the resulting code is either unnecessary complex or simply buggy. To make implementing libnl3 more convenient, these helpers are introduced.
* Add CTA_LABELS and CTA_LABELS_MASK to ctattr_type according to the new kernelxinbao2019-08-071-0/+2
| | | | https://github.com/thom311/libnl/pull/218
* route/link: expose IFLA_INFO_SLAVE_KINDTobias Jungel2018-10-222-0/+4
| | | | | add rtnl_link_{get,set}_slave_type functions to expose the IFLA_INFO_SLAVE_KIND attribute.
* route/act: return error code from act-vlan gettersThomas Haller2018-10-101-5/+5
| | | | | | Our API is unfortunately not consistent about this. However, in general, getters should aim to return an error code whether the attribute could be retrieved.
* route/act: style fixes in "lib/route/act/vlan.c"Thomas Haller2018-10-102-12/+11
|
* route:act: add vlan actionVolodymyr Bendiuga2018-10-102-0/+49
| | | | | | | For more information please see: http://man7.org/linux/man-pages/man8/tc-vlan.8.html Signed-off-by: Volodymyr Bendiuga <volodymyr.bendiuga@westermo.se>
* include: import tc_vlan.hVolodymyr Bendiuga2018-10-101-0/+39
| | | | Signed-off-by: Volodymyr Bendiuga <volodymyr.bendiuga@westermo.se>
* route/tc: return error code from rtnl_tc_get_chain()Thomas Haller2018-10-101-1/+1
| | | | | | Our API is unfortunately not consistent about this. However, in general, getters should aim to return an error code whether the attribute could be retrieved.
* route:tc: allow to set chain index for tc objectsVolodymyr Bendiuga2018-10-103-2/+6
| | | | | | This is useful when one wants to chain filters. Signed-off-by: Volodymyr Bendiuga <volodymyr.bendiuga@westermo.se>
* lib/qdisc: avoid BUG() in "lib/route/qdisc/mqprio.c"Thomas Haller2018-10-091-1/+1
| | | | | | | | | | BUG() raises an assertion. It seems overly harsh. For example, rtnl_tc_data() can fail if we fail to allocate memory. Asserting against that, makes libnl3 not out-of-memory safe. Just return a regular error.
* lib/qdisc: style fixes in "lib/route/qdisc/mqprio.c"Thomas Haller2018-10-091-11/+11
|
* route:qdisc: add MQPRIO QdiscVolodymyr Bendiuga2018-07-262-0/+62
| | | | | | | More about Qdisc mqprio can be found at: http://man7.org/linux/man-pages/man8/tc-mqprio.8.html Signed-off-by: Volodymyr Bendiuga <volodymyr.bendiuga@westermo.se>
* include: import linux header pkt_sched.hVolodymyr Bendiuga2018-07-241-41/+328
| | | | Signed-off-by: Volodymyr Bendiuga <volodymyr.bendiuga@westermo.se>
* include/linux: update copy of kernel headersThomas Haller2018-06-251-5/+38
| | | | | Taken from upstream kernel commit 29dcea88779c856c7dc92040a0c01233263101d4 (v4.17).
* if_tunnel: Update IFLA defines up to FWMARKThomas Winter2018-06-251-0/+14
| | | | | | This is a new option that was added in Linux v4.12. Signed-off-by: Thomas Winter <Thomas.Winter@alliedtelesis.co.nz>
* neigh: update neighbour.h and add missing flagsTobias Jungel2018-06-251-1/+11
| | | | | | NTF_EXT_LEARNED, NTF_OFFLOADED and NTF_MASTER are added to neigh_flags. https://github.com/thom311/libnl/pull/186
* Add support for cloning cgroup filter object.d0u92018-06-251-0/+2
| | | | | | | | | | | In this commit, we implement ematch_tree_clone(), which is basis of cgroup_clone() interface. The whole ematch tree is deep-copied except the e_ops filed. Also, a new unit test is added for testing the interface, which named as check-ematch-tree-clone.c located in tests directory. https://github.com/thom311/libnl/pull/176
* neigh: add get/set functions for NEIGH_ATTR_MASTERTobias Jungel2018-06-251-0/+3
| | | | | | | Beeing able to set NEIGH_ATTR_MASTER hash based lookups are possible for AF_BRIDGE neighbours. https://github.com/thom311/libnl/pull/189
* route/class: add new api rtnl_class_get_by_parent()d0u92018-04-111-0/+3
| | | | | | | | This function searches a class cache previously allocated with rtnl_class_alloc_cache() and searches for a class matching the interface index and parent qdisc. https://github.com/thom311/libnl/pull/185
* route:cls: add matchall classifierVolodymyr Bendiuga2018-04-112-0/+44
| | | | | | | This simple classifier allows any traffic pass through. Useful as an example for port mirroring. Signed-off-by: Volodymyr Bendiuga <volodymyr.bendiuga@westermo.se>
* include: copy entire pkt_cls.h from linuxVolodymyr Bendiuga2018-04-111-78/+182
| | | | Signed-off-by: Volodymyr Bendiuga <volodymyr.bendiuga@westermo.se>
* rule: Add support for protocol and port rangesDavid Ahern2018-04-062-0/+22
| | | | | | | Add support for recent fib rule features - specifying a protocol that installed a rule and an IP protocol plus port range for rules. Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
* Update fib_rules.h to latest kernelDavid Ahern2018-04-061-4/+22
| | | | | | | Update fib_rules.h to kernel as of bfff4862653b ("net: fib_rules: support for match on ip_proto, sport and dport") Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
* lib/rtnl: rename public define RTNL_GENEVE_ID_MAXThomas Haller2018-02-121-1/+1
| | | | | Public defines must have a libnl3 related prefix. Rename GENEVE_ID_MAX to RTNL_GENEVE_ID_MAX.
* link: add Geneve support.Wang Jian2018-02-121-0/+60
| | | | Signed-off-by: Wang Jian <jianjian.wang1@gmail.com>
* Fix for cgroup filter addition problem.d0u92018-01-231-0/+1
| | | | | | | | | | Currently, due to the incomplete netlink datagram sent by libnl, cgroup filter addition is not fully functional. The datagram generated by `tc` command includes an empty attribute section, which is stripped off in the libnl counterpart. In this commit, a new `interface nla_nest_end_keep_empty()` is added. This function closes attribute without stripping off empty attribute.
* route: rename rtnl_cls_cache_set_tcm_params() and fix symbol versioningThomas Haller2018-01-181-1/+1
| | | | | | | | | After rethinking, "tcm_params" doesn't seem like a good name. Change it to "tc_params". Also, an already released section in the linker file must never be modified. It defeats the purpose of symbol versioning. Move the symbol to the right section.
* Add new function for setting ifindex and parent of a classifier cache.d0u92018-01-181-0/+2
| | | | | | | It is not good to give classifier cache users only one chance to set interface index and parent handle when allocte new cache. Sometimes we want to reuse classifier cache to reduce the overhead of allocating new memory everytime a new cache is created.
* route: mark data argument for rtnl_netem_set_delay_distribution_data() as constThomas Haller2018-01-161-1/+1
|
* route: add separate function to set netem qdisc delay distributionSteffen Vogel2017-12-201-0/+1
| | | | | | | | | A new function rtnl_netem_set_delay_distribution_data() has been added to allow the user to pass the delay distribution directly without loading it from a file. In conjunction with the maketable code (see iproute2 / NISTnet) this can be used to generate and load custom delay distributions on the fly.
* Change rtnl_link_af_ops.ao_override_rtm behaviorJef Oliver2017-11-291-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rtnl_link_af_ops.ao_override_rtm allows for a link module to override the change request type being sent to the kernel. More specifically, the default change request type is RTM_NEWLINK. Some link change requests require the reqeust type to be set to RTM_SETLINK. This is the case for IFLA_PROTINFO specific attributes for a link that is slave to a bridge. Currently, ao_override_rtm is static to the address family type. So, all changes submitted to AF_BRIDGE override the link change request type. The override only needs to happen if IFLA_PROTINFO attributes are appended to the link change request. This patch changes ao_override_rtm from a const integer to a function pointer that allows for a link module to determine if the override needs to actually happen. Currently, only the bridge module uses this functionality. If bridge flags are applied to a link (bdpu blocking, learning, fast leave, etc...), these flags are nested in IFLA_PROTINFO. If the flags are present, the link change request type will be overridden as RTM_SETLINK. This fixes the ability to set a bridge link up or down by using the correct RTM_NEWLINK link change request type. $ sudo src/nl-link-set -n br2 --state=down Changed bridge br2 ether a6:e6:94:8c:61:ec <broadcast,multicast,up,running,lowerup> group 0 $ ip link show br2: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000 $ sudo src/nl-link-set -n br2 --state=up Changed bridge br2 ether a6:e6:94:8c:61:ec <broadcast,multicast> group 0 $ ip link show br2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 Signed-off-by: Jef Oliver <jef.oliver@intel.com> Fixes: 55bc931a7272e6ac8f555bcc2a373eb2b6b58377 http://lists.infradead.org/pipermail/libnl/2017-November/002382.html http://lists.infradead.org/pipermail/libnl/2017-November/002385.html
* route/vlan: add capability to indicate heap overflow fix in ↵Thomas Haller2017-10-231-0/+8
| | | | | | | rtnl_link_vlan_set_egress_map() Without this fix/capablity, adding more then 4 mappings in rtnl_link_vlan_set_egress_map() overflows the heap.
* nl: add "const" specifier for nla_policy argument of parse functionsThomas Haller2017-10-094-7/+7
| | | | | | | | | | | Adding const to a function argument is generally not an API break (at least, if the argument is a struct, like in this case). Usually we declare the policy as static variables. The user should be able to mark them as "const", so that the linker makes the policy array read-only. Adjust the API to allow for that. Signed-off-by: Thomas Haller <thaller@redhat.com>
* libnl-3.4.0 releaselibnl3_4_0Thomas Haller2017-10-091-0/+6
| | | | Signed-off-by: Thomas Haller <thaller@redhat.com>
* cli: include sys/select.h for select(2)Tobias Klauser2017-09-071-0/+1
| | | | | | | | | | | | | | | | | Some of the cli tools use select(2) and its man page states: /* According to POSIX.1-2001, POSIX.1-2008 */ #include <sys/select.h> Do so and explicitly #include <sys/select.h> in <netlink/cli/utils.h> instead of relying of getting select(2) via implicit includes. This is also needed to make libnl compile for Android. Based on a previous patch by Fredrik Fornwall. Signed-off-by: Tobias Klauser <tklauser@distanz.ch> https://github.com/thom311/libnl/pull/151
* route: Add support for MPLS encapDavid Ahern2017-08-182-0/+11
| | | | | | Add support for MPLS lwtunnel encapsulation. Signed-off-by: David Ahern <dsahern@gmail.com>
* route: Add support for lwtunnel encapsulationsDavid Ahern2017-08-182-0/+38
| | | | | | | | | | Add framework to support lwtunnel encapsulations per nexthop. Encapsulations types are expected to fill in the nh_encap_ops for building and parsing messages, compare encapsulations in routes, dumping the encapsulations and freeing memory. Signed-off-by: David Ahern <dsahern@gmail.com>
* Import lwtunnel encap files from kernelDavid Ahern2017-08-182-0/+99
| | | | | | | Import lwtunnel and mpls_iptunnel.h from net-next tree as of commit b217566a525ff24334d17635a865f44b68c2c583 Signed-off-by: David Ahern <dsahern@gmail.com>
* route: Add support for ttl propagation in MPLS routesDavid Ahern2017-08-182-0/+4
| | | | | | | Add support for RTA_TTL_PROPAGATE attribute on a per-route basis. Used to enable/disable TTL propagation at LSP egress. Signed-off-by: David Ahern <dsahern@gmail.com>
* route: Add support for MPLS address familyDavid Ahern2017-08-182-0/+8
| | | | | | | | | | | | | | | | | Add support for route in MPLS family. New attributes: - RTA_NEWDST - label stack for a nexthop - RTA_VIA - nexthop address (e.g., IPv4 or IPv6) Other changes required: - scope has to be universe for MPLS routes so fixup rtnl_route_guess_scope - priority attribute can not be set for MPLS. Change rtnl_route_parse to not set the attribute by default for AF_MPLS. - table attribute should not be set unless something other than the default table. For MPLS this attribute can not be set. '/' is the separator in label stacks for consistency with iproute2. Signed-off-by: David Ahern <dsahern@gmail.com>
* addr: Add implementations for mpls_ntop and mpls_ptonDavid Ahern2017-08-181-0/+15
| | | | | | Implementations of mpls_ntop and mpls_pton taken from iproute2. Signed-off-by: David Ahern <dsahern@gmail.com>
* Import mpls header from kernel treeDavid Ahern2017-08-181-0/+76
| | | | | | | Add include/uapi/linux/mpls.h from net-next tree as of commit b217566a525ff24334d17635a865f44b68c2c583 Signed-off-by: David Ahern <dsahern@gmail.com>