|
@@ -47,7 +47,9 @@ struct udp_sock {
|
|
|
#define udp_portaddr_node inet.sk.__sk_common.skc_portaddr_node
|
|
|
int pending; /* Any pending frames ? */
|
|
|
unsigned int corkflag; /* Cork is required */
|
|
|
- __u16 encap_type; /* Is this an Encapsulation socket? */
|
|
|
+ __u8 encap_type; /* Is this an Encapsulation socket? */
|
|
|
+ unsigned char no_check6_tx:1,/* Send zero UDP6 checksums on TX? */
|
|
|
+ no_check6_rx:1;/* Allow zero UDP6 checksums on RX? */
|
|
|
/*
|
|
|
* Following member retains the information to create a UDP header
|
|
|
* when the socket is uncorked.
|
|
@@ -76,6 +78,26 @@ static inline struct udp_sock *udp_sk(const struct sock *sk)
|
|
|
return (struct udp_sock *)sk;
|
|
|
}
|
|
|
|
|
|
+static inline void udp_set_no_check6_tx(struct sock *sk, bool val)
|
|
|
+{
|
|
|
+ udp_sk(sk)->no_check6_tx = val;
|
|
|
+}
|
|
|
+
|
|
|
+static inline void udp_set_no_check6_rx(struct sock *sk, bool val)
|
|
|
+{
|
|
|
+ udp_sk(sk)->no_check6_rx = val;
|
|
|
+}
|
|
|
+
|
|
|
+static inline bool udp_get_no_check6_tx(struct sock *sk)
|
|
|
+{
|
|
|
+ return udp_sk(sk)->no_check6_tx;
|
|
|
+}
|
|
|
+
|
|
|
+static inline bool udp_get_no_check6_rx(struct sock *sk)
|
|
|
+{
|
|
|
+ return udp_sk(sk)->no_check6_rx;
|
|
|
+}
|
|
|
+
|
|
|
#define udp_portaddr_for_each_entry(__sk, node, list) \
|
|
|
hlist_nulls_for_each_entry(__sk, node, list, __sk_common.skc_portaddr_node)
|
|
|
|