in_addr_t anubis_default_route(void) { route_t *handle = route_open(); struct route_entry route_entry = {0}; in_addr_t addr = 0; if(!handle) { anubis_perror("route_open()"); return addr; }//end if int ret = route_loop(handle, route_default_route_callback, (void *)&route_entry); if(ret == 1) { struct sockaddr_in sa = {0}; addr_ntos(&route_entry.route_gw, (struct sockaddr *)&sa); addr = sa.sin_addr.s_addr; anubis_verbose("Default route: %s\n", anubis_ip_ntoa(addr)); }//end if else { anubis_err("anubis_default_route(): Default gateway is not found\n"); }//end else route_close(handle); return addr; }//end anubis_default_route
int main(void) { route_t *r; r=route_open(); if ( r == NULL ) { perror("Route open error"); exit(-1); } if ( route_loop(r, print_route_entry, NULL) == -1 ) { fprintf(stderr, "Error in route table print\n"); exit(-1); } route_close(r); exit(0); }