testj1939: add omit bind option

This option is needed for j1939 socket functionality test.
Connects wihout bind should not work.

Signed-off-by: Bastian Stender <bst@pengutronix.de>
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
This commit is contained in:
Bastian Stender
2018-09-21 11:31:22 +02:00
committed by Oleksij Rempel
parent 1ba9b86451
commit 54ff81cc40
+9 -1
View File
@@ -39,6 +39,7 @@ static const char help_msg[] =
" -c Issue connect()\n"
" -p=PRIO Set priority to PRIO\n"
" -b Do normal bind with SA+1 and rebind with actual SA\n"
" -o Omit bind\n"
" -n Emit 64bit NAMEs in output\n"
" -w[TIME] Return after TIME (default 1) seconds\n"
"\n"
@@ -47,7 +48,7 @@ static const char help_msg[] =
"\n"
;
static const char optstring[] = "?vbs::rep:cnw::";
static const char optstring[] = "?vbos::rep:cnw::";
static void parse_canaddr(char *spec, struct sockaddr_can *paddr)
{
@@ -111,6 +112,7 @@ int main(int argc, char *argv[])
int valid_peername = 0;
int todo_send = 0, todo_recv = 0, todo_echo = 0, todo_prio = -1;
int todo_connect = 0, todo_names = 0, todo_wait = 0, todo_rebind = 0;
int no_bind = 0;
/* argument parsing */
while ((opt = getopt(argc, argv, optstring)) != -1)
@@ -139,6 +141,9 @@ int main(int argc, char *argv[])
case 'b':
todo_rebind = 1;
break;
case 'o':
no_bind = 1;
break;
case 'w':
schedule_oneshot_itimer(strtod(optarg ?: "1", NULL));
signal(SIGALRM, onsigalrm);
@@ -183,6 +188,8 @@ int main(int argc, char *argv[])
error(1, errno, "set priority %i", todo_prio);
}
if (!no_bind) {
if (verbose)
fprintf(stderr, "- bind(, %s, %zi);\n", libj1939_addr2str(&sockname), sizeof(sockname));
ret = bind(sock, (void *)&sockname, sizeof(sockname));
@@ -199,6 +206,7 @@ int main(int argc, char *argv[])
if (ret < 0)
error(1, errno, "re-bind()");
}
}
if (todo_connect) {
if (!valid_peername)