Usermode/lspci - Recreated without the huge database of vendors
[tpg/acess2.git] / KernelLand / Modules / IPStack / interface.c
index 9ff3f17..9bd00d9 100644 (file)
@@ -10,8 +10,8 @@
 #include "include/adapters.h"
 
 // === CONSTANTS ===
-//! Default timeout value, 30 seconds
-#define DEFAULT_TIMEOUT        (30*1000)
+//! Default timeout value, 5 seconds
+#define DEFAULT_TIMEOUT        (5*1000)
 
 // === IMPORTS ===
 extern int     IPv4_Ping(tInterface *Iface, tIPv4 Addr);
@@ -237,6 +237,7 @@ tInterface *IPStack_AddInterface(const char *Device, const char *Name)
        iface->Next = NULL;
        iface->Type = 0;        // Unset type
        iface->Address = iface->Name + nameLen + 1;     // Address
+       memset(&iface->Route, 0, sizeof(iface->Route));
        iface->Route.Network = iface->Address + IPStack_GetAddressSize(-1);
        iface->Route.NextHop = iface->Route.Network + IPStack_GetAddressSize(-1);
        
@@ -440,15 +441,19 @@ int IPStack_Iface_IOCtl(tVFS_Node *Node, int ID, void *Data)
         * - Gets the name of the attached device
         */
        case 8:
-               Log_Error("IPStack", "TODO: Reimplement interface.ioctl(get_device)");
-//             if( iface->Adapter == NULL )
+               if( iface->Adapter == NULL )
                        LEAVE_RET('i', 0);
-//             if( Data == NULL )
-//                     LEAVE_RET('i', iface->Adapter->DeviceLen);
-//             if( !CheckMem( Data, iface->Adapter->DeviceLen+1 ) )
-//                     LEAVE_RET('i', -1);
-//             strcpy( Data, iface->Adapter->Device );
-//             LEAVE_RET('i', iface->Adapter->DeviceLen);
+               char *name = Adapter_GetName(iface->Adapter);
+                int len = strlen(name);
+               if( Data ) {
+                       if( !CheckMem( Data, len+1 ) ) {
+                               free(name);
+                               LEAVE_RET('i', -1);
+                       }
+                       strcpy( Data, name );
+               }
+               free(name);
+               LEAVE_RET('i', len);
        
        /*
         * ping

UCC git Repository :: git.ucc.asn.au