|
@@ -49,6 +49,8 @@ int inet_rtx_syn_ack(struct sock *parent, struct request_sock *req);
|
|
|
*/
|
|
|
struct request_sock {
|
|
|
struct sock_common __req_common;
|
|
|
+#define rsk_refcnt __req_common.skc_refcnt
|
|
|
+
|
|
|
struct request_sock *dl_next;
|
|
|
u16 mss;
|
|
|
u8 num_retrans; /* number of retransmits */
|
|
@@ -86,6 +88,12 @@ static inline void reqsk_free(struct request_sock *req)
|
|
|
__reqsk_free(req);
|
|
|
}
|
|
|
|
|
|
+static inline void reqsk_put(struct request_sock *req)
|
|
|
+{
|
|
|
+ if (atomic_dec_and_test(&req->rsk_refcnt))
|
|
|
+ reqsk_free(req);
|
|
|
+}
|
|
|
+
|
|
|
extern int sysctl_max_syn_backlog;
|
|
|
|
|
|
/** struct listen_sock - listen state
|