- int i, l;
- subnet_t *subnet;
- unsigned short int x[8];
-cp
- subnet = new_subnet();
-cp
- if(sscanf(subnetstr, "%hu.%hu.%hu.%hu/%d",
- &x[0], &x[1], &x[2], &x[3],
- &l) == 5)
- {
- subnet->type = SUBNET_IPV4;
- subnet->net.ipv4.masklength = l;
- for(i = 0; i < 4; i++)
- subnet->net.ipv4.address.x[i] = x[i];
- return subnet;
- }
-
- if(sscanf(subnetstr, "%hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx/%d",
- &x[0], &x[1], &x[2], &x[3], &x[4], &x[5], &x[6], &x[7],
- &l) == 9)
- {
- subnet->type = SUBNET_IPV6;
- subnet->net.ipv6.masklength = l;
- for(i = 0; i < 8; i++)
- subnet->net.ipv6.address.x[i] = htons(x[i]);
- return subnet;
- }
-
- if(sscanf(subnetstr, "%hu.%hu.%hu.%hu",
- &x[0], &x[1], &x[2], &x[3]) == 4)
- {
- subnet->type = SUBNET_IPV4;
- subnet->net.ipv4.masklength = 32;
- for(i = 0; i < 4; i++)
- subnet->net.ipv4.address.x[i] = x[i];
- return subnet;
- }
-
- if(sscanf(subnetstr, "%hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx",
- &x[0], &x[1], &x[2], &x[3], &x[4], &x[5], &x[6], &x[7]) == 8)
- {
- subnet->type = SUBNET_IPV6;
- subnet->net.ipv6.masklength = 128;
- for(i = 0; i < 8; i++)
- subnet->net.ipv6.address.x[i] = htons(x[i]);
- return subnet;
- }
-
- if(sscanf(subnetstr, "%hx:%hx:%hx:%hx:%hx:%hx",
- &x[0], &x[1], &x[2], &x[3], &x[4], &x[5]) == 6)
- {
- subnet->type = SUBNET_MAC;
- for(i = 0; i < 6; i++)
- subnet->net.mac.address.x[i] = x[i];
- return subnet;
- }
-
- free(subnet);
- return NULL;
+ int i, l;
+ subnet_t *subnet;
+ uint16_t x[8];
+
+ cp();
+
+ subnet = new_subnet();
+
+ if(sscanf(subnetstr, "%hu.%hu.%hu.%hu/%d",
+ &x[0], &x[1], &x[2], &x[3], &l) == 5) {
+ subnet->type = SUBNET_IPV4;
+ subnet->net.ipv4.prefixlength = l;
+
+ for(i = 0; i < 4; i++)
+ subnet->net.ipv4.address.x[i] = x[i];
+
+ return subnet;
+ }
+
+ if(sscanf(subnetstr, "%hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx/%d",
+ &x[0], &x[1], &x[2], &x[3], &x[4], &x[5], &x[6], &x[7],
+ &l) == 9) {
+ subnet->type = SUBNET_IPV6;
+ subnet->net.ipv6.prefixlength = l;
+
+ for(i = 0; i < 8; i++)
+ subnet->net.ipv6.address.x[i] = htons(x[i]);
+
+ return subnet;
+ }
+
+ if(sscanf(subnetstr, "%hu.%hu.%hu.%hu", &x[0], &x[1], &x[2], &x[3]) == 4) {
+ subnet->type = SUBNET_IPV4;
+ subnet->net.ipv4.prefixlength = 32;
+
+ for(i = 0; i < 4; i++)
+ subnet->net.ipv4.address.x[i] = x[i];
+
+ return subnet;
+ }
+
+ if(sscanf(subnetstr, "%hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx",
+ &x[0], &x[1], &x[2], &x[3], &x[4], &x[5], &x[6], &x[7]) == 8) {
+ subnet->type = SUBNET_IPV6;
+ subnet->net.ipv6.prefixlength = 128;
+
+ for(i = 0; i < 8; i++)
+ subnet->net.ipv6.address.x[i] = htons(x[i]);
+
+ return subnet;
+ }
+
+ if(sscanf(subnetstr, "%hx:%hx:%hx:%hx:%hx:%hx",
+ &x[0], &x[1], &x[2], &x[3], &x[4], &x[5]) == 6) {
+ subnet->type = SUBNET_MAC;
+
+ for(i = 0; i < 6; i++)
+ subnet->net.mac.address.x[i] = x[i];
+
+ return subnet;
+ }
+
+ free(subnet);
+
+ return NULL;