diff --git a/include/net/route.h b/include/net/route.h
index 0564dde..2df0c39 100644
--- a/include/net/route.h
+++ b/include/net/route.h
@@ -101,15 +101,15 @@
  *   netmask  - Network mask defining the external network (required)
  *   router   - Router address that on our network that can forward to the
  *              external network.
+ *   len      - The address struct length.
  *
  * Returned Value:
  *   OK on success; -1 on failure with the errno variable set appropriately.
  *
  ****************************************************************************/
 
-int addroute(int sockfd, FAR struct sockaddr_storage *target,
-             FAR struct sockaddr_storage *netmask,
-             FAR struct sockaddr_storage *router);
+int addroute(int sockfd, FAR void *target, FAR void *netmask,
+             FAR void *router, socklen_t len);
 
 /****************************************************************************
  * Name: net_delroute
@@ -122,14 +122,14 @@
  *   sockfd   - Any socket descriptor
  *   target   - Target address on the remote network (required)
  *   netmask  - Network mask defining the external network (required)
+ *   len      - The address struct length.
  *
  * Returned Value:
  *   OK on success; -1 on failure with the errno variable set appropriately.
  *
  ****************************************************************************/
 
-int delroute(int sockfd, FAR struct sockaddr_storage *target,
-             FAR struct sockaddr_storage *netmask);
+int delroute(int sockfd, FAR void *target, FAR void *netmask, socklen_t len);
 
 #undef EXTERN
 #ifdef __cplusplus
diff --git a/libs/libc/net/lib_addroute.c b/libs/libc/net/lib_addroute.c
index 5602319..7f6bac6 100644
--- a/libs/libc/net/lib_addroute.c
+++ b/libs/libc/net/lib_addroute.c
@@ -24,6 +24,7 @@
 
 #include <nuttx/config.h>
 
+#include <errno.h>
 #include <sys/socket.h>
 #include <sys/ioctl.h>
 #include <stdint.h>
@@ -47,24 +48,29 @@
  *   netmask  - Network mask defining the external network (required)
  *   router   - Router address that on our network that can forward to the
  *              external network.
+ *   len      - The address struct length.
  *
  * Returned Value:
  *   OK on success; -1 on failure with the errno variable set appropriately.
  *
  ****************************************************************************/
 
-int addroute(int sockfd, FAR struct sockaddr_storage *target,
-             FAR struct sockaddr_storage *netmask,
-             FAR struct sockaddr_storage *router)
+int addroute(int sockfd, FAR void *target, FAR void *netmask,
+             FAR void *router, socklen_t len)
 {
   struct rtentry entry;
 
+  if (len < sizeof(struct in_addr) || len > sizeof(struct sockaddr_storage))
+    {
+      return -EINVAL;
+    }
+
   /* Set up the rtentry structure */
 
   memset(&entry, 0, sizeof(struct rtentry));
-  memcpy(&entry.rt_dst, target, sizeof(struct sockaddr_storage));
-  memcpy(&entry.rt_genmask, netmask, sizeof(struct sockaddr_storage));
-  memcpy(&entry.rt_gateway, router, sizeof(struct sockaddr_storage));
+  memcpy(&entry.rt_dst, target, len);
+  memcpy(&entry.rt_genmask, netmask, len);
+  memcpy(&entry.rt_gateway, router, len);
 
   /* Then perform the ioctl */
 
diff --git a/libs/libc/net/lib_delroute.c b/libs/libc/net/lib_delroute.c
index ac8343c..f4c3681 100644
--- a/libs/libc/net/lib_delroute.c
+++ b/libs/libc/net/lib_delroute.c
@@ -24,6 +24,7 @@
 
 #include <nuttx/config.h>
 
+#include <errno.h>
 #include <sys/socket.h>
 #include <sys/ioctl.h>
 #include <stdint.h>
@@ -45,22 +46,27 @@
  *   sockfd   - Any socket descriptor
  *   target   - Target address on the remote network (required)
  *   netmask  - Network mask defining the external network (required)
+ *   len      - The address struct length.
  *
  * Returned Value:
  *   OK on success; -1 on failure with the errno variable set appropriately.
  *
  ****************************************************************************/
 
-int delroute(int sockfd, FAR struct sockaddr_storage *target,
-             FAR struct sockaddr_storage *netmask)
+int delroute(int sockfd, FAR void *target, FAR void *netmask, socklen_t len)
 {
   struct rtentry entry;
 
+  if (len < sizeof(struct in_addr) || len > sizeof(struct sockaddr_storage))
+    {
+      return -EINVAL;
+    }
+
   /* Set up the rtentry structure */
 
   memset(&entry, 0, sizeof(struct rtentry));
-  memcpy(&entry.rt_dst, target, sizeof(struct sockaddr_storage));
-  memcpy(&entry.rt_genmask, netmask, sizeof(struct sockaddr_storage));
+  memcpy(&entry.rt_dst, target, len);
+  memcpy(&entry.rt_genmask, netmask, len);
 
   /* Then perform the ioctl */
 
