1919
2020#include "defer_connect.h"
2121
22+ #define KMESH_MODULE_ULP_NAME "kmesh_defer"
23+
2224static struct proto * kmesh_defer_proto = NULL ;
2325
24- #ifdef KERNEL_KFUNC
26+ #if KERNEL_KFUNC
2527#define BPF_CGROUP_RUN_PROG_INET4_CONNECT_KMESH (sk , uaddr , uaddrlen , t_ctx ) \
2628 ({ \
2729 int __ret = -1; \
@@ -33,9 +35,9 @@ static struct proto *kmesh_defer_proto = NULL;
3335 __ret; \
3436 })
3537
36- #define SET_FDEFER_CONNECT_ON (sk ) (inet_set_bit(DEFER_CONNECT, sk))
37- #define SET_FDEFER_CONNECT_OFF (sk ) (inet_clear_bit(DEFER_CONNECT, sk))
38- #define IS_DEFER_CONNECT (sk ) (inet_test_bit(DEFER_CONNECT, sk))
38+ #define SET_DEFER_CONNECT_ON (sk ) (inet_set_bit(DEFER_CONNECT, sk))
39+ #define SET_DEFER_CONNECT_OFF (sk ) (inet_clear_bit(DEFER_CONNECT, sk))
40+ #define IS_DEFER_CONNECT (sk ) (inet_test_bit(DEFER_CONNECT, sk))
3941#else
4042#define BPF_CGROUP_RUN_PROG_INET4_CONNECT_KMESH (sk , uaddr , uaddrlen , t_ctx ) \
4143 ({ \
@@ -48,9 +50,9 @@ static struct proto *kmesh_defer_proto = NULL;
4850 __ret; \
4951 })
5052
51- #define SET_FDEFER_CONNECT_ON (sk ) (inet_sk(sk)->defer_connect = 1)
52- #define SET_FDEFER_CONNECT_OFF (sk ) (inet_sk(sk)->defer_connect = 0)
53- #define IS_DEFER_CONNECT (sk ) (inet_sk(sk)->defer_connect == 1)
53+ #define SET_DEFER_CONNECT_ON (sk ) (inet_sk(sk)->defer_connect = 1)
54+ #define SET_DEFER_CONNECT_OFF (sk ) (inet_sk(sk)->defer_connect = 0)
55+ #define IS_DEFER_CONNECT (sk ) (inet_sk(sk)->defer_connect == 1)
5456#endif
5557
5658static int defer_connect (struct sock * sk , struct msghdr * msg , size_t size )
@@ -74,18 +76,19 @@ static int defer_connect(struct sock *sk, struct msghdr *msg, size_t size)
7476 ubase = iov -> iov_base ;
7577 kbuf_size = iov -> iov_len ;
7678 } else if (iter_is_iovec (& msg -> msg_iter )) {
77- #ifdef KERNEL_KFUNC
79+ #if KERNEL_VERISON6
7880 iov = msg -> msg_iter .__iov ;
79- #else
80- iov = msg -> msg_iter .iov ;
81- #endif
8281 ubase = iov -> iov_base ;
8382 kbuf_size = iov -> iov_len ;
84- #if ITER_TYPE_IS_UBUF
8583 } else if (iter_is_ubuf (& msg -> msg_iter )) {
8684 ubase = msg -> msg_iter .ubuf ;
8785 kbuf_size = msg -> msg_iter .count ;
86+ #else
87+ iov = msg -> msg_iter .iov ;
88+ ubase = iov -> iov_base ;
89+ kbuf_size = iov -> iov_len ;
8890#endif
91+
8992 } else
9093 goto connect ;
9194
@@ -117,7 +120,7 @@ static int defer_connect(struct sock *sk, struct msghdr *msg, size_t size)
117120 inet_sk (sk )-> inet_dport = 0 ;
118121 goto out ;
119122 }
120- SET_FDEFER_CONNECT_OFF (sk );
123+ SET_DEFER_CONNECT_OFF (sk );
121124
122125 if ((((__u32 )1 << sk -> sk_state ) & ~(__u32 )(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT )) && !tcp_passive_fastopen (sk )) {
123126 sk_stream_wait_connect (sk , & timeo );
@@ -169,7 +172,7 @@ static int defer_tcp_connect(struct sock *sk, struct sockaddr *uaddr, int addr_l
169172 */
170173 if (IS_DEFER_CONNECT (sk ))
171174 return tcp_v4_connect (sk , uaddr , addr_len );
172- SET_FDEFER_CONNECT_ON (sk );
175+ SET_DEFER_CONNECT_ON (sk );
173176 sk -> sk_dport = ((struct sockaddr_in * )uaddr )-> sin_port ;
174177 sk_daddr_set (sk , ((struct sockaddr_in * )uaddr )-> sin_addr .s_addr );
175178 sk -> sk_socket -> state = SS_CONNECTING ;
@@ -192,7 +195,7 @@ static int kmesh_defer_init(struct sock *sk)
192195}
193196
194197static struct tcp_ulp_ops kmesh_defer_ulp_ops __read_mostly = {
195- .name = "kmesh_defer" ,
198+ .name = KMESH_MODULE_ULP_NAME ,
196199 .owner = THIS_MODULE ,
197200 .init = kmesh_defer_init ,
198201};
0 commit comments