*/
static const char *casIOCtls_Route[] = {
DRV_IOCTLNAMES,
+ "get_type", // Get address type - (void), returns integer type
"get_network", // Get network - (void *Data), returns boolean success
"set_network", // Set network - (void *Data), returns boolean success
"get_nexthop", // Get next hop - (void *Data), returns boolean success
LEAVE('i', tmp);
return tmp;
- // Get Network
+ // Get address type
case 4:
+ return rt->AddressType;
+
+ // Get Network
+ case 5:
if( !CheckMem(Data, addrSize) ) return -1;
memcpy(Data, rt->Network, addrSize);
return 1;
// Set Network
- case 5:
+ case 6:
if( !CheckMem(Data, addrSize) ) return -1;
memcpy(rt->Network, Data, addrSize);
return 1;
// Get Next Hop
- case 6:
+ case 7:
if( !CheckMem(Data, addrSize) ) return -1;
memcpy(Data, rt->NextHop, addrSize);
return 1;
// Set Next Hop
- case 7:
+ case 8:
if( !CheckMem(Data, addrSize) ) return -1;
memcpy(rt->NextHop, Data, addrSize);
return 1;
// Get/Set Subnet Bits
- case 8:
+ case 9:
if( Data ) {
if( !CheckMem(Data, sizeof(int)) ) return -1;
if( *iData < 0 || *iData > addrSize*8 )
return rt->SubnetBits;
// Get/Set Metric
- case 9:
+ case 10:
if( Data ) {
if( !CheckMem(Data, sizeof(int)) ) return -1;
if( *iData < 0 ) return -1;
return rt->Metric;
// Get interface name
- case 10:
+ case 11:
if( Data ) {
if( !CheckMem(Data, strlen(rt->Interface->Name) + 1) )
return -1;
return strlen(rt->Interface->Name);
default:
- return 0;
+ return -1;
}
}