From 330f54ac7f780872223f9cac62347393ffb4ef86 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Thu, 6 Jul 2017 21:42:01 +0000 Subject: Initial commit --- src/libwpactrl/wpactrl_command.c | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/libwpactrl/wpactrl_command.c (limited to 'src/libwpactrl/wpactrl_command.c') diff --git a/src/libwpactrl/wpactrl_command.c b/src/libwpactrl/wpactrl_command.c new file mode 100644 index 0000000..c29a58a --- /dev/null +++ b/src/libwpactrl/wpactrl_command.c @@ -0,0 +1,41 @@ +/* ISC license. */ + +#include +#include +#include + +#define WPARESPONSE_MAXLEN 28 + +wparesponse_t wpactrl_command (wpactrl_t *a, char const *s, size_t len, tain_t const *deadline, tain_t *stamp) +{ + static char const *wparesponses[] = + { + "OK\n", + "PONG\n", + "UNKNOWN COMMAND\n", + "FAIL\n", + "FAIL-BUSY\n", + "FAIL-CHECKSUM\n", + "FAIL-INVALID-PIN\n", + "FAIL-CHANNEL-UNAVAILABLE\n", + "FAIL-CHANNEL-UNSUPPORTED\n", + "FAIL-Invalid range\n", + "FAIL-Too long response\n", + "FAIL-PBC-OVERLAP\n", + "FAIL-UNKNOWN-UUID\n", + "FAIL-NO-AP-SETTINGS\n", + "FAIL-NO-IFNAME-MATCH\n", + 0 + } ; + char buf[WPARESPONSE_MAXLEN] ; + ssize_t r = wpactrl_query(a, s, len, buf, WPARESPONSE_MAXLEN, deadline, stamp) ; + if (r < 0) return WPA_ERROR ; + if (!r) return (errno = EPIPE, WPA_ERROR) ; + { + wparesponse_t i = 0 ; + for (; wparesponses[i] ; i++) + if (!strncmp(buf, wparesponses[i], r)) + break ; + return i ; + } +} -- cgit v1.3.1