bool netlinl_test() { int sock = nas_nl_sock_create(nas_nl_sock_T_INT); char buf[4196]; const int RANDOM_REQ_ID = 23231; if (nl_interface_get_request(sock,RANDOM_REQ_ID)) { if (netlink_tools_process_socket(sock,get_netlink_data, NULL,buf,sizeof(buf), &RANDOM_REQ_ID,NULL)) { close(sock); return true; } } close(sock); return false; }
bool read_all_routes(cps_api_object_list_t list, route_filter_t *filter) { int sock = nas_nl_sock_create(nas_nl_sock_T_ROUTE); const int RANDOM_REQ_ID = 0x101; if (sock==-1) return false; bool rc = nl_request_existing_routes(sock,filter->family, RANDOM_REQ_ID); if (rc) { char buff[1024]; rc = netlink_tools_process_socket(sock,process_route_and_add_to_list,&list, buff,sizeof(buff),&RANDOM_REQ_ID,NULL); } close(sock); return rc; }
cps_api_return_code_t get_all_interfaces( cps_api_object_list_t list ) { int if_sock = 0; if((if_sock = nas_nl_sock_create(nas_nl_sock_T_INT)) < 0) { return cps_api_ret_code_ERR; } const int DEF_BUFF_LEN=10000; char *buff=(char*)malloc(DEF_BUFF_LEN); if(buff==NULL) { close(if_sock); return cps_api_ret_code_ERR; } int RANDOM_REQ_ID = 0xee00; if (nl_interface_get_request(if_sock,RANDOM_REQ_ID)) { netlink_tools_process_socket(if_sock,get_netlink_data, &list,buff,DEF_BUFF_LEN, &RANDOM_REQ_ID,NULL); } close(if_sock); free(buff); return cps_api_ret_code_OK; }