Subject: [SoC'06] - WiFi Browser proposal draft
To: None <tech-net@NetBSD.org>
From: Ricardo Correia Pinto <rncp@rnl.ist.utl.pt>
List: tech-net
Date: 05/02/2006 01:56:42
Hi,

I'm posting this to get some (lots, hopefully) feedback about the project I=
'm proposing
(goals, ways to achieve them, etc)

There is a pdf version in [1], follows a transcription of the pdf (without
the block diagram) in a cpoy-paste maner, so it might not look that
beautifull. Tomorrow I'll try to post an html version.

--------------------------------------
Project title : WiFi Browser
Goal - Short overview
The goal of this project is to build a tool to simplify the configuration
(not only association) of 802.11 (WiFi) access on NetBSD. This tool can be
used interactively, either with a graphical or command line interface.

Goal - Detailed overview

There are two approaches to solving the problem:
1. A library, with separate command line and graphical interfaces;
2. A graphical application, with an alternative CLI, with all the functions=
 embedded

Either way, a set of basic functions required may be listed:
=B2 Access Point scan
=09{ Gather information like SSID, rates, capabilities
=B2 Access point association
=09{ WEP key setting
=09{ 802.1x Network con=AFguration (with wpa supplicant)
=09{ DHCP address request and assignement;
=B2 Passive Scan (when implemented into NetBSD)
=B2 Configuration file generation (in the type of ifconfig.ifname)

This goal can be extended to the point of setting a common base of function=
s
to be used by various utilities, providing abstraction to the net80211 laye=
r,
and laying ground for future applications like Kismet-alike, wpa_supplicant
integration directly in the library.

Deliverables

By the end of the project the deliverables will be code, both for the
library and/or application (depending on the development model used) and
an API for other applications to use (also dependent of the development
model, wich in the case of a single application will be CLI for use with
shell scripts). The programming languange will be C. There may also exist
"indirect" deliverables, such as documentation correction ("bugs" are
likely to be discovered in the event of man page reading), and
"bugs" (or features) found in the interfaces that are to be used.


Schedule and milestones

The project milestones and schedule1 will be:

=B2 Specification closing, with (data) interface definition - 4 days
=B2 Library coding - 14 days - 1 month
=09{ Scanning primitives
=09{ Association primitives
=09{ OMAPI for IP acquisition
=B2 Specification closing, with (user) interface definition - 2 days
=B2 Client application coding - 14 days - 1 month
=09{ Command line interface
=09{ Graphical user interface
=B2 Library coding
=09{ More ambitious goals:
=09=09=A4 Integration of other tools, like wpa supplicant or pptp
=09=09=A4 Ability to generate con=AFg =AFles from network info, even a wire=
less
subsystem to be started at boot time

The "specification" milestone may appear in other parts of the project,
since this is subject to discussion with the mentors / community.
However there will be some specifications that have to be defined in
"hard" terms (either data structures and functionalities), so the project
can be carried.

The project and NetBSD

Integration

The integration of this project with NetBSD will be done with the following=
:

=B2 Create a library;
=09{ Abstraction layer to net80211 low level functions, and data structures
=09{ Centralization of primitives for further 802.11 tools
=B2 Create a userland tool
=09{ CLI or GUI using the primiteves ofered by the library

In the event of a single application, all the functionality will be
restricted to it, and only one file will be invoked to perform the desired
task (i.e., no external functions)

Interfaces

Since this project may integrate the default distribution of NetBSD, it
must use interfaces provided by a default install.

The NetBSD interfaces that it relies on are:

=B2 Functions and data structures from:
=09{ net80211 layer
=09{ net layer

Prior experience

I've started looking to this project last year, and got acquainted with
net80211,namely ioctl's and did some tests with them, like IEEE80211 IOC SC=
AN REQ
and IEEE80211 IOC SCAN RESULTS (both scanning primitives).

External interfaces and protocols

The external (i.e., non NetBSD dependent) are
=B2 CDK for the graphics
=B2 OMAPI for dhclient comms
=B2 wpa_supplicant

Prior experience

About familiarity with these interfaces, I can say I've seen a bit since I
started doing this same project last year, making a functional graphical
interface . The only interface I haven't looked much at is OMAPI, for
dhclient interface.

<----------------------------------------------------------------

[1] - http://mega.ist.utl.pt/~rncp/software/SoC06/draft_v1.pdf

=09-- Ricardo Correia Pinto
=09   http://mega.ist.utl.pt/~rncp/