-
- if (route->up != route->kup) {
- network=ipaddr_to_string(route->net.prefix);
- mask=ipaddr_to_string(route->net.mask);
- secnetaddr=ipaddr_to_string(st->nl.secnet_address);
- Message(M_INFO,"%s: %s route %s/%d %s kernel routing table\n",
- st->nl.name,route->up?"adding":"deleting",network,
- route->net.len,route->up?"to":"from");
- sys_cmd(st->route_path,"route",route->up?"add":"del","-net",network,
- "netmask",mask,"gw",secnetaddr,(char *)0);
- free(network); free(mask); free(secnetaddr);
- route->kup=route->up;
+ struct subnet_list *nets;
+ uint32_t i;
+
+ if (routes->up != routes->kup) {
+ nets=routes->subnets;
+ for (i=0; i<nets->entries; i++) {
+ network=ipaddr_to_string(nets->list[i].prefix);
+ mask=ipaddr_to_string(nets->list[i].mask);
+ secnetaddr=ipaddr_to_string(st->nl.secnet_address);
+ Message(M_INFO,"%s: %s route %s/%d %s kernel routing table\n",
+ st->nl.name,routes->up?"adding":"deleting",network,
+ nets->list[i].len,routes->up?"to":"from");
+ sys_cmd(st->route_path,"route",routes->up?"add":"del",
+ "-net",network,"netmask",mask,"gw",secnetaddr,(char *)0);
+ free(network); free(mask); free(secnetaddr);
+ }
+ routes->kup=routes->up;