diff options
author | Luca Muscariello <lumuscar+fdio@cisco.com> | 2019-03-23 14:13:53 +0100 |
---|---|---|
committer | Angelo Mantellini <manangel@cisco.com> | 2019-03-24 14:11:17 +0100 |
commit | eb323e056e747d71867cf965434811c1de925de2 (patch) | |
tree | 23a6096823d795efe448559cf0409a18ab47932d /hicn-light/src/platforms | |
parent | 43562f9f02d35e5d540ab4028a0326c0c7cd4898 (diff) |
[HICN-141] Definition of a C API for hicn-light
Change-Id: Id861f0abe58b1e3c9ba8cc76701da0f9c6801748
Signed-off-by: Luca Muscariello <lumuscar+fdio@cisco.com>
Signed-off-by: Angelo Mantellini <manangel@cisco.com>
Diffstat (limited to 'hicn-light/src/platforms')
-rw-r--r-- | hicn-light/src/platforms/CMakeLists.txt | 40 | ||||
-rw-r--r-- | hicn-light/src/platforms/README.txt | 17 | ||||
-rw-r--r-- | hicn-light/src/platforms/android/system.c | 183 | ||||
-rw-r--r-- | hicn-light/src/platforms/darwin/system.c | 146 | ||||
-rw-r--r-- | hicn-light/src/platforms/linux/system.c | 184 | ||||
-rw-r--r-- | hicn-light/src/platforms/windows/system.c | 223 | ||||
-rw-r--r-- | hicn-light/src/platforms/windows/win_portability.c | 50 | ||||
-rw-r--r-- | hicn-light/src/platforms/windows/win_portability.h | 45 |
8 files changed, 0 insertions, 888 deletions
diff --git a/hicn-light/src/platforms/CMakeLists.txt b/hicn-light/src/platforms/CMakeLists.txt deleted file mode 100644 index 191a72213..000000000 --- a/hicn-light/src/platforms/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright (c) 2017-2019 Cisco and/or its affiliates. -# Licensed 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. - -cmake_minimum_required(VERSION 3.5 FATAL_ERROR) - -if(${CMAKE_SYSTEM_NAME} STREQUAL "Android") - list(APPEND SOURCE_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/android/system.c - ) -elseif(APPLE) - list(APPEND SOURCE_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/darwin/system.c - ) -elseif( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" ) - list(APPEND SOURCE_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/linux/system.c - ) -elseif( ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" ) - list(APPEND SOURCE_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/windows/system.c - ${CMAKE_CURRENT_SOURCE_DIR}/windows/win_portability.c - ) - list(APPEND HEADER_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/windows/win_portability.h - ) - -endif() - -set(SOURCE_FILES ${SOURCE_FILES} PARENT_SCOPE) -set(HEADER_FILES ${HEADER_FILES} PARENT_SCOPE)
\ No newline at end of file diff --git a/hicn-light/src/platforms/README.txt b/hicn-light/src/platforms/README.txt deleted file mode 100644 index a1293944c..000000000 --- a/hicn-light/src/platforms/README.txt +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. - * Licensed 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. - */ - -Operating system dependent modules. - diff --git a/hicn-light/src/platforms/android/system.c b/hicn-light/src/platforms/android/system.c deleted file mode 100644 index 68f99424b..000000000 --- a/hicn-light/src/platforms/android/system.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. - * Licensed 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. - */ - -#include <errno.h> -#include <src/config.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/ioctl.h> -#include <sys/types.h> -#include <unistd.h> - -//#define __USE_MISC -#include <net/if.h> - -// to get the list of arp types -#include <net/if_arp.h> - -// for the mac address -#include <netpacket/packet.h> - -#include <src/core/forwarder.h> -#include <src/utils/interfaceSet.h> - -#include <parc/assert/parc_Assert.h> - -#include "ifaddrs.h" - -/** - * Returns the MTU for a named interface - * - * On linux, we get the MTU by opening a socket and reading SIOCGIFMTU - * - * @param [in] ifname Interface name (e.g. "eth0") - * - * @retval number The MTU in bytes - * - * Example: - * @code - * <#example#> - * @endcode - */ -static int getMtu(const char *ifname) { - struct ifreq ifr; - int fd; - - fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); - - strcpy(ifr.ifr_name, ifname); - ioctl(fd, SIOCGIFMTU, &ifr); - - close(fd); - return ifr.ifr_mtu; -} - -InterfaceSet *system_Interfaces(Forwarder *forwarder) { - InterfaceSet *set = interfaceSetCreate(); - - Logger *logger = forwarder_GetLogger(forwarder); - - // this is the dynamically allocated head of the list - struct ifaddrs *ifaddr; - int failure = getifaddrs(&ifaddr); - parcAssertFalse(failure, "Error getifaddrs: (%d) %s", errno, strerror(errno)); - - struct ifaddrs *next; - for (next = ifaddr; next != NULL; next = next->ifa_next) { - if ((next->ifa_addr == NULL) || ((next->ifa_flags & IFF_UP) == 0)) { - continue; - } - - Interface *iface = interfaceSetGetByName(set, next->ifa_name); - if (iface == NULL) { - unsigned mtu = (unsigned)getMtu(next->ifa_name); - - iface = interfaceCreate( - next->ifa_name, forwarder_GetNextConnectionId(forwarder), - next->ifa_flags & IFF_LOOPBACK, next->ifa_flags & IFF_MULTICAST, mtu); - - interfaceSetAdd(set, iface); - } - - int family = next->ifa_addr->sa_family; - switch (family) { - case AF_INET: { - Address *address = - addressCreateFromInet((struct sockaddr_in *)next->ifa_addr); - interfaceAddAddress(iface, address); - break; - } - - case AF_INET6: { - Address *address = - addressCreateFromInet6((struct sockaddr_in6 *)next->ifa_addr); - interfaceAddAddress(iface, address); - break; - } - - case AF_PACKET: { - struct sockaddr_ll *addr_ll = (struct sockaddr_ll *)next->ifa_addr; - - if (logger_IsLoggable(logger, LoggerFacility_IO, PARCLogLevel_Debug)) { - logger_Log(logger, LoggerFacility_IO, PARCLogLevel_Debug, __func__, - "sockaddr_ll family %d proto %d ifindex %d hatype %d " - "pkttype %d halen %d", - addr_ll->sll_family, addr_ll->sll_protocol, - addr_ll->sll_ifindex, addr_ll->sll_hatype, - addr_ll->sll_pkttype, addr_ll->sll_halen); - } - - switch (addr_ll->sll_hatype) { - // list of the ARP hatypes we can extract a MAC address from - case ARPHRD_ETHER: - // fallthrough - case ARPHRD_IEEE802: { - Address *address = addressCreateFromLink( - (uint8_t *)addr_ll->sll_addr, addr_ll->sll_halen); - interfaceAddAddress(iface, address); - break; - } - default: - break; - } - - break; - } - } - } - - freeifaddrs(ifaddr); - return set; -} - -Address *system_GetMacAddressByName(Forwarder *forwarder, - const char *interfaceName) { - Address *linkAddress = NULL; - - InterfaceSet *interfaceSet = system_Interfaces(forwarder); - Interface *interface = interfaceSetGetByName(interfaceSet, interfaceName); - - if (interface) { - const AddressList *addressList = interfaceGetAddresses(interface); - - size_t length = addressListLength(addressList); - for (size_t i = 0; i < length && !linkAddress; i++) { - const Address *a = addressListGetItem(addressList, i); - if (addressGetType(a) == ADDR_LINK) { - linkAddress = addressCopy(a); - } - } - } - - interfaceSetDestroy(&interfaceSet); - - return linkAddress; -} - -unsigned system_InterfaceMtu(Forwarder *forwarder, const char *interfaceName) { - unsigned mtu = 0; - - InterfaceSet *interfaceSet = system_Interfaces(forwarder); - Interface *interface = interfaceSetGetByName(interfaceSet, interfaceName); - - if (interface) { - mtu = interfaceGetMTU(interface); - } - - interfaceSetDestroy(&interfaceSet); - - return mtu; -} diff --git a/hicn-light/src/platforms/darwin/system.c b/hicn-light/src/platforms/darwin/system.c deleted file mode 100644 index b8ef80c63..000000000 --- a/hicn-light/src/platforms/darwin/system.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. - * Licensed 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. - */ - -#include <errno.h> -#include <ifaddrs.h> -#include <src/config.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/types.h> - -#include <net/if.h> -#include <net/if_dl.h> -#include <net/if_types.h> -#include <sys/socket.h> - -#include <parc/assert/parc_Assert.h> - -#include <src/utils/interfaceSet.h> - -#include <src/core/forwarder.h> -#include <src/core/system.h> - -InterfaceSet *system_Interfaces(Forwarder *forwarder) { - InterfaceSet *set = interfaceSetCreate(); - - // this is the dynamically allocated head of the list - struct ifaddrs *ifaddr; - int failure = getifaddrs(&ifaddr); - parcAssertFalse(failure, "Error getifaddrs: (%d) %s", errno, strerror(errno)); - - struct ifaddrs *next; - for (next = ifaddr; next != NULL; next = next->ifa_next) { - if ((next->ifa_addr == NULL) || ((next->ifa_flags & IFF_UP) == 0)) { - continue; - } - - // This assumes the LINK address comes first so we can get the MTU - // when the interface is created. - - Interface *iface = interfaceSetGetByName(set, next->ifa_name); - if (iface == NULL) { - unsigned mtu = 0; - - if (next->ifa_data != NULL) { - struct if_data *ifdata = (struct if_data *)next->ifa_data; - mtu = ifdata->ifi_mtu; - } - - iface = interfaceCreate( - next->ifa_name, forwarder_GetNextConnectionId(forwarder), - next->ifa_flags & IFF_LOOPBACK, next->ifa_flags & IFF_MULTICAST, mtu); - - interfaceSetAdd(set, iface); - } - - int family = next->ifa_addr->sa_family; - switch (family) { - case AF_INET: { - Address *address = - addressCreateFromInet((struct sockaddr_in *)next->ifa_addr); - interfaceAddAddress(iface, address); - break; - } - - case AF_INET6: { - Address *address = - addressCreateFromInet6((struct sockaddr_in6 *)next->ifa_addr); - interfaceAddAddress(iface, address); - break; - } - - case AF_LINK: { - struct sockaddr_dl *addr_dl = (struct sockaddr_dl *)next->ifa_addr; - - // skip links with 0-length address - if (addr_dl->sdl_alen > 0) { - // addr_dl->sdl_data[12] contains the interface name followed by the - // MAC address, so need to offset in to the array past the interface - // name. - Address *address = addressCreateFromLink( - (uint8_t *)&addr_dl->sdl_data[addr_dl->sdl_nlen], - addr_dl->sdl_alen); - interfaceAddAddress(iface, address); - } - break; - } - } - } - - freeifaddrs(ifaddr); - - return set; -} - -Address *system_GetMacAddressByName(Forwarder *forwarder, - const char *interfaceName) { - Address *linkAddress = NULL; - - InterfaceSet *interfaceSet = system_Interfaces(forwarder); - Interface *interface = interfaceSetGetByName(interfaceSet, interfaceName); - - if (interface) { - const AddressList *addressList = interfaceGetAddresses(interface); - - size_t length = addressListLength(addressList); - for (size_t i = 0; i < length && !linkAddress; i++) { - const Address *a = addressListGetItem(addressList, i); - if (addressGetType(a) == ADDR_LINK) { - linkAddress = addressCopy(a); - } - } - } - - interfaceSetDestroy(&interfaceSet); - - return linkAddress; -} - -unsigned system_InterfaceMtu(Forwarder *forwarder, const char *interfaceName) { - unsigned mtu = 0; - - if (interfaceName) { - InterfaceSet *interfaceSet = system_Interfaces(forwarder); - Interface *interface = interfaceSetGetByName(interfaceSet, interfaceName); - - if (interface) { - mtu = interfaceGetMTU(interface); - } - - interfaceSetDestroy(&interfaceSet); - } - return mtu; -} diff --git a/hicn-light/src/platforms/linux/system.c b/hicn-light/src/platforms/linux/system.c deleted file mode 100644 index fcf13becc..000000000 --- a/hicn-light/src/platforms/linux/system.c +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. - * Licensed 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. - */ - -#include <errno.h> -#include <ifaddrs.h> -#include <src/config.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/ioctl.h> -#include <sys/types.h> -#include <unistd.h> - -//#define __USE_MISC -#include <net/if.h> - -// to get the list of arp types -#include <net/if_arp.h> - -// for the mac address -#include <netpacket/packet.h> - -#include <src/core/forwarder.h> -#include <src/utils/interfaceSet.h> - -#include <parc/assert/parc_Assert.h> - -#include <src/utils/addressList.h> - -/** - * Returns the MTU for a named interface - * - * On linux, we get the MTU by opening a socket and reading SIOCGIFMTU - * - * @param [in] ifname Interface name (e.g. "eth0") - * - * @retval number The MTU in bytes - * - * Example: - * @code - * <#example#> - * @endcode - */ -static int getMtu(const char *ifname) { - struct ifreq ifr; - int fd; - - fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); - - strcpy(ifr.ifr_name, ifname); - ioctl(fd, SIOCGIFMTU, &ifr); - - close(fd); - return ifr.ifr_mtu; -} - -InterfaceSet *system_Interfaces(Forwarder *forwarder) { - InterfaceSet *set = interfaceSetCreate(); - - Logger *logger = forwarder_GetLogger(forwarder); - - // this is the dynamically allocated head of the list - struct ifaddrs *ifaddr; - int failure = getifaddrs(&ifaddr); - parcAssertFalse(failure, "Error getifaddrs: (%d) %s", errno, strerror(errno)); - - struct ifaddrs *next; - for (next = ifaddr; next != NULL; next = next->ifa_next) { - if ((next->ifa_addr == NULL) || ((next->ifa_flags & IFF_UP) == 0)) { - continue; - } - - Interface *iface = interfaceSetGetByName(set, next->ifa_name); - if (iface == NULL) { - unsigned mtu = (unsigned)getMtu(next->ifa_name); - - iface = interfaceCreate( - next->ifa_name, forwarder_GetNextConnectionId(forwarder), - next->ifa_flags & IFF_LOOPBACK, next->ifa_flags & IFF_MULTICAST, mtu); - - interfaceSetAdd(set, iface); - } - - int family = next->ifa_addr->sa_family; - switch (family) { - case AF_INET: { - Address *address = - addressCreateFromInet((struct sockaddr_in *)next->ifa_addr); - interfaceAddAddress(iface, address); - break; - } - - case AF_INET6: { - Address *address = - addressCreateFromInet6((struct sockaddr_in6 *)next->ifa_addr); - interfaceAddAddress(iface, address); - break; - } - - case AF_PACKET: { - struct sockaddr_ll *addr_ll = (struct sockaddr_ll *)next->ifa_addr; - - if (logger_IsLoggable(logger, LoggerFacility_IO, PARCLogLevel_Debug)) { - logger_Log(logger, LoggerFacility_IO, PARCLogLevel_Debug, __func__, - "sockaddr_ll family %d proto %d ifindex %d hatype %d " - "pkttype %d halen %d", - addr_ll->sll_family, addr_ll->sll_protocol, - addr_ll->sll_ifindex, addr_ll->sll_hatype, - addr_ll->sll_pkttype, addr_ll->sll_halen); - } - - switch (addr_ll->sll_hatype) { - // list of the ARP hatypes we can extract a MAC address from - case ARPHRD_ETHER: - // fallthrough - case ARPHRD_IEEE802: { - Address *address = addressCreateFromLink( - (uint8_t *)addr_ll->sll_addr, addr_ll->sll_halen); - interfaceAddAddress(iface, address); - break; - } - default: - break; - } - - break; - } - } - } - - freeifaddrs(ifaddr); - return set; -} - -Address *system_GetMacAddressByName(Forwarder *forwarder, - const char *interfaceName) { - Address *linkAddress = NULL; - - InterfaceSet *interfaceSet = system_Interfaces(forwarder); - Interface *interface = interfaceSetGetByName(interfaceSet, interfaceName); - - if (interface) { - const AddressList *addressList = interfaceGetAddresses(interface); - - size_t length = addressListLength(addressList); - for (size_t i = 0; i < length && !linkAddress; i++) { - const Address *a = addressListGetItem(addressList, i); - if (addressGetType(a) == ADDR_LINK) { - linkAddress = addressCopy(a); - } - } - } - - interfaceSetDestroy(&interfaceSet); - - return linkAddress; -} - -unsigned system_InterfaceMtu(Forwarder *forwarder, const char *interfaceName) { - unsigned mtu = 0; - - InterfaceSet *interfaceSet = system_Interfaces(forwarder); - Interface *interface = interfaceSetGetByName(interfaceSet, interfaceName); - - if (interface) { - mtu = interfaceGetMTU(interface); - } - - interfaceSetDestroy(&interfaceSet); - - return mtu; -} diff --git a/hicn-light/src/platforms/windows/system.c b/hicn-light/src/platforms/windows/system.c deleted file mode 100644 index a23b7d95e..000000000 --- a/hicn-light/src/platforms/windows/system.c +++ /dev/null @@ -1,223 +0,0 @@ -/*
- * Copyright (c) 2019 Cisco and/or its affiliates.
- * Licensed 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.
- */
-
-#include <parc/assert/parc_Assert.h>
-#include <src/config.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <sys/types.h>
-
-#include <errno.h>
-#include <string.h>
-
-#define WORKING_BUFFER_SIZE 15000
-#define MAX_TRIES 3
-
-#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x))
-#define FREE(x) HeapFree(GetProcessHeap(), 0, (x))
-
-#include <src/core/forwarder.h>
-#include <src/utils/interfaceSet.h>
-
-#include <src/utils/addressList.h>
-
-/**
- * Returns the MTU for a named interface
- *
- * On linux, we get the MTU by opening a socket and reading SIOCGIFMTU
- *
- * @param [in] ifname Interface name (e.g. "eth0")
- *
- * @retval number The MTU in bytes
- *
- * Example:
- * @code
- * <#example#>
- * @endcode
- */
-static int getMtu(const char *ifname) {
- PIP_ADAPTER_ADDRESSES pAddresses = NULL;
- PIP_ADAPTER_ADDRESSES pCurrAddresses = NULL;
- ULONG outBufLen = 0;
- ULONG flags = GAA_FLAG_INCLUDE_PREFIX;
- ULONG family = AF_UNSPEC;
-
- DWORD dwSize = 0;
- DWORD dwRetVal = 0;
- ULONG Iterations = 0;
- do {
- pAddresses = (IP_ADAPTER_ADDRESSES *)MALLOC(outBufLen);
- if (pAddresses == NULL) {
- printf("Memory allocation failed for IP_ADAPTER_ADDRESSES struct\n");
- exit(1);
- }
-
- dwRetVal =
- GetAdaptersAddresses(family, flags, NULL, pAddresses, &outBufLen);
-
- if (dwRetVal == ERROR_BUFFER_OVERFLOW) {
- FREE(pAddresses);
- pAddresses = NULL;
- } else {
- break;
- }
-
- Iterations++;
-
- } while ((dwRetVal == ERROR_BUFFER_OVERFLOW) && (Iterations < MAX_TRIES));
-
- if (dwRetVal == NO_ERROR) {
- pCurrAddresses = pAddresses;
- while (pCurrAddresses) {
- if (strcmp(pCurrAddresses->AdapterName, ifname)) {
- int mtu = pCurrAddresses->Mtu;
- if (pAddresses) {
- FREE(pAddresses);
- }
- return mtu;
- }
- pCurrAddresses = pCurrAddresses->Next;
- }
- }
-
- if (pAddresses) {
- FREE(pAddresses);
- }
- return -1;
-}
-
-InterfaceSet *system_Interfaces(Forwarder *forwarder) {
- InterfaceSet *set = interfaceSetCreate();
-
- Logger *logger = forwarder_GetLogger(forwarder);
-
- DWORD dwSize = 0;
- DWORD dwRetVal = 0;
- unsigned int i = 0;
- // Set the flags to pass to GetAdaptersAddresses
- ULONG flags = GAA_FLAG_INCLUDE_PREFIX;
-
- // default to unspecified address family (both)
- ULONG family = AF_UNSPEC;
-
- LPVOID lpMsgBuf = NULL;
-
- PIP_ADAPTER_ADDRESSES pAddresses = NULL;
- ULONG outBufLen = 0;
- ULONG Iterations = 0;
-
- PIP_ADAPTER_ADDRESSES pCurrAddresses = NULL;
- PIP_ADAPTER_UNICAST_ADDRESS pUnicast = NULL;
- PIP_ADAPTER_ANYCAST_ADDRESS pAnycast = NULL;
- PIP_ADAPTER_MULTICAST_ADDRESS pMulticast = NULL;
- IP_ADAPTER_DNS_SERVER_ADDRESS *pDnServer = NULL;
- IP_ADAPTER_PREFIX *pPrefix = NULL;
-
- outBufLen = WORKING_BUFFER_SIZE;
-
- do {
- pAddresses = (IP_ADAPTER_ADDRESSES *)MALLOC(outBufLen);
- parcAssertNotNull(
- pAddresses,
- "Memory allocation failed for IP_ADAPTER_ADDRESSES struct\n");
- dwRetVal =
- GetAdaptersAddresses(family, flags, NULL, pAddresses, &outBufLen);
-
- if (dwRetVal == ERROR_BUFFER_OVERFLOW) {
- FREE(pAddresses);
- pAddresses = NULL;
- } else {
- break;
- }
-
- Iterations++;
-
- } while ((dwRetVal == ERROR_BUFFER_OVERFLOW) && (Iterations < MAX_TRIES));
- if (dwRetVal == NO_ERROR) {
- // If successful, output some information from the data we received
- pCurrAddresses = pAddresses;
- while (pCurrAddresses) {
- if (pCurrAddresses->OperStatus == IfOperStatusUp) {
- Interface *iface =
- interfaceSetGetByName(set, pCurrAddresses->AdapterName);
- if (iface == NULL) {
- pMulticast = pCurrAddresses->FirstMulticastAddress;
- if (pMulticast) {
- for (i = 0; pMulticast != NULL; i++) pMulticast = pMulticast->Next;
- }
-
- iface = interfaceCreate(
- pCurrAddresses->AdapterName,
- forwarder_GetNextConnectionId(forwarder),
- pCurrAddresses->IfType == IF_TYPE_SOFTWARE_LOOPBACK, i > 0,
- pCurrAddresses->Mtu);
-
- interfaceSetAdd(set, iface);
- for (pUnicast = pCurrAddresses->FirstUnicastAddress; pUnicast != NULL;
- pUnicast = pUnicast->Next) {
- int family = pUnicast->Address.lpSockaddr->sa_family;
-
- switch (family) {
- case AF_INET: {
- char *ip = inet_ntoa(
- ((struct sockaddr_in *)(pUnicast->Address.lpSockaddr))
- ->sin_addr);
- Address *address = addressCreateFromInet(
- (struct sockaddr_in *)(pUnicast->Address.lpSockaddr));
- interfaceAddAddress(iface, address);
- break;
- }
-
- case AF_INET6: {
- char str[INET6_ADDRSTRLEN];
- inet_ntop(
- AF_INET6,
- &((struct sockaddr_in6 *)(pUnicast->Address.lpSockaddr))
- ->sin6_addr,
- str, INET6_ADDRSTRLEN);
- Address *address = addressCreateFromInet6(
- (struct sockaddr_in6 *)(pUnicast->Address.lpSockaddr));
- interfaceAddAddress(iface, address);
- break;
- }
-
- default:
- break;
- }
- }
- }
- }
- pCurrAddresses = pCurrAddresses->Next;
- }
- }
-
- if (pAddresses) {
- FREE(pAddresses);
- }
- return set;
-}
-
-Address *system_GetMacAddressByName(Forwarder *forwarder,
- const char *interfaceName) {
- return NULL;
-}
-
-unsigned system_InterfaceMtu(Forwarder *forwarder, const char *interfaceName) {
- unsigned mtu = 0;
-
- return mtu;
-}
diff --git a/hicn-light/src/platforms/windows/win_portability.c b/hicn-light/src/platforms/windows/win_portability.c deleted file mode 100644 index cc592cd4b..000000000 --- a/hicn-light/src/platforms/windows/win_portability.c +++ /dev/null @@ -1,50 +0,0 @@ -/*
- * Copyright (c) 2019 Cisco and/or its affiliates.
- * Licensed 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.
- */
-
-#pragma once
-
-#include <src/platforms/windows/win_portability.h>
-
-int getline(char **lineptr, size_t *n, FILE *stream) {
- static char line[256];
- char *ptr;
- unsigned int len;
-
- if (lineptr == NULL || n == NULL) {
- errno = EINVAL;
- return -1;
- }
-
- if (ferror(stream)) return -1;
-
- if (feof(stream)) return -1;
-
- fgets(line, 256, stream);
-
- ptr = strchr(line, '\n');
- if (ptr) *ptr = '\0';
-
- len = (unsigned int)strlen(line);
-
- if ((len + 1) < 256) {
- ptr = (char *)realloc(*lineptr, 256);
- if (ptr == NULL) return (-1);
- *lineptr = ptr;
- *n = 256;
- }
-
- strcpy(*lineptr, line);
- return (len);
-}
\ No newline at end of file diff --git a/hicn-light/src/platforms/windows/win_portability.h b/hicn-light/src/platforms/windows/win_portability.h deleted file mode 100644 index 5c25f4bb2..000000000 --- a/hicn-light/src/platforms/windows/win_portability.h +++ /dev/null @@ -1,45 +0,0 @@ -/*
- * Copyright (c) 2019 Cisco and/or its affiliates.
- * Licensed 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.
- */
-
-#pragma once
-#include <parc/windows/parc_Utils.h>
-#include <afunix.h>
-#include <io.h>
-#include <iphlpapi.h>
-#include <process.h>
-#include <stdio.h>
-#pragma comment(lib, "IPHLPAPI.lib")
-
-#ifndef in_port_t
-#define in_port_t uint16_t
-#endif
-
-#ifndef in_addr_t
-#define in_addr_t uint32_t
-#endif
-
-#ifndef strncasecmp
-#define strncasecmp _strnicmp
-#endif
-
-#ifndef strcasecmp
-#define strcasecmp _stricmp
-#endif
-
-#define HAVE_STRUCT_TIMESPEC
-
-#ifndef getline
-int getline(char **lineptr, size_t *n, FILE *stream);
-#endif
\ No newline at end of file |