prog.h revision fb3e20e0
1/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ 2/* 3 * prog.h -- common setup and options for QUIC program 4 */ 5 6#ifndef PROG_H 7#define PROG_H 1 8 9#include "test_config.h" 10 11struct event; 12struct event_base; 13struct lsquic_hash; 14struct sport_head; 15struct ssl_ctx_st; 16 17struct prog 18{ 19 struct packout_buf_allocator prog_pba; 20 struct lsquic_engine_settings prog_settings; 21 struct lsquic_engine_api prog_api; 22 unsigned prog_engine_flags; 23 struct service_port prog_dummy_sport; /* Use for options */ 24 unsigned prog_packout_max; 25 unsigned short prog_max_packet_size; 26 int prog_version_cleared; 27 unsigned long prog_read_count; 28#if HAVE_SENDMMSG 29 int prog_use_sendmmsg; 30#endif 31#if HAVE_RECVMMSG 32 int prog_use_recvmmsg; 33#endif 34 int prog_use_stock_pmi; 35 struct event_base *prog_eb; 36 struct event *prog_timer, 37 *prog_send, 38 *prog_usr1; 39 struct event *prog_usr2; 40 struct ssl_ctx_st *prog_ssl_ctx; 41 struct lsquic_hash *prog_certs; 42 struct event *prog_event_sni; 43 char *prog_susp_sni; 44 struct sport_head *prog_sports; 45 struct lsquic_engine *prog_engine; 46 const char *prog_hostname; 47 int prog_ipver; /* 0, 4, or 6 */ 48 const char *prog_keylog_dir; 49 enum { 50 PROG_FLAG_COOLDOWN = 1 << 0, 51#if LSQUIC_PREFERRED_ADDR 52 PROG_SEARCH_ADDRS = 1 << 1, 53#endif 54 } prog_flags; 55}; 56 57int 58prog_init (struct prog *, unsigned lsquic_engine_flags, struct sport_head *, 59 const struct lsquic_stream_if *, void *stream_if_ctx); 60 61#if HAVE_SENDMMSG 62# define SENDMMSG_FLAG "g" 63#else 64# define SENDMMSG_FLAG "" 65#endif 66#if HAVE_RECVMMSG 67# define RECVMMSG_FLAG "j" 68#else 69# define RECVMMSG_FLAG "" 70#endif 71 72#if LSQUIC_DONTFRAG_SUPPORTED 73# define IP_DONTFRAG_FLAG "D" 74#else 75# define IP_DONTFRAG_FLAG "" 76#endif 77 78#define PROG_OPTS "i:km:c:y:L:l:o:H:s:S:Y:z:G:W" RECVMMSG_FLAG SENDMMSG_FLAG \ 79 IP_DONTFRAG_FLAG 80 81/* Returns: 82 * 0 Applied 83 * 1 Not applicable 84 * -1 Error 85 */ 86int 87prog_set_opt (struct prog *, int opt, const char *arg); 88 89struct event_base * 90prog_eb (struct prog *); 91 92int 93prog_run (struct prog *); 94 95void 96prog_cleanup (struct prog *); 97 98void 99prog_stop (struct prog *); 100 101int 102prog_prep (struct prog *); 103 104int 105prog_connect (struct prog *, unsigned char *, size_t); 106 107void 108prog_print_common_options (const struct prog *, FILE *); 109 110int 111prog_is_stopped (void); 112 113void 114prog_process_conns (struct prog *); 115 116void 117prog_sport_cant_send (struct prog *, int fd); 118 119#endif 120