From 57394bcd68459d3c31cc605e538824a41ba490d9 Mon Sep 17 00:00:00 2001 From: Seth Forshee Date: Fri, 30 Aug 2019 09:10:23 -0500 Subject: [PATCH] Fix build with Linux 5.3 In Linux 5.3 nf_ct_expect_related() gained a flags argument. Calls to this function are sprinkled throughout a couple of source files, so rather than adding a #if to each call site, add a wrapper which will use the appropriate prototype. Signed-off-by: Seth Forshee --- netfilter_helpers.h | 11 +++++++++++ nf_conntrack_rtsp.c | 5 ++--- nf_nat_rtsp.c | 11 +++++------ 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/netfilter_helpers.h b/netfilter_helpers.h index 903f374..d8b8ce3 100644 --- a/netfilter_helpers.h +++ b/netfilter_helpers.h @@ -14,6 +14,8 @@ /* Only include these functions for kernel code. */ #ifdef __KERNEL__ +#include + #include #define iseol(c) ( (c) == '\r' || (c) == '\n' ) @@ -128,6 +130,15 @@ nf_nextline(char* p, uint len, uint* poff, uint* plineoff, uint* plinelen) } #endif /* NF_NEED_NEXTLINE */ +static inline int rtsp_nf_ct_expect_related(struct nf_conntrack_expect *expect) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0) + return nf_ct_expect_related(expect, 0); +#else + return nf_ct_expect_related(expect); +#endif +} + #endif /* __KERNEL__ */ #endif /* _NETFILTER_HELPERS_H */ diff --git a/nf_conntrack_rtsp.c b/nf_conntrack_rtsp.c index 8a2f182..300be0a 100644 --- a/nf_conntrack_rtsp.c +++ b/nf_conntrack_rtsp.c @@ -41,7 +41,6 @@ #include #include -#include #include #include "nf_conntrack_rtsp.h" @@ -396,8 +395,8 @@ help_out(struct sk_buff *skb, unsigned char *rb_ptr, unsigned int datalen, &expinfo, rtp_exp, rtcp_exp); #endif else { - if (nf_ct_expect_related(rtp_exp) == 0) { - if (rtcp_exp && nf_ct_expect_related(rtcp_exp) != 0) { + if (rtsp_nf_ct_expect_related(rtp_exp) == 0) { + if (rtcp_exp && rtsp_nf_ct_expect_related(rtcp_exp) != 0) { nf_ct_unexpect_related(rtp_exp); pr_info("nf_conntrack_expect_related failed for rtcp\n"); ret = NF_DROP; diff --git a/nf_nat_rtsp.c b/nf_nat_rtsp.c index 59ea4fd..02b46c5 100644 --- a/nf_nat_rtsp.c +++ b/nf_nat_rtsp.c @@ -46,7 +46,6 @@ #endif #include #include "nf_conntrack_rtsp.h" -#include #include #include @@ -202,7 +201,7 @@ rtsp_mangle_tran(enum ip_conntrack_info ctinfo, case pb_single: for (loport = prtspexp->loport; loport != 0; loport++) { /* XXX: improper wrap? */ rtp_t->dst.u.udp.port = htons(loport); - if (nf_ct_expect_related(rtp_exp) == 0) { + if (rtsp_nf_ct_expect_related(rtp_exp) == 0) { pr_debug("using port %hu\n", loport); break; } @@ -215,12 +214,12 @@ rtsp_mangle_tran(enum ip_conntrack_info ctinfo, case pb_range: for (loport = prtspexp->loport; loport != 0; loport += 2) { /* XXX: improper wrap? */ rtp_t->dst.u.udp.port = htons(loport); - if (nf_ct_expect_related(rtp_exp) != 0) { + if (rtsp_nf_ct_expect_related(rtp_exp) != 0) { continue; } hiport = loport + 1; rtcp_exp->tuple.dst.u.udp.port = htons(hiport); - if (nf_ct_expect_related(rtcp_exp) != 0) { + if (rtsp_nf_ct_expect_related(rtcp_exp) != 0) { nf_ct_unexpect_related(rtp_exp); continue; } @@ -243,14 +242,14 @@ rtsp_mangle_tran(enum ip_conntrack_info ctinfo, case pb_discon: for (loport = prtspexp->loport; loport != 0; loport++) { /* XXX: improper wrap? */ rtp_t->dst.u.udp.port = htons(loport); - if (nf_ct_expect_related(rtp_exp) == 0) { + if (rtsp_nf_ct_expect_related(rtp_exp) == 0) { pr_debug("using port %hu (1 of 2)\n", loport); break; } } for (hiport = prtspexp->hiport; hiport != 0; hiport++) { /* XXX: improper wrap? */ rtp_t->dst.u.udp.port = htons(hiport); - if (nf_ct_expect_related(rtp_exp) == 0) { + if (rtsp_nf_ct_expect_related(rtp_exp) == 0) { pr_debug("using port %hu (2 of 2)\n", hiport); break; }