#include <arpa/inet.h>
#include <sys/un.h>
#include <netdb.h>
+#include <lopsub.h>
+#include "server.lsg.h"
#include "para.h"
#include "error.h"
#include "string.h"
#include "fd.h"
#include "close_on_fork.h"
#include "chunk_queue.h"
-#include "server.cmdline.h"
#include "acl.h"
static struct sender_status dccp_sender_status, *dss = &dccp_sender_status;
{
int mps, ret;
socklen_t ml = sizeof(mps);
+ uint32_t mss; /* max slize size */
/* If call fails, return some sensible minimum value */
ret = getsockopt(sc->fd, SOL_DCCP, DCCP_SOCKOPT_GET_CUR_MPS, &mps, &ml);
}
PARA_INFO_LOG("current MPS = %d bytes\n", mps);
assert(mps > 0);
- if (conf.dccp_max_slice_size_arg > 0)
- mps = PARA_MIN(mps, conf.dccp_max_slice_size_arg);
+ mss = OPT_UINT32_VAL(DCCP_MAX_SLICE_SIZE);
+ if (mss > 0 && mss <= INT_MAX)
+ mps = PARA_MIN(mps, (int)mss);
return mps;
}
struct sender_client *sc;
struct dccp_fec_client *dfc;
int tx_ccid;
+ uint32_t k, n;
sc = accept_sender_client(dss, rfds);
if (!sc)
}
dfc = para_calloc(sizeof(*dfc));
sc->private_data = dfc;
- dfc->fcp.data_slices_per_group = conf.dccp_data_slices_per_group_arg;
- dfc->fcp.slices_per_group = conf.dccp_slices_per_group_arg;
+ k = OPT_UINT32_VAL(DCCP_DATA_SLICES_PER_GROUP);
+ n = OPT_UINT32_VAL(DCCP_SLICES_PER_GROUP);
+ if (k == 0 || n == 0 || k >= n) {
+ PARA_WARNING_LOG("invalid FEC parameters, using defaults\n");
+ dfc->fcp.data_slices_per_group = 3;
+ dfc->fcp.slices_per_group = 4;
+ } else {
+ dfc->fcp.data_slices_per_group = k;
+ dfc->fcp.slices_per_group = n;
+ }
dfc->fcp.init_fec = dccp_init_fec;
dfc->fcp.send_fec = dccp_send_fec;
dfc->fcp.need_periodic_header = false;
*/
void dccp_send_init(struct sender *s)
{
- int ret, k, n;
+ int ret;
s->status = dccp_status;
s->send = NULL;
s->client_cmds[SENDER_add] = NULL;
s->client_cmds[SENDER_delete] = NULL;
- k = conf.dccp_data_slices_per_group_arg;
- n = conf.dccp_slices_per_group_arg;
-
- if (k <= 0 || n <= 0 || k >= n) {
- PARA_WARNING_LOG("invalid FEC parameters, using defaults\n");
- conf.dccp_data_slices_per_group_arg = 3;
- conf.dccp_slices_per_group_arg = 4;
- }
-
- init_sender_status(dss, conf.dccp_access_arg, conf.dccp_access_given,
- conf.dccp_port_arg, conf.dccp_max_clients_arg,
- conf.dccp_default_deny_given);
+ init_sender_status(dss, OPT_RESULT(DCCP_ACCESS),
+ OPT_UINT32_VAL(DCCP_PORT), OPT_UINT32_VAL(DCCP_MAX_CLIENTS),
+ OPT_GIVEN(DCCP_DEFAULT_DENY));
ret = generic_com_on(dss, IPPROTO_DCCP);
if (ret < 0)
PARA_ERROR_LOG("%s\n", para_strerror(-ret));