diff options
Diffstat (limited to 'src/openvpn')
-rw-r--r-- | src/openvpn/crypto.h | 3 | ||||
-rw-r--r-- | src/openvpn/error.c | 8 | ||||
-rw-r--r-- | src/openvpn/forward.h | 33 | ||||
-rw-r--r-- | src/openvpn/fragment.c | 1 | ||||
-rw-r--r-- | src/openvpn/gremlin.c | 1 | ||||
-rw-r--r-- | src/openvpn/init.h | 2 | ||||
-rw-r--r-- | src/openvpn/lladdr.c | 1 | ||||
-rw-r--r-- | src/openvpn/manage.h | 10 | ||||
-rw-r--r-- | src/openvpn/mbuf.h | 4 | ||||
-rw-r--r-- | src/openvpn/misc.h | 3 | ||||
-rw-r--r-- | src/openvpn/mroute.h | 20 | ||||
-rw-r--r-- | src/openvpn/multi.h | 7 | ||||
-rw-r--r-- | src/openvpn/occ.h | 16 | ||||
-rw-r--r-- | src/openvpn/pf.h | 4 | ||||
-rw-r--r-- | src/openvpn/ping.h | 4 | ||||
-rw-r--r-- | src/openvpn/plugin.h | 2 | ||||
-rw-r--r-- | src/openvpn/socket.h | 13 |
17 files changed, 89 insertions, 43 deletions
diff --git a/src/openvpn/crypto.h b/src/openvpn/crypto.h index 0dc597f..f4b3dca 100644 --- a/src/openvpn/crypto.h +++ b/src/openvpn/crypto.h @@ -462,6 +462,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); diff --git a/src/openvpn/error.c b/src/openvpn/error.c index d270ecb..5129468 100644 --- a/src/openvpn/error.c +++ b/src/openvpn/error.c @@ -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 diff --git a/src/openvpn/forward.h b/src/openvpn/forward.h index d8ffe60..58b75d6 100644 --- a/src/openvpn/forward.h +++ b/src/openvpn/forward.h @@ -64,6 +64,39 @@ #define IOW_READ (IOW_READ_TUN|IOW_READ_LINK) +extern counter_type link_read_bytes_global; + +extern counter_type link_write_bytes_global; + +void check_tls_dowork(struct context *c); + +void check_tls_errors_co(struct context *c); + +void check_tls_errors_nco(struct context *c); + +#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); diff --git a/src/openvpn/fragment.c b/src/openvpn/fragment.c index 4eb1dd2..3f0ec2f 100644 --- a/src/openvpn/fragment.c +++ b/src/openvpn/fragment.c @@ -31,6 +31,7 @@ #ifdef ENABLE_FRAGMENT +#include "crypto.h" #include "misc.h" #include "fragment.h" #include "integer.h" diff --git a/src/openvpn/gremlin.c b/src/openvpn/gremlin.c index 114cb19..3f2bded 100644 --- a/src/openvpn/gremlin.c +++ b/src/openvpn/gremlin.c @@ -38,6 +38,7 @@ #include "error.h" #include "common.h" +#include "crypto.h" #include "misc.h" #include "otime.h" #include "gremlin.h" diff --git a/src/openvpn/init.h b/src/openvpn/init.h index c8ebe76..085ac53 100644 --- a/src/openvpn/init.h +++ b/src/openvpn/init.h @@ -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 */ diff --git a/src/openvpn/lladdr.c b/src/openvpn/lladdr.c index f24596b..e6b26fc 100644 --- a/src/openvpn/lladdr.c +++ b/src/openvpn/lladdr.c @@ -12,6 +12,7 @@ #include "error.h" #include "misc.h" #include "run_command.h" +#include "lladdr.h" int set_lladdr(const char *ifname, const char *lladdr, diff --git a/src/openvpn/manage.h b/src/openvpn/manage.h index df01a9a..ff143fc 100644 --- a/src/openvpn/manage.h +++ b/src/openvpn/manage.h @@ -582,17 +582,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) diff --git a/src/openvpn/mbuf.h b/src/openvpn/mbuf.h index 4912c95..f37563d 100644 --- a/src/openvpn/mbuf.h +++ b/src/openvpn/mbuf.h @@ -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); diff --git a/src/openvpn/misc.h b/src/openvpn/misc.h index 14abb0f..9d4601f 100644 --- a/src/openvpn/misc.h +++ b/src/openvpn/misc.h @@ -52,9 +52,6 @@ const char **make_arg_array(const char *first, const char *parms, struct gc_aren const char **make_extended_arg_array(char **p, struct gc_arena *gc); -/* an analogue to the random() function, but use OpenSSL functions if available */ -long int get_random(void); - /* prepend a random prefix to hostname */ const char *hostname_randomize(const char *hostname, struct gc_arena *gc); diff --git a/src/openvpn/mroute.h b/src/openvpn/mroute.h index 1063a18..7fcd995 100644 --- a/src/openvpn/mroute.h +++ b/src/openvpn/mroute.h @@ -170,6 +170,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. @@ -182,16 +192,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) diff --git a/src/openvpn/multi.h b/src/openvpn/multi.h index d7e5c29..3d3d687 100644 --- a/src/openvpn/multi.h +++ b/src/openvpn/multi.h @@ -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; } diff --git a/src/openvpn/occ.h b/src/openvpn/occ.h index 28c25fc..e3abd8c 100644 --- a/src/openvpn/occ.h +++ b/src/openvpn/occ.h @@ -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)) diff --git a/src/openvpn/pf.h b/src/openvpn/pf.h index 416126a..c64d21b 100644 --- a/src/openvpn/pf.h +++ b/src/openvpn/pf.h @@ -121,6 +121,10 @@ pf_addr_test(const struct pf_context *src_pf, const struct context *src, } } +/* + * Inline functions + */ + bool pf_cn_test(struct pf_set *pfs, const struct tls_multi *tm, const int type, const char *prefix); diff --git a/src/openvpn/ping.h b/src/openvpn/ping.h index 441a12b..a196b32 100644 --- a/src/openvpn/ping.h +++ b/src/openvpn/ping.h @@ -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? diff --git a/src/openvpn/plugin.h b/src/openvpn/plugin.h index fc3b527..791d476 100644 --- a/src/openvpn/plugin.h +++ b/src/openvpn/plugin.h @@ -207,4 +207,6 @@ plugin_call(const struct plugin_list *pl, return plugin_call_ssl(pl, type, av, pr, es, -1, NULL); } +void plugin_abort(void); + #endif /* OPENVPN_PLUGIN_H */ diff --git a/src/openvpn/socket.h b/src/openvpn/socket.h index 7329a51..b445821 100644 --- a/src/openvpn/socket.h +++ b/src/openvpn/socket.h @@ -994,11 +994,11 @@ link_socket_set_outgoing_addr(const struct buffer *buf, } } +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); @@ -1103,16 +1103,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)) { |