#include <KPPPLCPExtension.h>
#include <PPPControl.h>
KPPPLCPExtension::KPPPLCPExtension(const char *name, uint8 code,
KPPPInterface& interface, driver_parameter *settings)
: fInitStatus(B_OK),
fInterface(interface),
fSettings(settings),
fCode(code),
fEnabled(true)
{
if (name)
fName = strdup(name);
else
fName = NULL;
}
KPPPLCPExtension::~KPPPLCPExtension()
{
Interface().LCP().RemoveLCPExtension(this);
free(fName);
}
status_t
KPPPLCPExtension::InitCheck() const
{
return fInitStatus;
}
status_t
KPPPLCPExtension::Control(uint32 op, void *data, size_t length)
{
dprintf("KPPPLCPExtension::Control\n");
switch (op) {
case PPPC_GET_SIMPLE_HANDLER_INFO:
{
if (length < sizeof(ppp_simple_handler_info_t) || !data)
return B_ERROR;
ppp_simple_handler_info *info = (ppp_simple_handler_info*) data;
memset(info, 0, sizeof(ppp_simple_handler_info_t));
if (Name())
strncpy(info->name, Name(), PPP_HANDLER_NAME_LENGTH_LIMIT);
info->isEnabled = IsEnabled();
break;
}
case PPPC_ENABLE:
if (length < sizeof(uint32) || !data)
return B_ERROR;
SetEnabled(*((uint32*)data));
break;
default:
return B_BAD_VALUE;
}
return B_OK;
}
status_t
KPPPLCPExtension::StackControl(uint32 op, void *data)
{
switch (op) {
default:
return B_BAD_VALUE;
}
return B_OK;
}
void
KPPPLCPExtension::Reset()
{
}
void
KPPPLCPExtension::Pulse()
{
}