From f7a55ad74c90928d86f1bbf56590d9571c1b828f Mon Sep 17 00:00:00 2001 From: Ole Troan Date: Tue, 16 May 2017 14:59:29 +0200 Subject: PUNT socket: External control plane processes connected via UNIX domain sockets. An external (to VPP) process can register (over the VPP binary API) to receive control plane packets over a UNIX domain socket. The packets are prepended with a packet descriptor containing meta-data (if_index of interface, etc). Currently only UDP is supported. The socket supports sending of packets/frames as well. The sent packet is prepended with a descriptor, telling VPP to route the packet (via ip4-lookup, ip6-lookup) or as an pre-formed Ethernet frame that is sent directly to interface-output. The intended use case for this is for an external DHCP client or a RIP implementation. New configuration option: punt { socket } To register use the punt_socket API message. TODO: - Add support for pre-routing. I.e send L3 packet to given TX interface, but do ARP/ND (ip[46]-rewrite) - Add test scripts - Support for abstract names (starting with \0) - Add rate limiting (COP) - Support for other protocols, e.g. IPv6 ND Change-Id: I4a0afc8020deebb3d9d74686dde694ee5bcb8d0f Signed-off-by: Ole Troan --- src/vnet/ip/punt_error.def | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/vnet/ip/punt_error.def') diff --git a/src/vnet/ip/punt_error.def b/src/vnet/ip/punt_error.def index a76d7e7b..13afa2c7 100644 --- a/src/vnet/ip/punt_error.def +++ b/src/vnet/ip/punt_error.def @@ -17,3 +17,11 @@ punt_error (NONE, "no error") punt_error (UDP_PORT, "udp port punt") +punt_error (SOCKET_RX, "Socket RX") +punt_error (SOCKET_TX, "Socket TX") +punt_error (SOCKET_RX_ERROR, "Socket RX error") +punt_error (SOCKET_TX_ERROR, "Socket TX error") +punt_error (NOBUFFER, "buffer allocation failure") +punt_error (READV, "socket read failure") +punt_error (ACTION, "invalid packet descriptor") + -- cgit 1.2.3-korg