1/* @(#) option definitions and associated structures for udpxy 2 * 3 * Copyright 2008-2011 Pavel V. Cherenkov (pcherenkov@gmail.com) 4 * 5 * This file is part of udpxy. 6 * 7 * udpxy is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * udpxy is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with udpxy. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 21#ifndef UOPT_H_0215082300 22#define UOPT_H_0215082300 23 24#include <sys/types.h> 25#include <stdio.h> 26#include <time.h> 27#include <unistd.h> 28 29#include "udpxy.h" 30 31static const int MIN_CLIENT_COUNT = 1; 32static const int MAX_CLIENT_COUNT = 5000; 33static const int DEFAULT_CLIENT_COUNT = 3; 34 35static const ssize_t MIN_MCACHE_LEN = 4 * 1024; 36static const ssize_t MAX_MCACHE_LEN = 2048 * 1024; 37static const ssize_t DEFAULT_CACHE_LEN = 2 * 1024; 38static const u_short DEFAULT_MCAST_REFRESH = 0; 39 40static const ssize_t MIN_SOCKBUF_LEN = (1024 * 64); 41 42 43/* udpxy options 44 */ 45struct udpxy_opt { 46 flag_t is_verbose; /* verbose output on/off */ 47 flag_t cl_tpstat; /* client reports throughput stats */ 48 int nice_incr; /* value to increment nice by */ 49 ssize_t rbuf_len; /* size of read buffer */ 50 int rbuf_msgs; /* max msgs in read buffer (-1 = all) */ 51 int max_clients; /* max clients to accept */ 52 u_short mcast_refresh; /* refresh rate (sec) for multicast 53 subscription */ 54 55 time_t rcv_tmout; /* receive (mcast) socket timeout */ 56 time_t dhold_tmout; /* timeout to hold buffered data (milisec) */ 57 58 time_t sr_tmout, /* server READ/RCV timeout (sec) */ 59 sw_tmout; /* server WRITE/SND timeout (sec) */ 60 long ssel_tmout; /* server select/poll timeout (sec) */ 61 int lq_backlog; /* accept queue length for listening socket */ 62 int rcv_lwmark; /* receive low watermark on listening socket */ 63 64 flag_t nosync_sbuf, /* do not alter source-socket's buffer size */ 65 nosync_dbuf; /* do not alter dest-socket's buffer size */ 66 67 char* srcfile; /* file to read (video stream) from */ 68 char* dstfile; /* file to save (video stream) to */ 69 70 char h200_ftr[2048]; /* text to add to HTTP 200 response */ 71 flag_t tcp_nodelay; /* apply TCP_NODELAY option to 72 newly-accepted sockets */ 73 char cnt_type[80]; /* custom HTTP 200 content type */ 74}; 75 76 77#ifdef UDPXREC_MOD 78/* udpxrec options 79 */ 80struct udpxrec_opt { 81 flag_t is_verbose; /* verbose output on/off */ 82 int nice_incr; /* value to increment nice by */ 83 84 time_t bg_time; /* time to start recording */ 85 time_t end_time; /* time to end recording */ 86 int64_t max_fsize; /* max size of dest file (in bytes) */ 87 ssize_t bufsize; /* size of receiving socket buffer */ 88 int rbuf_msgs; /* max number of messages to save 89 in buffer (-1 = as many as would fit) */ 90 91 /* address of the multicast interface */ 92 char mcast_addr[ IPADDR_STR_SIZE ]; 93 char rec_channel[ IPADDR_STR_SIZE ]; 94 int rec_port; 95 int waitupd_sec; /* update every N seconds while waiting 96 to start recording */ 97 98 time_t rcv_tmout; /* receive (mcast) socket timeout */ 99 time_t sr_tmout, /* server READ/RCV timeout (sec) */ 100 sw_tmout; /* server WRITE/SND timeout (sec) */ 101 102 flag_t nosync_sbuf, /* do not alter source-socket's buffer size */ 103 nosync_dbuf; /* do not alter dest-socket's buffer size */ 104 105 106 char* pidfile; /* file to store app's PID */ 107 char* dstfile; /* file to save (video stream) to */ 108}; 109#endif /* UDPXREC_MOD */ 110 111#ifdef __cplusplus 112 extern "C" { 113#endif 114 115/* populate udpxy options with default/initial values 116 */ 117int 118init_uopt( struct udpxy_opt* uo ); 119 120 121/* release udpxy resources allocated for udpxy options 122 */ 123void 124free_uopt( struct udpxy_opt* uo ); 125 126 127#ifdef UDPXREC_MOD 128/* populate udpxrec options with default/initial values 129 */ 130int 131init_recopt( struct udpxrec_opt* ro ); 132 133 134/* release resources allocated for udpxy options 135 */ 136void 137free_recopt( struct udpxrec_opt* ro ); 138 139/* print udpxrec options to stream 140 */ 141void 142fprint_recopt( FILE* stream, struct udpxrec_opt* ro ); 143 144#endif /* UDPXREC_MOD */ 145 146/* set verbose output on 147 */ 148void 149set_verbose( flag_t* verbose ); 150 151 152#ifdef __cplusplus 153} /* extern "C" */ 154#endif 155 156#endif /* UOPT_H_0215082300 */ 157 158/* __EOF__ */ 159 160