From 2add33e6a339c34b88c4ebaf47f06960fd424901 Mon Sep 17 00:00:00 2001 From: Jiuzhu Dong Date: Thu, 9 Sep 2021 11:14:35 +0800 Subject: [PATCH] rexecd/rexec: support AF_RPMSG to communicate Signed-off-by: Jiuzhu Dong --- netutils/rexec/rexec.c | 10 +++++++--- netutils/rexecd/rexecd.c | 18 +++++++++++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/netutils/rexec/rexec.c b/netutils/rexec/rexec.c index 6c1933862..209517f13 100644 --- a/netutils/rexec/rexec.c +++ b/netutils/rexec/rexec.c @@ -66,14 +66,15 @@ static int do_rexec(FAR struct rexec_arg_s *arg); static void usage(FAR const char *progname) { fprintf(stderr, "Usage: %s [-u user] [-H host] [-p password] " - "[-P port] [-4|-6] command\n", progname); + "[-P port] [-4|-6|-r] command\n", progname); fprintf(stderr, "Remote Execution Client:\n" " -u, Specify the user, default is \\0\n" " -H, Specify the hostname\n" " -p, Specify the password, default is \\0\n" " -P, Specify the port to connect to, default is 512\n" " -4, Specify address family AF_INET(default)\n" - " -6, Specify address family AF_INET6\n"); + " -6, Specify address family AF_INET6\n" + " -r, Specify address family AF_RPMSG\n"); exit(EXIT_FAILURE); } @@ -123,7 +124,7 @@ int main(int argc, FAR char **argv) arg.port = REXEC_SERVER_PORT; arg.af = AF_INET; - while ((option = getopt(argc, argv, "u:H:p:P:46")) != ERROR) + while ((option = getopt(argc, argv, "u:H:p:P:46r")) != ERROR) { switch (option) { @@ -145,6 +146,9 @@ int main(int argc, FAR char **argv) case '6': arg.af = AF_INET6; break; + case 'r': + arg.af = AF_RPMSG; + break; default: usage(argv[0]); } diff --git a/netutils/rexecd/rexecd.c b/netutils/rexecd/rexecd.c index bcdad50a2..d48876e65 100644 --- a/netutils/rexecd/rexecd.c +++ b/netutils/rexecd/rexecd.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -128,10 +129,11 @@ errout: static void usage(FAR const char *progname) { - fprintf(stderr, "Usage: %s [-4|-6]\n", progname); + fprintf(stderr, "Usage: %s [-4|-6|-r]\n", progname); fprintf(stderr, "Remote Execution Deamon:\n" " -4, Specify address family to AF_INET(default)\n" - " -6, Specify address family to AF_INET6\n"); + " -6, Specify address family to AF_INET6\n" + " -r, Specify address family to AF_RPMSG\n"); exit(EXIT_FAILURE); } @@ -147,7 +149,7 @@ int main(int argc, FAR char **argv) int ret; family = AF_INET; - while ((option = getopt(argc, argv, "46")) != ERROR) + while ((option = getopt(argc, argv, "46r")) != ERROR) { switch (option) { @@ -157,6 +159,9 @@ int main(int argc, FAR char **argv) case '6': family = AF_INET6; break; + case 'r': + family = AF_RPMSG; + break; default: usage(argv[0]); } @@ -168,6 +173,7 @@ int main(int argc, FAR char **argv) return serv; } + memset(&addr, 0, sizeof(addr)); switch (family) { case AF_INET: @@ -179,6 +185,12 @@ int main(int argc, FAR char **argv) ((FAR struct sockaddr_in6 *)&addr)->sin6_family = AF_INET6; ((FAR struct sockaddr_in6 *)&addr)->sin6_port = REXECD_PORT; ret = sizeof(struct sockaddr_in6); + break; + case AF_RPMSG: + ((FAR struct sockaddr_rpmsg *)&addr)->rp_family = AF_RPMSG; + snprintf(((FAR struct sockaddr_rpmsg *)&addr)->rp_name, + RPMSG_SOCKET_NAME_SIZE, "%d", REXECD_PORT); + ret = sizeof(struct sockaddr_rpmsg); } ret = bind(serv, (FAR struct sockaddr *)&addr, ret);