示例#1
0
/**
 * Construct a DHCP server with a default configuration.
 */
VBoxNetDhcp::VBoxNetDhcp():VBoxNetBaseService("VBoxNetDhcp", "VBoxNetDhcp")
{
    /*   m_enmTrunkType          = kIntNetTrunkType_WhateverNone; */
    RTMAC mac;
    mac.au8[0]     = 0x08;
    mac.au8[1]     = 0x00;
    mac.au8[2]     = 0x27;
    mac.au8[3]     = 0x40;
    mac.au8[4]     = 0x41;
    mac.au8[5]     = 0x42;
    setMacAddress(mac);

    RTNETADDRIPV4 address;
    address.u = RT_H2N_U32_C(RT_BSWAP_U32_C(RT_MAKE_U32_FROM_U8( 10,  0,  2,  5)));
    setIpv4Address(address);

    setSendBufSize(8 * _1K);
    setRecvBufSize(50 * _1K);

    m_uCurMsgType           = UINT8_MAX;
    m_cbCurMsg              = 0;
    m_pCurMsg               = NULL;
    memset(&m_CurHdrs, '\0', sizeof(m_CurHdrs));

    m_fIgnoreCmdLineParameters = true;

    for(unsigned int i = 0; i < RT_ELEMENTS(g_aOptionDefs); ++i)
        addCommandLineOption(&g_aOptionDefs[i]);
}
示例#2
0
void WlanCoreImpl::cacheInterfaceInfo()
{
	m_deviceOk = false;
	memset(&m_deviceId, 0, sizeof(m_deviceId));
	PWLAN_INTERFACE_INFO_LIST intfList;
	if (ERROR_SUCCESS == m_wlanapi->WlanEnumInterfaces(m_wlanHandle, NULL, &intfList)) {
		if (intfList->dwNumberOfItems > 0) {
			const WLAN_INTERFACE_INFO *intf = intfList->InterfaceInfo + 0;
			m_deviceOk = true;
			m_deviceId = intf->InterfaceGuid;
			m_deviceState = intf->isState;
			m_deviceDesc = QString::fromWCharArray(intf->strInterfaceDescription);
		}
		m_wlanapi->WlanFreeMemory(intfList);
	}

	if (m_deviceOk) {
		cacheRadioState();
		cacheConnectionInfo();
	} else {
		setSoftwareEnabled(false);
		setHardwareEnabled(false);
		setEnabled(false);
		setSsid(QString());
		setMacAddress(QByteArray());
		setSignalQuality(0);
		setProfileName(QString());
		setConnected(false);
	}
}
示例#3
0
void WlanCoreImpl::cacheConnectionInfo()
{
	QString profileName;
	QString ssid;
	bool connected = false;
	int signalQuality = 0;
	QByteArray macAddress;

	if (m_deviceOk) {
		PWLAN_CONNECTION_ATTRIBUTES conn;
		DWORD cb = sizeof(conn);
		WLAN_OPCODE_VALUE_TYPE vt;
		if (ERROR_SUCCESS == m_wlanapi->WlanQueryInterface(m_wlanHandle, &m_deviceId, wlan_intf_opcode_current_connection, NULL, &cb, reinterpret_cast<PVOID*>(&conn), &vt)) {
			profileName = QString::fromWCharArray(conn->strProfileName).trimmed();
			connected = (conn->isState == wlan_interface_state_connected);
			ssid = QString::fromLatin1(reinterpret_cast<char*>(conn->wlanAssociationAttributes.dot11Ssid.ucSSID), conn->wlanAssociationAttributes.dot11Ssid.uSSIDLength);
			signalQuality = conn->wlanAssociationAttributes.wlanSignalQuality;
			macAddress = QByteArray(reinterpret_cast<char*>(conn->wlanAssociationAttributes.dot11Bssid), 6);
			m_wlanapi->WlanFreeMemory(conn);
		}
	}

	setSsid(ssid);
	setMacAddress(macAddress);
	setSignalQuality(signalQuality);
	setProfileName(profileName);
	setConnected(connected);
}
示例#4
0
void Enc28j60::init(uint8_t* mac_address)
{
    // Set the MAC address
    setMacAddress(mac_address);

    // Initialize the ENC28J60 chip
    reset();

    // Set and enable ENC268J60 interrupt
    gpio_.setCallback(&interrupt_);
    gpio_.enableInterrupts();
}
示例#5
0
void CLASS::hwInit( void )
{
    fFullDuplexMode = false;

    hwStop();

    // Disable all wakeup sources

    WriteReg(WCSR, 0);

    // Program CFG

    fRegCFG |= CFG_PINT_ACEN;
    fRegCFG &= ~(CFG_EUPHCOMP | CFG_PESEL | CFG_BEM | CFG_PHY_DIS);
    WriteRegFlush(CFG, fRegCFG);

    // Reset internal PHY

    WriteRegFlush(CFG, fRegCFG | CFG_PHY_RST);
    IOSleep(100);
    WriteRegFlush(CFG, fRegCFG);

    // Program descriptor pointers

    WriteReg( RXDP, fRxDescPhysAddr );
    WriteReg( TXDP, fTxDescPhysAddr );

    // MAC Tx and Rx configuration

    fRegTXCFG = TXCFG_ATP | TXCFG_MXDMA_256
              | ((512/32) << TXCFG_FLTH_SHIFT)
              | (( 64/32) << TXCFG_DRTH_SHIFT);
    WriteReg(TXCFG, fRegTXCFG);

    fRegRXCFG = RXCFG_MXDMA_256 | ((128/8) << RXCFG_DRTH_SHIFT);
    WriteReg(RXCFG, fRegRXCFG);

    // Clear all statistics counters

    WriteReg(MIBC, MIBC_ACLR);

    // Program receive filters

    setMacAddress();

    fRegRFCR = RFCR_RFEN | RFCR_AAB | RFCR_APM;
    WriteReg(RFCR, fRegRFCR);

    // Program interrupt holdoff (100us units)

    WriteReg(IHR, 3);
}
示例#6
0
VBoxNetLwipNAT::VBoxNetLwipNAT(SOCKET icmpsock4, SOCKET icmpsock6) : VBoxNetBaseService("VBoxNetNAT", "nat-network")
{
    LogFlowFuncEnter();

    m_ProxyOptions.ipv6_enabled = 0;
    m_ProxyOptions.ipv6_defroute = 0;
    m_ProxyOptions.icmpsock4 = icmpsock4;
    m_ProxyOptions.icmpsock6 = icmpsock6;
    m_ProxyOptions.tftp_root = NULL;
    m_ProxyOptions.src4 = NULL;
    m_ProxyOptions.src6 = NULL;
    RT_ZERO(m_src4);
    RT_ZERO(m_src6);
    m_src4.sin_family = AF_INET;
    m_src6.sin6_family = AF_INET6;
#if HAVE_SA_LEN
    m_src4.sin_len = sizeof(m_src4);
    m_src6.sin6_len = sizeof(m_src6);
#endif
    m_ProxyOptions.nameservers = NULL;

    m_LwipNetIf.name[0] = 'N';
    m_LwipNetIf.name[1] = 'T';

    RTMAC mac;
    mac.au8[0] = 0x52;
    mac.au8[1] = 0x54;
    mac.au8[2] = 0;
    mac.au8[3] = 0x12;
    mac.au8[4] = 0x35;
    mac.au8[5] = 0;
    setMacAddress(mac);

    RTNETADDRIPV4 address;
    address.u     = RT_MAKE_U32_FROM_U8( 10,  0,  2,  2); // NB: big-endian
    setIpv4Address(address);

    address.u     = RT_H2N_U32_C(0xffffff00);
    setIpv4Netmask(address);

    fDontLoadRulesOnStartup = false;

    for(unsigned int i = 0; i < RT_ELEMENTS(g_aGetOptDef); ++i)
        addCommandLineOption(&g_aGetOptDef[i]);

    LogFlowFuncLeave();
}
示例#7
0
WirelessAccessPoint::WirelessAccessPoint(const QDBusObjectPath &objectPath, QObject *parent) :
    QObject(parent),
    m_objectPath(objectPath),
    m_securityFlags(0)
{
    QDBusInterface accessPointInterface(serviceString, m_objectPath.path(), accessPointInterfaceString, QDBusConnection::systemBus());
    if(!accessPointInterface.isValid()) {
        qCWarning(dcNetworkManager()) << "Invalid access point dbus interface";
        return;
    }

    // Init properties
    setSsid(accessPointInterface.property("Ssid").toString());
    setMacAddress(accessPointInterface.property("HwAddress").toString());
    setFrequency(accessPointInterface.property("Frequency").toDouble() / 1000);
    setSignalStrength(accessPointInterface.property("Strength").toUInt());
    setSecurityFlags(WirelessAccessPoint::ApSecurityModes(accessPointInterface.property("WpaFlags").toUInt()));
    setIsProtected((bool)accessPointInterface.property("Flags").toUInt());

    QDBusConnection::systemBus().connect(serviceString, objectPath.path(), accessPointInterfaceString, "PropertiesChanged", this, SLOT(onPropertiesChanged(QVariantMap)));
}