/*! \brief Allows private extensions. If you override this method you must call the parent's method for unknown ops. */ status_t KPPPDevice::Control(uint32 op, void *data, size_t length) { switch (op) { case PPPC_GET_DEVICE_INFO: { if (length < sizeof(ppp_device_info_t) || !data) return B_NO_MEMORY; ppp_device_info *info = (ppp_device_info*) data; memset(info, 0, sizeof(ppp_device_info_t)); if (Name()) strncpy(info->name, Name(), PPP_HANDLER_NAME_LENGTH_LIMIT); info->MTU = MTU(); info->inputTransferRate = InputTransferRate(); info->outputTransferRate = OutputTransferRate(); info->outputBytesCount = CountOutputBytes(); info->isUp = IsUp(); break; } default: return B_BAD_VALUE; } return B_OK; }
uint16_t max_packet_len() const noexcept { return sizeof(net::ethernet::VLAN_header) + MTU(); }
constexpr uint16_t bufsize() const { return MTU() + sizeof(net::Ethernet::header) + sizeof(net::Ethernet::trailer) + sizeof(virtio_net_hdr); }