Commit Graph

721 Commits

Author SHA1 Message Date
Shaun Crampton
b54f85093f Add RouteListFilteredIter API.
Allows for listing large numbers of routes without
buffering the whole list in memory at once.

Add benchmarks for RouteListFiltered variants.
2024-07-03 13:08:00 -07:00
Hu Jun
b7b7ca8632 add group_fwd_mask support for bridge and bridge port 2024-07-03 13:06:37 -07:00
Sven Rebhan
154a91137f Add extension definitions according to include/uapi/linux/inet_diag.h
Signed-off-by: Sven Rebhan <srebhan@influxdata.com>
2024-07-03 13:03:00 -07:00
shu1r0
e6a5c0e113 Support SEG6_LOCAL_ACTION_END_BPF
fix unit test

fix end.bpf

fix bug
2024-07-03 12:55:03 -07:00
Lorenz Brun
dd7e3f1b2a Add missing bond hash policy VLAN_SRCMAC
Linux added a new bond transmit hashing policy, VLAN_SRCMAC in [1],
available since Linux 5.12. Add this hashing policy into the respective
data structures.

[1] 7b8fc0103b
2024-07-03 12:49:13 -07:00
youngifif
4d4ba1473f fix logic bug caused by operator precedence 2024-05-24 09:54:44 -07:00
Quan Tian
1e68b2710d Revert "Change behavior of Subscribe to non-blocking. Fix test."
This reverts commit 916f9685fa.
2024-05-23 09:21:30 -07:00
Nadia Pinaeva
856e190dd7 nl_linux: align message length before parsing.
Signed-off-by: Nadia Pinaeva <n.m.pinaeva@gmail.com>
2024-04-25 09:47:35 -07:00
Ronak Jain
578e95cc31 rule: fix parsing zero priority rule 2024-04-11 14:50:12 -07:00
Christian Worm Mortensen
f4e6e3d5d5 Allow a Police to be specified directly on a U32 filter 2024-04-10 11:27:34 -07:00
Hongliang Liu
99ce943af8 Add zone filter to conntrack 2024-04-10 11:23:27 -07:00
foyerunix
19057e85f5 Fix RouteListFiltered when using FAMILY_ALL 2024-04-03 06:56:43 -07:00
Byoungchan Lee
6765a4402e Add support for TCA_NETEM_RATE64 in Netem qdisc
- `Rate64` field added to the `Netem` struct in `qdisc.go`
- Implemented serialization and deserialization methods for `Rate64`
- Modify `TestClassAddDel` test to validate Rate64 changes
2024-03-31 17:34:55 -07:00
Lorenz Brun
306ce7b5b2 Add field for permanent hardware address
Linux 5.6 and higher support IFLA_PERM_ADDRESS, which contains the
permanent hardware address of the interface if an interface has such an
address. This can be used to identify interfaces even when the normal
hardware address has been changed.

