X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=test.c;h=7dd5d248836bf6342e6049c1701bd1deb94e2e95;hb=efeb98dd555879d9fa1ec765615fe4a34b8ee438;hp=96ebb0c45799ff999d3a8af9b05d867b7eb2adf5;hpb=d16abd3be87bdc3872c671a04dccdd5b286a208f;p=utcp diff --git a/test.c b/test.c index 96ebb0c..7dd5d24 100644 --- a/test.c +++ b/test.c @@ -31,6 +31,7 @@ double dropout; long total_out; long total_in; FILE *reference; +long mtu = 0; char *reorder_data; size_t reorder_len; @@ -133,6 +134,21 @@ ssize_t do_send(struct utcp *utcp, const void *data, size_t len) { return result; } +static void set_mtu(struct utcp *u, int s) { + if(!mtu) { + socklen_t optlen = sizeof(mtu); + getsockopt(s, IPPROTO_IP, IP_MTU, &mtu, &optlen); + } + + if(!mtu || mtu == 65535) { + mtu = 1500; + } + + fprintf(stderr, "Using MTU %lu\n", mtu); + + utcp_set_mtu(u, mtu ? mtu - 48 : 1300); +} + int main(int argc, char *argv[]) { srand(time(NULL)); srand48(time(NULL)); @@ -178,6 +194,10 @@ int main(int argc, char *argv[]) { read_size = atoi(getenv("READ_SIZE")); } + if(getenv("MTU")) { + mtu = atoi(getenv("MTU")); + } + char *reference_filename = getenv("REFERENCE"); if(reference_filename) { @@ -235,10 +255,10 @@ int main(int argc, char *argv[]) { return 1; } - utcp_set_mtu(u, 1300); utcp_set_user_timeout(u, 10); if(!server) { + set_mtu(u, s); c = utcp_connect_ex(u, 1, do_recv, NULL, flags); } @@ -313,10 +333,12 @@ int main(int argc, char *argv[]) { break; } - if(!connected) + if(!connected) { if(!connect(s, (struct sockaddr *)&ss, sl)) { connected = true; + set_mtu(u, s); } + } inpktno++;