#include <netlink/route/link.h>
#include <netlink/route/neighbour.h>
#include <netlink/route/route.h>
+#include <errno.h>
#include <glib.h>
{
inm_util_arp_data_s *arp_data = (inm_util_arp_data_s *)user_data;
struct sockaddr_ll ll_addr;
- guchar buf[60] = {0,};
+ guchar buf[64] = {0,};
guchar *pos = NULL;
gint ret = 0;
+ char err_str[128] = {0,};
__INM_FUNC_ENTER__;
memcpy(ll_addr.sll_addr, arp_data->hwaddr, ETH_ALEN);
ll_addr.sll_ifindex = arp_data->ifindex;
- ret = sendto(arp_data->sock, buf, 42, 0,
+ ret = sendto(arp_data->sock, buf, sizeof(buf), 0,
(struct sockaddr *) &(ll_addr),
sizeof(struct sockaddr_ll));
-
- INM_LOGI("Sent to IP addr: ");
- __print_ip(arp_data->ipaddr);
+ if (ret < 0) {
+ strerror_r(errno, err_str, 128);
+ INM_LOGE("Sending ARP Packet failed. errno[%d]: %s\n", errno, err_str);
+ } else {
+ INM_LOGI("Sent to IP addr: ");
+ __print_ip(arp_data->ipaddr);
+ }
__INM_FUNC_EXIT__;
return (ret != -1);
}
__init_arp_sock_data(arp_data);
+ INM_LOGI("MOON socket AF_PACKET: %d, SOCK_RAW: %d, ETH_P_ARP: %d", AF_PACKET, SOCK_RAW, htons(ETH_P_ARP));
sock = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ARP));
RET_IF_SOCK_FAILURE(sock);