Signed-off-by: Lorenz Brun <lorenz@monogon.tech>
2024-03-29 14:43:07 -07:00
Asutorufa
d237ee16c3 SocketGet support udp and ipv6
Signed-off-by: Asutorufa <16442314+Asutorufa@users.noreply.github.com>
2024-03-29 09:33:44 -07:00
frei-0xff
3e28e6db88 Added SocketDestroy function. 2024-03-28 11:51:11 -07:00
foyerunix
aafe841692 Filter RouteListFiltered response by requested IP family in 2024-03-27 08:56:09 -07:00
konradh
0e685ffcfc link: add don't fragment support to Geneve 2024-03-20 14:21:27 -07:00
konradh
9453b0562a link: add INNER_PROTO_INHERIT support for Geneve 2024-03-20 14:21:27 -07:00
Christian Worm Mortensen
70def89fcb Allow link argument to AddrAdd, AddReplace and AddrDel to be nil 2024-03-04 10:50:31 -08:00
Date Huang
0cd15d9a7a bridge: add/del vlan range
Signed-off-by: Date Huang <tjjh89017@hotmail.com>
2024-03-04 10:45:37 -08:00
Kuroame
916f9685fa Change behavior of Subscribe to non-blocking. Fix test.
When listening for IPv6 address changes, I found that subscribe is not returning when there is message in the socket. After some researching, I found that libnl suggest setting socket to non-blocking when subscribing to groups. (Ref)[https://www.infradead.org/~tgr/libnl/doc/core.html#:~:text=best%20to%20put%20the%20socket%20in%20non-blocking%20mode]

Also fixed test related to BareUDP, which requires "bareudp" kmod. (Ref)[https://www.kernelconfig.io/config_bareudp]
2024-03-01 13:38:14 -08:00
Maxime Soulé
7f562ed576 RouteUpdate gains NlFlags field
It allows to distinguish between a new created route or a replaced one.

Signed-off-by: Maxime Soulé <btik-git@scoubidou.com>
2024-03-01 13:06:15 -08:00
Kangjie Xu
8fa22700b3 qdisc: add statistics for qdisc
qdisc statistics is exposed in netlink response but not parsed, here we
parse it and expose it via struct QdiscStatistics.

Signed-off-by: Kangjie Xu <kanxu@ebay.com>
2024-03-01 12:50:42 -08:00
steiler
8ac83962db Link: Fix LinkByName with long (>15 char) name by using altnames 2024-02-29 23:58:15 -08:00
Maxime Soulé
124bb8e721 Add RouteChange API
Signed-off-by: Maxime Soulé <btik-git@scoubidou.com>
2024-02-26 09:50:43 -08:00
Hasan Mahmood
6ab7f5a376 Use local handle, not package handle for link lookups 2024-02-23 09:54:32 -08:00
Hasan Mahmood
42d9a053ea Add IifIndex option to RouteGetOptions 2024-02-23 09:54:32 -08:00
Sven Rebhan
ec7bcb248e Implement unix socket diagnostics 2024-02-21 09:21:27 -08:00
Sebastian Sch
a008cbde48 Add support for alternative names
This commit add the support for alternative names.

* exposing the attributes in the link object.
* adding the add and delete functions
* allow LinkByName() to also find devices by altname like `ip link`

Signed-off-by: Sebastian Sch <sebassch@gmail.com>
2024-02-20 15:41:36 -08:00
Yury Kulazhenkov
5daafafd95 Add functions to work with devlink device parameters
Functions added:

DevlinkGetDeviceParams - get all parameters for device
DevlinkGetDeviceParamByName - get specific parameter for device
DevlinkSetDeviceParam - set parameter for device

Signed-off-by: Yury Kulazhenkov <ykulazhenkov@nvidia.com>
2024-02-12 10:28:25 -08:00
Yury Kulazhenkov
857968af11 Add support for VDPA devices management
Current implementation support
following functions:
- VDPANewDev
- VDPADelDev
- VDPAGetDevList
- VDPAGetDevByName
- VDPAGetDevConfigList
- VDPAGetDevConfigByName
- VDPAGetDevVStats
- VDPAGetMGMTDevList
- VDPAGetMGMTDevByBusAndName

Signed-off-by: Yury Kulazhenkov <ykulazhenkov@nvidia.com>
2024-01-29 10:29:44 -08:00
Sven Rebhan
06219cde3e Implement UDP socket diagnostics
Signed-off-by: Sven Rebhan <srebhan@influxdata.com>
2024-01-26 09:08:48 -08:00
Tao Li
8d48f50f55 Added ip6tnlEncap to insert ip6tnl encap route
This commit added support to allow the operation of ip6tnl encapsulation.
It is equivalent to the iproute2 command, e.g., ip route add 192.168.99.0/24 encap ip6 dst 2001:db8:: dev ip6-tunnel
The limitation include that the options field defined in encap nl route attribute is not implenmented yet.
Testcase is included.
2024-01-23 10:47:39 -08:00
adrianc
36b61ad22c Add support to get devlink resources
- Update nl package with new netlink attribute types and consts
- Define structs to model devlink device resources
- Add DevlinkGetDeviceResources method to return device resources
- Add basic test

Signed-off-by: adrianc <adrianc@nvidia.com>
2024-01-22 11:23:43 -08:00
adrianc
2bbba08be2 Add ParseRouteAttrAsMap helper function
This will allow to parse nl attributes, returning a map
for easy access to each attribute.

Signed-off-by: adrianc <adrianc@nvidia.com>
2024-01-22 11:23:43 -08:00
adrianc
51f9bba1cd Allow NLMSG_DONE with no data
certain implementations in kernel return NLMSG_DONE
with no data. If that is the case, assume no error occured.

Signed-off-by: adrianc <adrianc@nvidia.com>
2024-01-21 09:25:04 -08:00
Kevin Sheldrake
4287122432 Add Clsact qdisc
Straight copy from jrfastab's fork, but applied to newer main.

Signed-off-by: Kevin Sheldrake <kevin.sheldrake@isovalent.com>
2023-12-06 10:59:38 -08:00
liuhao.0912
0ced838538 enable rule statistic and time statistic for flower actions 2023-11-27 10:42:39 -08:00
tc
004274e828 add tc flower pedit action
add pedit action in tc flower to support installing netlink hardware offload rules

authored-by: tangchen <tangchen.1@bytedance.com>
2023-11-27 10:36:18 -08:00
Daniel Borkmann
d649c02e2b fq: Fix to set missing TCA_FQ_PLIMIT attribute
The qdiscPayload() function was missing the TCA_FQ_PLIMIT attribute
for the Fq Qdisc. Therefore, it could not be changed via the library.
Fix this up, so that QdiscReplace() with different qdisc.PacketLimit
works now.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2023-11-27 10:24:12 -08:00
tc
f1333cd79a support netkit
netkit device is merged to Linux upstream:
https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?id=22360fad5889cbefe1eca695b0cc0273ab280b56

this PR add support to manage a netkit device in Golang

authored-by: tangchen <tangchen.1@bytedance.com>
2023-11-27 10:22:01 -08:00
adrianc
95ab6696a5 fix: check for ext ACK TLVs
checking for Extended ACK in nlmsghdr flags
should be done with bitwise AND op instead of OR op

Signed-off-by: adrianc <adrianc@nvidia.com>
2023-11-12 12:14:56 -08:00
adrianc
aa4f20db57 fix: check nlmsghdr flags for interrupt
fail if NLM_F_DUMP_INTR flag is set

Signed-off-by: adrianc <adrianc@nvidia.com>
2023-11-12 12:06:03 -08:00
Tobias Klauser
77df5d35f7 Make xfrm linux-only
The xfrm framework is linux-only. Only implement the respective types
for GOOS=linux to avoid dependencies to x/sys/unix on non-linux or
non-unix platforms. Provide dummy XfrmPolicy and XfrmState types for the
globally defined XfrmPolicy* and XfrmState* functions.
2023-10-24 10:58:52 -07:00
Tobias Klauser
ccef072df0 Mark skipUnlessRoot and minKernelRequired as test helpers
With this, the skip message will display the position of the
helper invocation (i.e. the test that caused the skip) instead of the
position of the t.Skip call in minKernelRequired the helper.
2023-10-24 10:52:43 -07:00
Tobias Klauser
d18d70b0d9 Use inbound policy in TestXfrmPolicyWithOptional
Since kernel commit
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3d776e31c841b
optional tunnel/BEET mode templates in outbound policies are rejected.

Use an inbound policy instead to fix the test failure on newer kernels.
2023-10-24 09:29:12 -07:00
Tobias Klauser
586148b818 Use valid Tos value in TestRouteFilterAllTables and TestRouteExtraFields
TestRouteFilterAllTables and TestRouteExtraFields started failing a
while ago after GitHub actions images bumped the kernel version from
5.15.x to 6.2.x [1].

This is because newer kernels containing commit [2] started rejecting
Tos values with the ECN bits set to non-zero, this leads to the
following error being reported when adding routes:

    invalid argument: Invalid dsfield (tos): ECN bits must be 0

Fix this by using a valid Tos value in TestRouteFilterAllTables and
TestRouteExtraFields.

[1] https://github.com/vishvananda/netlink/pull/773#issuecomment-1754436653
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f55fbb6afb8d
2023-10-24 09:29:12 -07:00
Tobias Klauser
7b4e1dec46 nl: avoid trailing NULL byte in error messages
Use unix.ByteSliceToString to convert the NULL-terminated
NLMSGERR_ATTR_MSG error message.
2023-10-24 09:29:12 -07:00
Tobias Klauser
40e139bb96 Enable extended error message reporting in tests
This causes the NETLINK_EXT_ACK socket option to be set and extended
error messages to be reported in errors. This should help debug test
failures.

Also use errors.Is to check for errors because using extended error
reporting, the errors no longer match exactly.
2023-10-24 09:29:12 -07:00