You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ma...@apache.org on 2016/09/12 21:17:30 UTC
incubator-mynewt-core git commit: mn_socket; add mn_inet_ntop().
Repository: incubator-mynewt-core
Updated Branches:
refs/heads/develop d56270d97 -> 77ddfe7fc
mn_socket; add mn_inet_ntop().
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/77ddfe7f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/77ddfe7f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/77ddfe7f
Branch: refs/heads/develop
Commit: 77ddfe7fc1550ab6e7a25b9394d16528504742a6
Parents: d56270d
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Mon Sep 12 14:13:46 2016 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Mon Sep 12 14:13:46 2016 -0700
----------------------------------------------------------------------
sys/mn_socket/include/mn_socket/mn_socket.h | 11 +++++++++
sys/mn_socket/src/mn_socket_aconv.c | 20 +++++++++++++++
sys/mn_socket/src/test/mn_sock_test.c | 31 ++++++++++++++++++++++++
3 files changed, 62 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/77ddfe7f/sys/mn_socket/include/mn_socket/mn_socket.h
----------------------------------------------------------------------
diff --git a/sys/mn_socket/include/mn_socket/mn_socket.h b/sys/mn_socket/include/mn_socket/mn_socket.h
index 6b457be..a852dcb 100644
--- a/sys/mn_socket/include/mn_socket/mn_socket.h
+++ b/sys/mn_socket/include/mn_socket/mn_socket.h
@@ -50,6 +50,16 @@
#define MN_EAGAIN 10
#define MN_EUNKNOWN 11
+/*
+ * Multicast macros
+ */
+#define MN_IN_MULTICAST(a) \
+ (((a) & 0xf0000000) == 0xe0000000)
+
+/* XXXX notyet */
+#define MN_IN6_IS_ADDR_MULTICAST(a) \
+ 0
+
struct mn_socket;
struct mn_socket_ops;
struct mn_sock_cb;
@@ -142,5 +152,6 @@ int mn_close(struct mn_socket *);
* Address conversion
*/
int mn_inet_pton(int af, const char *src, void *dst);
+const char *mn_inet_ntop(int af, const void *src, void *dst, int len);
#endif /* __SYS_MN_SOCKET_H_ */
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/77ddfe7f/sys/mn_socket/src/mn_socket_aconv.c
----------------------------------------------------------------------
diff --git a/sys/mn_socket/src/mn_socket_aconv.c b/sys/mn_socket/src/mn_socket_aconv.c
index 5053eac..23c500b 100644
--- a/sys/mn_socket/src/mn_socket_aconv.c
+++ b/sys/mn_socket/src/mn_socket_aconv.c
@@ -17,6 +17,7 @@
* under the License.
*/
#include <ctype.h>
+#include <stdio.h>
#include <os/queue.h>
#include "mn_socket/mn_socket.h"
@@ -55,3 +56,22 @@ mn_inet_pton(int af, const char *src, void *dst)
return MN_EAFNOSUPPORT;
}
}
+
+const char *
+mn_inet_ntop(int af, const void *src_v, void *dst, int len)
+{
+ const unsigned char *src = src_v;
+ int rc;
+
+ if (af == MN_PF_INET) {
+ rc = snprintf(dst, len, "%u.%u.%u.%u",
+ src[0], src[1], src[2], src[3]);
+ if (rc >= len) {
+ return NULL;
+ } else {
+ return dst;
+ }
+ } else {
+ return NULL;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/77ddfe7f/sys/mn_socket/src/test/mn_sock_test.c
----------------------------------------------------------------------
diff --git a/sys/mn_socket/src/test/mn_sock_test.c b/sys/mn_socket/src/test/mn_sock_test.c
index a8d9cc2..d49fab0 100644
--- a/sys/mn_socket/src/test/mn_sock_test.c
+++ b/sys/mn_socket/src/test/mn_sock_test.c
@@ -61,9 +61,40 @@ TEST_CASE(inet_pton_test)
}
}
+TEST_CASE(inet_ntop_test)
+{
+ const char *rstr;
+ char addr[48];
+ struct test_vec {
+ char *str;
+ uint8_t cmp[4];
+ };
+ struct test_vec ok_vec[] = {
+ { "1.1.1.1", { 1, 1, 1, 1 } },
+ { "1.2.3.4", { 1, 2, 3, 4 } },
+ { "255.1.255.255", { 255, 1, 255, 255 } },
+ { "1.2.5.6", { 1, 2, 5, 6 } }
+ };
+ int i;
+
+ for (i = 0; i < sizeof(ok_vec) / sizeof(ok_vec[0]); i++) {
+ memset(addr, 0xa5, sizeof(addr));
+ rstr = mn_inet_ntop(MN_PF_INET, ok_vec[i].cmp, addr, sizeof(addr));
+ TEST_ASSERT(rstr);
+ TEST_ASSERT(!strcmp(ok_vec[i].str, addr));
+ }
+ rstr = mn_inet_ntop(MN_PF_INET, ok_vec[0].cmp, addr, 1);
+ TEST_ASSERT(rstr == NULL);
+
+ /* does not have space to null terminate */
+ rstr = mn_inet_ntop(MN_PF_INET, ok_vec[0].cmp, addr, 7);
+ TEST_ASSERT(rstr == NULL);
+}
+
TEST_SUITE(mn_socket_test_all)
{
inet_pton_test();
+ inet_ntop_test();
}
#ifdef MYNEWT_SELFTEST