pf: restyle pf_c2c/addr_test() to make them 'struct context' agnostic
PATCH v4 1/3 pf: restyle pf_c2c/addr_test() to make them 'struct context' agnostic
In the attempt of getting rid of any pf-inline.h file, we need to make sure that inline functions do not trigger any circular include dependency.
For this reason, avoid pf_c2c/addr_test() to be 'struct context' aware, so that pf-inline.h does not need to rely on the content of openvpn.h.
---
v1-v3: skipped
v4: this is the first version of this patch, but named v4 for conveniency
src/openvpn/multi.c | 25 ++++++++++++++++++------- src/openvpn/pf-inline.h | 16 ++++++++++------ src/openvpn/pf.c | 6 +++++- 3 files changed, 33 insertions(+), 14 deletions(-)
src/openvpn/multi.c +18 -7
@@ -2233,7 +2233,10 @@ multi_bcast(struct multi_context *m,#ifdef ENABLE_PF if (sender_instance) { -if (!pf_c2c_test (&sender_instance->context, &mi->context,"bcast_c2c" )) +if (!pf_c2c_test (&sender_instance->context.c2.pf, + &sender_instance->context, + &mi->context.c2.pf, &mi->context, +"bcast_c2c" )) { msg(D_PF_DROPPED_BCAST, "PF: client[%s] -> client[%s] packet dropped by BCAST packet filter", mi_prefix(sender_instance),
@@ -2243,7 +2246,8 @@ multi_bcast(struct multi_context *m, }if (sender_addr) { -if (!pf_addr_test (&mi->context, sender_addr,"bcast_src_addr" )) +if (!pf_addr_test (&mi->context.c2.pf, &mi->context, + sender_addr,"bcast_src_addr" )) {struct gc_arena gc =gc_new (); msg(D_PF_DROPPED_BCAST, "PF: addr[%s] -> client[%s] packet dropped by BCAST packet filter",
@@ -2602,7 +2606,8 @@ multi_process_incoming_link(struct multi_context *m, struct multi_instance *instif (mi) {#ifdef ENABLE_PF -if (!pf_c2c_test (c, &mi->context,"tun_c2c" )) +if (!pf_c2c_test (&c->c2.pf, c, &mi->context.c2.pf, + &mi->context,"tun_c2c" )) {msg (D_PF_DROPPED ,"PF: client -> client[%s] packet dropped by TUN packet filter" ,mi_prefix (mi));
@@ -2618,7 +2623,8 @@ multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst } }#ifdef ENABLE_PF -if (c->c2.to_tun.len && !pf_addr_test (c, &dest,"tun_dest_addr" )) +if (c->c2.to_tun.len && !pf_addr_test (&c->c2.pf, c, &dest, +"tun_dest_addr" )) {msg (D_PF_DROPPED ,"PF: client -> addr[%s] packet dropped by TUN packet filter" ,mroute_addr_print_ex (&dest,MAPF_SHOW_ARP , &gc));
@@ -2663,7 +2669,10 @@ multi_process_incoming_link(struct multi_context *m, struct multi_instance *instif (mi) {#ifdef ENABLE_PF -if (!pf_c2c_test (c, &mi->context,"tap_c2c" )) +if (!pf_c2c_test (&c->c2.pf, c, + &mi->context.c2.pf, + &mi->context, +"tap_c2c" )) {msg (D_PF_DROPPED ,"PF: client -> client[%s] packet dropped by TAP packet filter" ,mi_prefix (mi));
@@ -2679,7 +2688,9 @@ multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst } }#ifdef ENABLE_PF -if (c->c2.to_tun.len && !pf_addr_test (c, &edest,"tap_dest_addr" )) +if (c->c2.to_tun.len && !pf_addr_test (&c->c2.pf, c, + &edest, +"tap_dest_addr" )) {msg (D_PF_DROPPED ,"PF: client -> addr[%s] packet dropped by TAP packet filter" ,mroute_addr_print_ex (&edest,MAPF_SHOW_ARP , &gc));
@@ -2792,7 +2803,7 @@ multi_process_incoming_tun(struct multi_context *m, const unsigned int mpp_flagsset_prefix (m->pending);#ifdef ENABLE_PF -if (!pf_addr_test (c, e2,"tun_tap_src_addr" )) +if (!pf_addr_test (&c->c2.pf, c, e2,"tun_tap_src_addr" )) {msg (D_PF_DROPPED ,"PF: addr[%s] -> client packet dropped by packet filter" ,mroute_addr_print_ex (&src,MAPF_SHOW_ARP , &gc));
src/openvpn/pf-inline.h +10 -6
@@ -31,20 +31,24 @@#define PCT_SRC 1#define PCT_DEST 2static inline bool -pf_c2c_test (const struct context *src,const struct context *dest,const char *prefix) +pf_c2c_test (const struct pf_context *src_pf,const struct context *src, +const struct pf_context *dest_pf,const struct context *dest, +const char *prefix) { -bool pf_cn_test (struct pf_set *pfs,const struct tls_multi *tm,const int type,const char *prefix); +bool pf_cn_test (const struct context *src,const struct context *dest, +const int type,const char *prefix); -return (!src->c2.pf.enabled ||pf_cn_test (src->c2.pf.pfs, dest->c2.tls_multi,PCT_DEST , prefix)) - && (!dest->c2.pf.enabled ||pf_cn_test (dest->c2.pf.pfs, src->c2.tls_multi,PCT_SRC , prefix)); +return (!src_pf->enabled ||pf_cn_test (src, dest,PCT_DEST , prefix)) + && (!dest_pf->enabled ||pf_cn_test (dest, src,PCT_SRC , prefix)); }static inline bool -pf_addr_test (const struct context *src,const struct mroute_addr *dest,const char *prefix) +pf_addr_test (const struct pf_context *src_pf,const struct context *src, +const struct mroute_addr *dest,const char *prefix) {bool pf_addr_test_dowork (const struct context *src,const struct mroute_addr *dest,const char *prefix); -if (src->c2.pf.enabled) +if (src_pf->enabled) {return pf_addr_test_dowork (src, dest, prefix); }
src/openvpn/pf.c +5 -1
@@ -442,8 +442,12 @@ lookup_cn_rule(struct hash *h, const char *cn, const uint32_t cn_hash) }bool -pf_cn_test (struct pf_set *pfs,const struct tls_multi *tm,const int type,const char *prefix) +pf_cn_test (const struct context *src,const struct context *dest, +const int type,const char *prefix) { +struct pf_set *pfs = src->c2.pf.pfs; +struct tls_multi *tm = dest->c2.tls_multi; +if (pfs && !pfs->kill) {const char *cn;
Signature · 1 line
2.14.1
PATCH v4 2/3 merge *-inline.h files with their main header
*-inline.h files are not very useful anymore.
In the attempt of cleaning up the code some more,
merge them into their main header files.
No functional change is part of this patch.
---
v4: pf_c2c/addr_test() has been made static again
src/openvpn/Makefile.am | 8 +- src/openvpn/forward-inline.h | 341 ------------------------------------ src/openvpn/forward.c | 6 +- src/openvpn/forward.h | 319 ++++++++++++++++++++++++++++++++- src/openvpn/init.c | 4 +- src/openvpn/mtcp.c | 2 +- src/openvpn/mudp.c | 2 +- src/openvpn/multi.c | 4 +- src/openvpn/occ-inline.h | 95 ---------- src/openvpn/occ.c | 4 +- src/openvpn/occ.h | 61 +++++++ src/openvpn/openvpn.c | 2 - src/openvpn/openvpn.h | 2 +- src/openvpn/openvpn.vcxproj | 4 - src/openvpn/openvpn.vcxproj.filters | 12 -- src/openvpn/pf.c | 2 +- src/openvpn/pf.h | 38 ++++ src/openvpn/ping-inline.h | 64 ------- src/openvpn/ping.c | 1 - src/openvpn/ping.h | 37 ++++ 20 files changed, 468 insertions(+), 540 deletions(-) delete mode 100644 src/openvpn/forward-inline.h delete mode 100644 src/openvpn/occ-inline.h delete mode 100644 src/openvpn/ping-inline.h
src/openvpn/Makefile.am +4 -4
@@ -55,7 +55,7 @@ openvpn_SOURCES = \ error.c error.h \ event.c event.h \ fdmisc.c fdmisc.h \ - forward.c forward.h forward-inline.h \ + forward.c forward.h \ fragment.c fragment.h \ gremlin.c gremlin.h \ helper.c helper.h \
@@ -80,7 +80,7 @@ openvpn_SOURCES = \ mudp.c mudp.h \ multi.c multi.h \ ntlm.c ntlm.h \ - occ.c occ.h occ-inline.h \ + occ.c occ.h \ openssl_compat.h \ pkcs11.c pkcs11.h pkcs11_backend.h \ pkcs11_openssl.c \
@@ -90,8 +90,8 @@ openvpn_SOURCES = \ otime.c otime.h \ packet_id.c packet_id.h \ perf.c perf.h \ - pf.c pf.h pf-inline.h \ - ping.c ping.h ping-inline.h \ + pf.c pf.h \ + ping.c ping.h \ plugin.c plugin.h \ pool.c pool.h \ proto.c proto.h \
src/openvpn/forward-inline.h deleted +0 -341
341 lines not on this page · raw message
src/openvpn/forward.c +3 -3
@@ -35,6 +35,9 @@#include "gremlin.h" #include "mss.h" #include "event.h" +#include "occ.h" +#include "pf.h" +#include "ping.h" #include "ps.h" #include "dhcp.h" #include "common.h"
@@ -42,9 +45,6 @@#include "memdbg.h" -#include "forward-inline.h" -#include "occ-inline.h" -#include "ping-inline.h" #include "mstats.h" counter_type link_read_bytes_global;/* GLOBAL */
src/openvpn/forward.h +316 -3
335 lines not on this page · raw message
src/openvpn/init.c +2 -2
@@ -41,6 +41,7 @@#include "otime.h" #include "pool.h" #include "gremlin.h" +#include "occ.h" #include "pkcs11.h" #include "ps.h" #include "lladdr.h"
@@ -48,11 +49,10 @@#include "mstats.h" #include "ssl_verify.h" #include "tls_crypt.h" -#include "forward-inline.h" +#include "forward.h" #include "memdbg.h" -#include "occ-inline.h" static struct context *static_context;/* GLOBAL */
src/openvpn/mtcp.c +1 -1
@@ -32,7 +32,7 @@#if P2MP_SERVER #include "multi.h" -#include "forward-inline.h" +#include "forward.h" #include "memdbg.h"
src/openvpn/mudp.c +1 -1
@@ -33,7 +33,7 @@#include "multi.h" #include <inttypes.h> -#include "forward-inline.h" +#include "forward.h" #include "memdbg.h"
src/openvpn/multi.c +2 -2
@@ -36,10 +36,12 @@#if P2MP_SERVER +#include "forward.h" #include "multi.h" #include "push.h" #include "misc.h" #include "otime.h" +#include "pf.h" #include "gremlin.h" #include "mstats.h" #include "ssl_verify.h"
@@ -47,8 +49,6 @@#include "memdbg.h" -#include "forward-inline.h" -#include "pf-inline.h" /*#define MULTI_DEBUG_EVENT_LOOP*/
src/openvpn/occ-inline.h deleted +0 -95
95 lines not on this page · raw message
src/openvpn/occ.c +1 -3
@@ -32,11 +32,9 @@#ifdef ENABLE_OCC #include "occ.h" - +#include "forward.h" #include "memdbg.h" -#include "forward-inline.h" -#include "occ-inline.h" /* * This random string identifies an OpenVPN
src/openvpn/occ.h +61 -0
66 lines not on this page · raw message
src/openvpn/openvpn.c +0 -2
@@ -37,8 +37,6 @@#include "memdbg.h" -#include "forward-inline.h" -#define P2P_CHECK_SIG () EVENT_LOOP_CHECK_SIGNAL(c, process_signal_p2p, c); static bool
src/openvpn/openvpn.h +1 -1
@@ -42,10 +42,10 @@#include "sig.h" #include "misc.h" #include "mbuf.h" +#include "pf.h" #include "pool.h" #include "plugin.h" #include "manage.h" -#include "pf.h" /* * Our global key schedules, packaged thusly
src/openvpn/openvpn.vcxproj +0 -4
@@ -193,7 +193,6 @@ <ClInclude Include="error.h" /> <ClInclude Include="event.h" /> <ClInclude Include="fdmisc.h" /> - <ClInclude Include="forward-inline.h" /> <ClInclude Include="forward.h" /> <ClInclude Include="fragment.h" /> <ClInclude Include="gremlin.h" />
@@ -217,16 +216,13 @@ <ClInclude Include="mudp.h" /> <ClInclude Include="multi.h" /> <ClInclude Include="ntlm.h" /> - <ClInclude Include="occ-inline.h" /> <ClInclude Include="occ.h" /> <ClInclude Include="openvpn.h" /> <ClInclude Include="options.h" /> <ClInclude Include="otime.h" /> <ClInclude Include="packet_id.h" /> <ClInclude Include="perf.h" /> - <ClInclude Include="pf-inline.h" /> <ClInclude Include="pf.h" /> - <ClInclude Include="ping-inline.h" /> <ClInclude Include="ping.h" /> <ClInclude Include="pkcs11.h" /> <ClInclude Include="pkcs11_backend.h" />
src/openvpn/openvpn.vcxproj.filters +0 -12
@@ -284,9 +284,6 @@ <ClInclude Include="fdmisc.h"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="forward-inline.h"> - <Filter>Header Files</Filter> - </ClInclude> <ClInclude Include="forward.h"> <Filter>Header Files</Filter> </ClInclude>
@@ -356,9 +353,6 @@ <ClInclude Include="ntlm.h"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="occ-inline.h"> - <Filter>Header Files</Filter> - </ClInclude> <ClInclude Include="occ.h"> <Filter>Header Files</Filter> </ClInclude>
@@ -377,15 +371,9 @@ <ClInclude Include="perf.h"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="pf-inline.h"> - <Filter>Header Files</Filter> - </ClInclude> <ClInclude Include="pf.h"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="ping-inline.h"> - <Filter>Header Files</Filter> - </ClInclude> <ClInclude Include="ping.h"> <Filter>Header Files</Filter> </ClInclude>
src/openvpn/pf.c +1 -1
@@ -35,9 +35,9 @@#include "init.h" #include "memdbg.h" +#include "pf.h" #include "ssl_verify.h" -#include "pf-inline.h" static void pf_destroy (struct pf_set *pfs)
src/openvpn/pf.h +38 -0
@@ -31,6 +31,9 @@#define PF_MAX_LINE_LEN 256 +#define PCT_SRC 1 +#define PCT_DEST 2 +struct context ;struct ipv4_subnet {
@@ -101,4 +104,39 @@ void pf_context_print(const struct pf_context *pfc, const char *prefix, const in#endif +bool pf_addr_test_dowork (const struct context *src, +const struct mroute_addr *dest,const char *prefix); + +static inline bool +pf_addr_test (const struct pf_context *src_pf,const struct context *src, +const struct mroute_addr *dest,const char *prefix) +{ +if (src_pf->enabled) + { +return pf_addr_test_dowork (src, dest, prefix); + } +else + { +return true; + } +} + +bool pf_cn_test (const struct context *src,const struct context *dest, +const int type,const char *prefix); + +static inline bool +pf_c2c_test (const struct pf_context *src_pf,const struct context *src, +const struct pf_context *dest_pf,const struct context *dest, +const char *prefix) +{ +return (!src_pf->enabled ||pf_cn_test (src, dest,PCT_DEST , prefix)) + && (!dest_pf->enabled ||pf_cn_test (dest, src,PCT_SRC , prefix)); +} + +static inline bool +pf_kill_test (const struct pf_set *pfs) +{ +return pfs->kill; +} +#endif /* if defined(ENABLE_PF) && !defined(OPENVPN_PF_H) */
src/openvpn/ping-inline.h deleted +0 -64
64 lines not on this page · raw message
src/openvpn/ping.c +0 -1
@@ -33,7 +33,6 @@#include "memdbg.h" -#include "ping-inline.h" /* * This random string identifies an OpenVPN ping packet.
src/openvpn/ping.h +37 -0
@@ -43,4 +43,41 @@ is_ping_msg(const struct buffer *buf) return buf_string_match(buf, ping_string, PING_STRING_SIZE); } +/* +* Should we exit or restart due to ping (or other authenticated packet) +* not received in n seconds? +*/ +static inline void +check_ping_restart (struct context *c) +{ +void check_ping_restart_dowork (struct context *c); + +if (c->options.ping_rec_timeout + &&event_timeout_trigger (&c->c2.ping_rec_interval, + &c->c2.timeval, + (!c->options.ping_timer_remote + ||link_socket_actual_defined (&c->c1.link_socket_addr.actual)) + ?ETT_DEFAULT :15 )) + { +check_ping_restart_dowork (c); + } +} + +/* +* Should we ping the remote? +*/ +static inline void +check_ping_send (struct context *c) +{ +void check_ping_send_dowork (struct context *c); + +if (c->options.ping_send_timeout + &&event_timeout_trigger (&c->c2.ping_send_interval, + &c->c2.timeval, + !TO_LINK_DEF (c) ?ETT_DEFAULT :1 )) + { +check_ping_send_dowork (c); + } +} +#endif
Signature · 1 line
2.14.1
PATCH v4 3/3 ensure function declarations are compiled with their definitions
In reply to Antonio QuartulliFrom: Antonio Quartulli <[email protected]...>
Function prototypes should be included when compiling their definitions so that it is clear to compilers and static analyzers that they are not static.
This means that several declarations have to be moved to the related header files which in turn have to be included by the source files implementing them.
Generally speaking this also improves the coding style and makes this code more consistent with the rest that already follows this rule.
---
v4: rebased and erroneous conflict markers removed
src/openvpn/crypto.h | 8 ++++++++ src/openvpn/error.c | 8 +------- src/openvpn/forward.h | 35 +++++++++++++++++++++++++++++++++++ src/openvpn/fragment.c | 1 + src/openvpn/gremlin.c | 1 + src/openvpn/init.h | 2 ++ src/openvpn/lladdr.c | 1 + src/openvpn/manage.h | 10 +++++----- src/openvpn/mbuf.h | 4 ++-- src/openvpn/misc.h | 8 -------- src/openvpn/mroute.h | 20 ++++++++++---------- src/openvpn/multi.h | 7 +++---- src/openvpn/occ.h | 16 ++++++++++------ src/openvpn/pf.h | 7 +++++++ src/openvpn/ping.h | 4 ++++ src/openvpn/plugin.h | 2 ++ src/openvpn/socket.h | 13 +++++++------ 17 files changed, 99 insertions(+), 48 deletions(-)
src/openvpn/crypto.h +8 -0
@@ -459,6 +459,9 @@ void prng_bytes(uint8_t *output, int len);void prng_uninit (void ); +/* an analogue to the random() function, but use prng_bytes */ +long int get_random (void ); +void test_crypto (struct crypto_options *co,struct frame *f);
@@ -514,5 +517,10 @@ key_ctx_bi_defined(const struct key_ctx_bi *key) } +#else + +/* use plain random is no crypto support is compiled */ +#define get_random random +#endif /* ENABLE_CRYPTO */ #endif /* CRYPTO_H */
src/openvpn/error.c +1 -7
@@ -31,6 +31,7 @@#include "error.h" #include "buffer.h" +#include "init.h" #include "misc.h" #include "win32.h" #include "socket.h"
@@ -734,13 +735,6 @@ openvpn_exit(const int status) {if (!forked) { -void tun_abort (); - -#ifdef ENABLE_PLUGIN -void plugin_abort (void ); - -#endif -tun_abort ();#ifdef _WIN32
src/openvpn/forward.h +35 -0
@@ -63,6 +63,41 @@#define IOW_READ (IOW_READ_TUN|IOW_READ_LINK) +extern counter_type link_read_bytes_global; + +extern counter_type link_write_bytes_global; + +#ifdef ENABLE_CRYPTO +void check_tls_dowork (struct context *c); + +void check_tls_errors_co (struct context *c); + +void check_tls_errors_nco (struct context *c); +#endif /* ENABLE_CRYPTO */ + +#if P2MP +void check_incoming_control_channel_dowork (struct context *c); + +void check_scheduled_exit_dowork (struct context *c); + +void check_push_request_dowork (struct context *c); +#endif /* P2MP */ + +#ifdef ENABLE_FRAGMENT +void check_fragment_dowork (struct context *c); +#endif /* ENABLE_FRAGMENT */ + +void check_connection_established_dowork (struct context *c); + +void check_add_routes_dowork (struct context *c); + +void check_inactivity_timeout_dowork (struct context *c); + +void check_server_poll_timeout_dowork (struct context *c); + +void check_status_file_dowork (struct context *c); + +void io_wait_dowork (struct context *c,const unsigned int flags);void pre_select (struct context *c);
src/openvpn/fragment.c +1 -0
@@ -31,6 +31,7 @@#ifdef ENABLE_FRAGMENT +#include "crypto.h" #include "misc.h" #include "fragment.h" #include "integer.h"
src/openvpn/gremlin.c +1 -0
@@ -38,6 +38,7 @@#include "error.h" #include "common.h" +#include "crypto.h" #include "misc.h" #include "otime.h" #include "gremlin.h"
src/openvpn/init.h +2 -0
@@ -140,4 +140,6 @@ void open_plugins(struct context *c, const bool import_options, int init_point);#endif +void tun_abort (void ); +#endif /* ifndef INIT_H */
src/openvpn/lladdr.c +1 -0
@@ -11,6 +11,7 @@#include "syshead.h" #include "error.h" #include "misc.h" +#include "lladdr.h" int set_lladdr(const char *ifname, const char *lladdr,
src/openvpn/manage.h +5 -5
@@ -583,17 +583,17 @@ management_bytes_in(struct management *man, const int size)#ifdef MANAGEMENT_DEF_AUTH +void man_bytecount_output_server (struct management *man, +const counter_type *bytes_in_total, +const counter_type *bytes_out_total, +struct man_def_auth_context *mdac); +static inline void management_bytes_server (struct management *man,const counter_type *bytes_in_total,const counter_type *bytes_out_total,struct man_def_auth_context *mdac) { -void man_bytecount_output_server (struct management *man, -const counter_type *bytes_in_total, -const counter_type *bytes_out_total, -struct man_def_auth_context *mdac); -if (man->connection.bytecount_update_seconds >0 && now >= mdac->bytecount_last_update + man->connection.bytecount_update_seconds && (mdac->flags & (DAF_CONNECTION_ESTABLISHED |DAF_CONNECTION_CLOSED )) ==DAF_CONNECTION_ESTABLISHED )
src/openvpn/mbuf.h +2 -2
@@ -96,11 +96,11 @@ mbuf_maximum_queued(const struct mbuf_set *ms)return (int ) ms->max_queued; } +struct multi_instance *mbuf_peek_dowork (struct mbuf_set *ms); +static inline struct multi_instance *mbuf_peek (struct mbuf_set *ms) { -struct multi_instance *mbuf_peek_dowork (struct mbuf_set *ms); -if (mbuf_defined (ms)) {return mbuf_peek_dowork (ms);
src/openvpn/misc.h +0 -8
@@ -142,14 +142,6 @@ const char **make_arg_array(const char *first, const char *parms, struct gc_arenconst char **make_extended_arg_array (char **p,struct gc_arena *gc); -/* an analogue to the random() function, but use OpenSSL functions if available */ -#ifdef ENABLE_CRYPTO -long int get_random (void ); - -#else -#define get_random random -#endif -/* return true if filename can be opened for read */ bool test_file (const char *filename);
src/openvpn/mroute.h +10 -10
@@ -169,6 +169,16 @@ void mroute_helper_add_iroute46(struct mroute_helper *mh, int netbits);void mroute_helper_del_iroute46 (struct mroute_helper *mh,int netbits); +unsigned int mroute_extract_addr_ip (struct mroute_addr *src, +struct mroute_addr *dest, +const struct buffer *buf); + +unsigned int mroute_extract_addr_ether (struct mroute_addr *src, +struct mroute_addr *dest, +struct mroute_addr *esrc, +struct mroute_addr *edest, +const struct buffer *buf); +/* * Given a raw packet in buf, return the src and dest * addresses of the packet.
@@ -181,16 +191,6 @@ mroute_extract_addr_from_packet(struct mroute_addr *src,const struct buffer *buf, int tunnel_type) { - unsigned int mroute_extract_addr_ip(struct mroute_addr *src, -struct mroute_addr *dest, -const struct buffer *buf); - -unsigned int mroute_extract_addr_ether (struct mroute_addr *src, -struct mroute_addr *dest, -struct mroute_addr *esrc, -struct mroute_addr *edest, -const struct buffer *buf); - unsigned int ret = 0;verify_align_4 (buf);if (tunnel_type ==DEV_TYPE_TUN )
src/openvpn/multi.h +3 -4
@@ -536,11 +536,12 @@ clear_prefix(void)*/ #define MULTI_CACHE_ROUTE_TTL 60 +void multi_reap_process_dowork (const struct multi_context *m); +void multi_process_per_second_timers_dowork (struct multi_context *m); +static inline void multi_reap_process (const struct multi_context *m) { -void multi_reap_process_dowork (const struct multi_context *m); -if (m->reaper->last_call != now) {multi_reap_process_dowork (m);
@@ -552,8 +553,6 @@ multi_process_per_second_timers(struct multi_context *m) {if (m->per_second_trigger != now) { -void multi_process_per_second_timers_dowork (struct multi_context *m); -multi_process_per_second_timers_dowork (m); m->per_second_trigger = now; }
src/openvpn/occ.h +10 -6
@@ -90,6 +90,16 @@ is_occ_msg(const struct buffer *buf)void process_received_occ_msg (struct context *c); +void check_send_occ_req_dowork (struct context *c); + +void check_send_occ_load_test_dowork (struct context *c); + +void check_send_occ_msg_dowork (struct context *c); + +/* +* Inline functions +*/ +static inline int occ_reset_op (void ) {
@@ -102,8 +112,6 @@ occ_reset_op(void) static inline void check_send_occ_req(struct context *c) { - void check_send_occ_req_dowork(struct context *c); - if (event_timeout_defined(&c->c2.occ_interval) && event_timeout_trigger(&c->c2.occ_interval, &c->c2.timeval,
@@ -119,8 +127,6 @@ check_send_occ_req(struct context *c) static inline void check_send_occ_load_test(struct context *c) { - void check_send_occ_load_test_dowork(struct context *c); - if (event_timeout_defined(&c->c2.occ_mtu_load_test_interval) && event_timeout_trigger(&c->c2.occ_mtu_load_test_interval, &c->c2.timeval,
@@ -136,8 +142,6 @@ check_send_occ_load_test(struct context *c)static inline void check_send_occ_msg (struct context *c) { -void check_send_occ_msg_dowork (struct context *c); -if (c->c2.occ_op >=0 ) {if (!TO_LINK_DEF (c))
src/openvpn/pf.h +7 -0
@@ -121,6 +121,13 @@ pf_addr_test(const struct pf_context *src_pf, const struct context *src, } } +/* +* Inline functions +*/ + +#define PCT_SRC 1 +#define PCT_DEST 2 +bool pf_cn_test (const struct context *src,const struct context *dest,const int type,const char *prefix);
src/openvpn/ping.h +4 -0
@@ -43,6 +43,10 @@ is_ping_msg(const struct buffer *buf)return buf_string_match (buf, ping_string,PING_STRING_SIZE ); } +void check_ping_restart_dowork (struct context *c); + +void check_ping_send_dowork (struct context *c); +/* * Should we exit or restart due to ping (or other authenticated packet) * not received in n seconds?
src/openvpn/plugin.h +2 -0
@@ -215,4 +215,6 @@ plugin_call(const struct plugin_list *pl, ); } +void plugin_abort (void ); +#endif /* OPENVPN_PLUGIN_H */
src/openvpn/socket.h +7 -6
@@ -1009,11 +1009,11 @@ void stream_buf_close(struct stream_buf *sb);bool stream_buf_added (struct stream_buf *sb,int length_added); +bool stream_buf_read_setup_dowork (struct link_socket *sock); +static inline bool stream_buf_read_setup (struct link_socket *sock) { -bool stream_buf_read_setup_dowork (struct link_socket *sock); -if (link_socket_connection_oriented (sock)) {return stream_buf_read_setup_dowork (sock);
@@ -1118,16 +1118,17 @@ link_socket_write_win32(struct link_socket *sock,#else /* ifdef _WIN32 */ +size_t link_socket_write_udp_posix_sendmsg (struct link_socket *sock, +struct buffer *buf, +struct link_socket_actual *to); + +static inline size_t link_socket_write_udp_posix (struct link_socket *sock,struct buffer *buf,struct link_socket_actual *to) {#if ENABLE_IP_PKTINFO -size_t link_socket_write_udp_posix_sendmsg (struct link_socket *sock, -struct buffer *buf, -struct link_socket_actual *to); -if (proto_is_udp (sock->info.proto) && (sock->sockflags &SF_USE_IP_PKTINFO ) &&addr_defined_ipi (to)) {
Signature · 1 line
2.14.1
Hi,
Quoted 26 lines · Antonio Quartulli
In the attempt of getting rid of any
pf-inline.hfile, we need to make sure that inline functions do not trigger any circular include dependency.For this reason, avoid pf_c2c/addr_test() to be 'struct context' aware, so that
pf-inline.hdoes not need to rely on the content ofopenvpn.h.Cc Steffan Karger <[email protected]...>Signed-off-by Antonio Quartulli <[email protected]...>---
v1-v3: skipped
v4: this is the first version of this patch, but named v4 for conveniencysrc/openvpn/multi.c | 25 ++++++++++++++++++------- src/openvpn/pf-inline.h | 16 ++++++++++------ src/openvpn/pf.c | 6 +++++- 3 files changed, 33 insertions(+), 14 deletions(-)src/openvpn/multi.c +0
-0
src/openvpn/multi.c multi_bcast(struct multi_context *m, · line 2236
Quoted 4 lines
src/openvpn/multi.c +0
-1@@ -2233,7 +2233,10 @@ multi_bcast(struct multi_context *m,#ifdef ENABLE_PF if (sender_instance) { - if (!pf_c2c_test(&sender_instance->context,
&mi->context, "bcast_c2c"))
src/openvpn/multi.c multi_bcast(struct multi_context *m,
Quoted 6 lines
src/openvpn/multi.c +4
-0+if (!pf_c2c_test (&sender_instance->context.c2.pf, + &sender_instance->context, + &mi->context.c2.pf, &mi->context, +"bcast_c2c" )) { msg(D_PF_DROPPED_BCAST, "PF: client[%s] ->
client[%s] packet dropped by BCAST packet filter",
src/openvpn/multi.c multi_bcast(struct multi_context *m, · line 2246
Quoted 6 lines
src/openvpn/multi.c +0
-1mi_prefix(sender_instance),@@ -2243,7 +2246,8 @@ multi_bcast(struct multi_context *m, }if (sender_addr) { - if (!pf_addr_test(&mi->context, sender_addr,
"bcast_src_addr"))
src/openvpn/multi.c multi_bcast(struct multi_context *m,
Quoted 5 lines
src/openvpn/multi.c +2
-0+if (!pf_addr_test (&mi->context.c2.pf, &mi->context, + sender_addr,"bcast_src_addr" )) {struct gc_arena gc =gc_new (); msg(D_PF_DROPPED_BCAST, "PF: addr[%s] ->
client[%s] packet dropped by BCAST packet filter",
src/openvpn/multi.c multi_process_incoming_link(struct multi_context
Quoted 1 line
src/openvpn/multi.c +0
-0@@ -2602,7 +2606,8 @@ multi_process_incoming_link(struct multi_context
*m, struct multi_instance *inst
src/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst
Quoted 5 lines
src/openvpn/multi.c +1
-1if (mi) { #ifdef ENABLE_PF -if (!pf_c2c_test (c, &mi->context,"tun_c2c" )) + if (!pf_c2c_test(&c->c2.pf, c,
&mi->context.c2.pf,
src/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst
Quoted 3 lines
src/openvpn/multi.c +1
-0+ &mi->context, "tun_c2c")) { msg(D_PF_DROPPED, "PF: client ->
client[%s] packet dropped by TUN packet filter",
src/openvpn/multi.c multi_process_incoming_link(struct multi_context
Quoted 2 lines
src/openvpn/multi.c +0
-0mi_prefix(mi));@@ -2618,7 +2623,8 @@ multi_process_incoming_link(struct multi_context
*m, struct multi_instance *inst
src/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst
Quoted 4 lines
src/openvpn/multi.c +0
-1} }#ifdef ENABLE_PF - if (c->c2.to_tun.len && !pf_addr_test(c, &dest,
"tun_dest_addr"))
src/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst · line 2691
Quoted 1 line
src/openvpn/multi.c +1
-0+ if (c->c2.to_tun.len && !pf_addr_test(&c->c2.pf, c,
&dest,
src/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst
Quoted 3 lines
src/openvpn/multi.c +1
-0+ "tun_dest_addr")) { msg(D_PF_DROPPED, "PF: client -> addr[%s] packet
dropped by TUN packet filter",
src/openvpn/multi.c multi_process_incoming_link(struct
Quoted 2 lines
src/openvpn/multi.c +0
-0mroute_addr_print_ex(&dest, MAPF_SHOW_ARP, &gc));@@ -2663,7 +2669,10 @@ multi_process_incoming_link(struct
multi_context *m, struct multi_instance *inst
src/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst
Quoted 4 lines
src/openvpn/multi.c +0
-1if (mi) {#ifdef ENABLE_PF - if (!pf_c2c_test(c, &mi->context,
"tap_c2c"))
src/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst
Quoted 6 lines
src/openvpn/multi.c +4
-0+if (!pf_c2c_test (&c->c2.pf, c, + &mi->context.c2.pf, + &mi->context, +"tap_c2c" )) { msg(D_PF_DROPPED, "PF: client
-> client[%s] packet dropped by TAP packet filter",
src/openvpn/multi.c multi_process_incoming_link(struct multi_context
Quoted 2 lines
src/openvpn/multi.c +0
-0mi_prefix(mi));@@ -2679,7 +2688,9 @@ multi_process_incoming_link(struct multi_context
*m, struct multi_instance *inst
src/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst
Quoted 4 lines
src/openvpn/multi.c +0
-1} }#ifdef ENABLE_PF - if (c->c2.to_tun.len && !pf_addr_test(c,
&edest, "tap_dest_addr"))
src/openvpn/multi.c multi_process_incoming_link(struct multi_context · line 2691
Quoted 1 line
src/openvpn/multi.c +1
-0+ if (c->c2.to_tun.len &&
!pf_addr_test(&c->c2.pf, c,
src/openvpn/multi.c multi_process_incoming_link(struct multi_context · line 2693
Quoted 2 lines
src/openvpn/multi.c +2
-0+ &edest, +
"tap_dest_addr"))
src/openvpn/multi.c multi_process_incoming_link(struct multi_context · line 2695
Quoted 2 lines
src/openvpn/multi.c +0
-0{ msg(D_PF_DROPPED, "PF: client -> addr[%s]
packet dropped by TAP packet filter",
src/openvpn/multi.c multi_process_incoming_link(struct multi_context · line 2696
Quoted 1 line
src/openvpn/multi.c +0
-0mroute_addr_print_ex(&edest,
MAPF_SHOW_ARP, &gc));
src/openvpn/multi.c multi_process_incoming_tun(struct multi_context
Quoted 1 line
src/openvpn/multi.c +0
-0@@ -2792,7 +2803,7 @@ multi_process_incoming_tun(struct multi_context
*m, const unsigned int mpp_flags
src/openvpn/multi.c multi_process_incoming_tun(struct multi_context *m, const unsigned int mpp_flags
Quoted 5 lines
src/openvpn/multi.c +1
-1set_prefix (m->pending); #ifdef ENABLE_PF -if (!pf_addr_test (c, e2,"tun_tap_src_addr" )) + if (!pf_addr_test(&c->c2.pf, c, e2,
"tun_tap_src_addr"))
src/openvpn/multi.c multi_process_incoming_tun(struct multi_context · line 2808
Quoted 2 lines
src/openvpn/multi.c +0
-0{ msg(D_PF_DROPPED, "PF: addr[%s] -> client
packet dropped by packet filter",
src/openvpn/multi.c multi_process_incoming_tun(struct multi_context · line 2809
Quoted 1 line
src/openvpn/multi.c +0
-0mroute_addr_print_ex(&src, MAPF_SHOW_ARP,
&gc));
src/openvpn/pf-inline.h line 34
Quoted 9 lines
src/openvpn/pf-inline.h +0
-1@@ -31,20 +31,24 @@#define PCT_SRC 1#define PCT_DEST 2 static inline bool -pf_c2c_test(const struct context *src, const struct context *dest,
const char *prefix)
src/openvpn/pf-inline.h line 36
Quoted 3 lines
src/openvpn/pf-inline.h +3
-0+pf_c2c_test(const struct pf_context *src_pf, const struct context *src, + const struct pf_context *dest_pf, const struct context *dest, + const char *prefix)
If you make this function take a const struct tls_multi * as 2nd and 4th argument, you don't have to change the pf_cn_test function prototype (and it doesn't have to know about struct context internals, which is useful for testing modules separately).
src/openvpn/pf-inline.h line 36
Quoted 2 lines
src/openvpn/pf-inline.h +0
-1{ - bool pf_cn_test(struct pf_set *pfs, const struct tls_multi *tm,
const int type, const char *prefix);
src/openvpn/pf-inline.h line 38
Quoted 1 line
src/openvpn/pf-inline.h +1
-0+ bool pf_cn_test(const struct context *src, const struct context
*dest,
src/openvpn/pf-inline.h
Quoted 3 lines
src/openvpn/pf-inline.h +1
-1+ const int type, const char *prefix); - return (!src->c2.pf.enabled || pf_cn_test(src->c2.pf.pfs,
dest->c2.tls_multi, PCT_DEST, prefix))
src/openvpn/pf-inline.h line 39
Quoted 1 line
src/openvpn/pf-inline.h +0
-1- && (!dest->c2.pf.enabled || pf_cn_test(dest->c2.pf.pfs,
src->c2.tls_multi, PCT_SRC, prefix));
src/openvpn/pf-inline.h line 42
Quoted 2 lines
src/openvpn/pf-inline.h +2
-0+return (!src_pf->enabled ||pf_cn_test (src, dest,PCT_DEST , prefix)) + && (!dest_pf->enabled || pf_cn_test(dest, src, PCT_SRC,
prefix));
src/openvpn/pf-inline.h
Quoted 4 lines
src/openvpn/pf-inline.h +0
-1} static inline bool -pf_addr_test(const struct context *src, const struct mroute_addr
*dest, const char *prefix)
src/openvpn/pf-inline.h
Quoted 4 lines
src/openvpn/pf-inline.h +2
-0+pf_addr_test(const struct pf_context *src_pf, const struct context *src, + const struct mroute_addr *dest, const char *prefix) { bool pf_addr_test_dowork(const struct context *src, const struct
mroute_addr *dest, const char *prefix);
src/openvpn/pf.c lookup_cn_rule(struct hash *h, const char *cn,
Quoted 11 lines
src/openvpn/pf-inline.h +1
-1-if (src->c2.pf.enabled) +if (src_pf->enabled) {return pf_addr_test_dowork (src, dest, prefix); }src/openvpn/pf.c +0
-0@@ -442,8 +442,12 @@ lookup_cn_rule(struct hash *h, const char *cn,
const uint32_t cn_hash)
src/openvpn/pf.c lookup_cn_rule(struct hash *h, const char *cn, · line 445
Quoted 4 lines
src/openvpn/pf.c +0
-1}bool -pf_cn_test(struct pf_set *pfs, const struct tls_multi *tm, const int
type, const char *prefix)
src/openvpn/pf.c lookup_cn_rule(struct hash *h, const char *cn, const uint32_t cn_hash) · line 453
Quoted 10 lines
src/openvpn/pf.c +5
-0+pf_cn_test(const struct context *src, const struct context *dest, + const int type, const char *prefix) { + struct pf_set *pfs = src->c2.pf.pfs; +struct tls_multi *tm = dest->c2.tls_multi; +if (pfs && !pfs->kill) {const char *cn;
Otherwise this looks good to me.
-Steffan
Hi,
Quoted 136 lines · Steffan Karger
Hi,
Quoted 26 lines · Antonio Quartulli
In the attempt of getting rid of any
pf-inline.hfile, we need to make sure that inline functions do not trigger any circular include dependency.For this reason, avoid pf_c2c/addr_test() to be 'struct context' aware, so that
pf-inline.hdoes not need to rely on the content ofopenvpn.h.Cc Steffan Karger <[email protected]...>Signed-off-by Antonio Quartulli <[email protected]...>---
v1-v3: skipped
v4: this is the first version of this patch, but named v4 for conveniencysrc/openvpn/multi.c | 25 ++++++++++++++++++------- src/openvpn/pf-inline.h | 16 ++++++++++------ src/openvpn/pf.c | 6 +++++- 3 files changed, 33 insertions(+), 14 deletions(-)src/openvpn/multi.c +0
-0src/openvpn/multi.c multi_bcast(struct multi_context *m, · line 2236
Quoted 4 lines
src/openvpn/multi.c +0
-1@@ -2233,7 +2233,10 @@ multi_bcast(struct multi_context *m,#ifdef ENABLE_PF if (sender_instance) { - if (!pf_c2c_test(&sender_instance->context,
&mi->context, "bcast_c2c"))src/openvpn/multi.c multi_bcast(struct multi_context *m,
Quoted 6 lines
src/openvpn/multi.c +4
-0+if (!pf_c2c_test (&sender_instance->context.c2.pf, + &sender_instance->context, + &mi->context.c2.pf, &mi->context, +"bcast_c2c" )) { msg(D_PF_DROPPED_BCAST, "PF: client[%s] ->client[%s] packet dropped by BCAST packet filter",
src/openvpn/multi.c multi_bcast(struct multi_context *m, · line 2246
Quoted 6 lines
src/openvpn/multi.c +0
-1mi_prefix(sender_instance),@@ -2243,7 +2246,8 @@ multi_bcast(struct multi_context *m, }if (sender_addr) { - if (!pf_addr_test(&mi->context, sender_addr,"
bcast_src_addr"))src/openvpn/multi.c multi_bcast(struct multi_context *m,
Quoted 5 lines
src/openvpn/multi.c +2
-0+if (!pf_addr_test (&mi->context.c2.pf, &mi->context, + sender_addr,"bcast_src_addr" )) {struct gc_arena gc =gc_new (); msg(D_PF_DROPPED_BCAST, "PF: addr[%s] ->client[%s] packet dropped by BCAST packet filter",
src/openvpn/multi.c multi_process_incoming_link(struct multi_context
Quoted 1 line
src/openvpn/multi.c +0
-0@@ -2602,7 +2606,8 @@ multi_process_incoming_link(struct multi_context*m, struct
multi_instance*instsrc/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst
Quoted 5 lines
src/openvpn/multi.c +1
-1if (mi) { #ifdef ENABLE_PF -if (!pf_c2c_test (c, &mi->context,"tun_c2c" )) + if (!pf_c2c_test(&c->c2.pf, c,
&mi->context.c2.pf,src/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst
Quoted 3 lines
src/openvpn/multi.c +1
-0+ &mi->context, "tun_c2c")) { msg(D_PF_DROPPED, "PF: client ->client[%s] packet dropped by TUN packet filter",
src/openvpn/multi.c multi_process_incoming_link(struct multi_context
Quoted 2 lines
src/openvpn/multi.c +0
-0mi_prefix(mi));@@ -2618,7 +2623,8 @@ multi_process_incoming_link(struct multi_context*m, struct
multi_instance*instsrc/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst
Quoted 4 lines
src/openvpn/multi.c +0
-1} }#ifdef ENABLE_PF - if (c->c2.to_tun.len && !pf_addr_test(c, &dest,"
tun_dest_addr"))src/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst · line 2691
Quoted 1 line
src/openvpn/multi.c +1
-0+ if (c->c2.to_tun.len && !pf_addr_test(&c->c2.pf, c,&dest,
src/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst
Quoted 3 lines
src/openvpn/multi.c +1
-0+ "tun_dest_addr")) { msg(D_PF_DROPPED, "PF: client -> addr[%s] packetdropped by TUN packet filter",
src/openvpn/multi.c multi_process_incoming_link(struct
Quoted 2 lines
src/openvpn/multi.c +0
-0mroute_addr_print_ex(&dest, MAPF_SHOW_ARP, &gc));@@ -2663,7 +2669,10 @@ multi_process_incoming_link(struct
multi_context*m, structmulti_instance*instsrc/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst
Quoted 4 lines
src/openvpn/multi.c +0
-1if (mi) {#ifdef ENABLE_PF - if (!pf_c2c_test(c, &mi->context,"
tap_c2c"))src/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst
Quoted 6 lines
src/openvpn/multi.c +4
-0+if (!pf_c2c_test (&c->c2.pf, c, + &mi->context.c2.pf, + &mi->context, +"tap_c2c" )) { msg(D_PF_DROPPED, "PF: client-> client[%s] packet dropped by TAP packet filter",
src/openvpn/multi.c multi_process_incoming_link(struct multi_context
Quoted 2 lines
src/openvpn/multi.c +0
-0mi_prefix(mi));@@ -2679,7 +2688,9 @@ multi_process_incoming_link(struct multi_context*m, struct
multi_instance*instsrc/openvpn/multi.c multi_process_incoming_link(struct multi_context *m, struct multi_instance *inst
Quoted 4 lines
src/openvpn/multi.c +0
-1} }#ifdef ENABLE_PF - if (c->c2.to_tun.len && !pf_addr_test(c,&edest, "
tap_dest_addr"))src/openvpn/multi.c multi_process_incoming_link(struct multi_context · line 2691
Quoted 1 line
src/openvpn/multi.c +1
-0+ if (c->c2.to_tun.len &&!pf_addr_test(&c->c2.pf, c,
src/openvpn/multi.c multi_process_incoming_link(struct multi_context · line 2693
Quoted 2 lines
src/openvpn/multi.c +2
-0+ &edest, +"
tap_dest_addr"))src/openvpn/multi.c multi_process_incoming_link(struct multi_context · line 2695
Quoted 2 lines
src/openvpn/multi.c +0
-0{ msg(D_PF_DROPPED, "PF: client -> addr[%s]packet dropped by TAP packet filter",
src/openvpn/multi.c multi_process_incoming_link(struct multi_context · line 2696
Quoted 1 line
src/openvpn/multi.c +0
-0mroute_addr_print_ex(&edest,
MAPF_SHOW_ARP, &gc));src/openvpn/multi.c multi_process_incoming_tun(struct multi_context
Quoted 1 line
src/openvpn/multi.c +0
-0@@ -2792,7 +2803,7 @@ multi_process_incoming_tun(struct multi_context*m, const unsigned int
mpp_flagssrc/openvpn/multi.c multi_process_incoming_tun(struct multi_context *m, const unsigned int mpp_flags
Quoted 5 lines
src/openvpn/multi.c +1
-1set_prefix (m->pending); #ifdef ENABLE_PF -if (!pf_addr_test (c, e2,"tun_tap_src_addr" )) + if (!pf_addr_test(&c->c2.pf, c, e2,"
tun_tap_src_addr"))src/openvpn/multi.c multi_process_incoming_tun(struct multi_context · line 2808
Quoted 2 lines
src/openvpn/multi.c +0
-0{ msg(D_PF_DROPPED, "PF: addr[%s] -> clientpacket dropped by packet filter",
src/openvpn/multi.c multi_process_incoming_tun(struct multi_context · line 2809
Quoted 1 line
src/openvpn/multi.c +0
-0mroute_addr_print_ex(&src, MAPF_SHOW_ARP,&gc));
src/openvpn/pf-inline.h line 34
Quoted 9 lines
src/openvpn/pf-inline.h +0
-1@@ -31,20 +31,24 @@#define PCT_SRC 1#define PCT_DEST 2 static inline bool -pf_c2c_test(const struct context *src, const struct context *dest,const char *prefix)
Quoted 8 lines
src/openvpn/pf-inline.h line 36
Quoted 3 lines
src/openvpn/pf-inline.h +3
-0+pf_c2c_test(const struct pf_context *src_pf, const struct context *src, + const struct pf_context *dest_pf, const struct context *dest, + const char *prefix)If you make this function take a const struct
tls_multi* as 2nd and 4th argument, you don't have to change thepf_cn_testfunction prototype (and it doesn't have to know about struct context internals, which is useful for testing modules separately).
Sorry for forgetting about this comment. This is actually a good idea!
v5 will come soon.
Cheers,
Quoted 65 lines
src/openvpn/pf-inline.h line 36
Quoted 3 lines
src/openvpn/pf-inline.h +0
-1{ - bool pf_cn_test(struct pf_set *pfs, const struct tls_multi *tm,const int type, const char *prefix);
src/openvpn/pf-inline.h line 38
Quoted 1 line
src/openvpn/pf-inline.h +1
-0+ bool pf_cn_test(const struct context *src, const struct context*dest,
src/openvpn/pf-inline.h
Quoted 3 lines
src/openvpn/pf-inline.h +1
-1+ const int type, const char *prefix); - return (!src->c2.pf.enabled || pf_cn_test(src->c2.pf.pfs,
dest->c2.tls_multi,PCT_DEST, prefix))src/openvpn/pf-inline.h line 39
Quoted 1 line
src/openvpn/pf-inline.h +0
-1- && (!dest->c2.pf.enabled || pf_cn_test(dest->c2.pf.pfs,
src->c2.tls_multi,PCT_SRC, prefix));src/openvpn/pf-inline.h line 42
Quoted 2 lines
src/openvpn/pf-inline.h +2
-0+return (!src_pf->enabled ||pf_cn_test (src, dest,PCT_DEST , prefix)) + && (!dest_pf->enabled || pf_cn_test(dest, src, PCT_SRC,prefix));
src/openvpn/pf-inline.h
Quoted 4 lines
src/openvpn/pf-inline.h +0
-1} static inline bool -pf_addr_test(const struct context *src, const struct mroute_addr*dest, const char *prefix)
src/openvpn/pf-inline.h
Quoted 4 lines
src/openvpn/pf-inline.h +2
-0+pf_addr_test(const struct pf_context *src_pf, const struct context *src, + const struct mroute_addr *dest, const char *prefix) { bool pf_addr_test_dowork(const struct context *src, const struct
mroute_addr*dest, const char *prefix);src/openvpn/pf.c lookup_cn_rule(struct hash *h, const char *cn,
Quoted 11 lines
src/openvpn/pf-inline.h +1
-1-if (src->c2.pf.enabled) +if (src_pf->enabled) {return pf_addr_test_dowork (src, dest, prefix); }src/openvpn/pf.c +0
-0@@ -442,8 +442,12 @@ lookup_cn_rule(struct hash *h, const char *cn,const
uint32_tcn_hash)src/openvpn/pf.c lookup_cn_rule(struct hash *h, const char *cn, · line 445
Quoted 4 lines
src/openvpn/pf.c +0
-1}bool -pf_cn_test(struct pf_set *pfs, const struct tls_multi *tm, const inttype, const char *prefix)
src/openvpn/pf.c lookup_cn_rule(struct hash *h, const char *cn, const uint32_t cn_hash) · line 453
Quoted 10 lines
src/openvpn/pf.c +5
-0+pf_cn_test(const struct context *src, const struct context *dest, + const int type, const char *prefix) { + struct pf_set *pfs = src->c2.pf.pfs; +struct tls_multi *tm = dest->c2.tls_multi; +if (pfs && !pfs->kill) {const char *cn;Otherwise this looks good to me.
-Steffan
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Openvpn-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel
Signature · 1 line
Antonio Quartulli