4954f17dde
Add 3 setsockopt()s: 1. TCP_AO_ADD_KEY to add a new Master Key Tuple (MKT) on a socket 2. TCP_AO_DEL_KEY to delete present MKT from a socket 3. TCP_AO_INFO to change flags, Current_key/RNext_key on a TCP-AO sk Userspace has to introduce keys on every socket it wants to use TCP-AO option on, similarly to TCP_MD5SIG/TCP_MD5SIG_EXT. RFC5925 prohibits definition of MKTs that would match the same peer, so do sanity checks on the data provided by userspace. Be as conservative as possible, including refusal of defining MKT on an established connection with no AO, removing the key in-use and etc. (1) and (2) are to be used by userspace key manager to add/remove keys. (3) main purpose is to set RNext_key, which (as prescribed by RFC5925) is the KeyID that will be requested in TCP-AO header from the peer to sign their segments with. At this moment the life of ao_info ends in tcp_v4_destroy_sock(). Co-developed-by: Francesco Ruggeri <fruggeri@arista.com> Signed-off-by: Francesco Ruggeri <fruggeri@arista.com> Co-developed-by: Salam Noureddine <noureddine@arista.com> Signed-off-by: Salam Noureddine <noureddine@arista.com> Signed-off-by: Dmitry Safonov <dima@arista.com> Acked-by: David Ahern <dsahern@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
57 lines
1.9 KiB
Makefile
57 lines
1.9 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Makefile for the Linux TCP/IP (INET6) layer.
|
|
#
|
|
|
|
obj-$(CONFIG_IPV6) += ipv6.o
|
|
|
|
ipv6-y := af_inet6.o anycast.o ip6_output.o ip6_input.o addrconf.o \
|
|
addrlabel.o \
|
|
route.o ip6_fib.o ipv6_sockglue.o ndisc.o udp.o udplite.o \
|
|
raw.o icmp.o mcast.o reassembly.o tcp_ipv6.o ping.o \
|
|
exthdrs.o datagram.o ip6_flowlabel.o inet6_connection_sock.o \
|
|
udp_offload.o seg6.o fib6_notifier.o rpl.o ioam6.o
|
|
|
|
ipv6-$(CONFIG_SYSCTL) += sysctl_net_ipv6.o
|
|
ipv6-$(CONFIG_IPV6_MROUTE) += ip6mr.o
|
|
|
|
ipv6-$(CONFIG_XFRM) += xfrm6_policy.o xfrm6_state.o xfrm6_input.o \
|
|
xfrm6_output.o xfrm6_protocol.o
|
|
ipv6-$(CONFIG_NETFILTER) += netfilter.o
|
|
ipv6-$(CONFIG_IPV6_MULTIPLE_TABLES) += fib6_rules.o
|
|
ipv6-$(CONFIG_PROC_FS) += proc.o
|
|
ipv6-$(CONFIG_SYN_COOKIES) += syncookies.o
|
|
ipv6-$(CONFIG_NETLABEL) += calipso.o
|
|
ipv6-$(CONFIG_IPV6_SEG6_LWTUNNEL) += seg6_iptunnel.o seg6_local.o
|
|
ipv6-$(CONFIG_IPV6_SEG6_HMAC) += seg6_hmac.o
|
|
ipv6-$(CONFIG_IPV6_RPL_LWTUNNEL) += rpl_iptunnel.o
|
|
ipv6-$(CONFIG_IPV6_IOAM6_LWTUNNEL) += ioam6_iptunnel.o
|
|
|
|
obj-$(CONFIG_INET6_AH) += ah6.o
|
|
obj-$(CONFIG_INET6_ESP) += esp6.o
|
|
obj-$(CONFIG_INET6_ESP_OFFLOAD) += esp6_offload.o
|
|
obj-$(CONFIG_INET6_IPCOMP) += ipcomp6.o
|
|
obj-$(CONFIG_INET6_XFRM_TUNNEL) += xfrm6_tunnel.o
|
|
obj-$(CONFIG_INET6_TUNNEL) += tunnel6.o
|
|
obj-$(CONFIG_IPV6_MIP6) += mip6.o
|
|
obj-$(CONFIG_IPV6_ILA) += ila/
|
|
obj-$(CONFIG_NETFILTER) += netfilter/
|
|
|
|
obj-$(CONFIG_IPV6_VTI) += ip6_vti.o
|
|
obj-$(CONFIG_IPV6_SIT) += sit.o
|
|
obj-$(CONFIG_IPV6_TUNNEL) += ip6_tunnel.o
|
|
obj-$(CONFIG_IPV6_GRE) += ip6_gre.o
|
|
obj-$(CONFIG_IPV6_FOU) += fou6.o
|
|
|
|
obj-y += addrconf_core.o exthdrs_core.o ip6_checksum.o ip6_icmp.o
|
|
obj-$(CONFIG_INET) += output_core.o protocol.o \
|
|
ip6_offload.o tcpv6_offload.o exthdrs_offload.o
|
|
|
|
obj-$(subst m,y,$(CONFIG_IPV6)) += inet6_hashtables.o
|
|
|
|
ifneq ($(CONFIG_IPV6),)
|
|
obj-$(CONFIG_NET_UDP_TUNNEL) += ip6_udp_tunnel.o
|
|
obj-y += mcast_snoop.o
|
|
obj-$(CONFIG_TCP_AO) += tcp_ao.o
|
|
endif
|