// FIXME: implement this class

// Copyright (c) 2005 David Muse
// See the COPYING file for more information.

#ifndef RUDIMENTS_NETWORKINTERFACES_H
#define RUDIMENTS_NETWORKINTERFACES_H

#include <rudiments/private/networkinterfacesincludes.h>

#ifdef RUDIMENTS_NAMESPACE
namespace rudiments {
#endif

typedef listnode< networkinterface * >  networkinterfacelistnode;
typedef list< networkinterface *, networkinterfacelistnode >
                                                networkinterfacelist;

class networkinterfaceprivate;

class networkinterface {
        public:
                        networkinterface();
                        ~networkinterface();

                sockaddr        getAddress();
                sockaddr        getDestinationAddress();
                sockaddr        getBroadcastAddress();
                sockaddr        getNetmask();
                sockaddr        getHardwareAddress();

                short         getFlags();
                int           getMetric();
                int           getMaximumTransmitUnit();
                ifmap           getDeviceMap();
                int           getSlaveDevice();
                int           getForUseByInterfaceData();
                int           getIndex();
                int           getLinkBandwidth();
                int           getQueueLength();
                const char    *getNewName();

        #include <rudiments/private/networkinterface.h>
};

class networkinterfaces {
        public:
                static        networkinterfacelist    *getList();
                static        networkinterface        *getInterface(const char *name);
        #include <rudiments/private/networkinterfaces.h>
}

#ifdef RUDIMENTS_NAMESPACE
}
#endif

#endif