udp: Split splice field in udp_epoll_ref into (mostly) independent bits
The @splice field in union udp_epoll_ref can have a number of values for different types of "spliced" packet flows. Split it into several single bit fields with more or less independent meanings. The new @splice field is just a boolean indicating whether the socket is associated with a spliced flow, making it identical to the @splice fiend in tcp_epoll_ref. The new bit @orig, indicates whether this is a socket which can originate new udp packet flows (created with -u or -U) or a socket created on the fly to handle reply socket. @ns indicates whether the socket lives in the init namespace or the pasta namespace. Making these bits more orthogonal to each other will simplify some future cleanups. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:

committed by
Stefano Brivio

parent
8517239243
commit
d9394eb9b7
15
udp.h
15
udp.h
@@ -23,20 +23,19 @@ void udp_update_l2_buf(const unsigned char *eth_d, const unsigned char *eth_s,
|
||||
* union udp_epoll_ref - epoll reference portion for TCP connections
|
||||
* @bound: Set if this file descriptor is a bound socket
|
||||
* @splice: Set if descriptor is associated to "spliced" connection
|
||||
* @orig: Set if a spliced socket which can originate "connections"
|
||||
* @ns: Set if this is a socket in the pasta network namespace
|
||||
* @v6: Set for IPv6 sockets or connections
|
||||
* @port: Source port for connected sockets, bound port otherwise
|
||||
* @u32: Opaque u32 value of reference
|
||||
*/
|
||||
union udp_epoll_ref {
|
||||
struct {
|
||||
uint32_t splice:3,
|
||||
#define UDP_TO_NS 1
|
||||
#define UDP_TO_INIT 2
|
||||
#define UDP_BACK_TO_NS 3
|
||||
#define UDP_BACK_TO_INIT 4
|
||||
|
||||
v6:1,
|
||||
port:16;
|
||||
bool splice:1,
|
||||
orig:1,
|
||||
ns:1,
|
||||
v6:1;
|
||||
uint32_t port:16;
|
||||
} udp;
|
||||
uint32_t u32;
|
||||
};
|
||||
|
Reference in New Issue
Block a user