diff options
Diffstat (limited to 'src/tools/ocbr')
| -rw-r--r-- | src/tools/ocbr/ocbr.c | 17 | ||||
| -rw-r--r-- | src/tools/ocbr/ocbr_client.c | 2 | ||||
| -rw-r--r-- | src/tools/ocbr/ocbr_server.c | 2 | 
3 files changed, 16 insertions, 5 deletions
| diff --git a/src/tools/ocbr/ocbr.c b/src/tools/ocbr/ocbr.c index 2c22cc3c..e2bd84af 100644 --- a/src/tools/ocbr/ocbr.c +++ b/src/tools/ocbr/ocbr.c @@ -46,7 +46,7 @@  #include <time.h>  #include <stdbool.h> -#define BUF_SIZE 1500 +#define BUF_SIZE 524288L  #include "ocbr_client.c" @@ -71,11 +71,12 @@ static void usage(void)                 "  -n, --server_apn          Specify the name of the server.\n"                 "  -d, --duration            Duration for sending (s)\n"                 "  -f, --flood               Send SDUs as fast as possible\n" -               "  -s, --size                SDU size (B)\n" +               "  -s, --size                SDU size (B, max %ld B)\n"                 "  -r, --rate                Rate (b/s)\n"                 "      --sleep               Sleep in between sending SDUs\n"                 "\n\n" -               "      --help                Display this help text and exit\n"); +               "      --help                Display this help text and exit\n", +               BUF_SIZE);  }  int main(int argc, char ** argv) @@ -152,6 +153,16 @@ int main(int argc, char ** argv)                          return 0;                  } +                if (size > BUF_SIZE) { +                        printf("Maximum size: %ld.\n", BUF_SIZE); +                        return 0; +                } + +                if (size < 0) { +                        printf("Size overflow.\n"); +                        return 0; +                } +                  ret = client_main(s_apn, duration, size, rate, flood, sleep);          } diff --git a/src/tools/ocbr/ocbr_client.c b/src/tools/ocbr/ocbr_client.c index bf527317..026ab001 100644 --- a/src/tools/ocbr/ocbr_client.c +++ b/src/tools/ocbr/ocbr_client.c @@ -79,7 +79,7 @@ int client_main(char * server,          struct sigaction sig_act;          int fd = 0; -        char buf[size]; +        char buf[BUF_SIZE];          long seqnr = 0;          long gap = size * 8.0 * (BILLION / (double) rate); diff --git a/src/tools/ocbr/ocbr_server.c b/src/tools/ocbr/ocbr_server.c index 3004d77c..4f080eff 100644 --- a/src/tools/ocbr/ocbr_server.c +++ b/src/tools/ocbr/ocbr_server.c @@ -100,7 +100,7 @@ static void handle_flow(int fd)          alive = iv_start;          ts_add(&iv_start, &intv, &iv_end); -        fccntl(fd, FLOWSFLAGS, FLOWFRNOBLOCK | FLOWFRDWR); +        fccntl(fd, FLOWSFLAGS, FLOWFRNOBLOCK | FLOWFRDWR | FLOWFRNOPART);          while (!stop) {                  clock_gettime(CLOCK_REALTIME, &now); | 
