From da3a75da2c7cc47d677515238735946791dc2b75 Mon Sep 17 00:00:00 2001 From: fangxinyong Date: Thu, 6 Apr 2023 12:33:12 +0800 Subject: [PATCH] libc/net: compatible with Android for htonq/ntohq Signed-off-by: fangxinyong --- include/netinet/in.h | 5 +++++ libs/libc/libc.csv | 2 ++ libs/libc/net/Make.defs | 2 +- libs/libc/net/lib_htonq.c | 42 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 libs/libc/net/lib_htonq.c diff --git a/include/netinet/in.h b/include/netinet/in.h index 3affebaa9b..3ab5712330 100644 --- a/include/netinet/in.h +++ b/include/netinet/in.h @@ -233,13 +233,16 @@ #ifdef CONFIG_ENDIAN_BIG # define HTONS(ns) (ns) # define HTONL(nl) (nl) +# define HTONQ(nq) (nq) #else # define HTONS __swap_uint16 # define HTONL __swap_uint32 +# define HTONQ __swap_uint64 #endif #define NTOHS(hs) HTONS(hs) #define NTOHL(hl) HTONL(hl) +#define NTOHQ(hq) HTONQ(hq) /**************************************************************************** * Public Type Definitions @@ -373,8 +376,10 @@ EXTERN const struct in6_addr in6addr_any; uint32_t ntohl(uint32_t nl); uint16_t ntohs(uint16_t ns); +uint64_t ntohq(uint64_t nq); uint32_t htonl(uint32_t hl); uint16_t htons(uint16_t hs); +uint64_t htonq(uint64_t hq); #undef EXTERN #if defined(__cplusplus) diff --git a/libs/libc/libc.csv b/libs/libc/libc.csv index 7b76aa4b3f..89bfa1d81d 100644 --- a/libs/libc/libc.csv +++ b/libs/libc/libc.csv @@ -105,6 +105,7 @@ "gmtime","time.h","","FAR struct tm *","FAR const time_t *" "gmtime_r","time.h","","FAR struct tm *","FAR const time_t *","FAR struct tm *" "htonl","arpa/inet.h","","uint32_t","uint32_t" +"htonq","arpa/inet.h","","uint64_t","uint64_t" "htons","arpa/inet.h","","uint16_t","uint16_t" "iconv","iconv.h","defined(CONFIG_LIBC_LOCALE)","size_t","iconv_t","FAR char **","FAR size_t *","FAR char **","FAR size_t *" "iconv_close","iconv.h","defined(CONFIG_LIBC_LOCALE)","int","iconv_t" @@ -171,6 +172,7 @@ "mktime","time.h","","time_t","FAR struct tm *" "nice","unistd.h","","int","int" "ntohl","arpa/inet.h","","uint32_t","uint32_t" +"ntohq","arpa/inet.h","","uint64_t","uint64_t" "ntohs","arpa/inet.h","","uint16_t","uint16_t" "opendir","dirent.h","","FAR DIR *","FAR const char *" "perror","stdio.h","defined(CONFIG_FILE_STREAM)","void","FAR const char *" diff --git a/libs/libc/net/Make.defs b/libs/libc/net/Make.defs index 52b0df6128..3cee4348bf 100644 --- a/libs/libc/net/Make.defs +++ b/libs/libc/net/Make.defs @@ -20,7 +20,7 @@ # Add the networking C files to the build -CSRCS += lib_addrconfig.c lib_base64.c lib_htons.c lib_htonl.c +CSRCS += lib_addrconfig.c lib_base64.c lib_htons.c lib_htonl.c lib_htonq.c CSRCS += lib_inetaddr.c lib_inetaton.c lib_inetntoa.c CSRCS += lib_inetntop.c lib_inetpton.c lib_inetnetwork.c CSRCS += lib_etherntoa.c lib_etheraton.c diff --git a/libs/libc/net/lib_htonq.c b/libs/libc/net/lib_htonq.c new file mode 100644 index 0000000000..73661408d8 --- /dev/null +++ b/libs/libc/net/lib_htonq.c @@ -0,0 +1,42 @@ +/**************************************************************************** + * libs/libc/net/lib_htonq.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +uint64_t htonq(uint64_t hq) +{ + return HTONQ(hq); +} + +uint64_t ntohq(uint64_t nq) +{ + return NTOHQ(nq); +}