summaryrefslogtreecommitdiff
path: root/examples/opienet
Side-by-side diff
Diffstat (limited to 'examples/opienet') (more/less context) (ignore whitespace changes)
-rw-r--r--examples/opienet/miniwellenreiter/miniwellenreiter.cpp2
-rw-r--r--examples/opienet/onetworkdemo/onetworkdemo.cpp2
2 files changed, 2 insertions, 2 deletions
diff --git a/examples/opienet/miniwellenreiter/miniwellenreiter.cpp b/examples/opienet/miniwellenreiter/miniwellenreiter.cpp
index ebd3b5f..ba9d2ca 100644
--- a/examples/opienet/miniwellenreiter/miniwellenreiter.cpp
+++ b/examples/opienet/miniwellenreiter/miniwellenreiter.cpp
@@ -1,234 +1,234 @@
#include <qdict.h>
#include <qsocketnotifier.h>
#include <qstring.h>
#include <opie2/onetwork.h>
#include <qapplication.h>
#include <opie2/opcap.h>
#include <cerrno>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace Opie::Net;
//======================== Station help class ===============================
class Station
{
public:
Station( QString t, int c, bool w ) : type(t), channel(c), wep(w), beacons(1) {};
~Station() {};
QString type;
int channel;
bool wep;
int beacons;
};
QDict<Station> stations;
//======================== Application class ===============================
class Wellenreiter : public QApplication
{
Q_OBJECT
public:
Wellenreiter( int argc, char** argv ) : QApplication( argc, argv ), channel( 1 )
{
ONetwork* net = ONetwork::instance();
if ( argc < 3 )
{
printf( "Usage: ./%s <interface> <driver> <interval>\n", argv[0] );
printf( "\n" );
printf( "Valid wireless interfaces (detected) are:\n" );
ONetwork::InterfaceIterator it = net->iterator();
while ( it.current() )
{
if ( it.current()->isWireless() )
{
printf( " - '%s' (MAC=%s) (IPv4=%s)\n", (const char*) it.current()->name(),
(const char*) it.current()->macAddress().toString(),
- (const char*) it.current()->ipV4Address() );
+ (const char*) it.current()->ipV4Address().toString() );
}
++it;
}
exit( -1 );
}
printf( "*******************************************************************\n" );
printf( "* Wellenreiter mini edition 1.0.0 (C) 2003 Michael 'Mickey' Lauer *\n" );
printf( "*******************************************************************\n" );
printf( "\n\n" );
QString interface( argv[1] );
QString driver( argv[2] );
printf( "Trying to use '%s' as %s-controlled device...\n", (const char*) interface, (const char*) driver );
// sanity checks before downcasting
ONetworkInterface* iface = net->interface( interface );
if ( !iface )
{
printf( "Interface '%s' doesn't exist. Exiting.\n", (const char*) interface );
exit( -1 );
}
if ( !iface->isWireless() )
{
printf( "Interface '%s' doesn't support wireless extensions. Exiting.\n", (const char*) interface );
exit( -1 );
}
// downcast should be safe now
wiface = (OWirelessNetworkInterface*) iface;
printf( "Using wireless interface '%s' for scanning (current SSID is '%s')...\n", (const char*) interface, (const char*) wiface->SSID() );
// ifconfig +promisc the interface to receive all packets
if ( !wiface->promiscuousMode() )
{
printf( "Interface status is not promisc... switching to promisc... " );
wiface->setPromiscuousMode( true );
if ( !wiface->promiscuousMode() )
{
printf( "failed (%s). Exiting.\n", strerror( errno ) );
exit( -1 );
}
else
{
printf( "ok.\n" );
}
}
else
printf( "Interface status is already promisc - good.\n" );
// connect a monitoring strategy to the interface
if ( driver == "orinoco" )
new OOrinocoMonitoringInterface( wiface, false );
else
if ( driver == "hostap" )
new OHostAPMonitoringInterface( wiface, false );
else
if ( driver == "wlan-ng" )
new OWlanNGMonitoringInterface( wiface, false );
else
{
printf( "Unknown driver. Exiting\n" );
exit( -1 );
}
// enable monitoring mode
printf( "Enabling monitor mode...\n" );
wiface->setMode( "monitor" );
// open a packet capturer
cap = new OPacketCapturer();
cap->open( interface );
if ( !cap->isOpen() )
{
printf( "Unable to open libpcap (%s). Exiting.\n", strerror( errno ) );
exit( -1 );
}
// set capturer to non-blocking mode
cap->setBlocking( false );
// start channel hopper
//wiface->setChannelHopping( 1000 );
// connect
connect( cap, SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) );
// timer
startTimer( 1000 );
}
~Wellenreiter() {};
public slots:
virtual void timerEvent(QTimerEvent* e)
{
wiface->setChannel( channel++ );
if ( channel == 14 ) channel = 1;
}
void receivePacket(OPacket* p)
{
if (!p)
{
printf( "(empty packet received)\n" );
return;
}
OWaveLanManagementPacket* beacon = (OWaveLanManagementPacket*) p->child( "802.11 Management" );
if ( beacon )
{
OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) );
QString essid = ssid ? ssid->ID() : QString::fromLatin1( "<unknown>" );
if ( stations.find( essid ) )
stations[essid]->beacons++;
else
{
printf( "found new network @ channel %d, SSID = '%s'\n", wiface->channel(), (const char*) essid );
stations.insert( essid, new Station( "unknown", wiface->channel(),
((OWaveLanPacket*) beacon->parent())->usesWep() ) );
}
return;
}
OWaveLanDataPacket* data = (OWaveLanDataPacket*) p->child( "802.11 Data" );
if ( data )
{
OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" );
if ( wlan->fromDS() && !wlan->toDS() )
{
printf( "FromDS: '%s' -> '%s' via '%s'\n",
(const char*) wlan->macAddress3().toString(true),
(const char*) wlan->macAddress1().toString(true),
(const char*) wlan->macAddress2().toString(true) );
}
else
if ( !wlan->fromDS() && wlan->toDS() )
{
printf( "ToDS: '%s' -> '%s' via '%s'\n",
(const char*) wlan->macAddress2().toString(true),
(const char*) wlan->macAddress3().toString(true),
(const char*) wlan->macAddress1().toString(true) );
}
else
if ( wlan->fromDS() && wlan->toDS() )
{
printf( "WSD(bridge): '%s' -> '%s' via '%s' and '%s'\n",
(const char*) wlan->macAddress4().toString(true),
(const char*) wlan->macAddress3().toString(true),
(const char*) wlan->macAddress1().toString(true),
(const char*) wlan->macAddress2().toString(true) );
}
else
{
printf( "IBSS(AdHoc): '%s' -> '%s' (Cell: '%s')'\n",
(const char*) wlan->macAddress2().toString(true),
(const char*) wlan->macAddress1().toString(true),
(const char*) wlan->macAddress3().toString(true) );
}
return;
}
}
private:
OPacketCapturer* cap;
OWirelessNetworkInterface* wiface;
int channel;
};
int main( int argc, char** argv )
{
Wellenreiter w( argc, argv );
w.exec();
return 0;
}
#include "miniwellenreiter.moc"
diff --git a/examples/opienet/onetworkdemo/onetworkdemo.cpp b/examples/opienet/onetworkdemo/onetworkdemo.cpp
index b3a1115..e8958dc 100644
--- a/examples/opienet/onetworkdemo/onetworkdemo.cpp
+++ b/examples/opienet/onetworkdemo/onetworkdemo.cpp
@@ -1,181 +1,181 @@
/*
=. This file is part of the Opie Project
.=l. Copyright (C) 2004 Opie Team <opie-devel@handhelds.org>
.>+-=
_;:, .> :=|. This library is free software; you can
.> <`_, > . <= redistribute it and/or modify it under
:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
.="- .-=="i, .._ License as published by the Free Software
- . .-<_> .<> Foundation; either version 2 of the License,
._= =} : or (at your option) any later version.
.%`+i> _;_.
.i_,=:_. -<s. This library is distributed in the hope that
+ . -:. = it will be useful, but WITHOUT ANY WARRANTY;
: .. .:, . . . without even the implied warranty of
=_ + =;=|` MERCHANTABILITY or FITNESS FOR A
_.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
..}^=.= = ; Library General Public License for more
++= -. .` .: details.
: = ...= . :.=-
-. .:....=;==+<; You should have received a copy of the GNU
-_. . . )=. = Library General Public License along with
-- :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
/* OPIE */
#include <opie2/onetwork.h>
#include <opie2/ostation.h>
#include <opie2/omanufacturerdb.h>
#include <opie2/odebug.h>
/* STD */
#include <unistd.h>
using namespace Opie::Net;
int main( int argc, char** argv )
{
odebug << "OPIE Network Demo" << oendl;
ONetwork* net = ONetwork::instance();
ONetwork::InterfaceIterator it = net->iterator();
while ( it.current() )
{
odebug << "DEMO: ONetwork contains Interface '" << it.current()->name() << "'" << oendl;
ONetworkInterfaceDriverInfo info = it.current()->driverInfo();
odebug << "DEMO: DriverName reported as '" << info.name() << "'" << oendl;
odebug << "DEMO: DriverVersion reported as '" << info.version() << "'" << oendl;
odebug << "DEMO: DriverFirmware reported as '" << info.firmware() << "'" << oendl;
odebug << "DEMO: DriverBus reported as '" << info.bus() << "'" << oendl;
odebug << "DEMO: Datalink code is '" << it.current()->dataLinkType() << "'" << oendl;
odebug << "DEMO: MAC Address is '" << it.current()->macAddress().toString() << "'" << oendl;
odebug << "DEMO: MAC Address is '" << it.current()->macAddress().toString(true) << "'" << oendl;
odebug << "DEMO: MAC Manufacturer seems to be '" << it.current()->macAddress().manufacturer() << "'" << oendl;
odebug << "DEMO: Manufacturertest1 = '" << OManufacturerDB::instance()->lookupExt( "08:00:87" ) << "'" << oendl;
odebug << "DEMO: Manufacturertest2 = '" << OManufacturerDB::instance()->lookupExt( "E2:0C:0F" ) << "'" << oendl;
- odebug << "Demo: IPv4 Address is '" << it.current()->ipV4Address() << "'" << oendl;
+ odebug << "Demo: IPv4 Address is '" << it.current()->ipV4Address().toString() << "'" << oendl;
if ( it.current()->isWireless() )
{
OWirelessNetworkInterface* iface = static_cast<OWirelessNetworkInterface*>( it.current() );
odebug << "DEMO: '" << iface->name() << "' seems to feature the wireless extensions." << oendl;
odebug << "DEMO: Current SSID is '" << iface->SSID() << "'" << oendl;
odebug << "DEMO: Antenna is tuned to '" << iface->frequency() << "', that is channel " << iface->channel() << "" << oendl;
//if ( iface->mode() == OWirelessNetworkInterface::adhoc )
//{
//odebug << "DEMO: Associated AP has MAC Address '" << iface->associatedAP().toString() << "'" << oendl;
//}
/*
// nickname
odebug << "DEMO: Current NickName is '" << iface->nickName() << "'" << oendl;
iface->setNickName( "MyNickName" );
if ( iface->nickName() != "MyNickName" )
odebug << "DEMO: Warning! Can't change nickname" << oendl;
else
odebug << "DEMO: Nickname change successful." << oendl;
/*
// operation mode
odebug << "DEMO: Current OperationMode is '" << iface->mode() << "'" << oendl;
iface->setMode( "adhoc" );
if ( iface->mode() != "adhoc" )
odebug << "DEMO: Warning! Can't change operation mode" << oendl;
else
odebug << "DEMO: Operation Mode change successful." << oendl;
// RF channel
odebug << "DEMO: Current Channel is '" << iface->channel() << "'" << oendl;
iface->setChannel( 1 );
if ( iface->channel() != 1 )
odebug << "DEMO: Warning! Can't change RF channel" << oendl;
else
odebug << "DEMO: RF channel change successful." << oendl;
iface->setMode( "managed" );
*/
/*
// network scan
OStationList* stations = iface->scanNetwork();
if ( stations )
{
odebug << "DEMO: # of stations around = " << stations->count() << "" << oendl;
OStation* station;
for ( station = stations->first(); station != 0; station = stations->next() )
{
odebug << "DEMO: station dump following..." << oendl;
station->dump();
}
}
else
{
odebug << "DEMO: Warning! Scan didn't work!" << oendl;
}
/*
// first some wrong calls to check if this is working
iface->setPrivate( "seppel", 10 );
iface->setPrivate( "monitor", 0 );
// now the real deal
iface->setPrivate( "monitor", 2, 2, 3 );
// trying to set hw address to 12:34:56:AB:CD:EF
/*
OMacAddress addr = OMacAddress::fromString( "12:34:56:AB:CD:EF" );
iface->setUp( false );
iface->setMacAddress( addr );
iface->setUp( true );
odebug << "DEMO: MAC Address now is '" << iface->macAddress().toString() << "'" << oendl;
*/
// monitor test
odebug << "DEMO: current interface mode is '" << iface->mode() << "'" << oendl;
iface->setMode( "monitor" );
odebug << "DEMO: current interface mode is '" << iface->mode() << "'" << oendl;
sleep( 1 );
iface->setChannel( 1 );
iface->setMode( "managed" );
//sleep( 1 );
odebug << "DEMO: current interface mode is '" << iface->mode() << "'" << oendl;
/*iface->setMode( "adhoc" );
sleep( 1 );
odebug << "DEMO: current interface mode is '" << iface->mode() << "'" << oendl;
iface->setMode( "managed" );
sleep( 1 );
odebug << "DEMO: current interface mode is '" << iface->mode() << "'" << oendl;
iface->setMode( "master" );
sleep( 1 );
odebug << "DEMO: current interface mode is '" << iface->mode() << "'" << oendl; */
}
++it;
}
return 0;
}