#include <linux/rtnetlink.h>
#include <arpa/inet.h>
#include <netinet/in.h>
-#include <wifi.h>
#include <net_connection.h>
#include "caipinterface.h"
#include <coap/utlist.h>
#define TAG "OIC_CA_IP_MONITOR"
-
+#define MAX_INTERFACE_INFO_LENGTH (1024)
#define NETLINK_MESSAGE_LENGTH (4096)
#define IFC_LABEL_LOOP "lo"
#define IFC_ADDR_LOOP_IPV4 "127.0.0.1"
{
continue;
}
+
struct ifinfomsg *ifi = (struct ifinfomsg *)NLMSG_DATA(nh);
if (!ifi)
{
continue;
}
- int ifiIndex = ifi->ifi_index;
+ if (RTM_DELADDR == nh->nlmsg_type)
+ {
+ CloseMulticastSocket();
+ }
+ int ifiIndex = ifi->ifi_index;
iflist = CAIPGetInterfaceInformation(ifiIndex);
if (!iflist)
{
OIC_LOG_V(ERROR, TAG, "get interface info failed: %s", strerror(errno));
return NULL;
}
+ CreateMulticastSocket();
}
return iflist;
}
{
if (!g_adapterCallbackList)
{
- // Initialize Wifi service.
- if (WIFI_ERROR_NONE != wifi_initialize())
- {
- OIC_LOG(ERROR, TAG, "wifi_initialize failed");
- }
-
// Initialize Connections.
connection_error_e ret = connection_create(&connection);
if (CONNECTION_ERROR_NONE != ret)
CAIPUnSetNetworkMonitorCallback(adapter);
if (!g_adapterCallbackList)
{
- // Deinitialize Wifi service.
- if (WIFI_ERROR_NONE != wifi_deinitialize())
- {
- OIC_LOG(ERROR, TAG, "wifi_deinitialize failed");
- }
-
// Reset callback for receiving state changes.
if (connection)
{