diff --git a/Userspace/libc/include/arpa/inet.h b/Userspace/libc/include/arpa/inet.h new file mode 100644 index 00000000..06dfa6cb --- /dev/null +++ b/Userspace/libc/include/arpa/inet.h @@ -0,0 +1,33 @@ +/* + This file is part of Fennix C Library. + + Fennix C Library is free software: you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + Fennix C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Fennix C Library. If not, see . +*/ + +#ifndef ARPA_INET_H +#define ARPA_INET_H + +#include + +uint32_t htonl(uint32_t hostlong); +uint16_t htons(uint16_t hostshort); +uint32_t ntohl(uint32_t netlong); +uint16_t ntohs(uint16_t netshort); + +in_addr_t inet_addr(const char *); +char *inet_ntoa(struct in_addr); +const char *inet_ntop(int, const void *restrict, char *restrict, socklen_t); +int inet_pton(int, const char *restrict, void *restrict); + +#endif // ARPA_INET_H diff --git a/Userspace/libc/src/std/arpa/inet.c b/Userspace/libc/src/std/arpa/inet.c new file mode 100644 index 00000000..aa0b4933 --- /dev/null +++ b/Userspace/libc/src/std/arpa/inet.c @@ -0,0 +1,49 @@ +/* + This file is part of Fennix C Library. + + Fennix C Library is free software: you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + Fennix C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Fennix C Library. If not, see . +*/ + +#include + +#include + +export uint32_t htonl(uint32_t hostlong) +{ + return ((hostlong & 0x000000FF) << 24) | + ((hostlong & 0x0000FF00) << 8) | + ((hostlong & 0x00FF0000) >> 8) | + ((hostlong & 0xFF000000) >> 24); +} + +export uint16_t htons(uint16_t hostshort) +{ + return ((hostshort & 0x00FF) << 8) | + ((hostshort & 0xFF00) >> 8); +} + +export uint32_t ntohl(uint32_t netlong) +{ + return htonl(netlong); +} + +export uint16_t ntohs(uint16_t netshort) +{ + return htons(netshort); +} + +export in_addr_t inet_addr(const char *); +export char *inet_ntoa(struct in_addr); +export const char *inet_ntop(int, const void *restrict, char *restrict, socklen_t); +export int inet_pton(int, const char *restrict, void *restrict);