Advanced Users
The Unified Link Layer API (ULLA) can help you to manage your network
cards and make life with multiple technologies a lot easier.
The current ULLA Core implementation is not limited in the number of devices
supported. However, right now the ULLA project at SourceForge can only
provide the wlan-ng driver with ULLA support. If you are about to use this
driver, please read on.
ULLA supports a very easy to use API for users, who do not want to
know about the technology details. In order to perform the most interesting
tasks, such as finding and connecting links you can use the ullaTools: Below,
you can find some examples how-to use ULLA with the ullaReflection,
ullaAttribute, ullaCommand, ullaSamples, and ullaNotification tools.
- Inserting your WLAN card, will auto-load the device driver and the Link Layer
Adapter (LLA) kernel modules. The LLA will register a so-called Link Provider (LP)
with ULLA. The LP is an abstraction of the Network Interface Card (NIC) and is
described using a table description with attributes and command. You can
display the current LP descriptions by the means of the reflection tool
ullaReflection.
ullaReflection "SHOW TABLES;"
ullaReflection "SHOW ATTRIBUTES OF ullaLinkProvider;"
ullaReflection "SHOW COMMANDS OF p80211LinkProvider;"
- The attribute values can be queries using the ullaAttribute tool.
ullaAttribute "SELECT lpId FROM ullaLinkProvider;"
- Then you can use the ullaCommand utility to start-off the firmware of
one of your WLAN cards.
ullaCommand "SELECT enable FROM p80211LinkProvider;"
- Next, you might want to find available links around you. If you issue a
command on the LP, the available Links are registered with ULLA
automatically. These Links are also described using a table-based notation.
Parameters to the command can be given as attribute values set before
(scan_mode is set to active and passive scanning mode).
ullaAttribute "UPDATE ullaLinkProvider SET scan_mode = 1;"
ullaCommand "SELECT updateAvailableLinks FROM ullaLinkProvider;"
- You can list the available Links by requesting as many detail as you
need. Therefore, you can place any valid statement of the
ULLA Query Language (UQL) in the string part.
ullaAttribute "SELECT linkId, networkName, mode
FROM ullaLink
WHERE rxBitrate > 1000000;"
- In order to connect a Link just pick a linkId from the
returned list and do
ullaCommand "SELECT connect FROM ullaLink WHERE linkId = 2;"
- You can monitor the Link charateristics and take samples periodically using
the ullaSamples tools.
ullaSamples "SELECT rxRetransmisstionRatio, SNIR
FROM p80211Link
WHERE linkId = 2;"
- In order to utilize the notification mechanism you can use any UQL
statement with the ullaNotification tool. For instance, get yourself
informed if the link connection broke down
ullaNotification "SELECT linkId
FROM ullaLink
WHERE state = 0;"
- Or register an arbitrary complex notification spanning over multiple tables..
ullaNotification "SELECT ullaLink.localeL2Address
FROM ullaLink, p80211Link
WHERE ((ullaLink.rxBitrate > 2000000) AND
(p80211Link.SNIR < -60)) OR
(ullaLink.txByte > 300000);"
If you got interessted, you can get more details about the UQL syntax
in the UQL section.
© RWTH Aachen University. All rights reserved. 2006
Created February 2006 by Marten Bandholz.
|
|