From 6dbdb4c14734f9237cb859915ca7cb2000ee4bc5 Mon Sep 17 00:00:00 2001 From: logwang Date: Thu, 21 Sep 2017 14:57:01 +0800 Subject: [PATCH] Fix buf: freebsd sysctl config not work. --- config.ini | 5 ++--- lib/ff_config.c | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/config.ini b/config.ini index ed2bf329..15163164 100644 --- a/config.ini +++ b/config.ini @@ -73,15 +73,14 @@ net.inet.tcp.fast_finwait2_recycle=1 net.inet.tcp.sendspace=16384 net.inet.tcp.recvspace=8192 net.inet.tcp.nolocaltimewait=1 -net.inet.tcp.cc.algorithm=htcp +net.inet.tcp.cc.algorithm=cubic net.inet.tcp.sendbuf_max=16777216 net.inet.tcp.recvbuf_max=16777216 net.inet.tcp.sendbuf_auto=1 net.inet.tcp.recvbuf_auto=1 net.inet.tcp.sendbuf_inc=16384 net.inet.tcp.recvbuf_inc=524288 -net.inet.tcp.inflight.enable=0 -net.inet.tcp.sack=1 +net.inet.tcp.sack.enable=1 net.inet.tcp.blackhole=1 net.inet.tcp.msl=2000 net.inet.tcp.delayed_ack=0 diff --git a/lib/ff_config.c b/lib/ff_config.c index 4ca575cc..e7adf1d2 100644 --- a/lib/ff_config.c +++ b/lib/ff_config.c @@ -169,10 +169,17 @@ freebsd_conf_handler(struct ff_config *cfg, const char *section, cur = &cfg->freebsd.sysctl; if (is_integer(value)) { - int *p = (int *)malloc(sizeof(int)); - *p = atoi(value); - newconf->value = (void *)p; - newconf->vlen = sizeof(*p); + if (strcmp(name, "kern.ipc.maxsockbuf") == 0) { + long *p = (long *)malloc(sizeof(long)); + *p = atol(value); + newconf->value = (void *)p; + newconf->vlen = sizeof(*p); + } else { + int *p = (int *)malloc(sizeof(int)); + *p = atoi(value); + newconf->value = (void *)p; + newconf->vlen = sizeof(*p); + } } else { newconf->value = (void *)newconf->str; newconf->vlen = strlen(value); @@ -183,10 +190,11 @@ freebsd_conf_handler(struct ff_config *cfg, const char *section, } if (*cur == NULL) { + newconf->next = NULL; *cur = newconf; } else { + newconf->next = (*cur)->next; (*cur)->next = newconf; - newconf->next = NULL; } return 1;