#ifndef _K_PPP_MANAGER__H
#define _K_PPP_MANAGER__H
#include <module.h>
#include <net_device.h>
#include <PPPControl.h>
#include <PPPReportDefs.h>
#define PPP_INTERFACE_MODULE_NAME NETWORK_MODULES_ROOT "/ppp/ppp_manager/v1"
#define PPP_UNDEFINED_INTERFACE_ID 0
class KPPPInterface;
typedef struct ppp_interface_entry {
char *name;
KPPPInterface *interface;
vint32 accessing;
bool deleting;
} ppp_interface_entry;
typedef struct ppp_interface_module_info {
struct module_info info;
ppp_interface_id (*CreateInterface)(const driver_settings *settings,
ppp_interface_id parentID);
ppp_interface_id (*CreateInterfaceWithName)(const char *name,
ppp_interface_id parentID);
bool (*DeleteInterface)(ppp_interface_id ID);
bool (*RemoveInterface)(ppp_interface_id ID);
net_device *(*RegisterInterface)(ppp_interface_id ID);
KPPPInterface *(*GetInterface)(ppp_interface_id ID);
bool (*UnregisterInterface)(ppp_interface_id ID);
status_t (*ControlInterface)(ppp_interface_id ID, uint32 op, void *data,
size_t length);
int32 (*GetInterfaces)(ppp_interface_id *interfaces, int32 count,
ppp_interface_filter filter);
int32 (*CountInterfaces)(ppp_interface_filter filter);
void (*EnableReports)(ppp_report_type type, thread_id thread,
int32 flags);
void (*DisableReports)(ppp_report_type type, thread_id thread);
bool (*DoesReport)(ppp_report_type type, thread_id thread);
} ppp_interface_module_info;
#endif