static void _set_mac(cps_api_object_t obj, struct nlmsghdr *nlh, struct ifinfomsg * inf,size_t len) {
    cps_api_object_attr_t attr = cps_api_object_attr_get(obj, DELL_IF_IF_INTERFACES_INTERFACE_PHYS_ADDRESS);
    if (attr==NULL) return;
    void *addr = cps_api_object_attr_data_bin(attr);
    hal_mac_addr_t mac_addr;

    int addr_len = strlen(static_cast<char *>(addr));
    if (std_string_to_mac(&mac_addr, static_cast<const char *>(addr), addr_len)) {
        char mac_str[40] = {0};
        EV_LOG(INFO, NAS_OS, ev_log_s_MAJOR, "NAS-OS", "Setting mac address %s, actual string %s, len %d",
                std_mac_to_string(&mac_addr,mac_str,sizeof(mac_str)), static_cast<char *>(addr), addr_len);
        nlmsg_add_attr(nlh,len,IFLA_ADDRESS, mac_addr , cps_api_object_attr_len(attr));
    }
}
t_std_error nas_os_util_int_get_if_details(const char *name, cps_api_object_t obj)
{
    struct ifreq  ifr;
    strncpy(ifr.ifr_ifrn.ifrn_name,name,sizeof(ifr.ifr_ifrn.ifrn_name)-1);
    const int NAS_LINK_MTU_HDR_SIZE = 32;

    int sock = socket(AF_INET, SOCK_DGRAM, 0);
    if (sock==-1) return STD_ERR(INTERFACE,FAIL,errno);

    t_std_error err = STD_ERR(INTERFACE,FAIL,errno);

    cps_api_object_attr_add(obj, IF_INTERFACES_INTERFACE_NAME, name, (strlen(name)+1));

    do {
        if (ioctl(sock, SIOCGIFFLAGS, &ifr) >= 0) {
            cps_api_object_attr_add_u32(obj,BASE_IF_LINUX_IF_INTERFACES_INTERFACE_IF_FLAGS, ifr.ifr_flags);
            cps_api_object_attr_add_u32(obj,IF_INTERFACES_INTERFACE_ENABLED,
                (ifr.ifr_flags & IFF_UP) ? true :false);
        } else break;

        ifr.ifr_hwaddr.sa_family = ARPHRD_ETHER;
        if (ioctl(sock, SIOCGIFHWADDR, &ifr) >= 0) {
            char buff[40];
            const char *_p = std_mac_to_string((const hal_mac_addr_t *)(ifr.ifr_hwaddr.sa_data),
                                                buff, sizeof(buff));
            cps_api_object_attr_add(obj,DELL_IF_IF_INTERFACES_INTERFACE_PHYS_ADDRESS,_p,strlen(_p)+1);
        } else break;

        if (ioctl(sock, SIOCGIFMTU, &ifr) >= 0) {
            cps_api_object_attr_add_u32(obj, DELL_IF_IF_INTERFACES_INTERFACE_MTU,
                                        (ifr.ifr_mtu  + NAS_LINK_MTU_HDR_SIZE));
        } else break;

        err = STD_ERR_OK;
    } while(0);

    close(sock);
    return err;
}