int vr_genetlink_init(void) { int ret; ret = vr_message_transport_register(&netlink_transport); if (ret) return ret; return genl_register_family_with_ops(&vrouter_genl_family, vrouter_genl_ops, ARRAY_SIZE(vrouter_genl_ops)); }
/* Init NetLink and UVHost sockets */ int vr_dpdk_netlink_init(void) { void *event_sock = NULL; int ret; RTE_LOG(INFO, VROUTER, "Starting NetLink...\n"); ret = vr_message_transport_register(&dpdk_nl_transport); if (ret) return ret; #ifdef AGENT_VROUTER_TCP vr_dpdk.netlink_sock = vr_usocket(NETLINK, TCP); #else vr_dpdk.netlink_sock = vr_usocket(NETLINK, UNIX); #endif if (!vr_dpdk.netlink_sock) { RTE_LOG(ERR, VROUTER, " error creating NetLink server socket:" " %s (%d)\n", rte_strerror(errno), errno); goto error; } RTE_LOG(INFO, VROUTER, " NetLink TCP socket FD is %d\n", ((struct vr_usocket *)vr_dpdk.netlink_sock)->usock_fd); ret = vr_nl_uvhost_connect(); if (ret != 0) { RTE_LOG(ERR, VROUTER, " error creating uvhost connection\n"); goto error; } /* create and bind event usock to wake up the NetLink lcore */ event_sock = (void *)vr_usocket(EVENT, RAW); if (!event_sock) { RTE_LOG(ERR, VROUTER, " error creating NetLink event\n"); goto error; } if (vr_usocket_bind_usockets(vr_dpdk.netlink_sock, event_sock)) { RTE_LOG(ERR, VROUTER, " error binding NetLink event\n"); goto error; } vr_dpdk.netlink_event_sock = event_sock; return 0; error: vr_message_transport_unregister(&dpdk_nl_transport); vr_usocket_close(vr_dpdk.netlink_sock); return -1; }
int vr_genetlink_init(void) { int ret; ret = vr_message_transport_register(&netlink_transport); if (ret) return ret; #if ((LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0)) && \ (!(defined(RHEL_MAJOR) && (RHEL_MAJOR >= 7)))) return genl_register_family_with_ops(&vrouter_genl_family, vrouter_genl_ops, ARRAY_SIZE(vrouter_genl_ops)); #else return genl_register_family_with_ops(&vrouter_genl_family, vrouter_genl_ops); #endif }