summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2003-10-06 17:38:00 (UTC)
committer mickeyl <mickeyl>2003-10-06 17:38:00 (UTC)
commite0acd0d9400bb489415d21ec715c5f6704c22b95 (patch) (side-by-side diff)
treea6bb6077c3da3d31bc9e86d6f8276aed90bd3d5c
parent634a68b636a0fa24232029b79ffa915a5621b2be (diff)
downloadopie-e0acd0d9400bb489415d21ec715c5f6704c22b95.zip
opie-e0acd0d9400bb489415d21ec715c5f6704c22b95.tar.gz
opie-e0acd0d9400bb489415d21ec715c5f6704c22b95.tar.bz2
decode DHCP ACK packets and show the extracted client IP address
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.cpp2
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp9
2 files changed, 7 insertions, 4 deletions
diff --git a/noncore/net/wellenreiter/gui/scanlist.cpp b/noncore/net/wellenreiter/gui/scanlist.cpp
index 9d6ed6a..1cca507 100644
--- a/noncore/net/wellenreiter/gui/scanlist.cpp
+++ b/noncore/net/wellenreiter/gui/scanlist.cpp
@@ -366,25 +366,25 @@ void MScanListView::addService( const QString& name, const OMacAddress& macaddr,
if ( subitem )
{
// we have already seen this item, it's a dupe
#ifdef DEBUG
qDebug( "%s is a dupe - ignoring...", (const char*) name );
#endif
subitem->receivedBeacon(); //FIXME: sent data bit
return;
}
// never seen that - add new item
- MScanListItem* item = new MScanListItem( it.current(), "service", "N/A", false, -1, -1 );
+ MScanListItem* item = new MScanListItem( it.current(), "service", "N/A", " ", false, -1, -1 );
item->setText( col_essid, name );
return;
}
}
qDebug( "D'oh! Received identification, but item not yet in list... ==> Handle this!" );
MLogWindow::logwindow()->log( QString().sprintf( "WARNING: Unhandled service addition %s = %s!",
(const char*) macaddr.toString(), (const char*) ip ) );
}
void MScanListView::contextMenuRequested( QListViewItem* item, const QPoint&, int col )
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp
index 7394742..9460f56 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp
@@ -247,30 +247,33 @@ void Wellenreiter::handleIPData( OPacket* p, OIPPacket* ip, OMacAddress& source,
{
netView()->identify( arp->senderMacAddress(), arp->senderIPV4Address().toString() );
netView()->identify( arp->targetMacAddress(), arp->targetIPV4Address().toString() );
}
}
ODHCPPacket* dhcp = (ODHCPPacket*) p->child( "DHCP" );
if ( dhcp )
{
qDebug( "Received DHCP '%s' packet", (const char*) dhcp->type() );
if ( dhcp->type() == "OFFER" )
{
- qDebug( "ADDSERVICE: '%s' ('%s') seems to be a DHCP server.", (const char*) source.toString(), (const char*) dhcp->serverAddress().toString() );
- //netView()->addNewItem( "station", "<wired>", from, false, -1, 0, GpsLocation( 0, 0 ) );
-
+ qDebug( "DHCP: '%s' ('%s') seems to be a DHCP server.", (const char*) source.toString(), (const char*) dhcp->serverAddress().toString() );
netView()->identify( source, dhcp->serverAddress().toString() );
netView()->addService( "DHCP", source, dhcp->serverAddress().toString() );
}
+ else if ( dhcp->type() == "ACK" )
+ {
+ qDebug( "DHCP: '%s' ('%s') accepted the offered DHCP address.", (const char*) dhcp->clientMacAddress().toString(), (const char*) dhcp->yourAddress().toString() );
+ netView()->identify( dhcp->clientMacAddress(), dhcp->yourAddress().toString() );
+ }
}
}
QObject* Wellenreiter::childIfToParse( OPacket* p, const QString& protocol )
{
if ( configwindow->parsePackets->isProtocolChecked( protocol ) )
if ( configwindow->parsePackets->protocolAction( protocol ) == "Discard!" )
return 0;
return p->child( protocol );
}