]> git.decadent.org.uk Git - ap-utils.git/commitdiff
Merge commit 'upstream/1.5'
authorBen Hutchings <ben@decadent.org.uk>
Sun, 19 Apr 2009 01:56:47 +0000 (02:56 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Sun, 19 Apr 2009 01:56:47 +0000 (02:56 +0100)
72 files changed:
ChangeLog
Documentation/FAQ
Documentation/Makefile.am
Documentation/Makefile.in
Documentation/README.ap-auth [deleted file]
Documentation/README.ap-gl [deleted file]
Documentation/ap-gl.8
Documentation/ap-tftp.8 [new file with mode: 0644]
Documentation/mibs-atmel/README [new file with mode: 0644]
Documentation/mibs-atmel/mib-12350-ezynet/AT76C510.mib [new file with mode: 0644]
Documentation/mibs-atmel/mib-12350-gemtek/AT76C510.mib [new file with mode: 0644]
Documentation/mibs-atmel/mib-12350-none-netgear/AT76C510.mib [new file with mode: 0644]
Documentation/mibs-atmel/mib-410-none-dlink/AT76C510.mib [new file with mode: 0644]
Documentation/mibs-atmel/mib-410-smartbridges/AT76C510.mib [new file with mode: 0644]
Makefile.am
Makefile.in
NEWS
README
THANKS
TODO
ap-gl/Makefile.am
ap-gl/Makefile.in
ap-gl/ap-gl.c
ap-gl/auth.c [new file with mode: 0644]
ap-gl/auth_mac.c [deleted file]
ap-gl/bridge.c
ap-gl/stations.c
config.h.in
configure
configure.in
lib/Makefile.in
lib/ap-utils.h
lib/ap_search.c
lib/aps.c
lib/common.c
lib/file.c
lib/input.c
lib/menu.c
lib/oui.c
lib/radio.c
lib/scr.c
lib/set_community.c
lib/set_oeminfo.c
lib/snmp.c
lib/stat.c
lib/sysinfo.c
lib/test.c
lib/wep.c
lib/wlan.c
po/POTFILES.in
po/ap-utils.pot
po/fr.po
po/nl.po
po/pl.po
po/ro.po
po/tr.po
po/uk.po
src/Makefile.am
src/Makefile.in
src/ap-auth.c
src/ap-config.c
src/ap-mrtg.c
src/ap-rrd.c [new file with mode: 0644]
src/ap-tftp.c [new file with mode: 0644]
src/ap-trapd.c
src/aplink.c [new file with mode: 0644]
src/auth.c [new file with mode: 0644]
src/auth_mac.c [deleted file]
src/bridge.c
src/nwn_advanced.c
src/nwn_latest.c
src/stations.c

index af35aa8f2a7ae17e4172038e5e52c0d1709082ce..c004cc08ffc9a1129bdc183950d7eed398c469cf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,470 @@
+2005-03-07 Roman Festchook
+       * src/ap-rrd.c: changed format of error messages
+       * configure.in, NEWS: version 1.5
+
+2005-03-06 Jan Rafaj
+       Since one of the users has provided me with SmartBridges APPO,
+       the support for latest APPO firmware (1.4k5) can now hopefully
+       be finished as originally intended.
+       * TODO: updated
+       * Documentation/FAQ: updated
+       * ap-gl/Makefile.am:
+         - bugfix: added missing @CURSESLIBS@ to the target
+       * lib/ap-utils.h:
+         - Q_HELP is gone
+         - added dbmconv() macro to correctly handle dBm computing for
+           smartBridges firmware
+       * lib/ap_search.c:
+         - 'Wireless' OID is really 'sysDescr' OID
+         - no longer ask for community, since device will respond to
+           sysDescr query no matter what community is currently being used
+           (Roman, thanks for notifying!)
+         - bugfix: 'AP NAME' changed to 'FW TYPE (VERSION) AP NAME', to
+           reflect better whats being displayed
+         - bugfix: scan_local_segment() now triggers screen-width truncation
+           limit correctly
+       * lib/common.c:
+         - cosmetics: screen is now properly cleared with exit_program()
+       * lib/input.c:
+         - bugfix: exclusive use of getch() in wait_key() instead of
+           escape-sequences-not-aware getc() results in greater robustness
+           of input code (it is now a lot harder to end up with buffered
+           content in stdin, that would otherwise lead to odd results
+           elsewhere)
+         - get_value() almost completely rewritten. switched from getchar()
+           to getch() to get correct output on older terminals, as well as
+           to avoid displaying of escape-sequences and to interpret escape-
+           sequences for the following usual keys, that now work:
+           INSERT (toggles Insert/Overwrite mode)
+           DELETE (rightside delete)
+           BACKSPACE (leftside delete)
+           LEFT ARROW (move cursor back 1 character)
+           RIGHT ARROW (advance cursor forward 1 character)
+           HOME (move to the beginning of the string)
+           END (move to the end of the string)
+         - bugfix: get_value() will now omit leading zeros from correct number
+           given by the user (they will be eaten upon user's ENTER keypress)
+         - bugfix: in get_mask(), trans_count must be always reset upon
+           failure to validate user input, or after single failure, all
+           subsequent attempts would (previously) fail
+       * lib/oui.c: added OUIs:
+         - 000E2E (Edimax Technology Co., Ltd.)
+         - 000F66 (Cisco-Linksys)
+         - 00117C (e-zy.net) :)
+       * lib/set_oeminfo.c:
+         - prepended 'USB ' in front of 'Vendor ID' and 'Product ID'
+           (cosmetic)
+       * lib/snmp.c:
+         - bugfix: eliminated leak by unfreed malloc'ed memory in snmp() using
+           static buffer
+         - introduced three new functions: close_sockfd(), open_sockfd()
+           and reopen_sockfd(). They should really be in common.c, but then
+           again, they are low-level stuff that should primarily be used
+           only in snmp(), and snmp.c itself contains no ncurses stuff
+           so functions it defines can be reused by external non-ncurses-
+         - in snmp(), switched from sig*jmp()/alarm() timeout code to select()
+           in favor of simplicity and possibility to monitor stdin read-state
+           change at the same time
+         - snmp() will now return with 0 immediately upon keypress, if
+           snmp_quit_by_keypress = 1 and type = GET. This has been added
+           to allow user-requested last-resort quit from blocking state
+           (for example when the target AP does not respond). The decision
+           of what to do is up to the calling code, that has to check
+           stdin content and act accordingly (currently this is used for
+           immediate quit using q/Q key from otherwise blocking snmp() calls).
+         - sockfd is now globally defined here
+         - snmp() now always 'flushes' sockfd prior further network processing
+           so that eventual packet received on sockfd prior snmp() call
+           wont cause desync errors
+         - snmp_retries global is gone. We need to wait at least 1 second
+           past sendto() for response packet, and do everything necessary
+           to avoid 'response for previous request received in next snmp()
+           call' => extra TODO: check, whether the OID part of received packet
+           matches with OID of preceding request, and if not, flush sockfd
+           and do an extra retry of sendto()/recv()
+           dependant programs.
+       * Documentation/ap-tftp.8:
+         - (introduced in previous patchset)
+         - added warning that it is unsafe to try upgrading devices for whose
+           there's no vendor firmware nor upgrade utilities (such as
+           Tellus A13 a.k.a. i-Tec AP GOLD with blue front)
+       * src/Makefile.am:
+         - ap-tftp needs to be linked to libap.a from now on
+       * src/ap-tftp.c:
+         - bugfix: computation of percentage was not really correct in v1.0
+         - bugfix: fixed memleak caused by unfreed strdup()
+         - cleanup; use of float type eliminated
+         - it should be now possible to reuse tftp() for .cfg upload, too
+           (.cfg upload code still not there)
+         - revamp of config. parameters
+         - added capability to upgrade all AT76C510-based SmartBridges
+           devices (those with FCC ID 'PWG DOLPHIN')
+       * src/aplink.c:
+         - polling mode is now always enforced
+         - LQ top value is now computed/shown for devices with ATMEL410
+           SBRIDGES MIB
+         - bugfix: screen is now correctly cleaned up upon transition
+           from 'associated: yes' to 'associated: no' state
+         - added pause possibility (using 'q' or 'Q' key)
+         - big facelift: added RSSI 'rounding' (a.k.a. RSSI average / last
+           20 samples) gauge, and a general side-scrolling bargraph
+           showing the history of RSSI, RSSI average, RSSI rounding, and,
+           in case of smartBridges firmware, also Link Quality. Views
+           can be toggled using 't' or 'T' key. At the moment, all values
+           are presented in percentage, since this (compared to dBm)
+           does not fluctuate a lot among different firmware versions.
+           User may just pause the polling process and see the corresponding
+           dBm value for the bar currently shown in graph, near the
+           corresponding gauge.
+       * src/auth.c:
+         - bugfixes: shown ea_dest_port, ea_time and ea_port values are now
+           properly decoded
+       * src/bridge.c:
+         - renamed cf_trap_ports to cf_ports (cosmetic)
+         - bugfix: fixed up order of cf_ports to respect MIB-defined order.
+           Interresting note: ATMEL12350 EZYNET MIB firmware actually
+           returns config_port = 0 when it should return 3 ('Both' ports) =>
+           this case is now taken care of.
+       * lib/common.c:
+         - screen is now cleared upon exiting ap-config
+       * bugfix: fixed rare ap-config crash when sysDeviceInfo OID query
+         would return structure length of 92 bytes instead of 128. Suspection:
+         returning 128 might be a snmp() state machinery error?
+       * squashed any sockfd lowlevel-manipulating stuff (socket(), bind(),
+         close()) everywhere in favour of already globally declared sockfd
+         in snmp.c and eventual reopen_sockfd() call. Lets forget about
+         sockfd if we use just snmp(). TODO: re-evaluate necessity to use
+         reopen_sockfd() in common.c and file.c .
+       * dbmconv() is now used in every place that handles raw->dBm
+         conversion - TODO: just the ap_mrtg needs to be fixed (add
+         detection for SBRIDGES ap_vendorext, then dbmconv())
+       * cosmetics: highlighting over changed values will now disappear,
+         once they are written (using 'W' key)
+       * ERR_CREATING_SOCKET and ERR_BINDING_SOCKET replaced with one single,
+         more generic ERR_SOCKET
+       * new feature: it is now possible to change polling interval in
+         range from <0,1;86400> seconds (default is 1 second)
+
+2005-01-16 Jan Rafaj
+       * ap-gl/auth.c: small bugfix
+
+2005-01-15 Roman Festchook
+       * src/ap-rrd.c: added utility to store stats from AP into RRD database
+       * src/wlan.c: added 'ACK timeout' additional info into [T] SIFS time (msec)
+               option description
+       * configure.in, NEWS: version 1.5pre2
+
+2005-01-11 Jan Rafaj
+       Note to SmartBridges PTE: you could have nice support in ap-utils
+       at cost of sending me one APPO sample. Since I actually have
+       no sample to test & verify on, all my support for airPoints is on
+       blind or 'someones trial and error report' basis. You should really
+       support OSS developers better way. Info about how to reliably load
+       airPoint PRO firmware to non-SB brand devices, based on the same HW
+       ref. design, would of course help too.
+
+       NOTE TO ALL USERS: IF YOU HAVE SMARTBRIDGES airPoint PRO (indoor or
+       outdoor) AND WANT BETTER AP-UTILS SUPPORT, YOU CAN SEND ME ONE SAMPLE
+       OF THIS DEVICE. OTHERWISE THERE WILL APPARENTLY BE _INCOMPLETE_ SUPPORT
+       EVEN IN FUTURE! THE LAST APPO I I'VE SEEN IN BAZAAR THAT I WAS PLANNING
+       TO GET IN ORDER TO IMPROVE SUPPORT IN AP-UTILS, HAS BEEN JUST SOLD
+       OUT, SO MY PLANS ARE GONE. I'M NOT WILLING TO PAY LIKE $350
+       FOR ONE SAMPLE JUST TO SUPPORT THE WORLD. SO UNTIL SOMEONE SUPPORTS
+       ME WITH SAMPLE DEVICE TO TEST ON, MY SUPPORT FOR SmartBridges
+       APPO in AP-UTILS IS _OVER_ (and this round of patches is apparently
+       the last effort to improve support in this area).
+       I'LL ALSO ACCEPT ANY DEVICE THAT USES THE SAME FIRMWARE / MIB
+       AS SMARTBRIDGES airPoint PRO.
+
+       You can contact me about the subjects above via e-mail at
+       <jr-aputils at cedric dot unob dot cz>.
+
+       Dedicated to memory of cat Micka, my pet.
+       * EZYNET-enhanced AP firmware is now freely available! Read more about
+         its availability, upgrade possibilities and caveats in README,
+         section 'Firmware available free of charge for ATMEL12350 MIB
+         devices' !!!
+       * renamed all references of 'VERNET' to 'EZYNET' (true vendor name)
+       * renamed all references of 'TELLUS' to 'GEMTEK' (Tellus, SparkLan,
+         etc. appear to be GemTek subsidiaries or at least they seem to use
+         firmware from GemTek. If someone knows I'm wrong with this
+         conclusion, please let me know).
+       * note: my primary focus is on support for devices running firmware
+         0.2.x.x, equipped with flash memory AT29LV040A (TSOP1), and
+         second SRAM, such as Tellus A14, SparkLan WX-1590L, etc.
+         Easy way of how to tell that the device has second SRAM, is
+         presence of (poor, locky) web management interface. Older devices
+         with single SRAM may be supported too, but my older test equipment
+         is restricted to W-Link WEN2021 and I-TEC AP GOLD / blue, which means
+         that support for other old ATMEL flavours may or may not work,
+         despite all effort towards supporting them.
+       * README:
+         - added entries for supported APs: i-Tec AP GOLD (black front),
+           InterEpoch IWE1000A, OSBRiDGE m2410/p2410, SparkLAN WX-1590,
+           SparkLAN WX-1590L, D-com WX-1590 web, BOSSWAP
+         - the supported AP table is now sorted according to manufacturer name
+         - added section 'Firmware available free of charge for ATMEL12350 MIB
+           devices'
+         - made WARNING notices more accurate
+       * THANKS:
+         - added entry with thanks to EZYNET
+       * Makefile.am:
+         - reordered directory components so that 'intl' and 'po' will be
+           built as last ones. This helps on systems with old/broken auto*
+           tools, where building 'po' may fail (it still will do, but its
+           failure now wont prevent building other components).
+       * Documentation/mibs-atmel:
+         - created & populated with all AT76C510 MIB prototypes that should
+           be supported by ap-utils
+       * ap-gl/ap-gl.c, ap-gl/stations.c:
+         - backport of few changes from respective counterparts in src/,
+           to stay compatible with changed color scheme definitions
+           and format of 'Stations' output (btw, there is now no difference!)
+       * ap-gl/auth.c:
+         - backported few non-invasive changes from auth.c
+       * lib/ap-utils.h:
+         - added DONE_WRITING_APCONF & ERR_WRITING_APCONF, since they are
+           now referred from connect_options() as well as get_opts()
+         - added new structs AssociatedSTAsInfo_ATMEL410,
+           AssociatedSTAsInfo_ATMEL12350, NetworkSettings_ATMEL410_SBRIDGES
+           and NetworkSettings_ATMEL12350_EZYNET in favour of unified support
+           across most available vendor-enhanced MIBs
+       * lib/common.c:
+         - connect_options() is now verbose about status of writing
+           ~/.ap-config file, through DONE_WRITING_APCONF & ERR_WRITING_APCONF
+         - bugfix: fixed ap_vendorexts[ap_type][] boundary check error;
+           no more segfaults when manually specifying MIB type as "ATMEL12350"
+         - bugfix: get_mib_details() no longer relies on OUI part of device's
+           eth. MAC address as authoritative info for MIB vendor extension
+           determination. This was 1. giving totally fake results
+           if someone changed device's MAC, and 2. giving false results
+           for people with devices whose firmware has had certain MIB vendor
+           extensions available (for example SparkLan users with GEMTEK
+           firmware). Autodetection should now work for much broader range
+           of devices with AP firmware.
+       * lib/file.c:
+         - added functionality for HOME, END, PGUP and PGDN keys
+       * lib/input.c:
+         - bugfix: in get_value(), use wmove()/wrefresh() instead of wechochar
+           with 0x08 char. (backspace) as parameter - this fixes visual effect
+           of disrespecting leftmost bound on platforms with older ncurses
+         - bugfix: get_mac() now forces user to specify all 12 numbers of MAC,
+           avoiding ambiguous results
+       * lib/menu.c:
+         - squeezed the number of wrefresh(menu) calls to a minimum
+         - mark and highlighting of current menu item are now
+           cleared/restored upon entering/leaving atmel_set_oeminfo()
+       * lib/oui.c: added OUIs:
+         - 000F3D (D-Link Corporation)
+         - 00112F (ASUSTek Computer Inc.)
+       * lib/scr.c:
+         - simplified & unified 'Stations' menu output section in
+           scroll_rows() - it is now used for all ATMEL AP types.
+           Part separately dealing with APs using SmartBridges firmware
+           has been eliminated.
+         - shorten screen output of print_top_rssi()
+         - bugfix: in scroll_rows(), clear_main(3) changed to
+           clear_main(row), to make the first-row offset of scroll list
+           really configurable (required by auth.c)
+       * lib/set_community.c:
+         - left boundaries of community fields now start at offset 37
+       * lib/set_oeminfo.c:
+         - now also shows board VID & PID
+         - added possibility to configure # of calibrated channels
+         Reached 100% compatibility with original utility.
+       * lib/snmp.c:
+         - removed RETRIES constant. Instead, snmp_retries now keeps
+           the default amount of retries. This was somewhat necessary,
+           as we may eventually influence amount of retries one snmp() call
+           will attempt, in src/aplink.c
+       * lib/test.c:
+         - since test() is not yet ATMEL12350-ready, temporary kludge
+           has been added to disable this menu for devices with
+           such a MIB
+       * lib/wlan.c:
+         - bugfix: fix utility crash, that could previously happen if
+           someone changed value of Fragm. threshold from default to
+           value < length of typical expected SNMP response packet,
+           on device managed with ap-config via wireless port.
+           The return value of snmp() is now checked against the number
+           of varbinds members entering snmp() (it covers return value
+           <= 0 as well).
+           NOTE: IT IS _VERY_ UNWISE AND RISKY TO CHANGE 'RTS threshold'
+           AND 'Fragmentation threshold' VALUES ON DEVICE MANAGED VIA
+           WIRELESS PORT, SINCE THEY HAVE DIRECT IMPACT ON PACKETS TRANSMITTED
+           VIA WIRELESS PORT, AND IF THE VALUE IS BEHIND CERTAIN THRESHOLD,
+           THE DEVICE MAY BECOME COMPLETELY _UNMANAGEABLE_ VIA WIRELESS PORT.
+           If this happens and you have management access to the device
+           via wireless port only, you may try your favourite *-snmp tools to
+           restore RTS threshold and Frag. threshold settings to their
+           default value (2346), but if this fails, the only real way left
+           to fix these values would be through ethernet or USB port. Beware!
+       * lib/set_oeminfo.c, lib/sysinfo.c, lib/wlan.c:
+         - bugfix: changed assumption about selection of proper length
+           sysDeviceInfo OID - this cant be distinguished based on ATMEL MIB
+           type, since, for example, NETGEAR ME102 MIB has ATMEL12350 MIB, but
+           has length of this structure 128 bytes (which most ATMEL410 MIB
+           equipped devices have). Now the proper structure is selected
+           based purely on length of response returned on SysDeviceInfo
+           SNMP query - should 'fix' all places that deal with values
+           generated by query to SysDeviceInfo OID
+       * src/aplink.c:
+         - newly introduced. Embeds atmel_aplink(), which is bound
+           to 'AP link' entry in the 'Info' menu. This entry allows to
+           monitor link state of the device in APclient or WRepeater mode.
+           It will inform user whether the APclient device is actually
+           associated to the AP or not, and if yes, what is the RSSI level of
+           the link (as well as Link Quality in case of device with
+           SmartBridges firmware, or actual connection speed in case of device
+           with EZYNET firmware), MAC of joined BSSID, ESSID, and used
+           RF channel.
+           RSSI top value per entire measurement session is also available.
+           Since the RSSI indication may be somewhat unstable (at least
+           with EZYNET firmware), showing of RSSI average from up to
+           99999 samples has also been implemented.
+           Note that the code will currently only work for ATMEL410 / SBRIDGES
+           or ATMEL12350 / EZYNET MIB devices, as MIBs of firmware from
+           other vendors does not seem to support NetworkSettings OID.
+           Exception is ATMEL12350 / NONE (NetGear ME102), whose APCLientInfo
+           OID is capable to give connection status too, but is not currently
+           implemented, since it uses different OID & structure and I do not
+           possess ME102 board to test with (TODO).
+       * src/ap-auth.c:
+         - hardened input validation for the '-i <ip>' parameter (according to
+           get_ip() in lib/input.c)
+         - added AP MIB type autodetection => utility will now also work
+           for devices with ATMEL12350 MIB. Devices with NWN MIB are yet
+           to be supported (TODO).
+         - assigned credits to Teemu
+       * src/ap-config.c:
+         - added definitions for several 'should be defined by default' color
+           pairs, that are actually used in bargraph code of aplink.c .
+           Previous pairs 1,2,3,4 were redefined to 11,12,13,14 to avoid
+           clash with 'standard' color pairs above. This change has been
+           propagated to all files dealing with color pairs.
+       * src/ap-mrtg.c:
+         - the same level of changes as in src/ap-auth.c. As side result,
+           it is no longer needed to specify AP MIB type (it will be
+           autodetected).
+         - bugfix: take into account different length of wirelessStatistics
+           structure in ATMEL12350 MIB & EZYNET extensions => '-t w'
+           will now also work for devices with this MIB & extensions.
+         - bugfix: restrict the '-t l' to ATMEL410 MIB devices in APClient
+           mode (ATMEL12350 MIB devices usually do not return any LinkQuality
+           indicators in wirelessKnownAPs structure).
+       * src/ap-tftp.c:
+         - introduced tftp client for upgrading ATMEL-based AP firmware.
+           Should work with boards utilising either 1.4x.y firmware (generally
+           AT76C510+INTERSIL boards, such as D-Link 1150, W-Link WEN-2021,
+           SmartBridges APPO, etc.), and boards utilising 0.x.y.z firmware
+           (generally AT76C510+RFMD boards, such as Tellus A14, Sparklan
+           WX-1590L, NetGear ME-102, OSBRiDGE p2410/m2410, etc.).
+           Use with care and NEVER EVER try to use this utility to upload
+           firmware that is from different vendor than your AP, unless you
+           perfectly know what you are doing, of course - otherwise,
+           you may irreversibly turn your AP into paperweight quite easily.
+           ATMEL APs are well known for their general firmware upload
+           design flaw (no authorization necessary for firmware upgrade),
+           that has caused many destroyed APs by joe-blow users uploading
+           incorrect firmware, and even APs destroyed by malicious users
+           that have intentionally uploaded incorrect firmware. See manpage
+           for details.
+           You have been warned.
+       * src/ap-trapd.c:
+         - recognise ATMEL12350 enterprise ID => will now react to traps
+           sent by devices with ATMEL 12350 enterprise MIB
+         - will now also print Trap number along with its string
+           representation
+         - bugfix: fixed problem with printing trap strings from
+           non-SmartBridges traplist when '-s' given, and vice versa
+       * src/auth.c:
+         - introduced as replacement for old 'auth_mac.c'. Simple 'auth'
+           name reflects its purpose better - it now contains not just
+           MAC-based "auth.", but also other auth. types (Radius, 802.1x)
+           based on the available MIB vendor "extensions".
+         - now properly distinguishes between authorization error and
+           invalid data error for SET snmp() operation. Particularly imporant
+           when user tries to enter Config/MAC Auth menu with user community
+           (which only permits reading, but not writing, and since writing
+           is basically required even for pure showing of authorized MAC
+           addresses, we need to distinguish these errors).
+           If the AP is accessed with 'user' community and it has record(s)
+           in MAC auth. list, it will print '(insufficient community used)'
+           in the first row of the MAC auth. list field.
+           public
+         - bugfix: it is now possible to delete last MAC entry too
+         - bugfix: when no MAC address left on the list, disallow 'Delete'
+           function
+         - should now be ready for move to lib/. (and purging in src/)
+         - it is now possible to 'escape' from prompt that appears after
+           pressing 'd' (delete MAC), upon entering '0'
+         - by default, if number of defined MACs is greater than the
+           visible scrolling area, the list tail will be shown
+         - if adding new MAC addresses, the list will advance to the last
+           (currently added) MAC entry to show its position in the MAC table
+         - added functionality for HOME, END, PGUP and PGDN keys
+         - added functionality for extra Auth. enhancements present in
+           ATMEL410 MIB with SBRIDGES extensions (Radius auth.), and
+           in ATMEL12350 MIBs with EZYNET extensions (802.1X auth.)
+         - now properly distinguishes MIBs with 2-mode AuthorizationMacEnable
+           OID, and those with 3-mode AuthorizationMacEnable OID
+         - added check against entering duplicated MAC to the MAC table
+       * src/bridge.c:
+         - bugfixes: since SBRIDGES and GEMTEK represent same lvalue, each
+           occurence of ap_vendorext comparison with value SBRIDGES or GEMTEK
+           must be and-ed with result of comparison against ap_type value
+           or all sorts of weirdness may occur (such as non-working options
+           for specific vendor extensions, although they normally should)
+         - bugfixes: revised presence of all OIDs in all actually supported
+           vendor-extended MIBs. Result: all available OIDs relevant to
+           this menu should now also be correctly supported on devices
+           with SmartBridges APPO firmware and NetGear ME102 device firmware.
+         - Label 'Wireless' for config-enabled port mode changed to
+           'Wireless (can be risky)'. I've finally made a resolution
+           to step forward in this - setting config-enabled port to
+           wireless-only can even be deadly for non-USB equipped devices,
+           if configured improperly, if no second ATMEL-based device
+           is handy for fixing conf. on the peer via its wireless port,
+           for outdoor installations, and in couple of other scenarios.
+           REALLY THINK MANY TIMES PRIOR SETTING THIS TO wireless-only !!!
+       * configure.in, src/Makefile.am:
+         - avoid needless linking with curses library for several utilities
+           (ap-auth, ap-mrtg, ap-tftp, ap-trapd).
+       * Sysinfo menu will now also show current 'Operational mode'
+       * bugfix: all conditions that check return value of to snmp(,i,GET)
+         with i > 1, changed from '<= 0' condition to '< i' condition.
+         This is very important in cases when the device does not return _all_
+         the requested varbinds members filled up, which would usually lead
+         either to memory corruption often followed by ap-config crash
+         with 'segmentation fault' reason. If there's unreliable media
+         between the managed device and ap-config, this could previously
+         happen - typically, devices managed via their wireless port
+         or incorrectly configured devices (bad Frag. threshold and/or
+         RTS threshold) may respond with incomplete replies.
+       * naming convention of many variables, structures and OID names changed
+         to respect this scheme (cosmetics, intended coding standard):
+         - names of several #defines changed to be descriptive as
+           'STATUS_DESCRIPTION'
+         - OID names, unless absolutely necessary, should be always named
+           EXACTLY after the corresponding OID name in MIBs for easier
+           referencing
+         - names of structures named after OID, should end with '_s' or
+           '_' followed by something reasonable
+         - variable names should reflect their whole purpose
+
+2004-12-09 Roman Festchook
+       * lib/common.c: fixed getting additional character into AP label during autodetection
+
+2004-12-09 Michel Robitaille
+       * po/fr.po: updated translation
+
+2004-11-28 Roman Festchook
+       * Documentation/ap-gl.8, Documentation/README.ap-gl: info from
+           Documentation/README.ap-gl moved to ap-gl man page, removed
+           Documentation/README.ap-gl
+       * Documentation/README.ap-auth:
+            removed because all info now in ap-auth man page
+
 2004-11-28 Roman Festchook
        * lib/common.c: added checking then function called from ap-gl utility
            in connect_options() automatic detecting MIB, extention. Now community
             (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=259645)
        * po/uk.po: updated translation
        * ap-gl/stations.c: fixed RSSI dBm representation
+       * configure.in: version 1.5pre1_FreedomOfUkraine
        
 2004-11-24 Jan Rafaj
        * README:
index aad30e04f4263eb062b374061650d16cfcca414f..6178ec6586562034ba56d3f2adaf37ffc586e1e7 100644 (file)
-Q.
-> I try to install Access Point SNMP Config utility, but i can't find
-> menu.h file.
-> [root@server src]# make
-> gcc -O2 -Wall    -c -o ap-cnf.o ap-cnf.c
-> ap-cnf.c:24:18: menu.h: No such file or directory
-> make: *** [ap-cnf.o] Error 1
-A.
+Q:
+I try to compile ap-utils, but it complains that it can't find the menu.h
+file:
+[root@server src]# make
+gcc -O2 -Wall    -c -o ap-cnf.o ap-cnf.c
+ap-cnf.c:24:18: menu.h: No such file or directory
+make: *** [ap-cnf.o] Error 1
+
+A:
 You need to install ncurses and ncurses-devel packages from your distro.
 Or just build and install ncurses libs from sources.
 
-Q.
-> I bought a access point. Unfortunately, the
-> documentation does not have the default community string used by the
-> product. Do you know what it is, or where I could find it out?
-A.
-I'm give you default communities from my equipment, may be you may use
-it with your AP: "public", "private", "linksys".
-Also consult documentation to your AP.
-
-Q.
-> The wireless & ethernet stats are reset to zero each time I grab
-> the KnownAP signal and quality stats.  The same issue happens when
-> performing KnownAP's running your AP-CNF program without modification.
-A.
-Because only way to see KnownAPs info its to put AP to client mode with master
-AP mac set to  0000000000. When setting this AP resets. Only one way to get
-signal and quality stats not resetting AP - its to get this stat from AP
-setted in client mode all time.
+Q:
+I try to compile ap-utils, but the compilation suddenly breaks with the
+following errors:
+gcc -DLOCALEDIR=\"/usr/local/share/locale\" -DHAVE_CONFIG_H -I../lib -I../intl -I..    -g -O2 -Wall -W -c bridge.c
+bridge.c:46: initializer element is not constant
+bridge.c:46: (near initialization for `bridge_modes[0]')
+bridge.c:47: initializer element is not constant
+bridge.c:47: (near initialization for `bridge_modes[1]')
+bridge.c:48: initializer element is not constant
+bridge.c:48: (near initialization for `bridge_modes[2]')
+bridge.c:49: initializer element is not constant
+bridge.c:49: (near initialization for `bridge_modes[3]')
+bridge.c:50: initializer element is not constant
+bridge.c:50: (near initialization for `bridge_modes[4]')
+bridge.c:52: initializer element is not constant
+bridge.c:52: (near initialization for `bridge_modes[5]')
+
+A:
+Your gettext is not up-to-date. You need to either update gettext package
+for your distro, or you'll need to completely disable NLS support for
+ap-utils by appending '--disable-nls' to configure. If you do so,
+the compilation may still end with an error like this:
+
+make[2]: Entering directory `/root/work/ap-utils-1.5/po'
+make[2]: *** No rule to make target `all'.  Stop.
+make[2]: Leaving directory `/root/work/ap-utils-1.5/po'
+make[1]: *** [all-recursive] Error 1
+make[1]: Leaving directory `/root/work/ap-utils-1.5'
+make: *** [all-recursive-am] Error 2
+
+You may safely ignore this one.
 
-Q.
->Can someone give me the "newbe" answer to what's the
->relationship/difference between RSSI and Link Quality?
+Q:
+I bought an access point. Unfortunately, the documentation does not state
+what are the default community strings defined within the device.
+Do you know what it is, or where I could find it out?
+
+A:
+It should be in your AP's documentation, really.
+For example, the default communities for Linksys WAP11 are:
+"public", "private", "linksys".
+Most other devices have all three communities predefined to the same
+value, such as "public", "public", "public".
+If you just got an AP from someone who didnt provide you with the currently
+configured community strings, and your AP has no reset button,
+but has an USB port, you may try to reset AP to its default (manufacturer)
+configuration using "DFU" utility (in Windows), provided by the manufacturer
+of your device. *NIX variant of DFU utility is currently in progress
+and should be available in one of upcomming releases.
+
+Q:
+The wireless & ethernet stats counters are reset to zero each time I grab
+the KnownAP signal and quality stats.  The same issue happens when
+performing KnownAP scan using the ap-config program without modification.
 
 A.
+This happens because the only way to see updated KnownAPs info is to put
+your device to the AP-client mode with preferred BSSID 000000000000. Device
+needs to be rebooted so that this change goes into effect. As side effect
+of this reboot, all counters in the device are, of course, zeroed.
+After this, the utility also takes care to reconfigure device back
+to its previous setting (second reset). Unability to perform KnownAP
+scan while in different than AP-client mode is generally a feature
+of all firmware versions for devices with INTERSIL radio.
+All in all, it is a firmware feature, not a bug.
+The RSSI and LQ stats may be retrieved without AP reboot (and thus
+without reset of wireless & ethernet statistics counters) only if the device
+is permanently set to the AP-client mode.
+
+Q:
+Can someone give me the "newbie" answer to what's the relationship/difference
+between RSSI and Link Quality?
+
+A:
 RSSI = Received Signal Strength Indication. Measures only the signal
 amplitude. This plays a major role in calculating the fade margin of the
 link. 
-The Signal Quality represents how clean the signal is. Interference,
-Multi path Reflections etc. This measure plays a major role in
+The Link Quality value represents how clean the signal is - it reflects
+eventual degradation of radio signal transmision conditions, such as
+interference, multipath reflections, etc. This measure plays a major role in
 determining the data throughput. Low Signal Quality would normally mean
-retransmissions, dropped packets etc.
+frequent retransmissions, dropped packets etc.
+Note, that firmware for ATMEL-based devices with RFMD radio does not provide
+Link Quality value (and this is a firmware feature, not a bug).
+
+Q:
+I have an ATMEL-based device with RFMD radio, use the firmware from E-ZY.NET
+and the graph of RSSI value history looks very jumpy. Is this normal, or is
+my link really so bad?
+
+A:
+It is normal, you dont need to be afraid. Also this is why 'RSSI average'
+and 'RSSI rounding' graphs are provided for - they allow you to see
+the averaged value of the RSSI over certain period of samples. Apparently,
+the actual RSSI value shown reflects also the signal phase conditions
+(influenced by signal reflections, and interference). So you may eventually
+think of it as 'RSSI + LQ aggregated'.
 
index eaabc88ab5c34d24b5382ef496b54b194735d53c..9c7c0667484f923dd2a5f699eb018ab79d7f38e8 100644 (file)
@@ -19,5 +19,5 @@
 
 ## Process this file with automake to produce Makefile.in
 
-man_MANS = ap-trapd.8 ap-mrtg.8 ap-config.8 ap-gl.8 ap-auth.8
-EXTRA_DIST = $(man_MANS) FAQ Ukrainian/* Ovislink-HOWTO.html HARDWARE-NOTES README.*
+man_MANS = ap-trapd.8 ap-mrtg.8 ap-config.8 ap-gl.8 ap-auth.8 ap-tftp.8
+EXTRA_DIST = $(man_MANS) FAQ Ukrainian/* Ovislink-HOWTO.html HARDWARE-NOTES README.* mibs-atmel/*
index 5c79c82bb9104e3775ffd4db50af575ac664903c..b53f6060ab6590b54c6b2d2cd42984236d9e1623 100644 (file)
@@ -71,6 +71,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
+CURSESLIBS = @CURSESLIBS@
 CYGPATH_W = @CYGPATH_W@
 DATADIRNAME = @DATADIRNAME@
 DEFS = @DEFS@
@@ -157,8 +158,8 @@ sharedstatedir = @sharedstatedir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 
-man_MANS = ap-trapd.8 ap-mrtg.8 ap-config.8 ap-gl.8 ap-auth.8
-EXTRA_DIST = $(man_MANS) FAQ Ukrainian/* Ovislink-HOWTO.html HARDWARE-NOTES README.*
+man_MANS = ap-trapd.8 ap-mrtg.8 ap-config.8 ap-gl.8 ap-auth.8 ap-tftp.8
+EXTRA_DIST = $(man_MANS) FAQ Ukrainian/* Ovislink-HOWTO.html HARDWARE-NOTES README.* mibs-atmel/*
 subdir = Documentation
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
@@ -237,7 +238,7 @@ top_distdir = ..
 distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
 
 distdir: $(DISTFILES)
-       $(mkinstalldirs) $(distdir)/Ukrainian
+       $(mkinstalldirs) $(distdir)/Ukrainian $(distdir)/mibs-atmel
        @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
        list='$(DISTFILES)'; for file in $$list; do \
diff --git a/Documentation/README.ap-auth b/Documentation/README.ap-auth
deleted file mode 100644 (file)
index ceb79a1..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-Subject: [ap-utils] mac auth updates from command line (patch)
-Date: Monday 19 July 2004 18:06
-From: Teemu Kiviniemi <teemuki AT fotokone DOT fi>
-To: ap-utils AT lists DOT polesye DOT net
-
-
-Hi,
-
-I couldn't find a command line utility to change the list of authorised MAC
-addresses, so I did one myself. I combined some of the existing code found in
-ap-mrtg.c and auth_mac.c to make ap-auth.c.
-
-Usage:
-ap-auth -i ip -c community -d filename
-or
-ap-auth -i ip -c community -u filename
-
-
--i ip        - AP ip address
--c community - SNMP community string
--d filename  - download list of authorised MAC addresses from AP to a file
--u filename  - upload list of authorised MAC addresses from a file to AP
-
-
-Here is a patch against ap-utils 1.4.1:
-http://teemuki.fotokone.fi/ap-utils/ap-utils-1.4.1-ap-auth.patch
-
-
-It has only support for ATMEL410, because I can't test the code on other
-accesspoints. I've tested it and it works with smartBridges Airpoint Pro.
diff --git a/Documentation/README.ap-gl b/Documentation/README.ap-gl
deleted file mode 100644 (file)
index 0930aee..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Client stations Status:
-status 3 - normal connected
-status 9 - awaiting authorization
index 5d7648554878f990686f4181db9144f59b26caed..8500762a9a7afc67dc9dfc3cb8814fc17895a5f7 100644 (file)
@@ -41,12 +41,13 @@ This option displays the wireless statistics for your reference.
 .TP
 .B     Stations (atmel)
 Under this menu the user will be able to see the Associated Stations that are currently associated with the Access Point. For each associated station the user will be able to see the MAC Address. From version 0.7.3-pre1 you may save mac addresses list to file ~/<util_name>.stations.
-Stations on NWN AP:
 For each associated station the user will be able to see the MAC Address, Link Quality, RSSI and Idle time.
  * Mac address: If the association is pending (that is, the Client is scanning, authenticating or associating), assocAddress contains the MAC address of that Client with the group bit set to indicate that the Access Point is aware of the presence of that Client. The other objects of the entry will be updated based on the information extracted from the received Probe Requests.
  * Link Quality: An indicator for the quality of the Client. If the association is still pending, the quality is calculated over the received Probe Requests from the Client. If the Client is associated, the quality derived from any activity with the Client. The actual quality source depends on the selected quality indicator. The semantics of the indicator is 'low is good quality' and 'high is bad quality'.
  * IdleTime: An indicator (in seconds) for the age of the information on the Client. The age is reset to 0 if any activity of this Client is detected.
  * RSSI: An indicator for the RSSI of the Client. If the association is still pending, the RSSI is calculated over the received Probe Requests from the Client. If the Client is associated, the RSSI derived from any activity with the Client.
+ * Client stations Status: status 3 - normal connected, status 9 - awaiting authorization.
+
 .TP
 .B     KnownAP
 By using option APs from info menu you may see all Access Points thats visible by your AP.
diff --git a/Documentation/ap-tftp.8 b/Documentation/ap-tftp.8
new file mode 100644 (file)
index 0000000..9f3eb04
--- /dev/null
@@ -0,0 +1,198 @@
+.\"      Manpage for ap-tftp utility
+.\"   from Wireless Access Point Utilitess for Unix
+.\"
+.\"  Copyright (c) 2004-2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>
+.\"
+.\"  This program is free software; you can redistribute it and/or modify
+.\"  it under the terms of the GNU General Public License Version 2 from
+.\"  June 1991 as published by the Free Software Foundation.
+.\"
+.\"  This program 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 General Public License for more details.
+.\"
+.\"  You should have received a copy of the GNU General Public License along
+.\"  with this program; if not, write to the Free Software Foundation, Inc.,
+.\"  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+.TH ap-tftp 8 "Wireless Access Point Utilites for Unix"
+.SH NAME
+ap-tftp \- TFTP client for upgrading ATMEL AT76C510 WiSOC-based APs
+.TP
+.B Please read the entire manpage prior using this utility. It may prevent you from problems arising later.
+.SH SYNOPSIS
+.B ap-tftp
+.B -i
+.IR IP
+.B -f
+.IR firmware.rom
+.B [-c 
+.IR community
+.B ]
+.SH DESCRIPTION
+The
+.B ap-tftp
+utility is used to upgrade or downgrade firmware in Access Points based on ATMEL AT76C510 VNET-B WiSOC (Wireless System On Chip). It should work for most (if not all) models with INTERSIL radio chipset, as well as those based on RFMD radio. However, so far it has only been tested on the following hardware: WLink WEN-2021, i-Tec AP GOLD, smartBridges airPOINT PRO (all with INTERSIL radio), and Tellus A14 (RFMD radio). If you have an AP with ATMEL AT76C510 and either INTERSIL or RFMD radio chipset, there's near 100% chance it will work for you, too.
+.SH PREFACE: FIRMWARE TYPES
+Functionally, there basically exist 2 types of firmware for ATMEL-based APs: an "
+.B Access Point
+firmware (often referred to as
+.B AP firmware
+), and
+.B Wireless Adapter
+firmware (referred to as
+.B WA firmware
+). Many hardware vendors produce their own more or less modified firmware derivatives, but usually they keep up with the naming scheme introduced by ATMEL:
+.SS APs with INTERSIL radios
+For APs with INTERSIL radios, the AP firmware file typically uses naming scheme such as "1.4x.y.rom" (for example "1.4j.1.rom", "1.4k.2.rom", etc.), while the WA firmware files typically exist under names such as "0.01.ab.rom" (for example "0.01.09.rom", "0.01.11.rom", etc.). The values "x", "y", and "ab" indicate the firmware revision.
+.SS APs with RFMD radios
+For APs with RFMD radios, the AP firmware files are known under names like "0.2.x.yz.rom" (such as "0.2.2.11.rom", "0.2.2.18.rom", etc.), while the WA firmware uses names as "0.3.b.c.rom" (for example "0.3.2.5.rom", "0.3.2.6.rom"), or "0.4.b.c.rom" for WA+ firmware (which is a variant of WA firmware that offers limited multiple MACs transparency in client mode) - for example "0.4.2.7.rom". Again, the numbers change according to the firmware revision.
+
+To descend in even greater complexity, there usually exist 2 files for each firmware revision in the ATMEL+RFMD world: one so-called
+.B primary firmware 
+(the bigger file of the two; it contains base firmware as well as the embedded webserver), and a second file with so-called
+.B backup firmware 
+(the smaller file of the two, it contains just the base firmware).
+The name of secondary firmware always uses '0' in the third number field (such as "0.2.0.18.rom").
+.B You'll always need to upgrade with backup firmware FIRST, unless its manufacturer states otherwise.
+.TP
+.RE 4
+.B WARNING!!! WARNING!!! WARNING!!! WARNING!!! WARNING!!!
+.RS 4
+.IP o 3
+.B WA firmwares 
+and their derivatives
+.B ARE _NOT_ SUPPORTED
+by ap-utils!!! They may appear to partially work with ap-utils, but you
+can cause harm to your AP if you use ap-config with such firmware. Do not
+complain if you use ap-config with such firmware and it damages your AP!
+.IP o
+Since some hardware vendors keep up the bad habit of producing their own firmwares using the original ATMEL firmware naming scheme, it is easy to find firmwares from different hardware vendors for ATMEL-based APs with
+.B exactly the same name and sometimes even the length
+(for example, firmware "1.4j.1.rom" exists in many incarnations, but their content differs). They may use different structures and offsets for reading configuration data in the flash memory without content validity checks, so
+.B NEVER EVER USE FIRMWARE FROM ANOTHER HARDWARE VENDOR THAN THE ONE THAT IS MANUFACTURING YOUR AP, UNLESS EXPLICITLY STATED OTHERWISE! IF YOU DO SO, YOU MAY IRREVERSIBLY DAMAGE YOUR AP!
+.IP o
+BEWARE! AP boards from several vendors may contain hardware design bugs, that will totally prevent it from successfull upgrade.
+.B Any attempt to upgrade such device, either via TFTP or DFU utility will fail and irreversibly damage content of its flash memory! If your vendor does NOT provide ANY firmware nor tools to perform upgrade for your device, it means (unless stated otherwise), that IT IS UNSAFE TO TRY UPGRADING and YOU SHOULD NOT ATTEMPT TO UPGRADE YOUR DEVICE AT ALL!
+Example of such board with bug in hardware design is Tellus A13 (also sold as i-Tec AP GOLD with blue front).
+.IP o
+ATMEL AT76C510-based APs are notoriously known for their firmware upgrade design flaw: firmware validation checks and subsequent permission for upgrade are not performed by the AP itself, but in the TFTP upgrade client. This means that anyone with proper TFTP client, having access to your AP via its ethernet port, may _try_ to upload incorrect firmware (or even no-firmware file!) to your AP, causing irreversible damage to your AP. Hence:
+.RS 3
+.IP \- 3
+.B SECURE YOUR AP ON IP (LAYER 3) BASIS! SET UP YOUR AP (AND ITS WIRELESS CLIENTS) WITH IP FROM A DIFFERENT IP SEGMENT THAN THE ONE IT IS PHYSICALLY ON. TO ACCESS AP ON SUCH DIFFERENT SEGMENT, YOU MAY USE IP-ALIAS INTERFACE (on Linux).
+.IP \-
+.B FOR APs IN "Access Point client" MODE, USE ap-config AND IN 'Config -> Bridge' MENU, CHANGE THE VALUE OF 'Configuration-enabled port(s):' TO 'Wireless'. THIS WAY, USER BEHIND Access Point client DEVICE WONT BE ABLE TO REACH ITS MANAGEMENT IP, AND SUBSEQUENTLY (S)HE WONT BE ABLE TO CAUSE ANY DAMAGE WITH TFTP.
+Note that setting Conf.-enabled port to 'Wireless' may be risky if you intend to reconfigure the device through Wireless media (bad values could be written to the AP due to wireless media unreliability). You should choose what is of greater risk for you.
+.RE 1
+.RS 4
+.IP o 3
+.B Users of ATMEL+INTERSIL devices:
+If your AP firmware vendor extensions are auto-detected as
+.B SBRIDGES
+by ap-config, it means that your AP uses firmware made by smartBridges PTE: you will need to pass extra '-c community' to ap-tftp in order to perform actual upgrade.
+.B BY ALL MEANS, AVOID UPGRADE OF DEVICE THAT CONTAINS smartBridges FIRMWARE, with non-smartBridges FIRMWARE, AND VICE VERSA, even if the firmware names may look similar (see the warning above).
+Although there are checks in ap-tftp, that should avoid something such, be careful, and DO NOT TRY, UNDER ANY CIRCUMSTANCES, to circumvent this protection - if you do, you'd most likely end up with damaged flash content in your device. You got the warning.
+.TP
+.BR
+Remember: All firmware files with revision "1.4j.4" onwards are from smartBridges: unless you possess a device that is autodetected with 'SBRIDGES' vendor extension, DO NOT TRY TO UPGRADE TO smartBridges FIRMWARE!
+.IP o 3
+.B Users of ATMEL+RFMD devices:
+If you are running
+.B primary
+firmware < 0.2.2.20, you
+.B should upgrade as soon as possible! AP
+firmware of version 0.2.2.19 and lower contains serious 'death by reconfiguration' bug, which, if triggered, may irreversibly damage content in flash memory of your AP. The event to trigger is usually changing & writing some settings in the 'Bridge' menu. So if you run such firmware, please upgrade. You may also look into README to see whether 'Firmware available free of charge for ATMEL12350 MIB devices' (section) applies to your AP.
+.TP
+.RE 1
+.B GENERAL HINTS AND RECOMMENDATIONS PRIOR UPGRADING
+.RS 4
+.IP \- 3
+IF POSSIBLE, PLACE YOUR AP BEHIND A FIREWALL SO THAT YOU PREVENT ACCESS TO ITS MANAGEMENT IP FOR UNWANTED THIRD PARTIES
+.IP \-
+Avoid upgrading your AP via its wireless port, if possible. Due to the unreliable nature of wireless media and UDP protocol used for upgrade, anything could happen - although there is CRC-like check in the firmware, that prevents flashing of (firmware) file that has possibly been altered during transmission, upgrade process interruption might cause damage (but even this is not very likely). You may upgrade AP via its wireless port only if you're 101% sure the wireless connection to the target device is reliable.
+.IP \-
+If you experience upgrade timeout in the 'middle' of the upgrade progress, it is usually ok to wait until the utility completely times out, and repeat the command afterwards. You may also experience 'catch up' (very short network break, so utility will resume uploading firmware to your AP).
+.IP \-
+In case when firmware upgrade fails,
+.B ap-tftp
+will show an error code returned by the TFTP server in AP. Note that although RFC 1350 defines 8 TFTP error messages, the TFTP server in the AP is not compliant to this RFC and the error codes returned may NOT correspond to those messages (but ap-tftp will always display corresponding RFC-defined error message, if possible, although it may really have nothing to do with the returned error code meaning). In the case the message for error code returned is not defined in RFC 1350, just the error code alone will be displayed.
+.IP \-
+If you want to upgrade firmware in an AP on a network where no DHCP server is available, it is advisable to assign static IP address and disable DHCP option on the device, so that you can verify, whether it is alive, using 'ping' command immediately after the upgrade succeeds (generally immediately after the device boots up), and you dont have to wait until AP's attempts to contact DHCP server time out. This is also especially useful if you need to do 2-step upgrade (using 'backup' and 'primary' firmware) - see above.
+.IP \-
+Firmware of APs based on ATMEL AT76C510 provides an interresting 'arp ping' feature. After AP boot-up, it is possible to remotely and TEMPORARILY (to next AP reboot) reconfigure its IP address, provided that within certain time period (several tens of seconds after boot-up), the AP receives ICMP ECHO request with target MAC address equal to its own. To set up IP in the AP using this method, do the following:
+.RS 3
+.IP 1\. 4
+From the IP range your AP is connected to, pick up an unused IP you want to set on the AP using 'arp ping'.
+.IP 2\.
+Set up static ARP entry associating the MAC address of your AP with the IP you selected in paragraph 1. Typically, you need to issue (as root) something like: 'arp -s required_AP_IP AP_MAC'. Consult manpage for 'arp' utility, if your 'arp' utility uses different syntax.
+.IP 3\.
+Right after the AP boots, run 'ping required_AP_IP'. You need to wait few seconds prior seeing first AP response.
+.RE 1
+.RS 4
+.IP \- 3
+.B Users of ATMEL+RFMD devices:
+To
+.B DOWNGRADE
+to
+.B AP
+firmware with lower revision number than the one thats currently in the device, you'll need to temporarily 'upgrade' to any
+.B WA
+firmware available for your device (as step-in-the-middle). This will 'unlock' your device for downgrading to previous
+.B AP
+firmware version.
+.SH OPTIONS
+.TP
+.B -i IP
+IP address of the AP you want upgrade firmware in.
+.TP
+.B -f firmware.rom
+Full path to and name of the firmware file for your AP.
+.TP
+.B -c community
+To be used ONLY with APs manufactured by smartBridges PTE. The given community
+must match with any of three three communities currently defined in the AP
+configuration - firmware upgrade will be allowed only upon the match.
+matches
+.RE
+.SH EXAMPLES OF USE
+.PD 0
+
+.SS Upgrading AP firmware in a device with INTERSIL radio and non-smartBridges firmware
+.BR
+.TP
+ap-tftp -i 192.168.0.1 -f 1.4j.3.rom
+
+.SS Upgrading AP firmware in a device with INTERSIL radio and smartBridges firmware
+.BR
+.TP
+ap-tftp -i 192.168.0.24 -f 1.4k.5.rom -c private
+
+.SS Upgrading AP firmware in a device with RFMD radio:
+.BR
+.TP
+ap-tftp -i 192.168.1.100 -f 0.2.0.20.rom
+.TP
+ap-tftp -i 192.168.1.100 -f 0.2.2.20.rom
+
+.SS Downgrading AP firmware in a device with RFMD radio:
+.BR
+.TP
+ap-tftp -i 192.168.1.100 -f 0.3.0.6.rom
+.TP
+ap-tftp -i 192.168.1.100 -f 0.3.2.6.rom
+.TP
+ap-tftp -i 192.168.1.100 -f 0.2.0.19.rom
+.TP
+ap-tftp -i 192.168.1.100 -f 0.2.2.19.rom
+
+.SH KNOWN BUGS
+This utility has not been verified on and will probably not work on big-endian architectures. Its use is discouraged in such environment.
+
+.SH AUTHOR
+Jan Rafaj <jr-aputils at cedric dot unob dot cz>
+.br
+http://ap-utils.polesye.net
+
+.SH SEE ALSO
+ap-config(8), ap-trapd(8), ap-auth(8), ap-mrtg(8)
+
diff --git a/Documentation/mibs-atmel/README b/Documentation/mibs-atmel/README
new file mode 100644 (file)
index 0000000..d1c6a5a
--- /dev/null
@@ -0,0 +1,3 @@
+This is a collection of different AP firmware "reference prototype" MIBs,
+that are (or are planned to be) supported by ap-utils.
+
diff --git a/Documentation/mibs-atmel/mib-12350-ezynet/AT76C510.mib b/Documentation/mibs-atmel/mib-12350-ezynet/AT76C510.mib
new file mode 100644 (file)
index 0000000..751c249
--- /dev/null
@@ -0,0 +1,1363 @@
+-- Title:      ATMEL  Private MIB                                          \r
+\r
+\r
+--Firmaware Version 1.4 14/5/2001\r
+\r
+\r
+ATMEL-MIB DEFINITIONS ::= BEGIN\r
+\r
+--IMPORTS\r
+--     enterprises,Counter\r
+--FROM RFC1155-SMI\r
+--     DisplayString\r
+--FROM RFC1213-MIB;\r
+--     TRAP-TYPE\r
+--FROM RFC-1215;\r
+\r
+\r
+--MacAddress ::= IMPLICIT OCTET STRING (SIZE(6))\r
+DisplayString ::= OCTET STRING\r
+\r
+internet      OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 }\r
+directory     OBJECT IDENTIFIER ::= { internet 1 }\r
+mgmt          OBJECT IDENTIFIER ::= { internet 2 }\r
+experimental  OBJECT IDENTIFIER ::= { internet 3 }\r
+private       OBJECT IDENTIFIER ::= { internet 4 }\r
+enterprises   OBJECT IDENTIFIER ::= { private 1 }\r
+\r
+--atmel       OBJECT IDENTIFIER ::= { enterprises 410 } \r
+atmel       OBJECT IDENTIFIER ::= { enterprises 12350 }\r
+atmelmib    OBJECT IDENTIFIER ::= { atmel 1}\r
+atmelSys       OBJECT IDENTIFIER ::= {atmelmib 1}\r
+wireless       OBJECT IDENTIFIER ::= {atmelmib 2}\r
+traps  OBJECT IDENTIFIER ::= {atmelmib 3 }\r
+\r
+\r
+\r
+--*************************** System***************************\r
+--****************************************************************\r
+\r
+\r
+\r
+sysCtrlGRP OBJECT IDENTIFIER ::= {atmelSys 1}\r
+\r
+sysDescr OBJECT-TYPE\r
+    SYNTAX  DisplayString (SIZE (0..255))\r
+    ACCESS  read-only\r
+    STATUS  mandatory\r
+       DESCRIPTION\r
+         "A textual description of the entity.  This value\r
+          should include the full name and version\r
+          identification of the system's hardware type,\r
+          software operating-system, and networking\r
+          software.  It is mandatory that this only contain\r
+          printable ASCII characters."\r
+       ::= { sysCtrlGRP 1 } \r
+\r
+\r
+sysReset OBJECT-TYPE\r
+       SYNTAX INTEGER {enable(1)}\r
+       ACCESS  read-write\r
+       STATUS  mandatory\r
+       DESCRIPTION       \r
+       "By setting this attribute enable(1), a reset command to \r
+       the system is issued." \r
+       ::= { sysCtrlGRP 2 } \r
+\r
+sysTrapSwitch OBJECT-TYPE\r
+       SYNTAX INTEGER {enable(1),disable(2)}\r
+       ACCESS read-write\r
+       STATUS mandatory\r
+       DESCRIPTION\r
+       "This attribute enables the transmission of SNMP.V1 TRAPs."\r
+       ::= {sysCtrlGRP 3}\r
+\r
+sysLoadDefaults OBJECT-TYPE\r
+       SYNTAX INTEGER { enable(1)}\r
+       ACCESS  read-write\r
+       STATUS  mandatory\r
+       DESCRIPTION       \r
+       "Setting this attribute to enable(1), will cause the system to load\r
+       the factory default values of all the operational parameters." \r
+       ::= { sysCtrlGRP 4 }\r
+\r
+sysDeviceInfo  OBJECT-TYPE\r
+                       SYNTAX OCTET STRING (SIZE (92))\r
+                       ACCESS read-write\r
+                       STATUS mandatory\r
+                       DESCRIPTION      \r
+                       "First 92 bytes of Hardware device configuration struct.\r
+                                HARD_CONFIGURATION_STUCT{\r
+                                       unsigned long StructVersion;\r
+       \r
+                                       unsigned char MacAddress[6];\r
+                                       unsigned char Channel;\r
+                                       unsigned char RegulatoryDomain;\r
+       \r
+                                       unsigned long ProductType;\r
+                                       unsigned char OEMname[32];\r
+                                       unsigned long OEMID;\r
+                                       unsigned char ProductName[32];\r
+                                       unsigned long HardwareRevision;\r
+\r
+                                       unsigned char PID_VID[4];       //Product ID/ Vendor ID\r
+       \r
+                                       unsigned int  sysOIDSize;\r
+                                       unsigned short sysOID[16];\r
+       \r
+                                       unsigned char  CountryCode[3];\r
+                                       unsigned char  Reserved1;\r
+                                       unsigned short ChannelInformation;\r
+                                       unsigned char  Reserved2[2];\r
+                                       char       TxPower[14]; \r
+\r
+                                       unsigned char Reserved3[10];\r
+                               } "\r
+\r
+                       ::= {sysCtrlGRP 5 }\r
+\r
+sysUpload OBJECT-TYPE\r
+       SYNTAX INTEGER {enable(1)}\r
+       ACCESS  read-write\r
+       STATUS  mandatory\r
+       DESCRIPTION       \r
+       "By setting this attribute enable(1), a Upload configuration command to \r
+       the system is issued." \r
+       ::= { sysCtrlGRP 6 } \r
+                   \r
+SiteSurveyCommand OBJECT-TYPE\r
+       SYNTAX INTEGER {enable(1)}\r
+       ACCESS  read-write\r
+       STATUS  mandatory\r
+       DESCRIPTION       \r
+       "By setting this attribute enable(1), a Site Survey command to \r
+       the system is issued." \r
+       ::= { sysCtrlGRP 7 } \r
+\r
+sysDeviceMoreInfo      OBJECT-TYPE\r
+                       SYNTAX OCTET STRING (SIZE (32))\r
+                       ACCESS read-write\r
+                       STATUS mandatory\r
+                       DESCRIPTION      \r
+                       "Last 32 bytes of Hardware device configuration struct.\r
+                                HARD_CONFIGURATION_STUCT{\r
+                                       unsigned long StructVersion;\r
+       \r
+                                       unsigned char MacAddress[6];\r
+                                       unsigned char Channel;\r
+                                       unsigned char RegulatoryDomain;\r
+       \r
+                                       unsigned long ProductType;\r
+                                       unsigned char OEMname[32];\r
+                                       unsigned long OEMID;\r
+                                       unsigned char ProductName[32];\r
+                                       unsigned long HardwareRevision;\r
+\r
+                                       unsigned char PID_VID[4];       //Product ID/ Vendor ID\r
+       \r
+                                       unsigned int  sysOIDSize;\r
+                                       unsigned short sysOID[16];\r
+       \r
+                                       unsigned char  CountryCode[3];\r
+                                       unsigned char  Reserved1;\r
+                                       unsigned short ChannelInformation;\r
+                                       unsigned char  Reserved2[2];\r
+                                       char       TxPower[14]; \r
+\r
+                                       unsigned char Reserved3[10];\r
+                               } "\r
+\r
+                       ::= {sysCtrlGRP 8 }\r
+\r
+\r
+                      \r
+\r
+-----------------------------BridgingLevel-----------------------------\r
+\r
+operBridgingLevel OBJECT IDENTIFIER ::= {atmelSys 2}\r
+\r
+operIPAddress OBJECT-TYPE\r
+               SYNTAX IpAddress\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "The IP address of this device used over its Ethernet\r
+               or Wireless LAN port."\r
+               ::= { operBridgingLevel 1 }\r
+\r
+operIPMask OBJECT-TYPE\r
+           SYNTAX  IpAddress\r
+           ACCESS  read-write\r
+           STATUS  mandatory\r
+           DESCRIPTION\r
+           "The IP Network mask used by the IP entity when accessing\r
+           devices through any of its LAN Ports (Ethernet or WLAN)."\r
+           ::= { operBridgingLevel 2}\r
+\r
+operEthernetAddress OBJECT-TYPE\r
+           SYNTAX  OCTET STRING (SIZE (6))\r
+           ACCESS  read-only\r
+           STATUS  mandatory\r
+           DESCRIPTION\r
+           "The MAC Address of the Ethernet interface."\r
+           ::= { operBridgingLevel 3}\r
+\r
+\r
+operGateway OBJECT-TYPE\r
+               SYNTAX IpAddress\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "Gateway default IP address."\r
+               ::= { operBridgingLevel 4 }\r
+\r
+operDHCP OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1),disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to enable(1), the system will\r
+               enable DHCP protocol."\r
+               ::= { operBridgingLevel 5 }\r
+\r
+operPrimaryPort OBJECT-TYPE\r
+               SYNTAX  INTEGER {Ethernet(1),Wireless(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the primaty port.Ethernet or Wireless."\r
+               ::= { operBridgingLevel 6 }\r
+\r
+operConfigurationPort OBJECT-TYPE\r
+               SYNTAX  INTEGER {Ethernet(1),Wireless(2),Both(3)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the Configuration port.Ethernet or Wireless or Both of them."\r
+               ::= { operBridgingLevel 7 }\r
+\r
+operTrapPort OBJECT-TYPE\r
+               SYNTAX  INTEGER \r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the Trap port."\r
+               ::= { operBridgingLevel 8 }\r
+\r
+\r
+\r
+-----------------------------Filtering-----------------------------\r
+\r
+\r
+\r
+operFiltering OBJECT IDENTIFIER ::= {atmelSys 3}\r
+\r
+operIPFilter OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1), disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to enable(1), the system will\r
+               filter out all non IP-traffic."\r
+               ::= { operFiltering 1 }\r
+      \r
+operForwarbBcast OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1), disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to disable(2), the system will not\r
+               forward broadcast traffic to the Wireless Port."\r
+               ::= { operFiltering 2 }\r
+                                                     \r
+operSendBackBcast OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1), disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to disable(2), the system will not\r
+               send back broadcast traffic to the Wireless Port."\r
+               ::= { operFiltering 3 }\r
+                 \r
+operSendBackUnicast OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1), disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to disable(2), the system will not\r
+               send back unicast traffic to the Wireless Port."\r
+               ::= { operFiltering 4 }\r
+\r
+\r
+-----------------------------Bridge Operational Mode -----------------------------\r
+\r
+\r
+operBridgeOperationalMode OBJECT IDENTIFIER ::= {atmelSys 4}\r
+\r
+\r
+bridgeOperationalMode OBJECT-TYPE\r
+               SYNTAX  INTEGER {WBPoint2Multipoint(1), AP(2), APclient(3),  WBPoint2Point(4), WRepeater(5)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "The Operational Mode of Bridge. Access Point, Access Point client, Wireless Bridge Point to Point, Wireless Bridge Point to MultiPoint."\r
+               ::= { operBridgeOperationalMode 1 }\r
+\r
+bridgeRemoteBridgeBSSID OBJECT-TYPE\r
+               SYNTAX  OCTET STRING (SIZE (6))\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "The Preferred BSSID if the device is at Access Point client mode\r
+               or the remote Mac if the device is at Wireless Bridge Point to Point mode."\r
+               ::= { operBridgeOperationalMode 2 }\r
+\r
+\r
+\r
+-----------------------------Static-----------------------------\r
+\r
+\r
+dot1dStatic OBJECT IDENTIFIER ::= {atmelSys 5}\r
+\r
+\r
+StaticMacFilterNum OBJECT-TYPE\r
+      SYNTAX  INTEGER \r
+      ACCESS  read-write\r
+      STATUS  mandatory\r
+      DESCRIPTION\r
+      "This parameter's value indicates the number of the currently\r
+      static MAC filters."\r
+      ::= { dot1dStatic 1 }\r
+\r
+\r
+          dot1dStaticTable OBJECT-TYPE\r
+              SYNTAX  SEQUENCE OF Dot1dStaticEntry\r
+              ACCESS  not-accessible\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "A table containing filtering information\r
+                      configured into the bridge by (local or network)\r
+                      management specifying the set of ports to which\r
+                      frames received from specific ports and containing\r
+                      specific destination addresses are allowed to be\r
+                      forwarded.  The value of zero in this table as the\r
+                      port number from which frames with a specific\r
+                      destination address are received, is used to\r
+                      specify all ports for which there is no specific\r
+                      entry in this table for that particular\r
+                      destination address.  Entries are valid for\r
+                      unicast and for group/broadcast addresses."\r
+              REFERENCE\r
+                      "IEEE 802.1D-1990: Section 6.7.2"\r
+              ::= { dot1dStatic 2 }\r
+\r
+          dot1dStaticEntry OBJECT-TYPE\r
+              SYNTAX  Dot1dStaticEntry\r
+              ACCESS  not-accessible\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "Filtering information configured into the bridge\r
+                      by (local or network) management specifying the\r
+                      set of ports to which frames received from a\r
+                      specific port and containing a specific\r
+                      destination address are allowed to be forwarded."\r
+              REFERENCE\r
+                      "IEEE 802.1D-1990: Section 6.7.2"\r
+              INDEX   { dot1dStaticAddress}--, dot1dStaticReceivePort }\r
+              ::= { dot1dStaticTable 1 }\r
+\r
+          Dot1dStaticEntry ::=\r
+              SEQUENCE {\r
+                  dot1dStaticAddress\r
+                      OCTET STRING (SIZE (6))\r
+--                  dot1dStaticReceivePort\r
+--                     INTEGER,\r
+--                  dot1dStaticAllowedToGoTo\r
+--                      INTEGER,\r
+--                  dot1dStaticStatus\r
+--                      INTEGER\r
+              }\r
+\r
+          dot1dStaticAddress OBJECT-TYPE\r
+              SYNTAX  OCTET STRING (SIZE (6))\r
+              ACCESS  read-write\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "The destination MAC address in a frame to which\r
+                      this entry's filtering information applies.  This\r
+                      object can take the value of a unicast address, a\r
+                      group address or the broadcast address."\r
+              REFERENCE\r
+                      "IEEE 802.1D-1990: Section 3.9.1, 3.9.2"\r
+              ::= { dot1dStaticEntry 1 }\r
+\r
+--          dot1dStaticReceivePort OBJECT-TYPE\r
+--              SYNTAX  INTEGER\r
+--              ACCESS  read-write\r
+--              STATUS  mandatory\r
+--              DESCRIPTION\r
+--                      "Either the value '0', or the port number of the\r
+--                      port from which a frame must be received in order\r
+--                      for this entry's filtering information to apply.\r
+--                      A value of zero indicates that this entry applies\r
+--                      on all ports of the bridge for which there is no\r
+--                      other applicable entry."\r
+--              ::= { dot1dStaticEntry 2 }\r
+\r
+--          dot1dStaticAllowedToGoTo OBJECT-TYPE\r
+--              SYNTAX  INTEGER\r
+--              ACCESS  read-write\r
+--              STATUS  mandatory\r
+--              DESCRIPTION\r
+--                      "The set of ports to which frames received from a\r
+--                      specific port and destined for a specific MAC\r
+--                      address, are allowed to be forwarded.  Each octet\r
+--                      within the value of this object specifies a set of\r
+--                      eight ports, with the first octet specifying ports\r
+--                      1 through 8, the second octet specifying ports 9\r
+--                      through 16, etc.  Within each octet, the most\r
+--                      significant bit represents the lowest numbered\r
+--                      port, and the least significant bit represents the\r
+--                      highest numbered port.  Thus, each port of the\r
+--                      bridge is represented by a single bit within the\r
+--                      value of this object.  If that bit has a value of\r
+--                      '1' then that port is included in the set of\r
+--                      ports; the port is not included if its bit has a\r
+--                      value of '0'.  (Note that the setting of the bit\r
+--                      corresponding to the port from which a frame is\r
+--                      received is irrelevant.)  The default value of\r
+--                      this object is a string of ones of appropriate\r
+--                      length."\r
+--              ::= { dot1dStaticEntry 3 }\r
+--\r
+--          dot1dStaticStatus OBJECT-TYPE\r
+--              SYNTAX  INTEGER {\r
+--                          other(1),\r
+--                          invalid(2),\r
+--                          permanent(3),\r
+--                          deleteOnReset(4),\r
+--                          deleteOnTimeout(5)\r
+--                      }\r
+--              ACCESS  read-write\r
+--              STATUS  mandatory\r
+--              DESCRIPTION\r
+--                      "This object indicates the status of this entry.\r
+--                      The default value is permanent(3).\r
+--                           other(1) - this entry is currently in use but\r
+--                                the conditions under which it will\r
+--                                remain so are different from each of the\r
+--                                following values.\r
+--                           invalid(2) - writing this value to the object\r
+--                                removes the corresponding entry.\r
+--                           permanent(3) - this entry is currently in use\r
+--                                and will remain so after the next reset\r
+--                                of the bridge.\r
+--                           deleteOnReset(4) - this entry is currently in\r
+--                                use and will remain so until the next\r
+--                                reset of the bridge.\r
+--                           deleteOnTimeout(5) - this entry is currently\r
+--                                in use and will remain so until it is\r
+--                                aged out."\r
+--              ::= { dot1dStaticEntry 4 }\r
+\r
+\r
+\r
+----------------------------------Protocol Filtering-------------------\r
+\r
+\r
+ProtocolFilterGRP OBJECT IDENTIFIER ::= {atmelSys 6}\r
+\r
+ProtocolFilterNum OBJECT-TYPE\r
+      SYNTAX  INTEGER \r
+      ACCESS  read-write\r
+      STATUS  mandatory\r
+      DESCRIPTION\r
+      "This parameter's value indicates the number of the currently\r
+      protocol filters."\r
+      ::= { ProtocolFilterGRP 1 }\r
+\r
+\r
+\r
+\r
+          ProtocolFilterTable OBJECT-TYPE\r
+              SYNTAX  SEQUENCE OF ProtocolFilterEntry\r
+              ACCESS  not-accessible\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "A table containing filtering information\r
+                      configured into the bridge by (local or network)\r
+                      management specifying the set of protocol filter."\r
+              ::= { ProtocolFilterGRP 2 }\r
+\r
+          protocolFilterEntry OBJECT-TYPE\r
+              SYNTAX  ProtocolFilterEntry\r
+              ACCESS  not-accessible\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "Filtering information configured into the bridge\r
+                      by (local or network) management specifying the\r
+                      set of protocol filter."\r
+              INDEX   { ProtocolFilterCode }\r
+              ::= { ProtocolFilterTable 1 }\r
+\r
+          ProtocolFilterEntry ::=\r
+              SEQUENCE {\r
+                  ProtocolFilterCode\r
+                      OCTET STRING (SIZE (2)),\r
+                  ProtocolFilterDescription\r
+                      DisplayString (SIZE (0..255)),\r
+                  ProtocolFilterActivity\r
+                      INTEGER\r
+              }\r
+\r
+          ProtocolFilterCode OBJECT-TYPE\r
+              SYNTAX  OCTET STRING (SIZE (2))\r
+              ACCESS  read-write\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "The protocol code configured into the bridge\r
+                      by (local or network) management specifying the\r
+                      set of protocol filter."\r
+              ::= { protocolFilterEntry 1 }\r
+\r
+          ProtocolFilterDescription OBJECT-TYPE\r
+              SYNTAX  DisplayString (SIZE (0..255))\r
+              ACCESS  read-write\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "A textual description of the protocol."\r
+              ::= { protocolFilterEntry 2 }\r
+\r
+          ProtocolFilterActivity OBJECT-TYPE\r
+              SYNTAX  INTEGER {enable(1),disable(2)}\r
+              ACCESS  read-write\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "This object indicates the status of this filter."\r
+              ::= { protocolFilterEntry 3 }\r
+\r
+\r
+\r
+-----------------------------Ethernet STATISTICS-----------------------------\r
+\r
+\r
+EthStatisticsGRP OBJECT IDENTIFIER ::= {atmelSys 7}\r
+\r
+EthRxStatistics OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (64))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "Ethernet Rx Statistics\r
+               EthernetRxStatistics{\r
+                       unsigned long   TotalBytesRx;\r
+                       unsigned long   TotalPacketsRx;\r
+                       unsigned long   PacketCRCErrorRx;\r
+                       unsigned long   MulticastPacketRx;\r
+                       unsigned long   BroadcastPacketRx;\r
+                       unsigned long   ControlFramesRx;\r
+                       unsigned long   PauseFramesRx;\r
+                       unsigned long   UnknownOPCodeRx;\r
+                       unsigned long   AlignmentRxError;\r
+                       unsigned long   LengthOutOfRangeRx;\r
+                       unsigned long   CodeErrorRx;\r
+                       unsigned long   FalseCarrierRx;\r
+                       unsigned long   UndersizePacketsRx;\r
+                       unsigned long   OversizePacketsRx;\r
+                       unsigned long   TotalFragmentsRx;\r
+                       unsigned long   TotalJabberRx;\r
+               }"\r
+               ::= {EthStatisticsGRP 1 }\r
+\r
+EthTxStatistics OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (56))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "Ethernet Tx Statistics\r
+               EthernetTxStatistics{\r
+                       unsigned long   TotalBytesTx;\r
+                       unsigned long   TotalPacketsTx;\r
+                       unsigned long   PacketCRCErrorTx;\r
+                       unsigned long   MulticastPacketTx;\r
+                       unsigned long   BroadcastPacketTx;\r
+                       unsigned long   UnicastPacketTx;\r
+                       unsigned long   PauseFramesTx;\r
+                       unsigned long   SingleDeferPacketTx;\r
+                       unsigned long   MultiDeferPacketsTx;\r
+                       unsigned long   SingleCollisionsTx;\r
+                       unsigned long   MultiCollisionsTx;\r
+                       unsigned long   LateCollisionsTx;\r
+                       unsigned long   ExcessiveCollisionTx;\r
+                       unsigned long   TotalCollisionsTx;\r
+               }"\r
+\r
+               ::= {EthStatisticsGRP 2 }\r
+\r
+\r
+\r
+\r
+\r
+-----------------------------Test Mode Settings-----------------------------\r
+\r
+\r
+TestModeSettingsGRP OBJECT IDENTIFIER ::= {atmelSys 8}\r
+\r
+TestModeOnOff  OBJECT-TYPE\r
+                               SYNTAX INTEGER {enable(1),disable(2)}\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "When setting this attribute to enable(1), the device be\r
+                               at test mode."\r
+                               ::= { TestModeSettingsGRP 1 }\r
+\r
+\r
+TestModeCommandStruct  OBJECT-TYPE\r
+                               SYNTAX OCTET STRING (SIZE (20))\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "\r
+                               typedef struct __CONT_PKT_TX\r
+                               {\r
+                                       UINT8   Channel;\r
+                                       UINT8   Antenna;\r
+                                       UINT8   TxPower;\r
+                                       UINT8   TxRate;\r
+                               \r
+                                       UINT8   TxFilter;\r
+                                       UINT8   Reserved;\r
+                                       UINT16  IFrameTime;\r
+                               \r
+                                       UINT32  FrameLength;\r
+                                       UINT32  FramesToTransmit;\r
+                                       \r
+                                       UINT8   Pattern;\r
+                                       UINT8   Reserved1[3];\r
+                               }CONT_PKT_TX;\r
+                               "\r
+                               ::= {TestModeSettingsGRP 2 }\r
+\r
+TestModeRadioConfiguration     OBJECT-TYPE\r
+                                       SYNTAX OCTET STRING (SIZE (47))\r
+                                       ACCESS read-write\r
+                                       STATUS mandatory\r
+                                       DESCRIPTION      \r
+                                       "Configuration of radio derived from tests. CR17 Reg 1-14, CR20 Reg 1-14, CR21 Reg 1-14, CR1, CR2, CR3, CR28, CR29"\r
+                                       ::= {TestModeSettingsGRP 8 }\r
+\r
+TestModeStatistics             OBJECT-TYPE\r
+                                       SYNTAX OCTET STRING (SIZE (12))\r
+                                       ACCESS read-only\r
+                                       STATUS mandatory\r
+                                       DESCRIPTION      \r
+                                       "Statistics derive from tests\r
+                                       TestModeStatistics{\r
+                                               unsigned long SuccessFrames;\r
+                                               unsigned long FailedFrames;\r
+                                               unsigned long PacketsTx;\r
+                                       } "\r
+\r
+                                       ::= {TestModeSettingsGRP 9 }\r
+\r
+\r
+\r
+\r
+-----------------------------Authorized Settings-----------------------------\r
+\r
+\r
+AuthorizedSettingsGRP OBJECT IDENTIFIER ::= {atmelSys 9}\r
+\r
+AuthorizedUserPass     OBJECT-TYPE\r
+                               SYNTAX OCTET STRING (SIZE (16))\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "The community name of User."\r
+                               ::= {AuthorizedSettingsGRP 1 }\r
+\r
+\r
+AuthorizedAdminPass    OBJECT-TYPE\r
+                               SYNTAX OCTET STRING (SIZE (16))\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "The community name of Administrator."\r
+                               ::= {AuthorizedSettingsGRP 2 }\r
+\r
+\r
+AuthorizedManufactPass         OBJECT-TYPE\r
+                               SYNTAX OCTET STRING (SIZE (16))\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "The community name of Manufacturer."\r
+                               ::= {AuthorizedSettingsGRP 3 }\r
+\r
+\r
+--*************************** wireless ***************************\r
+--****************************************************************\r
+\r
+-----------------------------Operational Settings-----------------------------\r
+\r
+\r
+OperationalSettingsGRP OBJECT IDENTIFIER ::= {wireless 1}\r
+\r
+\r
+operChannelID  OBJECT-TYPE\r
+       SYNTAX  INTEGER  {\r
+                       channel1(1),\r
+                       channel2(2),\r
+                       channel3(3),\r
+                       channel4(4),\r
+                       channel5(5),\r
+                       channel6(6),\r
+                       channel7(7),\r
+                       channel8(8),\r
+                       channel9(9),\r
+                       channel10(10),\r
+                       channel11(11),\r
+                       channel12(12),\r
+                       channel13(13),\r
+                       channel14(14)\r
+               }\r
+       ACCESS  read-write\r
+       STATUS  mandatory\r
+       DESCRIPTION\r
+               "The operating frequency channel. Valid numbers\r
+               are     as defind in ISO/IEC 8802-11:1999, 15.4.6.2."\r
+       ::= { OperationalSettingsGRP 1 }\r
+\r
+\r
+operESSIDLength OBJECT-TYPE\r
+     SYNTAX  INTEGER\r
+     ACCESS  read-write    \r
+     STATUS  mandatory\r
+     DESCRIPTION\r
+     "The ESSID Length"\r
+     ::= {OperationalSettingsGRP 2 }     \r
+\r
+operESSID OBJECT-TYPE\r
+     SYNTAX  OCTET STRING (SIZE (32))\r
+     ACCESS  read-write    \r
+     STATUS  mandatory\r
+     DESCRIPTION\r
+     "The network name. The size of the network name\r
+     should not be more than 32 characters long."\r
+     ::= {OperationalSettingsGRP 3 }     \r
+\r
+\r
+operRTSThreshold OBJECT-TYPE\r
+               SYNTAX  INTEGER  \r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the number of bytes in an \r
+               MPDU (frame), above which an RTS/CTS handshake will be\r
+               performed. Setting this attribute to be larger than the\r
+               maximum frame size, will prevent the RTS/CTS handshake \r
+               for frames trassmitted by this station."\r
+       ::= {OperationalSettingsGRP 4 }\r
+\r
+\r
+operFragmentationThreshold OBJECT-TYPE\r
+               SYNTAX  INTEGER  \r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the number of bytes in an \r
+               MPDU (frame), above which MPDU fragmentation will be\r
+               performed."\r
+       ::= {OperationalSettingsGRP 5 }\r
+       \r
+\r
+operPreambleType OBJECT-TYPE\r
+      SYNTAX  INTEGER {\r
+                       ShortPreamble(1),\r
+                       LongPreamble(2)\r
+               }\r
+      ACCESS  read-write\r
+      STATUS  mandatory\r
+      DESCRIPTION\r
+      "This parameter's value indicates the Preamble Type of device. Short or Long."\r
+             ::= {OperationalSettingsGRP 6 }\r
+\r
+\r
+operAuthenticationType OBJECT-TYPE\r
+               SYNTAX  INTEGER {\r
+       openSystem(1),\r
+       sharedKey(2),\r
+       BothType(3)\r
+       }\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the authentication algorithm\r
+               used during the authentication sequence.\r
+               The value of this attribute is one of the following:\r
+               1 - Open System,\r
+               2 - Shared Key\r
+               3 - Both Type "\r
+               ::= {OperationalSettingsGRP 7 }\r
+\r
+\r
+operBasicRates OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (4))\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the basic and supported rates of Access Point.Valid format\r
+               is as defind in ISO/IEC 8802-11:1999"\r
+               ::= { OperationalSettingsGRP 8 }\r
+\r
+\r
+operAutoRateFallBack OBJECT-TYPE\r
+               SYNTAX INTEGER {enable(1),disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates if Auto Rate Fall Back is enable or disable."\r
+               ::= {OperationalSettingsGRP 9 }\r
+\r
+operAccessPointName OBJECT-TYPE\r
+     SYNTAX  OCTET STRING (SIZE (32))\r
+     ACCESS  read-write    \r
+     STATUS  mandatory\r
+     DESCRIPTION\r
+     "The AP name."\r
+     ::= {OperationalSettingsGRP 10 }     \r
+\r
+operSSIDBroadcasting OBJECT-TYPE\r
+               SYNTAX INTEGER {enable(1),disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates if SSID is broadcasting or not."\r
+               ::= {OperationalSettingsGRP 11 }\r
+\r
+operAntennaSettings OBJECT-TYPE\r
+               SYNTAX INTEGER\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {OperationalSettingsGRP 12 }\r
+\r
+operInterRoaming OBJECT-TYPE\r
+               SYNTAX INTEGER\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {OperationalSettingsGRP 13 }\r
+\r
+operBeaconPeriod OBJECT-TYPE\r
+               SYNTAX INTEGER\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {OperationalSettingsGRP 14 }\r
+\r
+operDTIM OBJECT-TYPE\r
+               SYNTAX INTEGER\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {OperationalSettingsGRP 15 }\r
+\r
+\r
+operSIFSTIME OBJECT-TYPE\r
+               SYNTAX INTEGER\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {OperationalSettingsGRP 16 }\r
+\r
+\r
+-----------------------------Privacy-----------------------------\r
+\r
+\r
+privacyGRP OBJECT IDENTIFIER ::= { wireless 2 }\r
+\r
+\r
+\r
+defaultWEPKey1 OBJECT-TYPE\r
+    SYNTAX OCTET STRING (SIZE (13))\r
+    ACCESS  write-only\r
+    STATUS  mandatory\r
+    DESCRIPTION    \r
+    "A WEP default secret key value."\r
+    ::= { privacyGRP 1 }    \r
+\r
+defaultWEPKey2 OBJECT-TYPE\r
+    SYNTAX OCTET STRING (SIZE (13))\r
+    ACCESS  write-only\r
+    STATUS  mandatory\r
+    DESCRIPTION    \r
+    "A WEP default secret key value."\r
+    ::= { privacyGRP 2 }    \r
+\r
+defaultWEPKey3 OBJECT-TYPE\r
+    SYNTAX OCTET STRING (SIZE (13))\r
+    ACCESS  write-only\r
+    STATUS  mandatory\r
+    DESCRIPTION    \r
+    "A WEP default secret key value."\r
+    ::= { privacyGRP 3 }    \r
+\r
+defaultWEPKey4 OBJECT-TYPE\r
+    SYNTAX OCTET STRING (SIZE (13))\r
+    ACCESS  write-only\r
+    STATUS  mandatory\r
+    DESCRIPTION    \r
+    "A WEP default secret key value."\r
+    ::= { privacyGRP 4 }    \r
+\r
+\r
+\r
+privacyWEPEnable OBJECT-TYPE\r
+               SYNTAX INTEGER {enable64(1),disable(2),enable128(3) }\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute, when enable64(1) or enable128(3), indicates that the 802.11\r
+               standard encryption mechanism (WEP) is implemented. WEP64, WEP128 or disable"\r
+               ::= {privacyGRP 5}\r
+\r
+\r
+privacyDefaultWEPKeyID OBJECT-TYPE\r
+               SYNTAX INTEGER   (1..4)\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION\r
+               "This attribute shall indicate the use of the first, second,\r
+               third or fourth DefaultWEPKey when set to values of one, two,\r
+               three or four."\r
+               ::= {privacyGRP 6}\r
+\r
+\r
+-----------------------------STATISTICS-----------------------------\r
+\r
+\r
+WLstatisticsGRP OBJECT IDENTIFIER ::= {wireless 3}\r
+\r
+wirelessStatistics OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (104))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "Wireless Statistics. 26 elements(ULONG)\r
+               WirelessStatistics{\r
+                       unsigned long   UnicastTransmittedPackets;\r
+                       unsigned long   BroadcastTransmittedPacets;\r
+                       unsigned long   MulticastTransmittedPackets;\r
+                       unsigned long   TransmittedBeacon;\r
+                       unsigned long   TransmittedACK;\r
+                       unsigned long   TransmittedRTS;\r
+                       unsigned long   TransmittedCTS;\r
+                       unsigned long   UnicastReceivedPackets;\r
+                       unsigned long   BroadcastReceivedPackets;\r
+                       unsigned long   MulticastReceivedPackets;\r
+                       unsigned long   ReceivedBeacon;\r
+                       unsigned long   ReceivedACK;\r
+                       unsigned long   ReceivedRTS;\r
+                       unsigned long   ReceivedCTS;\r
+                       unsigned long   ACKFailure;\r
+                       unsigned long   CTSFailure;\r
+                       unsigned long   RetryPackets;\r
+                       unsigned long   ReceivedDuplicate;\r
+                       unsigned long   FailedPackets;\r
+                       unsigned long   AgedPackets;\r
+                       unsigned long   FCSError;\r
+                       unsigned long   InvalidPLCP;\r
+                       unsigned long   TransmittedPackets_11Mbps;\r
+                       unsigned long   TransmittedPackets_55Mbps;\r
+                       unsigned long   TransmittedPackets_2Mbps;\r
+                       unsigned long   TransmittedPackets_1Mbps;\r
+               } "\r
+               ::= {WLstatisticsGRP 1 }\r
+\r
+\r
+-------------------------------Site Survey----------------------\r
+\r
+WLSiteSurveyGRP OBJECT IDENTIFIER ::= {wireless 4}\r
+\r
+ChannelStatus OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (14))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {WLSiteSurveyGRP 1}\r
+\r
+\r
+\r
+-------------------------------Associated Station----------------------\r
+-----------------------------------------------------------------------\r
+\r
+AssociatedStationsGRP OBJECT IDENTIFIER ::= {wireless 5}\r
+\r
+AssociatedSTAsNum OBJECT-TYPE\r
+      SYNTAX  INTEGER (1..2007)\r
+      ACCESS  read-only\r
+      STATUS  mandatory\r
+      DESCRIPTION\r
+      "This parameter's value indicates the number of the currently\r
+      associated STAtions. Associated STAtions should not be more\r
+      than 2007."\r
+      ::= { AssociatedStationsGRP 1 }\r
+\r
+               \r
+AssociatedSTAsInfo     OBJECT-TYPE\r
+           SYNTAX      OCTET STRING (SIZE (24))\r
+           ACCESS  read-only\r
+           STATUS  mandatory\r
+           DESCRIPTION\r
+           "The associated STAtion's Information.\r
+               AssociatedSTAsInfo{\r
+                       unsigned short Index;\r
+                       unsigned char  MacAddress[6];\r
+                       unsigned char  Status;\r
+                       unsigned char  Port;\r
+                       unsigned char  ParentMacAddress[6];\r
+                       unsigned char  RSSI;\r
+                       unsigned char  IP[4];\r
+                       unsigned char  Reserved1[3];\r
+       \r
+               } "\r
+           ::= { AssociatedStationsGRP 2 }\r
+               \r
+\r
+-------------------------------Authorized Mac Addresses----------------------\r
+\r
+AuthorizedMacAddressesGRP OBJECT IDENTIFIER ::= {wireless 6}\r
+\r
+AuthorizationMacEnable OBJECT-TYPE\r
+               SYNTAX INTEGER (1..3)\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to 1, the Authorization Mac Address Table will be enabled in allow mode.\r
+                When setting this attribute to 3, the Authorization Mac Address Table will be enabled in deny mode."\r
+               ::= {AuthorizedMacAddressesGRP 1}\r
+\r
+\r
+AuthorizedMac  OBJECT-TYPE\r
+           SYNTAX      OCTET STRING (SIZE (12))\r
+           ACCESS  read-write\r
+           STATUS  mandatory\r
+           DESCRIPTION\r
+           "The Authorized Wireless Mac Addresses\r
+               AuthorizedMacTableString{\r
+                       unsigned sort Action; //Set 0x01 or Get 0x02\r
+                       unsigned sort NumOfAllTableAddresses;\r
+                       unsigned sort NumOfCurrentAddress;\r
+                       unsigned char MacAddress[6];\r
+               } "\r
+\r
+           ::= { AuthorizedMacAddressesGRP 2 }\r
+\r
+-----------------------------KNOWN ACCESS POINTS----------------------\r
+\r
+\r
+WLKnownAPGRP OBJECT IDENTIFIER ::= {wireless 7}\r
+\r
+wirelessKnownAPs OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (160))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {WLKnownAPGRP 1 }\r
+\r
+SelectedBSSListNumber OBJECT-TYPE\r
+               SYNTAX INTEGER\r
+               ACCESS write-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {WLKnownAPGRP 2 }\r
+\r
+NetworkSettings OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (56))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "Network Settings.\r
+               struct NETWORK_SETTINGS {\r
+                       unsigned short reserved1;\r
+                       unsigned char BSSID[6];\r
+                       unsigned short InfoCapability;\r
+                       unsigned char Rssi;\r
+                       unsigned char Channel;\r
+                       unsigned char reserved2[2];\r
+                       unsigned char CurrentRate;\r
+                       unsigned char reserved3[5];\r
+                       unsigned char ESSID[32];\r
+                       unsigned long ESSLEN;\r
+               }"\r
+               ::= {WLKnownAPGRP 4}\r
+\r
+\r
+\r
+-----------------------------Advanced Privacy-----------------------------\r
+\r
+\r
+AdvancedPrivacyGRP OBJECT IDENTIFIER ::= { wireless 8 }\r
+\r
+Dot1xEnable OBJECT-TYPE\r
+               SYNTAX INTEGER {enable(1),disable(2), mixed environment(3)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {AdvancedPrivacyGRP 1}\r
+\r
+BroadcastKeyPeriod OBJECT-TYPE\r
+               SYNTAX INTEGER  \r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {AdvancedPrivacyGRP 2}\r
+\r
+ServerIP OBJECT-TYPE\r
+               SYNTAX IpAddress\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {AdvancedPrivacyGRP 3}\r
+\r
+ServerSecret OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (16))\r
+               ACCESS  write-only\r
+               STATUS  mandatory\r
+               DESCRIPTION    \r
+               "."\r
+               ::= {AdvancedPrivacyGRP 4}    \r
+\r
+\r
+\r
+-----------------------------Device Info-----------------------------\r
+\r
+\r
+DeviceInfoGRP OBJECT IDENTIFIER ::= { wireless 9 }\r
+\r
+UpTime OBJECT-TYPE\r
+     SYNTAX INTEGER  \r
+     ACCESS  read-only    \r
+     STATUS  mandatory\r
+     DESCRIPTION\r
+     "The Device Uptime."\r
+     ::= {DeviceInfoGRP 1 }     \r
+\r
+FirmwareVersion OBJECT-TYPE\r
+     SYNTAX  OCTET STRING (SIZE (32))\r
+     ACCESS  read-only    \r
+     STATUS  mandatory\r
+     DESCRIPTION\r
+     "The Firmware Version."\r
+     ::= {DeviceInfoGRP 2 }     \r
+\r
+\r
+\r
+--*************************** Traps ***************************\r
+--*************************************************************\r
+\r
+trapSTAMacAddress OBJECT-TYPE\r
+       SYNTAX OCTET STRING (SIZE (6))\r
+       ACCESS read-only\r
+       STATUS mandatory\r
+       DESCRIPTION      \r
+       "The MAC address of a station device"\r
+\r
+       ::= {traps 1}\r
+\r
+\r
+trapReassociation TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when a STAtion's reassosiation\r
+       request is received."\r
+       ::= 1\r
+\r
+trapRoamOut TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is used to indicate that a STAtion has\r
+       roamed out of the Wireless bridge's coverage area."\r
+       ::= 2\r
+\r
+trapAssociation TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "Indicates the reception of an association request packet\r
+       and     the sender STAtion's successful association with the\r
+       Access Point."\r
+       ::= 3\r
+       \r
+trapDisassociation TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when a disassociation notification\r
+       packet is received from a STAtion."\r
+       ::= 4\r
+\r
+trapAssociationExpire TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when the association's maximum time interval expires for\r
+       an associated STAtion."\r
+       ::= 5\r
+\r
+trapReset TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       sysReset\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when Access Point Resets."\r
+       ::= 6\r
+\r
+trapSettingPingIPAddress TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       operIPAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when the Access Point IP address\r
+       is set with the transmition of a ping message."\r
+       ::= 7\r
+\r
+trapStartUp TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when Access Point Starts Up."\r
+       ::= 8\r
+\r
+trapFailedToEraseFlash TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when Access Point Failed To Erase Flash."\r
+       ::= 9\r
+\r
+trapAPClientScanning TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is scanning..."\r
+       ::= 10\r
+\r
+trapAPClientAuthenticating TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is authenticating with the AP."\r
+       ::= 11\r
+\r
+trapAPClientAssociating TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is associating with the AP."\r
+       ::= 12\r
+\r
+trapAPClientReAssociating TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is reassociating with the AP."\r
+       ::= 13\r
+\r
+trapAPClientAuthenticationFailed TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has failed authenticating with the AP."\r
+       ::= 14\r
+\r
+trapAPClientAssociationFailed TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has failed associating with the AP."\r
+       ::= 15\r
+\r
+trapAPClientConnected TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has been connected with the AP."\r
+       ::= 16\r
+\r
+trapAPClientDisconnected TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has been disconnected from the AP."\r
+       ::= 17                         \r
+       \r
+trapAPClientScanFailed TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has failed scanning!"\r
+       ::= 18                         \r
+                        \r
+trapAPClientJoinFailed TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has failed joining!"\r
+       ::= 19       \r
+\r
+trapAPClientJoining    TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is in join state."\r
+       ::= 20       \r
+\r
+END
\ No newline at end of file
diff --git a/Documentation/mibs-atmel/mib-12350-gemtek/AT76C510.mib b/Documentation/mibs-atmel/mib-12350-gemtek/AT76C510.mib
new file mode 100644 (file)
index 0000000..f977e5d
--- /dev/null
@@ -0,0 +1,1302 @@
+-- Title:      ATMEL  Private MIB                                          \r
+\r
+\r
+--Firmaware Version 1.4 14/5/2001\r
+\r
+\r
+ATMEL-MIB DEFINITIONS ::= BEGIN\r
+\r
+--IMPORTS\r
+--     enterprises,Counter\r
+--FROM RFC1155-SMI\r
+--     DisplayString\r
+--FROM RFC1213-MIB;\r
+--     TRAP-TYPE\r
+--FROM RFC-1215;\r
+\r
+\r
+--MacAddress ::= IMPLICIT OCTET STRING (SIZE(6))\r
+DisplayString ::= OCTET STRING\r
+\r
+internet      OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 }\r
+directory     OBJECT IDENTIFIER ::= { internet 1 }\r
+mgmt          OBJECT IDENTIFIER ::= { internet 2 }\r
+experimental  OBJECT IDENTIFIER ::= { internet 3 }\r
+private       OBJECT IDENTIFIER ::= { internet 4 }\r
+enterprises   OBJECT IDENTIFIER ::= { private 1 }\r
+\r
+--atmel       OBJECT IDENTIFIER ::= { enterprises 410 } \r
+atmel       OBJECT IDENTIFIER ::= { enterprises 12350 }\r
+atmelmib    OBJECT IDENTIFIER ::= { atmel 1}\r
+atmelSys       OBJECT IDENTIFIER ::= {atmelmib 1}\r
+wireless       OBJECT IDENTIFIER ::= {atmelmib 2}\r
+traps  OBJECT IDENTIFIER ::= {atmelmib 3 }\r
+\r
+\r
+\r
+--*************************** System***************************\r
+--****************************************************************\r
+\r
+\r
+\r
+sysCtrlGRP OBJECT IDENTIFIER ::= {atmelSys 1}\r
+\r
+sysDescr OBJECT-TYPE\r
+    SYNTAX  DisplayString (SIZE (0..255))\r
+    ACCESS  read-only\r
+    STATUS  mandatory\r
+       DESCRIPTION\r
+         "A textual description of the entity.  This value\r
+          should include the full name and version\r
+          identification of the system's hardware type,\r
+          software operating-system, and networking\r
+          software.  It is mandatory that this only contain\r
+          printable ASCII characters."\r
+       ::= { sysCtrlGRP 1 } \r
+\r
+\r
+sysReset OBJECT-TYPE\r
+       SYNTAX INTEGER {enable(1)}\r
+       ACCESS  read-write\r
+       STATUS  mandatory\r
+       DESCRIPTION       \r
+       "By setting this attribute enable(1), a reset command to \r
+       the system is issued." \r
+       ::= { sysCtrlGRP 2 } \r
+\r
+sysTrapSwitch OBJECT-TYPE\r
+       SYNTAX INTEGER {enable(1),disable(2)}\r
+       ACCESS read-write\r
+       STATUS mandatory\r
+       DESCRIPTION\r
+       "This attribute enables the transmission of SNMP.V1 TRAPs."\r
+       ::= {sysCtrlGRP 3}\r
+\r
+sysLoadDefaults OBJECT-TYPE\r
+       SYNTAX INTEGER { enable(1)}\r
+       ACCESS  read-write\r
+       STATUS  mandatory\r
+       DESCRIPTION       \r
+       "Setting this attribute to enable(1), will cause the system to load\r
+       the factory default values of all the operational parameters." \r
+       ::= { sysCtrlGRP 4 }\r
+\r
+sysDeviceInfo  OBJECT-TYPE\r
+                       SYNTAX OCTET STRING (SIZE (92))\r
+                       ACCESS read-write\r
+                       STATUS mandatory\r
+                       DESCRIPTION      \r
+                       "First 92 bytes of Hardware device configuration struct.\r
+                                HARD_CONFIGURATION_STUCT{\r
+                                       unsigned long StructVersion;\r
+       \r
+                                       unsigned char MacAddress[6];\r
+                                       unsigned char Channel;\r
+                                       unsigned char RegulatoryDomain;\r
+       \r
+                                       unsigned long ProductType;\r
+                                       unsigned char OEMname[32];\r
+                                       unsigned long OEMID;\r
+                                       unsigned char ProductName[32];\r
+                                       unsigned long HardwareRevision;\r
+\r
+                                       unsigned char PID_VID[4];       //Product ID/ Vendor ID\r
+       \r
+                                       unsigned int  sysOIDSize;\r
+                                       unsigned short sysOID[16];\r
+       \r
+                                       unsigned char  CountryCode[3];\r
+                                       unsigned char  Reserved1;\r
+                                       unsigned short ChannelInformation;\r
+                                       unsigned char  Reserved2[2];\r
+                                       char       TxPower[14]; \r
+\r
+                                       unsigned char Reserved3[10];\r
+                               } "\r
+\r
+                       ::= {sysCtrlGRP 5 }\r
+\r
+sysUpload OBJECT-TYPE\r
+       SYNTAX INTEGER {enable(1)}\r
+       ACCESS  read-write\r
+       STATUS  mandatory\r
+       DESCRIPTION       \r
+       "By setting this attribute enable(1), a Upload configuration command to \r
+       the system is issued." \r
+       ::= { sysCtrlGRP 6 } \r
+                   \r
+SiteSurveyCommand OBJECT-TYPE\r
+       SYNTAX INTEGER {enable(1)}\r
+       ACCESS  read-write\r
+       STATUS  mandatory\r
+       DESCRIPTION       \r
+       "By setting this attribute enable(1), a Site Survey command to \r
+       the system is issued." \r
+       ::= { sysCtrlGRP 7 } \r
+\r
+sysDeviceMoreInfo      OBJECT-TYPE\r
+                       SYNTAX OCTET STRING (SIZE (32))\r
+                       ACCESS read-write\r
+                       STATUS mandatory\r
+                       DESCRIPTION      \r
+                       "Last 32 bytes of Hardware device configuration struct.\r
+                                HARD_CONFIGURATION_STUCT{\r
+                                       unsigned long StructVersion;\r
+       \r
+                                       unsigned char MacAddress[6];\r
+                                       unsigned char Channel;\r
+                                       unsigned char RegulatoryDomain;\r
+       \r
+                                       unsigned long ProductType;\r
+                                       unsigned char OEMname[32];\r
+                                       unsigned long OEMID;\r
+                                       unsigned char ProductName[32];\r
+                                       unsigned long HardwareRevision;\r
+\r
+                                       unsigned char PID_VID[4];       //Product ID/ Vendor ID\r
+       \r
+                                       unsigned int  sysOIDSize;\r
+                                       unsigned short sysOID[16];\r
+       \r
+                                       unsigned char  CountryCode[3];\r
+                                       unsigned char  Reserved1;\r
+                                       unsigned short ChannelInformation;\r
+                                       unsigned char  Reserved2[2];\r
+                                       char       TxPower[14]; \r
+\r
+                                       unsigned char Reserved3[10];\r
+                               } "\r
+\r
+                       ::= {sysCtrlGRP 8 }\r
+\r
+\r
+                      \r
+\r
+-----------------------------BridgingLevel-----------------------------\r
+\r
+operBridgingLevel OBJECT IDENTIFIER ::= {atmelSys 2}\r
+\r
+operIPAddress OBJECT-TYPE\r
+               SYNTAX IpAddress\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "The IP address of this device used over its Ethernet\r
+               or Wireless LAN port."\r
+               ::= { operBridgingLevel 1 }\r
+\r
+operIPMask OBJECT-TYPE\r
+           SYNTAX  IpAddress\r
+           ACCESS  read-write\r
+           STATUS  mandatory\r
+           DESCRIPTION\r
+           "The IP Network mask used by the IP entity when accessing\r
+           devices through any of its LAN Ports (Ethernet or WLAN)."\r
+           ::= { operBridgingLevel 2}\r
+\r
+operEthernetAddress OBJECT-TYPE\r
+           SYNTAX  OCTET STRING (SIZE (6))\r
+           ACCESS  read-only\r
+           STATUS  mandatory\r
+           DESCRIPTION\r
+           "The MAC Address of the Ethernet interface."\r
+           ::= { operBridgingLevel 3}\r
+\r
+\r
+operGateway OBJECT-TYPE\r
+               SYNTAX IpAddress\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "Gateway default IP address."\r
+               ::= { operBridgingLevel 4 }\r
+\r
+operDHCP OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1),disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to enable(1), the system will\r
+               enable DHCP protocol."\r
+               ::= { operBridgingLevel 5 }\r
+\r
+operPrimaryPort OBJECT-TYPE\r
+               SYNTAX  INTEGER {Ethernet(1),Wireless(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the primaty port.Ethernet or Wireless."\r
+               ::= { operBridgingLevel 6 }\r
+\r
+operConfigurationPort OBJECT-TYPE\r
+               SYNTAX  INTEGER {Ethernet(1),Wireless(2),Both(3)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the Configuration port.Ethernet or Wireless or Both of them."\r
+               ::= { operBridgingLevel 7 }\r
+\r
+operTrapPort OBJECT-TYPE\r
+               SYNTAX  INTEGER \r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the Trap port."\r
+               ::= { operBridgingLevel 8 }\r
+\r
+\r
+\r
+-----------------------------Filtering-----------------------------\r
+\r
+\r
+\r
+operFiltering OBJECT IDENTIFIER ::= {atmelSys 3}\r
+\r
+operIPFilter OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1), disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to enable(1), the system will\r
+               filter out all non IP-traffic."\r
+               ::= { operFiltering 1 }\r
+      \r
+operForwarbBcast OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1), disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to disable(2), the system will not\r
+               forward broadcast traffic to the Wireless Port."\r
+               ::= { operFiltering 2 }\r
+                                                     \r
+operSendBackBcast OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1), disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to disable(2), the system will not\r
+               send back broadcast traffic to the Wireless Port."\r
+               ::= { operFiltering 3 }\r
+                 \r
+operSendBackUnicast OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1), disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to disable(2), the system will not\r
+               send back unicast traffic to the Wireless Port."\r
+               ::= { operFiltering 4 }\r
+\r
+\r
+-----------------------------Bridge Operational Mode -----------------------------\r
+\r
+\r
+operBridgeOperationalMode OBJECT IDENTIFIER ::= {atmelSys 4}\r
+\r
+\r
+bridgeOperationalMode OBJECT-TYPE\r
+               SYNTAX  INTEGER {WBPoint2Multipoint(1), AP(2), APclient(3),  WBPoint2Point(4), WRepeater(5)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "The Operational Mode of Bridge. Access Point, Access Point client, Wireless Bridge Point to Point, Wireless Bridge Point to MultiPoint."\r
+               ::= { operBridgeOperationalMode 1 }\r
+\r
+bridgeRemoteBridgeBSSID OBJECT-TYPE\r
+               SYNTAX  OCTET STRING (SIZE (6))\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "The Preferred BSSID if the device is at Access Point client mode\r
+               or the remote Mac if the device is at Wireless Bridge Point to Point mode."\r
+               ::= { operBridgeOperationalMode 2 }\r
+\r
+\r
+\r
+-----------------------------Static-----------------------------\r
+\r
+\r
+dot1dStatic OBJECT IDENTIFIER ::= {atmelSys 5}\r
+\r
+\r
+StaticMacFilterNum OBJECT-TYPE\r
+      SYNTAX  INTEGER \r
+      ACCESS  read-write\r
+      STATUS  mandatory\r
+      DESCRIPTION\r
+      "This parameter's value indicates the number of the currently\r
+      static MAC filters."\r
+      ::= { dot1dStatic 1 }\r
+\r
+\r
+          dot1dStaticTable OBJECT-TYPE\r
+              SYNTAX  SEQUENCE OF Dot1dStaticEntry\r
+              ACCESS  not-accessible\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "A table containing filtering information\r
+                      configured into the bridge by (local or network)\r
+                      management specifying the set of ports to which\r
+                      frames received from specific ports and containing\r
+                      specific destination addresses are allowed to be\r
+                      forwarded.  The value of zero in this table as the\r
+                      port number from which frames with a specific\r
+                      destination address are received, is used to\r
+                      specify all ports for which there is no specific\r
+                      entry in this table for that particular\r
+                      destination address.  Entries are valid for\r
+                      unicast and for group/broadcast addresses."\r
+              REFERENCE\r
+                      "IEEE 802.1D-1990: Section 6.7.2"\r
+              ::= { dot1dStatic 2 }\r
+\r
+          dot1dStaticEntry OBJECT-TYPE\r
+              SYNTAX  Dot1dStaticEntry\r
+              ACCESS  not-accessible\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "Filtering information configured into the bridge\r
+                      by (local or network) management specifying the\r
+                      set of ports to which frames received from a\r
+                      specific port and containing a specific\r
+                      destination address are allowed to be forwarded."\r
+              REFERENCE\r
+                      "IEEE 802.1D-1990: Section 6.7.2"\r
+              INDEX   { dot1dStaticAddress}--, dot1dStaticReceivePort }\r
+              ::= { dot1dStaticTable 1 }\r
+\r
+          Dot1dStaticEntry ::=\r
+              SEQUENCE {\r
+                  dot1dStaticAddress\r
+                      OCTET STRING (SIZE (6))\r
+--                  dot1dStaticReceivePort\r
+--                     INTEGER,\r
+--                  dot1dStaticAllowedToGoTo\r
+--                      INTEGER,\r
+--                  dot1dStaticStatus\r
+--                      INTEGER\r
+              }\r
+\r
+          dot1dStaticAddress OBJECT-TYPE\r
+              SYNTAX  OCTET STRING (SIZE (6))\r
+              ACCESS  read-write\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "The destination MAC address in a frame to which\r
+                      this entry's filtering information applies.  This\r
+                      object can take the value of a unicast address, a\r
+                      group address or the broadcast address."\r
+              REFERENCE\r
+                      "IEEE 802.1D-1990: Section 3.9.1, 3.9.2"\r
+              ::= { dot1dStaticEntry 1 }\r
+\r
+--          dot1dStaticReceivePort OBJECT-TYPE\r
+--              SYNTAX  INTEGER\r
+--              ACCESS  read-write\r
+--              STATUS  mandatory\r
+--              DESCRIPTION\r
+--                      "Either the value '0', or the port number of the\r
+--                      port from which a frame must be received in order\r
+--                      for this entry's filtering information to apply.\r
+--                      A value of zero indicates that this entry applies\r
+--                      on all ports of the bridge for which there is no\r
+--                      other applicable entry."\r
+--              ::= { dot1dStaticEntry 2 }\r
+\r
+--          dot1dStaticAllowedToGoTo OBJECT-TYPE\r
+--              SYNTAX  INTEGER\r
+--              ACCESS  read-write\r
+--              STATUS  mandatory\r
+--              DESCRIPTION\r
+--                      "The set of ports to which frames received from a\r
+--                      specific port and destined for a specific MAC\r
+--                      address, are allowed to be forwarded.  Each octet\r
+--                      within the value of this object specifies a set of\r
+--                      eight ports, with the first octet specifying ports\r
+--                      1 through 8, the second octet specifying ports 9\r
+--                      through 16, etc.  Within each octet, the most\r
+--                      significant bit represents the lowest numbered\r
+--                      port, and the least significant bit represents the\r
+--                      highest numbered port.  Thus, each port of the\r
+--                      bridge is represented by a single bit within the\r
+--                      value of this object.  If that bit has a value of\r
+--                      '1' then that port is included in the set of\r
+--                      ports; the port is not included if its bit has a\r
+--                      value of '0'.  (Note that the setting of the bit\r
+--                      corresponding to the port from which a frame is\r
+--                      received is irrelevant.)  The default value of\r
+--                      this object is a string of ones of appropriate\r
+--                      length."\r
+--              ::= { dot1dStaticEntry 3 }\r
+--\r
+--          dot1dStaticStatus OBJECT-TYPE\r
+--              SYNTAX  INTEGER {\r
+--                          other(1),\r
+--                          invalid(2),\r
+--                          permanent(3),\r
+--                          deleteOnReset(4),\r
+--                          deleteOnTimeout(5)\r
+--                      }\r
+--              ACCESS  read-write\r
+--              STATUS  mandatory\r
+--              DESCRIPTION\r
+--                      "This object indicates the status of this entry.\r
+--                      The default value is permanent(3).\r
+--                           other(1) - this entry is currently in use but\r
+--                                the conditions under which it will\r
+--                                remain so are different from each of the\r
+--                                following values.\r
+--                           invalid(2) - writing this value to the object\r
+--                                removes the corresponding entry.\r
+--                           permanent(3) - this entry is currently in use\r
+--                                and will remain so after the next reset\r
+--                                of the bridge.\r
+--                           deleteOnReset(4) - this entry is currently in\r
+--                                use and will remain so until the next\r
+--                                reset of the bridge.\r
+--                           deleteOnTimeout(5) - this entry is currently\r
+--                                in use and will remain so until it is\r
+--                                aged out."\r
+--              ::= { dot1dStaticEntry 4 }\r
+\r
+\r
+\r
+----------------------------------Protocol Filtering-------------------\r
+\r
+\r
+ProtocolFilterGRP OBJECT IDENTIFIER ::= {atmelSys 6}\r
+\r
+ProtocolFilterNum OBJECT-TYPE\r
+      SYNTAX  INTEGER \r
+      ACCESS  read-write\r
+      STATUS  mandatory\r
+      DESCRIPTION\r
+      "This parameter's value indicates the number of the currently\r
+      protocol filters."\r
+      ::= { ProtocolFilterGRP 1 }\r
+\r
+\r
+\r
+\r
+          ProtocolFilterTable OBJECT-TYPE\r
+              SYNTAX  SEQUENCE OF ProtocolFilterEntry\r
+              ACCESS  not-accessible\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "A table containing filtering information\r
+                      configured into the bridge by (local or network)\r
+                      management specifying the set of protocol filter."\r
+              ::= { ProtocolFilterGRP 2 }\r
+\r
+          protocolFilterEntry OBJECT-TYPE\r
+              SYNTAX  ProtocolFilterEntry\r
+              ACCESS  not-accessible\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "Filtering information configured into the bridge\r
+                      by (local or network) management specifying the\r
+                      set of protocol filter."\r
+              INDEX   { ProtocolFilterCode }\r
+              ::= { ProtocolFilterTable 1 }\r
+\r
+          ProtocolFilterEntry ::=\r
+              SEQUENCE {\r
+                  ProtocolFilterCode\r
+                      OCTET STRING (SIZE (2)),\r
+                  ProtocolFilterDescription\r
+                      DisplayString (SIZE (0..255)),\r
+                  ProtocolFilterActivity\r
+                      INTEGER\r
+              }\r
+\r
+          ProtocolFilterCode OBJECT-TYPE\r
+              SYNTAX  OCTET STRING (SIZE (2))\r
+              ACCESS  read-write\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "The protocol code configured into the bridge\r
+                      by (local or network) management specifying the\r
+                      set of protocol filter."\r
+              ::= { protocolFilterEntry 1 }\r
+\r
+          ProtocolFilterDescription OBJECT-TYPE\r
+              SYNTAX  DisplayString (SIZE (0..255))\r
+              ACCESS  read-write\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "A textual description of the protocol."\r
+              ::= { protocolFilterEntry 2 }\r
+\r
+          ProtocolFilterActivity OBJECT-TYPE\r
+              SYNTAX  INTEGER {enable(1),disable(2)}\r
+              ACCESS  read-write\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "This object indicates the status of this filter."\r
+              ::= { protocolFilterEntry 3 }\r
+\r
+\r
+\r
+-----------------------------Ethernet STATISTICS-----------------------------\r
+\r
+\r
+EthStatisticsGRP OBJECT IDENTIFIER ::= {atmelSys 7}\r
+\r
+EthRxStatistics OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (64))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "Ethernet Rx Statistics\r
+               EthernetRxStatistics{\r
+                       unsigned long   TotalBytesRx;\r
+                       unsigned long   TotalPacketsRx;\r
+                       unsigned long   PacketCRCErrorRx;\r
+                       unsigned long   MulticastPacketRx;\r
+                       unsigned long   BroadcastPacketRx;\r
+                       unsigned long   ControlFramesRx;\r
+                       unsigned long   PauseFramesRx;\r
+                       unsigned long   UnknownOPCodeRx;\r
+                       unsigned long   AlignmentRxError;\r
+                       unsigned long   LengthOutOfRangeRx;\r
+                       unsigned long   CodeErrorRx;\r
+                       unsigned long   FalseCarrierRx;\r
+                       unsigned long   UndersizePacketsRx;\r
+                       unsigned long   OversizePacketsRx;\r
+                       unsigned long   TotalFragmentsRx;\r
+                       unsigned long   TotalJabberRx;\r
+               }"\r
+               ::= {EthStatisticsGRP 1 }\r
+\r
+EthTxStatistics OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (56))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "Ethernet Tx Statistics\r
+               EthernetTxStatistics{\r
+                       unsigned long   TotalBytesTx;\r
+                       unsigned long   TotalPacketsTx;\r
+                       unsigned long   PacketCRCErrorTx;\r
+                       unsigned long   MulticastPacketTx;\r
+                       unsigned long   BroadcastPacketTx;\r
+                       unsigned long   UnicastPacketTx;\r
+                       unsigned long   PauseFramesTx;\r
+                       unsigned long   SingleDeferPacketTx;\r
+                       unsigned long   MultiDeferPacketsTx;\r
+                       unsigned long   SingleCollisionsTx;\r
+                       unsigned long   MultiCollisionsTx;\r
+                       unsigned long   LateCollisionsTx;\r
+                       unsigned long   ExcessiveCollisionTx;\r
+                       unsigned long   TotalCollisionsTx;\r
+               }"\r
+\r
+               ::= {EthStatisticsGRP 2 }\r
+\r
+\r
+\r
+\r
+\r
+-----------------------------Test Mode Settings-----------------------------\r
+\r
+\r
+TestModeSettingsGRP OBJECT IDENTIFIER ::= {atmelSys 8}\r
+\r
+TestModeOnOff  OBJECT-TYPE\r
+                               SYNTAX INTEGER {enable(1),disable(2)}\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "When setting this attribute to enable(1), the device be\r
+                               at test mode."\r
+                               ::= { TestModeSettingsGRP 1 }\r
+\r
+\r
+TestModeCommandStruct  OBJECT-TYPE\r
+                               SYNTAX OCTET STRING (SIZE (20))\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "\r
+                               typedef struct __CONT_PKT_TX\r
+                               {\r
+                                       UINT8   Channel;\r
+                                       UINT8   Antenna;\r
+                                       UINT8   TxPower;\r
+                                       UINT8   TxRate;\r
+                               \r
+                                       UINT8   TxFilter;\r
+                                       UINT8   Reserved;\r
+                                       UINT16  IFrameTime;\r
+                               \r
+                                       UINT32  FrameLength;\r
+                                       UINT32  FramesToTransmit;\r
+                                       \r
+                                       UINT8   Pattern;\r
+                                       UINT8   Reserved1[3];\r
+                               }CONT_PKT_TX;\r
+                               "\r
+                               ::= {TestModeSettingsGRP 2 }\r
+\r
+TestModeRadioConfiguration     OBJECT-TYPE\r
+                                       SYNTAX OCTET STRING (SIZE (47))\r
+                                       ACCESS read-write\r
+                                       STATUS mandatory\r
+                                       DESCRIPTION      \r
+                                       "Configuration of radio derived from tests. CR17 Reg 1-14, CR20 Reg 1-14, CR21 Reg 1-14, CR1, CR2, CR3, CR28, CR29"\r
+                                       ::= {TestModeSettingsGRP 8 }\r
+\r
+TestModeStatistics             OBJECT-TYPE\r
+                                       SYNTAX OCTET STRING (SIZE (12))\r
+                                       ACCESS read-only\r
+                                       STATUS mandatory\r
+                                       DESCRIPTION      \r
+                                       "Statistics derive from tests\r
+                                       TestModeStatistics{\r
+                                               unsigned long SuccessFrames;\r
+                                               unsigned long FailedFrames;\r
+                                               unsigned long PacketsTx;\r
+                                       } "\r
+\r
+                                       ::= {TestModeSettingsGRP 9 }\r
+\r
+\r
+\r
+\r
+-----------------------------Authorized Settings-----------------------------\r
+\r
+\r
+AuthorizedSettingsGRP OBJECT IDENTIFIER ::= {atmelSys 9}\r
+\r
+AuthorizedUserPass     OBJECT-TYPE\r
+                               SYNTAX OCTET STRING (SIZE (16))\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "The community name of User."\r
+                               ::= {AuthorizedSettingsGRP 1 }\r
+\r
+\r
+AuthorizedAdminPass    OBJECT-TYPE\r
+                               SYNTAX OCTET STRING (SIZE (16))\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "The community name of Administrator."\r
+                               ::= {AuthorizedSettingsGRP 2 }\r
+\r
+\r
+AuthorizedManufactPass         OBJECT-TYPE\r
+                               SYNTAX OCTET STRING (SIZE (16))\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "The community name of Manufacturer."\r
+                               ::= {AuthorizedSettingsGRP 3 }\r
+\r
+\r
+--*************************** wireless ***************************\r
+--****************************************************************\r
+\r
+-----------------------------Operational Settings-----------------------------\r
+\r
+\r
+OperationalSettingsGRP OBJECT IDENTIFIER ::= {wireless 1}\r
+\r
+\r
+operChannelID  OBJECT-TYPE\r
+       SYNTAX  INTEGER  {\r
+                       channel1(1),\r
+                       channel2(2),\r
+                       channel3(3),\r
+                       channel4(4),\r
+                       channel5(5),\r
+                       channel6(6),\r
+                       channel7(7),\r
+                       channel8(8),\r
+                       channel9(9),\r
+                       channel10(10),\r
+                       channel11(11),\r
+                       channel12(12),\r
+                       channel13(13),\r
+                       channel14(14)\r
+               }\r
+       ACCESS  read-write\r
+       STATUS  mandatory\r
+       DESCRIPTION\r
+               "The operating frequency channel. Valid numbers\r
+               are     as defind in ISO/IEC 8802-11:1999, 15.4.6.2."\r
+       ::= { OperationalSettingsGRP 1 }\r
+\r
+\r
+operESSIDLength OBJECT-TYPE\r
+     SYNTAX  INTEGER\r
+     ACCESS  read-write    \r
+     STATUS  mandatory\r
+     DESCRIPTION\r
+     "The ESSID Length"\r
+     ::= {OperationalSettingsGRP 2 }     \r
+\r
+operESSID OBJECT-TYPE\r
+     SYNTAX  OCTET STRING (SIZE (32))\r
+     ACCESS  read-write    \r
+     STATUS  mandatory\r
+     DESCRIPTION\r
+     "The network name. The size of the network name\r
+     should not be more than 32 characters long."\r
+     ::= {OperationalSettingsGRP 3 }     \r
+\r
+\r
+operRTSThreshold OBJECT-TYPE\r
+               SYNTAX  INTEGER  \r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the number of bytes in an \r
+               MPDU (frame), above which an RTS/CTS handshake will be\r
+               performed. Setting this attribute to be larger than the\r
+               maximum frame size, will prevent the RTS/CTS handshake \r
+               for frames trassmitted by this station."\r
+       ::= {OperationalSettingsGRP 4 }\r
+\r
+\r
+operFragmentationThreshold OBJECT-TYPE\r
+               SYNTAX  INTEGER  \r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the number of bytes in an \r
+               MPDU (frame), above which MPDU fragmentation will be\r
+               performed."\r
+       ::= {OperationalSettingsGRP 5 }\r
+       \r
+\r
+operPreambleType OBJECT-TYPE\r
+      SYNTAX  INTEGER {\r
+                       ShortPreamble(1),\r
+                       LongPreamble(2)\r
+               }\r
+      ACCESS  read-write\r
+      STATUS  mandatory\r
+      DESCRIPTION\r
+      "This parameter's value indicates the Preamble Type of device. Short or Long."\r
+             ::= {OperationalSettingsGRP 6 }\r
+\r
+\r
+operAuthenticationType OBJECT-TYPE\r
+               SYNTAX  INTEGER {\r
+       openSystem(1),\r
+       sharedKey(2),\r
+       BothType(3)\r
+       }\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the authentication algorithm\r
+               used during the authentication sequence.\r
+               The value of this attribute is one of the following:\r
+               1 - Open System,\r
+               2 - Shared Key\r
+               3 - Both Type "\r
+               ::= {OperationalSettingsGRP 7 }\r
+\r
+\r
+operBasicRates OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (4))\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the basic and supported rates of Access Point.Valid format\r
+               is as defind in ISO/IEC 8802-11:1999"\r
+               ::= { OperationalSettingsGRP 8 }\r
+\r
+\r
+operAutoRateFallBack OBJECT-TYPE\r
+               SYNTAX INTEGER {enable(1),disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates if Auto Rate Fall Back is enable or disable."\r
+               ::= {OperationalSettingsGRP 9 }\r
+\r
+operAccessPointName OBJECT-TYPE\r
+     SYNTAX  OCTET STRING (SIZE (32))\r
+     ACCESS  read-write    \r
+     STATUS  mandatory\r
+     DESCRIPTION\r
+     "The AP name."\r
+     ::= {OperationalSettingsGRP 10 }     \r
+\r
+operSSIDBroadcasting OBJECT-TYPE\r
+               SYNTAX INTEGER {enable(1),disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates if SSID is broadcasting or not."\r
+               ::= {OperationalSettingsGRP 11 }\r
+\r
+operAntennaSettings OBJECT-TYPE\r
+               SYNTAX INTEGER\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {OperationalSettingsGRP 12 }\r
+\r
+operInterRoaming OBJECT-TYPE\r
+               SYNTAX INTEGER\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {OperationalSettingsGRP 13 }\r
+\r
+operBeaconPeriod OBJECT-TYPE\r
+               SYNTAX INTEGER\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {OperationalSettingsGRP 14 }\r
+\r
+operDTIM OBJECT-TYPE\r
+               SYNTAX INTEGER\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {OperationalSettingsGRP 15 }\r
+\r
+\r
+\r
+-----------------------------Privacy-----------------------------\r
+\r
+\r
+privacyGRP OBJECT IDENTIFIER ::= { wireless 2 }\r
+\r
+\r
+\r
+defaultWEPKey1 OBJECT-TYPE\r
+    SYNTAX OCTET STRING (SIZE (13))\r
+    ACCESS  write-only\r
+    STATUS  mandatory\r
+    DESCRIPTION    \r
+    "A WEP default secret key value."\r
+    ::= { privacyGRP 1 }    \r
+\r
+defaultWEPKey2 OBJECT-TYPE\r
+    SYNTAX OCTET STRING (SIZE (13))\r
+    ACCESS  write-only\r
+    STATUS  mandatory\r
+    DESCRIPTION    \r
+    "A WEP default secret key value."\r
+    ::= { privacyGRP 2 }    \r
+\r
+defaultWEPKey3 OBJECT-TYPE\r
+    SYNTAX OCTET STRING (SIZE (13))\r
+    ACCESS  write-only\r
+    STATUS  mandatory\r
+    DESCRIPTION    \r
+    "A WEP default secret key value."\r
+    ::= { privacyGRP 3 }    \r
+\r
+defaultWEPKey4 OBJECT-TYPE\r
+    SYNTAX OCTET STRING (SIZE (13))\r
+    ACCESS  write-only\r
+    STATUS  mandatory\r
+    DESCRIPTION    \r
+    "A WEP default secret key value."\r
+    ::= { privacyGRP 4 }    \r
+\r
+\r
+\r
+privacyWEPEnable OBJECT-TYPE\r
+               SYNTAX INTEGER {enable64(1),disable(2),enable128(3) }\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute, when enable64(1) or enable128(3), indicates that the 802.11\r
+               standard encryption mechanism (WEP) is implemented. WEP64, WEP128 or disable"\r
+               ::= {privacyGRP 5}\r
+\r
+\r
+privacyDefaultWEPKeyID OBJECT-TYPE\r
+               SYNTAX INTEGER   (1..4)\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION\r
+               "This attribute shall indicate the use of the first, second,\r
+               third or fourth DefaultWEPKey when set to values of one, two,\r
+               three or four."\r
+               ::= {privacyGRP 6}\r
+\r
+\r
+-----------------------------STATISTICS-----------------------------\r
+\r
+\r
+WLstatisticsGRP OBJECT IDENTIFIER ::= {wireless 3}\r
+\r
+wirelessStatistics OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (88))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "Wireless Statistics. 22 elements(ULONG)\r
+               WirelessStatistics{\r
+                       unsigned long   UnicastTransmittedPackets;\r
+                       unsigned long   BroadcastTransmittedPacets;\r
+                       unsigned long   MulticastTransmittedPackets;\r
+                       unsigned long   TransmittedBeacon;\r
+                       unsigned long   TransmittedACK;\r
+                       unsigned long   TransmittedRTS;\r
+                       unsigned long   TransmittedCTS;\r
+                       unsigned long   UnicastReceivedPackets;\r
+                       unsigned long   BroadcastReceivedPackets;\r
+                       unsigned long   MulticastReceivedPackets;\r
+                       unsigned long   ReceivedBeacon;\r
+                       unsigned long   ReceivedACK;\r
+                       unsigned long   ReceivedRTS;\r
+                       unsigned long   ReceivedCTS;\r
+                       unsigned long   ACKFailure;\r
+                       unsigned long   CTSFailure;\r
+                       unsigned long   RetryPackets;\r
+                       unsigned long   ReceivedDuplicate;\r
+                       unsigned long   FailedPackets;\r
+                       unsigned long   AgedPackets;\r
+                       unsigned long   FCSError;\r
+                       unsigned long   InvalidPLCP;\r
+               } "\r
+               ::= {WLstatisticsGRP 1 }\r
+\r
+\r
+-------------------------------Site Survey----------------------\r
+\r
+WLSiteSurveyGRP OBJECT IDENTIFIER ::= {wireless 4}\r
+\r
+ChannelStatus OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (14))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {WLSiteSurveyGRP 1}\r
+\r
+\r
+-------------------------------Associated Station----------------------\r
+-----------------------------------------------------------------------\r
+\r
+AssociatedStationsGRP OBJECT IDENTIFIER ::= {wireless 5}\r
+\r
+AssociatedSTAsNum OBJECT-TYPE\r
+      SYNTAX  INTEGER (1..2007)\r
+      ACCESS  read-only\r
+      STATUS  mandatory\r
+      DESCRIPTION\r
+      "This parameter's value indicates the number of the currently\r
+      associated STAtions. Associated STAtions should not be more\r
+      than 2007."\r
+      ::= { AssociatedStationsGRP 1 }\r
+\r
+               \r
+AssociatedSTAsInfo     OBJECT-TYPE\r
+           SYNTAX      OCTET STRING (SIZE (24))\r
+           ACCESS  read-only\r
+           STATUS  mandatory\r
+           DESCRIPTION\r
+           "The associated STAtion's Information.\r
+               AssociatedSTAsInfo{\r
+                       unsigned sort Num;\r
+                       unsigned char MacAddress[6];\r
+               } "\r
+           ::= { AssociatedStationsGRP 2 }\r
+               \r
+\r
+-------------------------------Authorized Mac Addresses----------------------\r
+\r
+AuthorizedMacAddressesGRP OBJECT IDENTIFIER ::= {wireless 6}\r
+\r
+AuthorizationMacEnable OBJECT-TYPE\r
+               SYNTAX INTEGER (1..3)\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to 1, the Authorization Mac Address Table will be enabled in allow mode.\r
+                When setting this attribute to 3, the Authorization Mac Address Table will be enabled in deny mode."\r
+               ::= {AuthorizedMacAddressesGRP 1}\r
+\r
+\r
+AuthorizedMac  OBJECT-TYPE\r
+           SYNTAX      OCTET STRING (SIZE (12))\r
+           ACCESS  read-write\r
+           STATUS  mandatory\r
+           DESCRIPTION\r
+           "The Authorized Wireless Mac Addresses\r
+               AuthorizedMacTableString{\r
+                       unsigned sort Action; //Set 0x01 or Get 0x02\r
+                       unsigned sort NumOfAllTableAddresses;\r
+                       unsigned sort NumOfCurrentAddress;\r
+                       unsigned char MacAddress[6];\r
+               } "\r
+\r
+           ::= { AuthorizedMacAddressesGRP 2 }\r
+\r
+-----------------------------KNOWN ACCESS POINTS----------------------\r
+\r
+\r
+WLKnownAPGRP OBJECT IDENTIFIER ::= {wireless 7}\r
+\r
+wirelessKnownAPs OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (160))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {WLKnownAPGRP 1 }\r
+\r
+SelectedBSSListNumber OBJECT-TYPE\r
+               SYNTAX INTEGER\r
+               ACCESS write-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {WLKnownAPGRP 2 }\r
+\r
+\r
+-----------------------------Advanced Privacy-----------------------------\r
+\r
+\r
+AdvancedPrivacyGRP OBJECT IDENTIFIER ::= { wireless 8 }\r
+\r
+Dot1xEnable OBJECT-TYPE\r
+               SYNTAX INTEGER {enable(1),disable(2), mixed environment(3)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {AdvancedPrivacyGRP 1}\r
+\r
+BroadcastKeyPeriod OBJECT-TYPE\r
+               SYNTAX INTEGER  \r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {AdvancedPrivacyGRP 2}\r
+\r
+ServerIP OBJECT-TYPE\r
+               SYNTAX IpAddress\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {AdvancedPrivacyGRP 3}\r
+\r
+ServerSecret OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (16))\r
+               ACCESS  write-only\r
+               STATUS  mandatory\r
+               DESCRIPTION    \r
+               "."\r
+               ::= {AdvancedPrivacyGRP 4}    \r
+\r
+\r
+\r
+--*************************** Traps ***************************\r
+--*************************************************************\r
+\r
+trapSTAMacAddress OBJECT-TYPE\r
+       SYNTAX OCTET STRING (SIZE (6))\r
+       ACCESS read-only\r
+       STATUS mandatory\r
+       DESCRIPTION      \r
+       "The MAC address of a station device"\r
+\r
+       ::= {traps 1}\r
+\r
+\r
+\r
+BroadcastKeyPeriod\r
+\r
+trapReassociation TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when a STAtion's reassosiation\r
+       request is received."\r
+       ::= 1\r
+\r
+trapRoamOut TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is used to indicate that a STAtion has\r
+       roamed out of the Wireless bridge's coverage area."\r
+       ::= 2\r
+\r
+trapAssociation TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "Indicates the reception of an association request packet\r
+       and     the sender STAtion's successful association with the\r
+       Access Point."\r
+       ::= 3\r
+       \r
+trapDisassociation TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when a disassociation notification\r
+       packet is received from a STAtion."\r
+       ::= 4\r
+\r
+trapAssociationExpire TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when the association's maximum time interval expires for\r
+       an associated STAtion."\r
+       ::= 5\r
+\r
+trapReset TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       sysReset\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when Access Point Resets."\r
+       ::= 6\r
+\r
+trapSettingPingIPAddress TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       operIPAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when the Access Point IP address\r
+       is set with the transmition of a ping message."\r
+       ::= 7\r
+\r
+trapStartUp TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when Access Point Starts Up."\r
+       ::= 8\r
+\r
+trapFailedToEraseFlash TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when Access Point Failed To Erase Flash."\r
+       ::= 9\r
+\r
+trapAPClientScanning TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is scanning..."\r
+       ::= 10\r
+\r
+trapAPClientAuthenticating TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is authenticating with the AP."\r
+       ::= 11\r
+\r
+trapAPClientAssociating TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is associating with the AP."\r
+       ::= 12\r
+\r
+trapAPClientReAssociating TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is reassociating with the AP."\r
+       ::= 13\r
+\r
+trapAPClientAuthenticationFailed TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has failed authenticating with the AP."\r
+       ::= 14\r
+\r
+trapAPClientAssociationFailed TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has failed associating with the AP."\r
+       ::= 15\r
+\r
+trapAPClientConnected TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has been connected with the AP."\r
+       ::= 16\r
+\r
+trapAPClientDisconnected TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has been disconnected from the AP."\r
+       ::= 17                         \r
+       \r
+trapAPClientScanFailed TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has failed scanning!"\r
+       ::= 18                         \r
+                        \r
+trapAPClientJoinFailed TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has failed joining!"\r
+       ::= 19       \r
+\r
+trapAPClientJoining    TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is in join state."\r
+       ::= 20       \r
+\r
+END
\ No newline at end of file
diff --git a/Documentation/mibs-atmel/mib-12350-none-netgear/AT76C510.mib b/Documentation/mibs-atmel/mib-12350-none-netgear/AT76C510.mib
new file mode 100644 (file)
index 0000000..53de58e
--- /dev/null
@@ -0,0 +1,1196 @@
+-- Title:      ATMEL  Private MIB                                          
+
+
+--Firmaware Version 1.4 14/5/2001
+
+
+ATMEL-MIB DEFINITIONS ::= BEGIN
+
+--IMPORTS
+--     enterprises,Counter
+--FROM RFC1155-SMI
+--     DisplayString
+--FROM RFC1213-MIB;
+--     TRAP-TYPE
+--FROM RFC-1215;
+
+
+--MacAddress ::= IMPLICIT OCTET STRING (SIZE(6))
+DisplayString ::= OCTET STRING
+
+internet      OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 }
+directory     OBJECT IDENTIFIER ::= { internet 1 }
+mgmt          OBJECT IDENTIFIER ::= { internet 2 }
+experimental  OBJECT IDENTIFIER ::= { internet 3 }
+private       OBJECT IDENTIFIER ::= { internet 4 }
+enterprises   OBJECT IDENTIFIER ::= { private 1 }
+
+--atmel       OBJECT IDENTIFIER ::= { enterprises 410 } 
+atmel       OBJECT IDENTIFIER ::= { enterprises 12350 }
+atmelmib    OBJECT IDENTIFIER ::= { atmel 1}
+atmelSys       OBJECT IDENTIFIER ::= {atmelmib 1}
+wireless       OBJECT IDENTIFIER ::= {atmelmib 2}
+traps  OBJECT IDENTIFIER ::= {atmelmib 3 }
+
+
+
+--*************************** System***************************
+--****************************************************************
+
+
+
+sysCtrlGRP OBJECT IDENTIFIER ::= {atmelSys 1}
+
+sysDescr OBJECT-TYPE
+    SYNTAX  DisplayString (SIZE (0..255))
+    ACCESS  read-only
+    STATUS  mandatory
+       DESCRIPTION
+         "A textual description of the entity.  This value
+          should include the full name and version
+          identification of the system's hardware type,
+          software operating-system, and networking
+          software.  It is mandatory that this only contain
+          printable ASCII characters."
+       ::= { sysCtrlGRP 1 } 
+
+
+sysReset OBJECT-TYPE
+       SYNTAX INTEGER {enable(1)}
+       ACCESS  read-write
+       STATUS  mandatory
+       DESCRIPTION       
+       "By setting this attribute enable(1), a reset command to 
+       the system is issued." 
+       ::= { sysCtrlGRP 2 } 
+
+sysTrapSwitch OBJECT-TYPE
+       SYNTAX INTEGER {enable(1),disable(2)}
+       ACCESS read-write
+       STATUS mandatory
+       DESCRIPTION
+       "This attribute enables the transmission of SNMP.V1 TRAPs."
+       ::= {sysCtrlGRP 3}
+
+sysLoadDefaults OBJECT-TYPE
+       SYNTAX INTEGER { enable(1)}
+       ACCESS  read-write
+       STATUS  mandatory
+       DESCRIPTION       
+       "Setting this attribute to enable(1), will cause the system to load
+       the factory default values of all the operational parameters." 
+       ::= { sysCtrlGRP 4 }
+
+sysDeviceInfo  OBJECT-TYPE
+                       SYNTAX OCTET STRING (SIZE (92))
+                       ACCESS read-write
+                       STATUS mandatory
+                       DESCRIPTION      
+                       "Hardware device configuration struct.
+                                HARD_CONFIGURATION_STUCT{
+                                       unsigned long  StructVersion;
+                                       unsigned char   MacAddress[6];
+                                       unsigned short  Reserved;
+                                       unsigned long  RegulationDomain;
+                                       unsigned long  ProductType; 
+                                       unsigned char   OEMName[32];
+                                       unsigned long  OEMID;
+                                       unsigned char   ProductName[32];
+                                       unsigned long  HardwareRevision; 
+                               } "
+
+
+                       ::= {sysCtrlGRP 5 }
+
+sysUpload OBJECT-TYPE
+       SYNTAX INTEGER {enable(1)}
+       ACCESS  read-write
+       STATUS  mandatory
+       DESCRIPTION       
+       "By setting this attribute enable(1), a Upload configuration command to 
+       the system is issued." 
+       ::= { sysCtrlGRP 6 } 
+                   
+SiteSurveyCommand OBJECT-TYPE
+       SYNTAX INTEGER {enable(1)}
+       ACCESS  read-write
+       STATUS  mandatory
+       DESCRIPTION       
+       "By setting this attribute enable(1), a Site Survey command to 
+       the system is issued." 
+       ::= { sysCtrlGRP 7 } 
+
+                      
+
+-----------------------------BridgingLevel-----------------------------
+
+operBridgingLevel OBJECT IDENTIFIER ::= {atmelSys 2}
+
+operIPAddress OBJECT-TYPE
+               SYNTAX IpAddress
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "The IP address of this device used over its Ethernet
+               or Wireless LAN port."
+               ::= { operBridgingLevel 1 }
+
+operIPMask OBJECT-TYPE
+           SYNTAX  IpAddress
+           ACCESS  read-write
+           STATUS  mandatory
+           DESCRIPTION
+           "The IP Network mask used by the IP entity when accessing
+           devices through any of its LAN Ports (Ethernet or WLAN)."
+           ::= { operBridgingLevel 2}
+
+operEthernetAddress OBJECT-TYPE
+           SYNTAX  OCTET STRING (SIZE (6))
+           ACCESS  read-only
+           STATUS  mandatory
+           DESCRIPTION
+           "The MAC Address of the Ethernet interface."
+           ::= { operBridgingLevel 3}
+
+
+operGateway OBJECT-TYPE
+               SYNTAX IpAddress
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "Gateway default IP address."
+               ::= { operBridgingLevel 4 }
+
+operDHCP OBJECT-TYPE
+               SYNTAX  INTEGER {enable(1),disable(2)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "When setting this attribute to enable(1), the system will
+               enable DHCP protocol."
+               ::= { operBridgingLevel 5 }
+
+operPrimaryPort OBJECT-TYPE
+               SYNTAX  INTEGER {Ethernet(1),Wireless(2)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute indicates the primaty port.Ethernet or Wireless."
+               ::= { operBridgingLevel 6 }
+
+operConfigurationPort OBJECT-TYPE
+               SYNTAX  INTEGER {Ethernet(1),Wireless(2),Both(3)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute indicates the Configuration port.Ethernet or Wireless or Both of them."
+               ::= { operBridgingLevel 7 }
+
+
+
+-----------------------------Filtering-----------------------------
+
+
+
+operFiltering OBJECT IDENTIFIER ::= {atmelSys 3}
+
+operIPFilter OBJECT-TYPE
+               SYNTAX  INTEGER {enable(1), disable(2)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "When setting this attribute to enable(1), the system will
+               filter out all non IP-traffic."
+               ::= { operFiltering 1 }
+      
+operForwarbBcast OBJECT-TYPE
+               SYNTAX  INTEGER {enable(1), disable(2)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "When setting this attribute to disable(2), the system will not
+               forward broadcast traffic to the Wireless Port."
+               ::= { operFiltering 2 }
+                                                     
+operSendBackBcast OBJECT-TYPE
+               SYNTAX  INTEGER {enable(1), disable(2)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "When setting this attribute to disable(2), the system will not
+               send back broadcast traffic to the Wireless Port."
+               ::= { operFiltering 3 }
+                 
+operSendBackUnicast OBJECT-TYPE
+               SYNTAX  INTEGER {enable(1), disable(2)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "When setting this attribute to disable(2), the system will not
+               send back unicast traffic to the Wireless Port."
+               ::= { operFiltering 4 }
+
+
+-----------------------------Bridge Operational Mode -----------------------------
+
+
+operBridgeOperationalMode OBJECT IDENTIFIER ::= {atmelSys 4}
+
+
+bridgeOperationalMode OBJECT-TYPE
+               SYNTAX  INTEGER {WBPoint2Multipoint(1), AP(2), APclient(3),  WBPoint2Point(4), WRepeater(5)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "The Operational Mode of Bridge. Access Point, Access Point client, Wireless Bridge Point to Point, Wireless Bridge Point to MultiPoint."
+               ::= { operBridgeOperationalMode 1 }
+
+bridgeRemoteBridgeBSSID OBJECT-TYPE
+               SYNTAX  OCTET STRING (SIZE (6))
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "The Preferred BSSID if the device is at Access Point client mode
+               or the remote Mac if the device is at Wireless Bridge Point to Point mode."
+               ::= { operBridgeOperationalMode 2 }
+
+
+
+-----------------------------Static-----------------------------
+
+
+dot1dStatic OBJECT IDENTIFIER ::= {atmelSys 5}
+
+
+StaticMacFilterNum OBJECT-TYPE
+      SYNTAX  INTEGER 
+      ACCESS  read-write
+      STATUS  mandatory
+      DESCRIPTION
+      "This parameter's value indicates the number of the currently
+      static MAC filters."
+      ::= { dot1dStatic 1 }
+
+
+          dot1dStaticTable OBJECT-TYPE
+              SYNTAX  SEQUENCE OF Dot1dStaticEntry
+              ACCESS  not-accessible
+              STATUS  mandatory
+              DESCRIPTION
+                      "A table containing filtering information
+                      configured into the bridge by (local or network)
+                      management specifying the set of ports to which
+                      frames received from specific ports and containing
+                      specific destination addresses are allowed to be
+                      forwarded.  The value of zero in this table as the
+                      port number from which frames with a specific
+                      destination address are received, is used to
+                      specify all ports for which there is no specific
+                      entry in this table for that particular
+                      destination address.  Entries are valid for
+                      unicast and for group/broadcast addresses."
+              REFERENCE
+                      "IEEE 802.1D-1990: Section 6.7.2"
+              ::= { dot1dStatic 2 }
+
+          dot1dStaticEntry OBJECT-TYPE
+              SYNTAX  Dot1dStaticEntry
+              ACCESS  not-accessible
+              STATUS  mandatory
+              DESCRIPTION
+                      "Filtering information configured into the bridge
+                      by (local or network) management specifying the
+                      set of ports to which frames received from a
+                      specific port and containing a specific
+                      destination address are allowed to be forwarded."
+              REFERENCE
+                      "IEEE 802.1D-1990: Section 6.7.2"
+              INDEX   { dot1dStaticAddress}--, dot1dStaticReceivePort }
+              ::= { dot1dStaticTable 1 }
+
+          Dot1dStaticEntry ::=
+              SEQUENCE {
+                  dot1dStaticAddress
+                      OCTET STRING (SIZE (6))
+--                  dot1dStaticReceivePort
+--                     INTEGER,
+--                  dot1dStaticAllowedToGoTo
+--                      INTEGER,
+--                  dot1dStaticStatus
+--                      INTEGER
+              }
+
+          dot1dStaticAddress OBJECT-TYPE
+              SYNTAX  OCTET STRING (SIZE (6))
+              ACCESS  read-write
+              STATUS  mandatory
+              DESCRIPTION
+                      "The destination MAC address in a frame to which
+                      this entry's filtering information applies.  This
+                      object can take the value of a unicast address, a
+                      group address or the broadcast address."
+              REFERENCE
+                      "IEEE 802.1D-1990: Section 3.9.1, 3.9.2"
+              ::= { dot1dStaticEntry 1 }
+
+--          dot1dStaticReceivePort OBJECT-TYPE
+--              SYNTAX  INTEGER
+--              ACCESS  read-write
+--              STATUS  mandatory
+--              DESCRIPTION
+--                      "Either the value '0', or the port number of the
+--                      port from which a frame must be received in order
+--                      for this entry's filtering information to apply.
+--                      A value of zero indicates that this entry applies
+--                      on all ports of the bridge for which there is no
+--                      other applicable entry."
+--              ::= { dot1dStaticEntry 2 }
+
+--          dot1dStaticAllowedToGoTo OBJECT-TYPE
+--              SYNTAX  INTEGER
+--              ACCESS  read-write
+--              STATUS  mandatory
+--              DESCRIPTION
+--                      "The set of ports to which frames received from a
+--                      specific port and destined for a specific MAC
+--                      address, are allowed to be forwarded.  Each octet
+--                      within the value of this object specifies a set of
+--                      eight ports, with the first octet specifying ports
+--                      1 through 8, the second octet specifying ports 9
+--                      through 16, etc.  Within each octet, the most
+--                      significant bit represents the lowest numbered
+--                      port, and the least significant bit represents the
+--                      highest numbered port.  Thus, each port of the
+--                      bridge is represented by a single bit within the
+--                      value of this object.  If that bit has a value of
+--                      '1' then that port is included in the set of
+--                      ports; the port is not included if its bit has a
+--                      value of '0'.  (Note that the setting of the bit
+--                      corresponding to the port from which a frame is
+--                      received is irrelevant.)  The default value of
+--                      this object is a string of ones of appropriate
+--                      length."
+--              ::= { dot1dStaticEntry 3 }
+--
+--          dot1dStaticStatus OBJECT-TYPE
+--              SYNTAX  INTEGER {
+--                          other(1),
+--                          invalid(2),
+--                          permanent(3),
+--                          deleteOnReset(4),
+--                          deleteOnTimeout(5)
+--                      }
+--              ACCESS  read-write
+--              STATUS  mandatory
+--              DESCRIPTION
+--                      "This object indicates the status of this entry.
+--                      The default value is permanent(3).
+--                           other(1) - this entry is currently in use but
+--                                the conditions under which it will
+--                                remain so are different from each of the
+--                                following values.
+--                           invalid(2) - writing this value to the object
+--                                removes the corresponding entry.
+--                           permanent(3) - this entry is currently in use
+--                                and will remain so after the next reset
+--                                of the bridge.
+--                           deleteOnReset(4) - this entry is currently in
+--                                use and will remain so until the next
+--                                reset of the bridge.
+--                           deleteOnTimeout(5) - this entry is currently
+--                                in use and will remain so until it is
+--                                aged out."
+--              ::= { dot1dStaticEntry 4 }
+
+
+
+----------------------------------Protocol Filtering-------------------
+
+
+ProtocolFilterGRP OBJECT IDENTIFIER ::= {atmelSys 6}
+
+ProtocolFilterNum OBJECT-TYPE
+      SYNTAX  INTEGER 
+      ACCESS  read-write
+      STATUS  mandatory
+      DESCRIPTION
+      "This parameter's value indicates the number of the currently
+      protocol filters."
+      ::= { ProtocolFilterGRP 1 }
+
+
+
+
+          ProtocolFilterTable OBJECT-TYPE
+              SYNTAX  SEQUENCE OF ProtocolFilterEntry
+              ACCESS  not-accessible
+              STATUS  mandatory
+              DESCRIPTION
+                      "A table containing filtering information
+                      configured into the bridge by (local or network)
+                      management specifying the set of protocol filter."
+              ::= { ProtocolFilterGRP 2 }
+
+          protocolFilterEntry OBJECT-TYPE
+              SYNTAX  ProtocolFilterEntry
+              ACCESS  not-accessible
+              STATUS  mandatory
+              DESCRIPTION
+                      "Filtering information configured into the bridge
+                      by (local or network) management specifying the
+                      set of protocol filter."
+              INDEX   { ProtocolFilterCode }
+              ::= { ProtocolFilterTable 1 }
+
+          ProtocolFilterEntry ::=
+              SEQUENCE {
+                  ProtocolFilterCode
+                      OCTET STRING (SIZE (2)),
+                  ProtocolFilterDescription
+                      DisplayString (SIZE (0..255)),
+                  ProtocolFilterActivity
+                      INTEGER
+              }
+
+          ProtocolFilterCode OBJECT-TYPE
+              SYNTAX  OCTET STRING (SIZE (2))
+              ACCESS  read-write
+              STATUS  mandatory
+              DESCRIPTION
+                      "The protocol code configured into the bridge
+                      by (local or network) management specifying the
+                      set of protocol filter."
+              ::= { protocolFilterEntry 1 }
+
+          ProtocolFilterDescription OBJECT-TYPE
+              SYNTAX  DisplayString (SIZE (0..255))
+              ACCESS  read-write
+              STATUS  mandatory
+              DESCRIPTION
+                      "A textual description of the protocol."
+              ::= { protocolFilterEntry 2 }
+
+          ProtocolFilterActivity OBJECT-TYPE
+              SYNTAX  INTEGER {enable(1),disable(2)}
+              ACCESS  read-write
+              STATUS  mandatory
+              DESCRIPTION
+                      "This object indicates the status of this filter."
+              ::= { protocolFilterEntry 3 }
+
+
+
+-----------------------------Ethernet STATISTICS-----------------------------
+
+
+EthStatisticsGRP OBJECT IDENTIFIER ::= {atmelSys 7}
+
+EthRxStatistics OBJECT-TYPE
+               SYNTAX OCTET STRING (SIZE (64))
+               ACCESS read-only
+               STATUS mandatory
+               DESCRIPTION      
+               "Ethernet Rx Statistics
+               EthernetRxStatistics{
+                       unsigned long   TotalBytesRx;
+                       unsigned long   TotalPacketsRx;
+                       unsigned long   PacketCRCErrorRx;
+                       unsigned long   MulticastPacketRx;
+                       unsigned long   BroadcastPacketRx;
+                       unsigned long   ControlFramesRx;
+                       unsigned long   PauseFramesRx;
+                       unsigned long   UnknownOPCodeRx;
+                       unsigned long   AlignmentRxError;
+                       unsigned long   LengthOutOfRangeRx;
+                       unsigned long   CodeErrorRx;
+                       unsigned long   FalseCarrierRx;
+                       unsigned long   UndersizePacketsRx;
+                       unsigned long   OversizePacketsRx;
+                       unsigned long   TotalFragmentsRx;
+                       unsigned long   TotalJabberRx;
+               }"
+               ::= {EthStatisticsGRP 1 }
+
+EthTxStatistics OBJECT-TYPE
+               SYNTAX OCTET STRING (SIZE (56))
+               ACCESS read-only
+               STATUS mandatory
+               DESCRIPTION      
+               "Ethernet Tx Statistics
+               EthernetTxStatistics{
+                       unsigned long   TotalBytesTx;
+                       unsigned long   TotalPacketsTx;
+                       unsigned long   PacketCRCErrorTx;
+                       unsigned long   MulticastPacketTx;
+                       unsigned long   BroadcastPacketTx;
+                       unsigned long   UnicastPacketTx;
+                       unsigned long   PauseFramesTx;
+                       unsigned long   SingleDeferPacketTx;
+                       unsigned long   MultiDeferPacketsTx;
+                       unsigned long   SingleCollisionsTx;
+                       unsigned long   MultiCollisionsTx;
+                       unsigned long   LateCollisionsTx;
+                       unsigned long   ExcessiveCollisionTx;
+                       unsigned long   TotalCollisionsTx;
+               }"
+
+               ::= {EthStatisticsGRP 2 }
+
+
+
+
+
+-----------------------------Test Mode Settings-----------------------------
+
+
+TestModeSettingsGRP OBJECT IDENTIFIER ::= {atmelSys 8}
+
+TestModeOnOff  OBJECT-TYPE
+                               SYNTAX INTEGER {enable(1),disable(2)}
+                               ACCESS read-write
+                               STATUS mandatory
+                               DESCRIPTION      
+                               "When setting this attribute to enable(1), the device be
+                               at test mode."
+                               ::= { TestModeSettingsGRP 1 }
+
+
+TestModeCommandStruct  OBJECT-TYPE
+                               SYNTAX OCTET STRING (SIZE (20))
+                               ACCESS read-write
+                               STATUS mandatory
+                               DESCRIPTION      
+                               "
+                               typedef struct __CONT_PKT_TX
+                               {
+                                       UINT8   Channel;
+                                       UINT8   Antenna;
+                                       UINT8   TxPower;
+                                       UINT8   TxRate;
+                               
+                                       UINT8   TxFilter;
+                                       UINT8   Reserved;
+                                       UINT16  IFrameTime;
+                               
+                                       UINT32  FrameLength;
+                                       UINT32  FramesToTransmit;
+                                       
+                                       UINT8   Pattern;
+                                       UINT8   Reserved1[3];
+                               }CONT_PKT_TX;
+                               "
+                               ::= {TestModeSettingsGRP 2 }
+
+TestModeRadioConfiguration     OBJECT-TYPE
+                                       SYNTAX OCTET STRING (SIZE (47))
+                                       ACCESS read-write
+                                       STATUS mandatory
+                                       DESCRIPTION      
+                                       "Configuration of radio derived from tests. CR17 Reg 1-14, CR20 Reg 1-14, CR21 Reg 1-14, CR1, CR2, CR3, CR28, CR29"
+                                       ::= {TestModeSettingsGRP 8 }
+
+TestModeStatistics             OBJECT-TYPE
+                                       SYNTAX OCTET STRING (SIZE (12))
+                                       ACCESS read-only
+                                       STATUS mandatory
+                                       DESCRIPTION      
+                                       "Statistics derive from tests
+                                       TestModeStatistics{
+                                               unsigned long SuccessFrames;
+                                               unsigned long FailedFrames;
+                                               unsigned long PacketsTx;
+                                       } "
+
+                                       ::= {TestModeSettingsGRP 9 }
+
+
+
+
+-----------------------------Authorized Settings-----------------------------
+
+
+AuthorizedSettingsGRP OBJECT IDENTIFIER ::= {atmelSys 9}
+
+AuthorizedUserPass     OBJECT-TYPE
+                               SYNTAX OCTET STRING (SIZE (16))
+                               ACCESS read-write
+                               STATUS mandatory
+                               DESCRIPTION      
+                               "The community name of User."
+                               ::= {AuthorizedSettingsGRP 1 }
+
+
+AuthorizedAdminPass    OBJECT-TYPE
+                               SYNTAX OCTET STRING (SIZE (16))
+                               ACCESS read-write
+                               STATUS mandatory
+                               DESCRIPTION      
+                               "The community name of Administrator."
+                               ::= {AuthorizedSettingsGRP 2 }
+
+
+AuthorizedManufactPass         OBJECT-TYPE
+                               SYNTAX OCTET STRING (SIZE (16))
+                               ACCESS read-write
+                               STATUS mandatory
+                               DESCRIPTION      
+                               "The community name of Manufacturer."
+                               ::= {AuthorizedSettingsGRP 3 }
+
+
+--*************************** wireless ***************************
+--****************************************************************
+
+-----------------------------Operational Settings-----------------------------
+
+
+OperationalSettingsGRP OBJECT IDENTIFIER ::= {wireless 1}
+
+
+operChannelID  OBJECT-TYPE
+       SYNTAX  INTEGER  {
+                       channel1(1),
+                       channel2(2),
+                       channel3(3),
+                       channel4(4),
+                       channel5(5),
+                       channel6(6),
+                       channel7(7),
+                       channel8(8),
+                       channel9(9),
+                       channel10(10),
+                       channel11(11),
+                       channel12(12),
+                       channel13(13),
+                       channel14(14)
+               }
+       ACCESS  read-write
+       STATUS  mandatory
+       DESCRIPTION
+               "The operating frequency channel. Valid numbers
+               are     as defind in ISO/IEC 8802-11:1999, 15.4.6.2."
+       ::= { OperationalSettingsGRP 1 }
+
+
+operESSIDLength OBJECT-TYPE
+     SYNTAX  INTEGER
+     ACCESS  read-write    
+     STATUS  mandatory
+     DESCRIPTION
+     "The ESSID Length"
+     ::= {OperationalSettingsGRP 2 }     
+
+operESSID OBJECT-TYPE
+     SYNTAX  OCTET STRING (SIZE (32))
+     ACCESS  read-write    
+     STATUS  mandatory
+     DESCRIPTION
+     "The network name. The size of the network name
+     should not be more than 32 characters long."
+     ::= {OperationalSettingsGRP 3 }     
+
+
+operRTSThreshold OBJECT-TYPE
+               SYNTAX  INTEGER  
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute indicates the number of bytes in an 
+               MPDU (frame), above which an RTS/CTS handshake will be
+               performed. Setting this attribute to be larger than the
+               maximum frame size, will prevent the RTS/CTS handshake 
+               for frames trassmitted by this station."
+       ::= {OperationalSettingsGRP 4 }
+
+
+operFragmentationThreshold OBJECT-TYPE
+               SYNTAX  INTEGER  
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute indicates the number of bytes in an 
+               MPDU (frame), above which MPDU fragmentation will be
+               performed."
+       ::= {OperationalSettingsGRP 5 }
+       
+
+operPreambleType OBJECT-TYPE
+      SYNTAX  INTEGER {
+                       ShortPreamble(1),
+                       LongPreamble(2)
+               }
+      ACCESS  read-write
+      STATUS  mandatory
+      DESCRIPTION
+      "This parameter's value indicates the Preamble Type of device. Short or Long."
+             ::= {OperationalSettingsGRP 6 }
+
+
+operAuthenticationType OBJECT-TYPE
+               SYNTAX  INTEGER {
+       openSystem(1),
+       sharedKey(2),
+       BothType(3)
+       }
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute indicates the authentication algorithm
+               used during the authentication sequence.
+               The value of this attribute is one of the following:
+               1 - Open System,
+               2 - Shared Key
+               3 - Both Type "
+               ::= {OperationalSettingsGRP 7 }
+
+
+operBasicRates OBJECT-TYPE
+               SYNTAX OCTET STRING (SIZE (4))
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute indicates the basic and supported rates of Access Point.Valid format
+               is as defind in ISO/IEC 8802-11:1999"
+               ::= { OperationalSettingsGRP 8 }
+
+
+operAutoRateFallBack OBJECT-TYPE
+               SYNTAX INTEGER {enable(1),disable(2)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute indicates if Auto Rate Fall Back is enable or disable."
+               ::= {OperationalSettingsGRP 9 }
+
+operAccessPointName OBJECT-TYPE
+     SYNTAX  OCTET STRING (SIZE (32))
+     ACCESS  read-write    
+     STATUS  mandatory
+     DESCRIPTION
+     "The AP name."
+     ::= {OperationalSettingsGRP 10 }     
+
+operSSIDBroadcasting OBJECT-TYPE
+               SYNTAX INTEGER {enable(1),disable(2)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute indicates if SSID is broadcasting or not."
+               ::= {OperationalSettingsGRP 11 }
+
+operAntennaSettings OBJECT-TYPE
+               SYNTAX INTEGER
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "."
+               ::= {OperationalSettingsGRP 12 }
+
+operInterRoaming OBJECT-TYPE
+               SYNTAX INTEGER
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "."
+               ::= {OperationalSettingsGRP 13 }
+
+
+-----------------------------Privacy-----------------------------
+
+
+privacyGRP OBJECT IDENTIFIER ::= { wireless 2 }
+
+
+
+defaultWEPKey1 OBJECT-TYPE
+    SYNTAX OCTET STRING (SIZE (13))
+    ACCESS  write-only
+    STATUS  mandatory
+    DESCRIPTION    
+    "A WEP default secret key value."
+    ::= { privacyGRP 1 }    
+
+defaultWEPKey2 OBJECT-TYPE
+    SYNTAX OCTET STRING (SIZE (13))
+    ACCESS  write-only
+    STATUS  mandatory
+    DESCRIPTION    
+    "A WEP default secret key value."
+    ::= { privacyGRP 2 }    
+
+defaultWEPKey3 OBJECT-TYPE
+    SYNTAX OCTET STRING (SIZE (13))
+    ACCESS  write-only
+    STATUS  mandatory
+    DESCRIPTION    
+    "A WEP default secret key value."
+    ::= { privacyGRP 3 }    
+
+defaultWEPKey4 OBJECT-TYPE
+    SYNTAX OCTET STRING (SIZE (13))
+    ACCESS  write-only
+    STATUS  mandatory
+    DESCRIPTION    
+    "A WEP default secret key value."
+    ::= { privacyGRP 4 }    
+
+
+
+privacyWEPEnable OBJECT-TYPE
+               SYNTAX INTEGER {enable64(1),disable(2),enable128(3) }
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute, when enable64(1) or enable128(3), indicates that the 802.11
+               standard encryption mechanism (WEP) is implemented. WEP64, WEP128 or disable"
+               ::= {privacyGRP 5}
+
+
+privacyDefaultWEPKeyID OBJECT-TYPE
+               SYNTAX INTEGER   (1..4)
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION
+               "This attribute shall indicate the use of the first, second,
+               third or fourth DefaultWEPKey when set to values of one, two,
+               three or four."
+               ::= {privacyGRP 6}
+
+
+-----------------------------STATISTICS-----------------------------
+
+
+WLstatisticsGRP OBJECT IDENTIFIER ::= {wireless 3}
+
+wirelessStatistics OBJECT-TYPE
+               SYNTAX OCTET STRING (SIZE (88))
+               ACCESS read-only
+               STATUS mandatory
+               DESCRIPTION      
+               "Wireless Statistics. 22 elements(ULONG)
+               WirelessStatistics{
+                       unsigned long   UnicastTransmittedPackets;
+                       unsigned long   BroadcastTransmittedPacets;
+                       unsigned long   MulticastTransmittedPackets;
+                       unsigned long   TransmittedBeacon;
+                       unsigned long   TransmittedACK;
+                       unsigned long   TransmittedRTS;
+                       unsigned long   TransmittedCTS;
+                       unsigned long   UnicastReceivedPackets;
+                       unsigned long   BroadcastReceivedPackets;
+                       unsigned long   MulticastReceivedPackets;
+                       unsigned long   ReceivedBeacon;
+                       unsigned long   ReceivedACK;
+                       unsigned long   ReceivedRTS;
+                       unsigned long   ReceivedCTS;
+                       unsigned long   ACKFailure;
+                       unsigned long   CTSFailure;
+                       unsigned long   RetryPackets;
+                       unsigned long   ReceivedDuplicate;
+                       unsigned long   FailedPackets;
+                       unsigned long   AgedPackets;
+                       unsigned long   FCSError;
+                       unsigned long   InvalidPLCP;
+               } "
+               ::= {WLstatisticsGRP 1 }
+
+
+-------------------------------Site Survey----------------------
+
+WLSiteSurveyGRP OBJECT IDENTIFIER ::= {wireless 4}
+
+ChannelStatus OBJECT-TYPE
+               SYNTAX OCTET STRING (SIZE (14))
+               ACCESS read-only
+               STATUS mandatory
+               DESCRIPTION      
+               "."
+               ::= {WLSiteSurveyGRP 1}
+
+
+-------------------------------Associated Station----------------------
+-----------------------------------------------------------------------
+
+AssociatedStationsGRP OBJECT IDENTIFIER ::= {wireless 5}
+
+AssociatedSTAsNum OBJECT-TYPE
+      SYNTAX  INTEGER (1..2007)
+      ACCESS  read-only
+      STATUS  mandatory
+      DESCRIPTION
+      "This parameter's value indicates the number of the currently
+      associated STAtions. Associated STAtions should not be more
+      than 2007."
+      ::= { AssociatedStationsGRP 1 }
+
+               
+AssociatedSTAsInfo     OBJECT-TYPE
+           SYNTAX      OCTET STRING (SIZE (24))
+           ACCESS  read-only
+           STATUS  mandatory
+           DESCRIPTION
+           "The associated STAtion's Information.
+               AssociatedSTAsInfo{
+                       unsigned short Num;
+                       unsigned char MacAddress[6];
+               } "
+           ::= { AssociatedStationsGRP 2 }
+               
+
+-------------------------------Authorized Mac Addresses----------------------
+
+AuthorizedMacAddressesGRP OBJECT IDENTIFIER ::= {wireless 6}
+
+AuthorizationMacEnable OBJECT-TYPE
+               SYNTAX INTEGER {enable(1),disable(2)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "When setting this attribute to enable(1), the Authorization Mac Address Table will be enable."
+               ::= {AuthorizedMacAddressesGRP 1}
+
+
+AuthorizedMac  OBJECT-TYPE
+           SYNTAX      OCTET STRING (SIZE (12))
+           ACCESS  read-write
+           STATUS  mandatory
+           DESCRIPTION
+           "The Authorized Wireless Mac Addresses
+               AuthorizedMacTableString{
+                       unsigned short Action; //Set 0x01 or Get 0x02
+                       unsigned short NumOfAllTableAddresses;
+                       unsigned short NumOfCurrentAddress;
+                       unsigned char MacAddress[6];
+               } "
+
+           ::= { AuthorizedMacAddressesGRP 2 }
+
+-----------------------------KNOWN ACCESS POINTS----------------------
+
+
+WLKnownAPGRP OBJECT IDENTIFIER ::= {wireless 7}
+
+wirelessKnownAPs OBJECT-TYPE
+               SYNTAX OCTET STRING (SIZE (160))
+               ACCESS read-only
+               STATUS mandatory
+               DESCRIPTION      
+               "."
+               ::= {WLKnownAPGRP 1 }
+
+SelectedBSSListNumber OBJECT-TYPE
+               SYNTAX INTEGER
+               ACCESS write-only
+               STATUS mandatory
+               DESCRIPTION      
+               "."
+               ::= {WLKnownAPGRP 2 }
+
+
+-----------------------------ACCESS POINT CLIENT INFO----------------------
+                                              
+WLAPClientGRP OBJECT IDENTIFIER ::= {wireless 8}
+
+APCLientInfo OBJECT-TYPE
+               SYNTAX OCTET STRING (SIZE (8))
+               ACCESS read-only
+               STATUS mandatory
+               DESCRIPTION
+           "The AP Client Info 
+               {
+                       unsigned char   reserved;
+                       unsigned char   State;    // 0->Idle State, 1->Scan State, 2->Scan Completed, 3->Join State, 4->Join Completed State,
+                                                                         // 5->Authentication Request1 Pending, 6->Authentication Request2 Pending,
+                                                                         // 7->Authenticated State, 8->Association Request Pending, 9->Associated State 
+                       unsigned char   BSSID[6];
+               } "
+               ::= {WLAPClientGRP 1 }
+
+--*************************** Traps ***************************
+--*************************************************************
+
+trapSTAMacAddress OBJECT-TYPE
+       SYNTAX OCTET STRING (SIZE (6))
+       ACCESS read-only
+       STATUS mandatory
+       DESCRIPTION      
+       "The MAC address of a station device"
+
+       ::= {traps 1}
+
+
+trapReassociation TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       trapSTAMacAddress
+       }
+       DESCRIPTION
+       "This trap message is sent when a STAtion's reassosiation
+       request is received."
+       ::= 1
+
+trapRoamOut TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       trapSTAMacAddress
+       }
+       DESCRIPTION
+       "This trap message is used to indicate tha a STAtion has
+       roamed out of the Wireless bridge's coverage area."
+       ::= 2
+
+trapAssociation TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       trapSTAMacAddress
+       }
+       DESCRIPTION
+       "Indicates the reception of an association request packet
+       and     the sender STAtion's successful association with the
+       Access Point."
+       ::= 3
+       
+trapDisassociation TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       trapSTAMacAddress
+       }
+       DESCRIPTION
+       "This trap message is sent when a dissasociation notification
+       packet is received from a STAtion."
+       ::= 4
+
+trapAssociationExpire TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       trapSTAMacAddress
+       }
+       DESCRIPTION
+       "This trap message is sent when the association's maximum time interval expires for
+       an associated STAtion."
+       ::= 5
+
+trapReset TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       sysReset
+       }
+       DESCRIPTION
+       "This trap message is sent when Access Point Resets."
+       ::= 6
+
+trapSettingPingIPAddress TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       operIPAddress
+       }
+       DESCRIPTION
+       "This trap message is sent when the Access Point IP address
+       is set with the transmition of a ping message."
+       ::= 7
+
+trapStartUp TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       }
+       DESCRIPTION
+       "This trap message is sent when Access Point Starts Up."
+       ::= 8
+
+trapFailedToEraseFlash TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       }
+       DESCRIPTION
+       "This trap message is sent when Access Point Failed To Erase Flash."
+       ::= 9
+
+trapAPClientScanning TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       }
+       DESCRIPTION
+       "Access Point Client is scanning..."
+       ::= 10
+
+trapAPClientAuthenticating TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       }
+       DESCRIPTION
+       "Access Point Client is authenticating with the AP."
+       ::= 11
+
+trapAPClientAssociating TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       }
+       DESCRIPTION
+       "Access Point Client is associating with the AP."
+       ::= 12
+
+trapAPClientReAssociating TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       }
+       DESCRIPTION
+       "Access Point Client is reassociating with the AP."
+       ::= 13
+
+trapAPClientAuthenticationFailed TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       }
+       DESCRIPTION
+       "Access Point Client has failed authenticating with the AP."
+       ::= 14
+
+trapAPClientAssociationFailed TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       }
+       DESCRIPTION
+       "Access Point Client has failed associating with the AP."
+       ::= 15
+
+trapAPClientConnected TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       }
+       DESCRIPTION
+       "Access Point Client has been connected with the AP."
+       ::= 16
+
+trapAPClientDisconnected TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       }
+       DESCRIPTION
+       "Access Point Client has been disconnected from the AP."
+       ::= 17                         
+       
+trapAPClientScanFailed TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       }
+       DESCRIPTION
+       "Access Point Client has failed scanning!"
+       ::= 18                         
+                        
+trapAPClientJoinFailed TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       }
+       DESCRIPTION
+       "Access Point Client has failed joining!"
+       ::= 19       
+
+trapAPClientJoining    TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       }
+       DESCRIPTION
+       "Access Point Client is in join state."
+       ::= 20       
+
+END
\ No newline at end of file
diff --git a/Documentation/mibs-atmel/mib-410-none-dlink/AT76C510.mib b/Documentation/mibs-atmel/mib-410-none-dlink/AT76C510.mib
new file mode 100644 (file)
index 0000000..bf3b8d9
--- /dev/null
@@ -0,0 +1,907 @@
+-- Title:      ATMEL  Private MIB                                          
+
+ATMEL-MIB DEFINITIONS ::= BEGIN
+
+--IMPORTS
+--     enterprises,Counter
+--FROM RFC1155-SMI
+--     DisplayString
+--FROM RFC1213-MIB;
+--     TRAP-TYPE
+--FROM RFC-1215;
+
+
+--MacAddress ::= IMPLICIT OCTET STRING (SIZE(6))
+DisplayString ::= OCTET STRING
+
+internet      OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 }
+directory     OBJECT IDENTIFIER ::= { internet 1 }
+mgmt          OBJECT IDENTIFIER ::= { internet 2 }
+experimental  OBJECT IDENTIFIER ::= { internet 3 }
+private       OBJECT IDENTIFIER ::= { internet 4 }
+enterprises   OBJECT IDENTIFIER ::= { private 1 }
+
+atmel       OBJECT IDENTIFIER ::= { enterprises 410 }
+atmelmib    OBJECT IDENTIFIER ::= { atmel 1}
+atmelSys       OBJECT IDENTIFIER ::= {atmelmib 1}
+wireless       OBJECT IDENTIFIER ::= {atmelmib 2}
+traps  OBJECT IDENTIFIER ::= {atmelmib 3 }
+
+
+
+--*************************** System***************************
+--****************************************************************
+
+
+
+sysCtrlGRP OBJECT IDENTIFIER ::= {atmelSys 1}
+
+sysDescr OBJECT-TYPE
+    SYNTAX  DisplayString (SIZE (0..255))
+    ACCESS  read-only
+    STATUS  mandatory
+       DESCRIPTION
+         "A textual description of the entity.  This value
+          should include the full name and version
+          identification of the system's hardware type,
+          software operating-system, and networking
+          software.  It is mandatory that this only contain
+          printable ASCII characters."
+       ::= { sysCtrlGRP 1 } 
+
+
+sysReset OBJECT-TYPE
+       SYNTAX INTEGER {enable(1),disable(2)}
+       ACCESS  read-write
+       STATUS  mandatory
+       DESCRIPTION       
+       "By setting this attribute enable(1), a reset command to 
+       the system is issued." 
+       ::= { sysCtrlGRP 2 } 
+
+sysTrapSwitch OBJECT-TYPE
+       SYNTAX INTEGER {enable(1),disable(2)}
+       ACCESS read-write
+       STATUS mandatory
+       DESCRIPTION
+       "This attribute enables the transmission of SNMP.V1 TRAPs."
+       ::= {sysCtrlGRP 3}
+
+sysLoadDefaults OBJECT-TYPE
+       SYNTAX INTEGER { enable(1), disable(2) }
+       ACCESS  read-write
+       STATUS  mandatory
+       DESCRIPTION       
+       "Setting this attribute to enable(1), will cause the system to load
+       the factory default values of all the operational parameters." 
+       ::= { sysCtrlGRP 4 }
+
+sysDeviceInfo  OBJECT-TYPE
+                       SYNTAX OCTET STRING (SIZE (92))
+                       ACCESS read-only
+                       STATUS mandatory
+                       DESCRIPTION      
+                       "Hardware device configuration struct."
+                       ::= {sysCtrlGRP 5 }
+
+sysUpload OBJECT-TYPE
+       SYNTAX INTEGER {enable(1),disable(2)}
+       ACCESS  read-write
+       STATUS  mandatory
+       DESCRIPTION       
+       "By setting this attribute enable(1), a Upload configuration command to 
+       the system is issued." 
+       ::= { sysCtrlGRP 6 } 
+
+
+
+
+operBridgingLevel OBJECT IDENTIFIER ::= {atmelSys 2}
+
+operIPAddress OBJECT-TYPE
+               SYNTAX IpAddress
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "The IP address of this device used over its Ethernet
+               or Wireless LAN port."
+               ::= { operBridgingLevel 1 }
+
+operIPMask OBJECT-TYPE
+           SYNTAX  IpAddress
+           ACCESS  read-write
+           STATUS  mandatory
+           DESCRIPTION
+           "The IP Network mask used by the IP entity when accessing
+           devices through any of its LAN Ports (Ethernet or WLAN)."
+           ::= { operBridgingLevel 2}
+
+operEthernetAddress OBJECT-TYPE
+           SYNTAX  OCTET STRING (SIZE (6))
+           ACCESS  read-write
+           STATUS  mandatory
+           DESCRIPTION
+           "The MAC Address of the Ethernet interface."
+           ::= { operBridgingLevel 3}
+
+
+operGateway OBJECT-TYPE
+               SYNTAX IpAddress
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "."
+               ::= { operBridgingLevel 4 }
+
+operDHCP OBJECT-TYPE
+               SYNTAX  INTEGER {enable(1),disable(2)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "When setting this attribute to ENABLE, the system will
+               enable DHCP protocol."
+               ::= { operBridgingLevel 5 }
+
+operPrimaryPort OBJECT-TYPE
+               SYNTAX  INTEGER {Ethernet(1),Wireless(2)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute indicates the primaty port."
+               ::= { operBridgingLevel 6 }
+
+
+
+
+
+
+operFiltering OBJECT IDENTIFIER ::= {atmelSys 3}
+
+operIPFilter OBJECT-TYPE
+               SYNTAX  INTEGER {enable(1), disable(2)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "When setting this attribute to ENABLE, the system will
+               filter out all non IP-traffic."
+               ::= { operFiltering 1 }
+
+
+
+
+
+operBridgeOperationalMode OBJECT IDENTIFIER ::= {atmelSys 4}
+
+
+bridgeOperationalMode OBJECT-TYPE
+               SYNTAX  INTEGER {WBPoint2Multipoint(1), AP(2), APclient(3),  WBPoint2Point(3)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "The Operational Mode of Bridge. Access Point, Access Point client, Wireless Bridge Point to Point, Wireless Bridge Point to MultiPoint."
+               ::= { operBridgeOperationalMode 1 }
+
+bridgeRemoteBridgeBSSID OBJECT-TYPE
+               SYNTAX  OCTET STRING (SIZE (6))
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "The Preferred BSSID if the device is at Access Point client mode
+               or the remote Mac if the device is at Wireless Bridge Point to Point mode."
+               ::= { operBridgeOperationalMode 2 }
+
+
+
+
+
+dot1dStatic OBJECT IDENTIFIER ::= {atmelSys 5}
+
+
+StaticMacFilterNum OBJECT-TYPE
+      SYNTAX  INTEGER 
+      ACCESS  read-write
+      STATUS  mandatory
+      DESCRIPTION
+      "This parameter's value indicates the number of the currently
+      static MAC filters."
+      ::= { dot1dStatic 1 }
+
+
+          dot1dStaticTable OBJECT-TYPE
+              SYNTAX  SEQUENCE OF Dot1dStaticEntry
+              ACCESS  not-accessible
+              STATUS  mandatory
+              DESCRIPTION
+                      "A table containing filtering information
+                      configured into the bridge by (local or network)
+                      management specifying the set of ports to which
+                      frames received from specific ports and containing
+                      specific destination addresses are allowed to be
+                      forwarded.  The value of zero in this table as the
+                      port number from which frames with a specific
+                      destination address are received, is used to
+                      specify all ports for which there is no specific
+                      entry in this table for that particular
+                      destination address.  Entries are valid for
+                      unicast and for group/broadcast addresses."
+              REFERENCE
+                      "IEEE 802.1D-1990: Section 6.7.2"
+              ::= { dot1dStatic 2 }
+
+          dot1dStaticEntry OBJECT-TYPE
+              SYNTAX  Dot1dStaticEntry
+              ACCESS  not-accessible
+              STATUS  mandatory
+              DESCRIPTION
+                      "Filtering information configured into the bridge
+                      by (local or network) management specifying the
+                      set of ports to which frames received from a
+                      specific port and containing a specific
+                      destination address are allowed to be forwarded."
+              REFERENCE
+                      "IEEE 802.1D-1990: Section 6.7.2"
+              INDEX   { dot1dStaticAddress}--, dot1dStaticReceivePort }
+              ::= { dot1dStaticTable 1 }
+
+          Dot1dStaticEntry ::=
+              SEQUENCE {
+                  dot1dStaticAddress
+                      OCTET STRING (SIZE (6))
+--                  dot1dStaticReceivePort
+--                     INTEGER,
+--                  dot1dStaticAllowedToGoTo
+--                      INTEGER,
+--                  dot1dStaticStatus
+--                      INTEGER
+              }
+
+          dot1dStaticAddress OBJECT-TYPE
+              SYNTAX  OCTET STRING (SIZE (6))
+              ACCESS  read-write
+              STATUS  mandatory
+              DESCRIPTION
+                      "The destination MAC address in a frame to which
+                      this entry's filtering information applies.  This
+                      object can take the value of a unicast address, a
+                      group address or the broadcast address."
+              REFERENCE
+                      "IEEE 802.1D-1990: Section 3.9.1, 3.9.2"
+              ::= { dot1dStaticEntry 1 }
+
+--          dot1dStaticReceivePort OBJECT-TYPE
+--              SYNTAX  INTEGER
+--              ACCESS  read-write
+--              STATUS  mandatory
+--              DESCRIPTION
+--                      "Either the value '0', or the port number of the
+--                      port from which a frame must be received in order
+--                      for this entry's filtering information to apply.
+--                      A value of zero indicates that this entry applies
+--                      on all ports of the bridge for which there is no
+--                      other applicable entry."
+--              ::= { dot1dStaticEntry 2 }
+
+--          dot1dStaticAllowedToGoTo OBJECT-TYPE
+--              SYNTAX  INTEGER
+--              ACCESS  read-write
+--              STATUS  mandatory
+--              DESCRIPTION
+--                      "The set of ports to which frames received from a
+--                      specific port and destined for a specific MAC
+--                      address, are allowed to be forwarded.  Each octet
+--                      within the value of this object specifies a set of
+--                      eight ports, with the first octet specifying ports
+--                      1 through 8, the second octet specifying ports 9
+--                      through 16, etc.  Within each octet, the most
+--                      significant bit represents the lowest numbered
+--                      port, and the least significant bit represents the
+--                      highest numbered port.  Thus, each port of the
+--                      bridge is represented by a single bit within the
+--                      value of this object.  If that bit has a value of
+--                      '1' then that port is included in the set of
+--                      ports; the port is not included if its bit has a
+--                      value of '0'.  (Note that the setting of the bit
+--                      corresponding to the port from which a frame is
+--                      received is irrelevant.)  The default value of
+--                      this object is a string of ones of appropriate
+--                      length."
+--              ::= { dot1dStaticEntry 3 }
+--
+--          dot1dStaticStatus OBJECT-TYPE
+--              SYNTAX  INTEGER {
+--                          other(1),
+--                          invalid(2),
+--                          permanent(3),
+--                          deleteOnReset(4),
+--                          deleteOnTimeout(5)
+--                      }
+--              ACCESS  read-write
+--              STATUS  mandatory
+--              DESCRIPTION
+--                      "This object indicates the status of this entry.
+--                      The default value is permanent(3).
+--                           other(1) - this entry is currently in use but
+--                                the conditions under which it will
+--                                remain so are different from each of the
+--                                following values.
+--                           invalid(2) - writing this value to the object
+--                                removes the corresponding entry.
+--                           permanent(3) - this entry is currently in use
+--                                and will remain so after the next reset
+--                                of the bridge.
+--                           deleteOnReset(4) - this entry is currently in
+--                                use and will remain so until the next
+--                                reset of the bridge.
+--                           deleteOnTimeout(5) - this entry is currently
+--                                in use and will remain so until it is
+--                                aged out."
+--              ::= { dot1dStaticEntry 4 }
+
+
+
+
+
+ProtocolFilterGRP OBJECT IDENTIFIER ::= {atmelSys 6}
+
+ProtocolFilterNum OBJECT-TYPE
+      SYNTAX  INTEGER 
+      ACCESS  read-write
+      STATUS  mandatory
+      DESCRIPTION
+      "This parameter's value indicates the number of the currently
+      protocol filters."
+      ::= { ProtocolFilterGRP 1 }
+
+
+
+
+          ProtocolFilterTable OBJECT-TYPE
+              SYNTAX  SEQUENCE OF ProtocolFilterEntry
+              ACCESS  not-accessible
+              STATUS  mandatory
+              DESCRIPTION
+                      "A table containing filtering information
+                      configured into the bridge by (local or network)
+                      management specifying the set of protocol filter."
+              ::= { ProtocolFilterGRP 2 }
+
+          protocolFilterEntry OBJECT-TYPE
+              SYNTAX  ProtocolFilterEntry
+              ACCESS  not-accessible
+              STATUS  mandatory
+              DESCRIPTION
+                      "Filtering information configured into the bridge
+                      by (local or network) management specifying the
+                      set of protocol filter."
+              INDEX   { ProtocolFilterCode }
+              ::= { ProtocolFilterTable 1 }
+
+          ProtocolFilterEntry ::=
+              SEQUENCE {
+                  ProtocolFilterCode
+                      OCTET STRING (SIZE (2)),
+                  ProtocolFilterDescription
+                      DisplayString (SIZE (0..255)),
+                  ProtocolFilterActivity
+                      INTEGER
+              }
+
+          ProtocolFilterCode OBJECT-TYPE
+              SYNTAX  OCTET STRING (SIZE (2))
+              ACCESS  read-write
+              STATUS  mandatory
+              DESCRIPTION
+                      "The protocol code configured into the bridge
+                      by (local or network) management specifying the
+                      set of protocol filter."
+              ::= { protocolFilterEntry 1 }
+
+          ProtocolFilterDescription OBJECT-TYPE
+              SYNTAX  DisplayString (SIZE (0..255))
+              ACCESS  read-write
+              STATUS  mandatory
+              DESCRIPTION
+                      "A textual description of the protocol."
+              ::= { protocolFilterEntry 2 }
+
+          ProtocolFilterActivity OBJECT-TYPE
+              SYNTAX  INTEGER {enable(1),disable(2)}
+              ACCESS  read-write
+              STATUS  mandatory
+              DESCRIPTION
+                      "This object indicates the status of this filter."
+              ::= { protocolFilterEntry 3 }
+
+
+
+
+
+EthStatisticsGRP OBJECT IDENTIFIER ::= {atmelSys 7}
+
+EthRxStatistics OBJECT-TYPE
+               SYNTAX OCTET STRING (SIZE (64))
+               ACCESS read-only
+               STATUS mandatory
+               DESCRIPTION      
+               "Ethernet Rx Statistics."
+               ::= {EthStatisticsGRP 1 }
+
+EthTxStatistics OBJECT-TYPE
+               SYNTAX OCTET STRING (SIZE (56))
+               ACCESS read-only
+               STATUS mandatory
+               DESCRIPTION      
+               "Ethernet Tx Statistics."
+               ::= {EthStatisticsGRP 2 }
+
+
+
+
+
+
+
+TestModeSettingsGRP OBJECT IDENTIFIER ::= {atmelSys 8}
+
+TestModeOnOff  OBJECT-TYPE
+                               SYNTAX INTEGER {enable(1),disable(2)}
+                               ACCESS read-write
+                               STATUS mandatory
+                               DESCRIPTION      
+                               "."
+                               ::= { TestModeSettingsGRP 1 }
+
+
+TestModeCommandStruct  OBJECT-TYPE
+                               SYNTAX OCTET STRING (SIZE (8))
+                               ACCESS read-write
+                               STATUS mandatory
+                               DESCRIPTION      
+                               "."
+                               ::= {TestModeSettingsGRP 2 }
+
+TestModeRadioConfiguration     OBJECT-TYPE
+                                       SYNTAX OCTET STRING (SIZE (14))
+                                       ACCESS read-write
+                                       STATUS mandatory
+                                       DESCRIPTION      
+                                       "Configuration of radio derive from tests."
+                                       ::= {TestModeSettingsGRP 8 }
+
+TestModeStatistics             OBJECT-TYPE
+                                       SYNTAX OCTET STRING (SIZE (8))
+                                       ACCESS read-only
+                                       STATUS mandatory
+                                       DESCRIPTION      
+                                       "Statistics derive from tests."
+                                       ::= {TestModeSettingsGRP 9 }
+
+
+
+
+
+
+AuthorizedSettingsGRP OBJECT IDENTIFIER ::= {atmelSys 9}
+
+AuthorizedUserPass     OBJECT-TYPE
+                               SYNTAX OCTET STRING (SIZE (16))
+                               ACCESS read-write
+                               STATUS mandatory
+                               DESCRIPTION      
+                               "."
+                               ::= {AuthorizedSettingsGRP 1 }
+
+
+AuthorizedAdminPass    OBJECT-TYPE
+                               SYNTAX OCTET STRING (SIZE (16))
+                               ACCESS read-write
+                               STATUS mandatory
+                               DESCRIPTION      
+                               "."
+                               ::= {AuthorizedSettingsGRP 2 }
+
+
+AuthorizedManufactPass         OBJECT-TYPE
+                               SYNTAX OCTET STRING (SIZE (16))
+                               ACCESS read-write
+                               STATUS mandatory
+                               DESCRIPTION      
+                               "."
+                               ::= {AuthorizedSettingsGRP 3 }
+
+
+--*************************** wireless ***************************
+--****************************************************************
+
+
+
+OperationalSettingsGRP OBJECT IDENTIFIER ::= {wireless 1}
+
+
+
+
+operChannelID  OBJECT-TYPE
+       SYNTAX  INTEGER  {
+                       channel1(1),
+                       channel2(2),
+                       channel3(3),
+                       channel4(4),
+                       channel5(5),
+                       channel6(6),
+                       channel7(7),
+                       channel8(8),
+                       channel9(9),
+                       channel10(10),
+                       channel11(11),
+                       channel12(12),
+                       channel13(13),
+                       channel14(14)
+               }
+       ACCESS  read-write
+       STATUS  mandatory
+       DESCRIPTION
+               "The operating frequency channel. Valid numbers
+               are     as defind in ISO/IEC 8802-11:1999, 15.4.6.2."
+       ::= { OperationalSettingsGRP 1 }
+
+
+operESSIDLength OBJECT-TYPE
+     SYNTAX  INTEGER
+     ACCESS  read-write    
+     STATUS  mandatory
+     DESCRIPTION
+     "The ESSID Length"
+     ::= {OperationalSettingsGRP 2 }     
+
+operESSID OBJECT-TYPE
+     SYNTAX  OCTET STRING (SIZE (32))
+     ACCESS  read-write    
+     STATUS  mandatory
+     DESCRIPTION
+     "The network name. The size of the network name
+     should not be more than 32 characters long."
+     ::= {OperationalSettingsGRP 3 }     
+
+
+operRTSThreshold OBJECT-TYPE
+               SYNTAX  INTEGER  
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute indicates the number of bytes in an 
+               MPDU (frame), above which an RTS/CTS handshake will be
+               performed. Setting this attribute to be larger than the
+               maximum frame size, will prevent the RTS/CTS handshake 
+               for frames trassmitted by this station."
+       ::= {OperationalSettingsGRP 4 }
+
+
+operFragmentationThreshold OBJECT-TYPE
+               SYNTAX  INTEGER  
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute indicates the number of bytes in an 
+               MPDU (frame), above which MPDU fragmentation will be
+               performed."
+       ::= {OperationalSettingsGRP 5 }
+       
+
+operPreambleType OBJECT-TYPE
+      SYNTAX  INTEGER {
+                       ShortPreamble(1),
+                       LongPreamble(2)
+               }
+      ACCESS  read-write
+      STATUS  mandatory
+      DESCRIPTION
+      "This parameter's value indicates the number of the currently
+      associated STAtions. Associated STAtions should not be more
+      than 2007."
+             ::= {OperationalSettingsGRP 6 }
+
+
+operAuthenticationType OBJECT-TYPE
+               SYNTAX  INTEGER {
+       openSystem(1),
+       sharedKey(2),
+       BothType(3)
+       }
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute indicates the authentication algorithm
+               used during the authentication sequence.
+               The value of this attribute is one of the following:
+               1 - Open System,
+               2 - Shared Key
+               3 - Both Type "
+               ::= {OperationalSettingsGRP 7 }
+
+
+operBasicRates OBJECT-TYPE
+               SYNTAX OCTET STRING (SIZE (4))
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute indicates the basic rates of AP-Bridge."
+               ::= { OperationalSettingsGRP 8 }
+
+
+operAutoRateFallBack OBJECT-TYPE
+               SYNTAX INTEGER {enable(1),disable(2)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute indicates if Auto Rate Fall Back is enable or disable."
+               ::= {OperationalSettingsGRP 9 }
+
+operAccessPointName OBJECT-TYPE
+     SYNTAX  OCTET STRING (SIZE (32))
+     ACCESS  read-write    
+     STATUS  mandatory
+     DESCRIPTION
+     "The AP name."
+     ::= {OperationalSettingsGRP 10 }     
+
+
+
+
+
+privacyGRP OBJECT IDENTIFIER ::= { wireless 2 }
+
+
+
+defaultWEPKey1 OBJECT-TYPE
+    SYNTAX OCTET STRING (SIZE (13))
+    ACCESS  read-write
+    STATUS  mandatory
+    DESCRIPTION    
+    "A WEP default secret key value."
+    ::= { privacyGRP 1 }    
+
+defaultWEPKey2 OBJECT-TYPE
+    SYNTAX OCTET STRING (SIZE (13))
+    ACCESS  read-write
+    STATUS  mandatory
+    DESCRIPTION    
+    "A WEP default secret key value."
+    ::= { privacyGRP 2 }    
+
+defaultWEPKey3 OBJECT-TYPE
+    SYNTAX OCTET STRING (SIZE (13))
+    ACCESS  read-write
+    STATUS  mandatory
+    DESCRIPTION    
+    "A WEP default secret key value."
+    ::= { privacyGRP 3 }    
+
+defaultWEPKey4 OBJECT-TYPE
+    SYNTAX OCTET STRING (SIZE (13))
+    ACCESS  read-write
+    STATUS  mandatory
+    DESCRIPTION    
+    "A WEP default secret key value."
+    ::= { privacyGRP 4 }    
+
+
+
+privacyWEPEnable OBJECT-TYPE
+               SYNTAX INTEGER {enable64(1),disable(2),enable128(3) }
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "This attribute, when true, indicates that the 802.11
+               standard encryption mechanism (WEP) is implemented."
+               ::= {privacyGRP 5}
+
+
+privacyDefaultWEPKeyID OBJECT-TYPE
+               SYNTAX INTEGER   (1..4)
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION
+               "This attribute shall indicate the use of the first, second,
+               third or fourth DefaultWEPKey when set to values of one, two,
+               three or four."
+               ::= {privacyGRP 6}
+
+
+
+
+WLstatisticsGRP OBJECT IDENTIFIER ::= {wireless 3}
+
+wirelessStatistics OBJECT-TYPE
+               SYNTAX OCTET STRING (SIZE (88))
+               ACCESS read-only
+               STATUS mandatory
+               DESCRIPTION      
+               "Wireless Statistics. 22 elements(ULONG)."
+               ::= {WLstatisticsGRP 1 }
+
+
+
+WLSiteSurveyGRP OBJECT IDENTIFIER ::= {wireless 4}
+
+ChannelStatus OBJECT-TYPE
+               SYNTAX OCTET STRING (SIZE (14))
+               ACCESS read-only
+               STATUS mandatory
+               DESCRIPTION      
+               "."
+               ::= {WLSiteSurveyGRP 1}
+
+
+
+AssociatedStationsGRP OBJECT IDENTIFIER ::= {wireless 5}
+
+AssociatedSTAsNum OBJECT-TYPE
+      SYNTAX  INTEGER (1..2007)
+      ACCESS  read-only
+      STATUS  mandatory
+      DESCRIPTION
+      "This parameter's value indicates the number of the currently
+      associated STAtions. Associated STAtions should not be more
+      than 2007."
+      ::= { AssociatedStationsGRP 1 }
+
+               
+AssociatedSTAsInfo     OBJECT-TYPE
+           SYNTAX      OCTET STRING (SIZE (24))
+           ACCESS  read-only
+           STATUS  mandatory
+           DESCRIPTION
+           "The associated STAtion's Information."
+           ::= { AssociatedStationsGRP 2 }
+               
+
+
+AuthorizedMacAddressesGRP OBJECT IDENTIFIER ::= {wireless 6}
+
+AuthorizationMacEnable OBJECT-TYPE
+               SYNTAX INTEGER {enable(1),disable(2)}
+               ACCESS read-write
+               STATUS mandatory
+               DESCRIPTION      
+               "."
+               ::= {AuthorizedMacAddressesGRP 1}
+
+
+
+AuthorizedMac  OBJECT-TYPE
+           SYNTAX      OCTET STRING (SIZE (64))
+           ACCESS  read-write
+           STATUS  mandatory
+           DESCRIPTION
+           "The Authorized Wireless Mac Addresses."
+           ::= { AuthorizedMacAddressesGRP 2 }
+
+
+
+
+WLKnownAPGRP OBJECT IDENTIFIER ::= {wireless 7}
+
+wirelessKnownAPsNum OBJECT-TYPE
+               SYNTAX INTEGER (1..8)
+               ACCESS read-only
+               STATUS mandatory
+               DESCRIPTION      
+               "."
+               ::= {WLKnownAPGRP 1 }
+
+
+
+wirelessKnownAPs OBJECT-TYPE
+               SYNTAX OCTET STRING (SIZE (32))
+               ACCESS read-only
+               STATUS mandatory
+               DESCRIPTION      
+               "."
+               ::= {WLKnownAPGRP 2 }
+
+
+
+--*************************** Traps ***************************
+--*************************************************************
+
+trapSTAMacAddress OBJECT-TYPE
+       SYNTAX OCTET STRING (SIZE (6))
+       ACCESS read-only
+       STATUS mandatory
+       DESCRIPTION      
+       "The MAC address of a station device"
+
+       ::= {traps 1}
+
+
+trapReassociation TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       trapSTAMacAddress
+       }
+       DESCRIPTION
+       "This trap message is sent when a STAtion's reassosiation
+       request is received."
+       ::= 1
+
+trapRoamOut TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       trapSTAMacAddress
+       }
+       DESCRIPTION
+       "This trap message is used to indicate tha a STAtion has
+       roamed out of the Wireless bridge's coverage area."
+       ::= 2
+
+trapAssociation TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       trapSTAMacAddress
+       }
+       DESCRIPTION
+       "Indicates the reception of an association request packet
+       and     the sender STAtion's successful association with the
+       Wireless Bridge."
+       ::= 3
+       
+trapDisassociation TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       trapSTAMacAddress
+       }
+       DESCRIPTION
+       "This trap message is sent when a dissasociation notification
+       packet is received from a STAtion."
+       ::= 4
+
+trapAssociationExpire TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       trapSTAMacAddress
+       }
+       DESCRIPTION
+       "When the association's maximum time interval expires for
+       an associated STAtion this trap message is sent."
+       ::= 5
+
+trapReset TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       sysReset
+       }
+       DESCRIPTION
+       "This trap message is sent when Bridge Resets."
+       ::= 6
+
+trapSettingPingIPAddress TRAP-TYPE
+       ENTERPRISE atmel
+       VARIABLES {
+       operIPAddress
+       }
+       DESCRIPTION
+       "This trap message is sent when the ATMEL Bridge IP address
+       is set with the transmition of a ping message."
+       ::= 7
+
+trapStartUp TRAP-TYPE
+       ENTERPRISE atmel
+-- apparently the 4.2.1 ucd-snmp tools do not liek
+-- empty variable blocks - msp 9jul2001
+--     VARIABLES {
+--     }
+       DESCRIPTION
+       "This trap message is sent when Bridge Starts Up."
+       ::= 8
+
+trapFailedToEraseFlash TRAP-TYPE
+       ENTERPRISE atmel
+-- apparently the 4.2.1 ucd-snmp tools do not liek
+-- empty variable blocks - msp 9jul2001
+       --VARIABLES {
+       --}
+       DESCRIPTION
+       "This trap message is sent when Bridge Failed To Erase Flash."
+       ::= 9
+
+
+END
diff --git a/Documentation/mibs-atmel/mib-410-smartbridges/AT76C510.mib b/Documentation/mibs-atmel/mib-410-smartbridges/AT76C510.mib
new file mode 100644 (file)
index 0000000..2898101
--- /dev/null
@@ -0,0 +1,1255 @@
+-- Title:      ATMEL  Private MIB                                          \r
+\r
+\r
+--Firmaware Version 1.4 14/5/2001\r
+\r
+\r
+ATMEL-MIB DEFINITIONS ::= BEGIN\r
+\r
+--IMPORTS\r
+--     enterprises,Counter\r
+--FROM RFC1155-SMI\r
+--     DisplayString\r
+--FROM RFC1213-MIB;\r
+--     TRAP-TYPE\r
+--FROM RFC-1215;\r
+\r
+\r
+--MacAddress ::= IMPLICIT OCTET STRING (SIZE(6))\r
+DisplayString ::= OCTET STRING\r
+\r
+internet      OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 }\r
+directory     OBJECT IDENTIFIER ::= { internet 1 }\r
+mgmt          OBJECT IDENTIFIER ::= { internet 2 }\r
+experimental  OBJECT IDENTIFIER ::= { internet 3 }\r
+private       OBJECT IDENTIFIER ::= { internet 4 }\r
+enterprises   OBJECT IDENTIFIER ::= { private 1 }\r
+\r
+atmel       OBJECT IDENTIFIER ::= { enterprises 410 }\r
+atmelmib    OBJECT IDENTIFIER ::= { atmel 1}\r
+atmelSys       OBJECT IDENTIFIER ::= {atmelmib 1}\r
+wireless       OBJECT IDENTIFIER ::= {atmelmib 2}\r
+traps  OBJECT IDENTIFIER ::= {atmelmib 3 }\r
+\r
+\r
+\r
+--*************************** System***************************\r
+--****************************************************************\r
+\r
+\r
+\r
+sysCtrlGRP OBJECT IDENTIFIER ::= {atmelSys 1}\r
+\r
+sysDescr OBJECT-TYPE\r
+    SYNTAX  DisplayString (SIZE (0..255))\r
+    ACCESS  read-only\r
+    STATUS  mandatory\r
+       DESCRIPTION\r
+         "A textual description of the entity.  This value\r
+          should include the full name and version\r
+          identification of the system's hardware type,\r
+          software operating-system, and networking\r
+          software.  It is mandatory that this only contain\r
+          printable ASCII characters."\r
+       ::= { sysCtrlGRP 1 } \r
+\r
+\r
+sysReset OBJECT-TYPE\r
+       SYNTAX INTEGER {enable(1)}\r
+       ACCESS  read-write\r
+       STATUS  mandatory\r
+       DESCRIPTION       \r
+       "By setting this attribute enable(1), a reset command to \r
+       the system is issued." \r
+       ::= { sysCtrlGRP 2 } \r
+\r
+sysTrapSwitch OBJECT-TYPE\r
+       SYNTAX INTEGER {enable(1),disable(2)}\r
+       ACCESS read-write\r
+       STATUS mandatory\r
+       DESCRIPTION\r
+       "This attribute enables the transmission of SNMP.V1 TRAPs."\r
+       ::= {sysCtrlGRP 3}\r
+\r
+sysLoadDefaults OBJECT-TYPE\r
+       SYNTAX INTEGER { enable(1)}\r
+       ACCESS  read-write\r
+       STATUS  mandatory\r
+       DESCRIPTION       \r
+       "Setting this attribute to enable(1), will cause the system to load\r
+       the factory default values of all the operational parameters." \r
+       ::= { sysCtrlGRP 4 }\r
+\r
+sysDeviceInfo  OBJECT-TYPE\r
+                       SYNTAX OCTET STRING (SIZE (92))\r
+                       ACCESS read-write\r
+                       STATUS mandatory\r
+                       DESCRIPTION      \r
+                       "Hardware device configuration struct.\r
+                                HARD_CONFIGURATION_STUCT{\r
+                                       unsigned long  StructVersion;\r
+                                       unsigned char   MacAddress[6];\r
+                                       unsigned short  Reserved;\r
+                                       unsigned long  RegulationDomain;\r
+                                       unsigned long  ProductType; \r
+                                       unsigned char   OEMName[32];\r
+                                       unsigned long  OEMID;\r
+                                       unsigned char   ProductName[32];\r
+                                       unsigned long  HardwareRevision; \r
+                               } "\r
+\r
+\r
+                       ::= {sysCtrlGRP 5 }\r
+\r
+sysUpload OBJECT-TYPE\r
+       SYNTAX INTEGER {enable(1)}\r
+       ACCESS  read-write\r
+       STATUS  mandatory\r
+       DESCRIPTION       \r
+       "By setting this attribute enable(1), a Upload configuration command to \r
+       the system is issued." \r
+       ::= { sysCtrlGRP 6 } \r
+\r
+\r
+\r
+-----------------------------BridgingLevel-----------------------------\r
+\r
+operBridgingLevel OBJECT IDENTIFIER ::= {atmelSys 2}\r
+\r
+operIPAddress OBJECT-TYPE\r
+               SYNTAX IpAddress\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "The IP address of this device used over its Ethernet\r
+               or Wireless LAN port."\r
+               ::= { operBridgingLevel 1 }\r
+\r
+operIPMask OBJECT-TYPE\r
+           SYNTAX  IpAddress\r
+           ACCESS  read-write\r
+           STATUS  mandatory\r
+           DESCRIPTION\r
+           "The IP Network mask used by the IP entity when accessing\r
+           devices through any of its LAN Ports (Ethernet or WLAN)."\r
+           ::= { operBridgingLevel 2}\r
+\r
+operEthernetAddress OBJECT-TYPE\r
+           SYNTAX  OCTET STRING (SIZE (6))\r
+           ACCESS  read-only\r
+           STATUS  mandatory\r
+           DESCRIPTION\r
+           "The MAC Address of the Ethernet interface."\r
+           ::= { operBridgingLevel 3}\r
+\r
+\r
+operGateway OBJECT-TYPE\r
+               SYNTAX IpAddress\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "Gateway default IP address."\r
+               ::= { operBridgingLevel 4 }\r
+\r
+operDHCP OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1),disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to enable(1), the system will\r
+               enable DHCP protocol."\r
+               ::= { operBridgingLevel 5 }\r
+\r
+operPrimaryPort OBJECT-TYPE\r
+               SYNTAX  INTEGER {Ethernet(1),Wireless(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the primaty port.Ethernet or Wireless."\r
+               ::= { operBridgingLevel 6 }\r
+\r
+operConfigurationPort OBJECT-TYPE\r
+               SYNTAX  INTEGER {Ethernet(1),Wireless(2),Both(3)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the Configuration port.Ethernet or Wireless or Both of them."\r
+               ::= { operBridgingLevel 7 }\r
+\r
+operDHCPtimeout OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1),disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to enable(1), the system will\r
+               enable DHCP timeout."\r
+               ::= { operBridgingLevel 8 }\r
+\r
+\r
+\r
+\r
+-----------------------------Filtering-----------------------------\r
+\r
+\r
+\r
+operFiltering OBJECT IDENTIFIER ::= {atmelSys 3}\r
+\r
+operIPFilter OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1), disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to enable(1), the system will\r
+               filter out all non IP-traffic."\r
+               ::= { operFiltering 1 }\r
+\r
+operForwarbBcast OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1), disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to disable(2), the system will not\r
+               forward broadcast traffic to the Wireless Port."\r
+               ::= { operFiltering 2 }\r
+                                                     \r
+operSendBackBcast OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1), disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to disable(2), the system will not\r
+               send back broadcast traffic to the Wireless Port."\r
+               ::= { operFiltering 3 }\r
+                 \r
+operSendBackUnicast OBJECT-TYPE\r
+               SYNTAX  INTEGER {enable(1), disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to disable(2), the system will not\r
+               send back unicast traffic to the Wireless Port."\r
+               ::= { operFiltering 4 }\r
+\r
+\r
+\r
+-----------------------------Bridge Operational Mode -----------------------------\r
+\r
+\r
+operBridgeOperationalMode OBJECT IDENTIFIER ::= {atmelSys 4}\r
+\r
+\r
+bridgeOperationalMode OBJECT-TYPE\r
+               SYNTAX  INTEGER {WBPoint2Multipoint(1), AP(2), APclient(3),  WBPoint2Point(4), WRepeater(5)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "The Operational Mode of Bridge. Access Point, Access Point client, Wireless Bridge Point to Point, Wireless Bridge Point to MultiPoint, Wireless Repeater."\r
+               ::= { operBridgeOperationalMode 1 }\r
+\r
+bridgeRemoteBridgeBSSID OBJECT-TYPE\r
+               SYNTAX  OCTET STRING (SIZE (6))\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "The Preferred BSSID if the device is at Access Point client mode or at Wireless Repeater mode\r
+               or the remote Mac if the device is at Wireless Bridge Point to Point mode."\r
+               ::= { operBridgeOperationalMode 2 }\r
+\r
+\r
+\r
+-----------------------------Static-----------------------------\r
+\r
+\r
+dot1dStatic OBJECT IDENTIFIER ::= {atmelSys 5}\r
+\r
+\r
+StaticMacFilterNum OBJECT-TYPE\r
+      SYNTAX  INTEGER \r
+      ACCESS  read-write\r
+      STATUS  mandatory\r
+      DESCRIPTION\r
+      "This parameter's value indicates the number of the currently\r
+      static MAC filters."\r
+      ::= { dot1dStatic 1 }\r
+\r
+\r
+          dot1dStaticTable OBJECT-TYPE\r
+              SYNTAX  SEQUENCE OF Dot1dStaticEntry\r
+              ACCESS  not-accessible\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "A table containing filtering information\r
+                      configured into the bridge by (local or network)\r
+                      management specifying the set of ports to which\r
+                      frames received from specific ports and containing\r
+                      specific destination addresses are allowed to be\r
+                      forwarded.  The value of zero in this table as the\r
+                      port number from which frames with a specific\r
+                      destination address are received, is used to\r
+                      specify all ports for which there is no specific\r
+                      entry in this table for that particular\r
+                      destination address.  Entries are valid for\r
+                      unicast and for group/broadcast addresses."\r
+              REFERENCE\r
+                      "IEEE 802.1D-1990: Section 6.7.2"\r
+              ::= { dot1dStatic 2 }\r
+\r
+          dot1dStaticEntry OBJECT-TYPE\r
+              SYNTAX  Dot1dStaticEntry\r
+              ACCESS  not-accessible\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "Filtering information configured into the bridge\r
+                      by (local or network) management specifying the\r
+                      set of ports to which frames received from a\r
+                      specific port and containing a specific\r
+                      destination address are allowed to be forwarded."\r
+              REFERENCE\r
+                      "IEEE 802.1D-1990: Section 6.7.2"\r
+              INDEX   { dot1dStaticAddress}--, dot1dStaticReceivePort }\r
+              ::= { dot1dStaticTable 1 }\r
+\r
+          Dot1dStaticEntry ::=\r
+              SEQUENCE {\r
+                  dot1dStaticAddress\r
+                      OCTET STRING (SIZE (6))\r
+--                  dot1dStaticReceivePort\r
+--                     INTEGER,\r
+--                  dot1dStaticAllowedToGoTo\r
+--                      INTEGER,\r
+--                  dot1dStaticStatus\r
+--                      INTEGER\r
+              }\r
+\r
+          dot1dStaticAddress OBJECT-TYPE\r
+              SYNTAX  OCTET STRING (SIZE (6))\r
+              ACCESS  read-write\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "The destination MAC address in a frame to which\r
+                      this entry's filtering information applies.  This\r
+                      object can take the value of a unicast address, a\r
+                      group address or the broadcast address."\r
+              REFERENCE\r
+                      "IEEE 802.1D-1990: Section 3.9.1, 3.9.2"\r
+              ::= { dot1dStaticEntry 1 }\r
+\r
+--          dot1dStaticReceivePort OBJECT-TYPE\r
+--              SYNTAX  INTEGER\r
+--              ACCESS  read-write\r
+--              STATUS  mandatory\r
+--              DESCRIPTION\r
+--                      "Either the value '0', or the port number of the\r
+--                      port from which a frame must be received in order\r
+--                      for this entry's filtering information to apply.\r
+--                      A value of zero indicates that this entry applies\r
+--                      on all ports of the bridge for which there is no\r
+--                      other applicable entry."\r
+--              ::= { dot1dStaticEntry 2 }\r
+\r
+--          dot1dStaticAllowedToGoTo OBJECT-TYPE\r
+--              SYNTAX  INTEGER\r
+--              ACCESS  read-write\r
+--              STATUS  mandatory\r
+--              DESCRIPTION\r
+--                      "The set of ports to which frames received from a\r
+--                      specific port and destined for a specific MAC\r
+--                      address, are allowed to be forwarded.  Each octet\r
+--                      within the value of this object specifies a set of\r
+--                      eight ports, with the first octet specifying ports\r
+--                      1 through 8, the second octet specifying ports 9\r
+--                      through 16, etc.  Within each octet, the most\r
+--                      significant bit represents the lowest numbered\r
+--                      port, and the least significant bit represents the\r
+--                      highest numbered port.  Thus, each port of the\r
+--                      bridge is represented by a single bit within the\r
+--                      value of this object.  If that bit has a value of\r
+--                      '1' then that port is included in the set of\r
+--                      ports; the port is not included if its bit has a\r
+--                      value of '0'.  (Note that the setting of the bit\r
+--                      corresponding to the port from which a frame is\r
+--                      received is irrelevant.)  The default value of\r
+--                      this object is a string of ones of appropriate\r
+--                      length."\r
+--              ::= { dot1dStaticEntry 3 }\r
+--\r
+--          dot1dStaticStatus OBJECT-TYPE\r
+--              SYNTAX  INTEGER {\r
+--                          other(1),\r
+--                          invalid(2),\r
+--                          permanent(3),\r
+--                          deleteOnReset(4),\r
+--                          deleteOnTimeout(5)\r
+--                      }\r
+--              ACCESS  read-write\r
+--              STATUS  mandatory\r
+--              DESCRIPTION\r
+--                      "This object indicates the status of this entry.\r
+--                      The default value is permanent(3).\r
+--                           other(1) - this entry is currently in use but\r
+--                                the conditions under which it will\r
+--                                remain so are different from each of the\r
+--                                following values.\r
+--                           invalid(2) - writing this value to the object\r
+--                                removes the corresponding entry.\r
+--                           permanent(3) - this entry is currently in use\r
+--                                and will remain so after the next reset\r
+--                                of the bridge.\r
+--                           deleteOnReset(4) - this entry is currently in\r
+--                                use and will remain so until the next\r
+--                                reset of the bridge.\r
+--                           deleteOnTimeout(5) - this entry is currently\r
+--                                in use and will remain so until it is\r
+--                                aged out."\r
+--              ::= { dot1dStaticEntry 4 }\r
+\r
+\r
+\r
+----------------------------------Protocol Filtering-------------------\r
+\r
+\r
+ProtocolFilterGRP OBJECT IDENTIFIER ::= {atmelSys 6}\r
+\r
+ProtocolFilterNum OBJECT-TYPE\r
+      SYNTAX  INTEGER \r
+      ACCESS  read-write\r
+      STATUS  mandatory\r
+      DESCRIPTION\r
+      "This parameter's value indicates the number of the currently\r
+      protocol filters."\r
+      ::= { ProtocolFilterGRP 1 }\r
+\r
+\r
+\r
+\r
+          ProtocolFilterTable OBJECT-TYPE\r
+              SYNTAX  SEQUENCE OF ProtocolFilterEntry\r
+              ACCESS  not-accessible\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "A table containing filtering information\r
+                      configured into the bridge by (local or network)\r
+                      management specifying the set of protocol filter."\r
+              ::= { ProtocolFilterGRP 2 }\r
+\r
+          protocolFilterEntry OBJECT-TYPE\r
+              SYNTAX  ProtocolFilterEntry\r
+              ACCESS  not-accessible\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "Filtering information configured into the bridge\r
+                      by (local or network) management specifying the\r
+                      set of protocol filter."\r
+              INDEX   { ProtocolFilterCode }\r
+              ::= { ProtocolFilterTable 1 }\r
+\r
+          ProtocolFilterEntry ::=\r
+              SEQUENCE {\r
+                  ProtocolFilterCode\r
+                      OCTET STRING (SIZE (2)),\r
+                  ProtocolFilterDescription\r
+                      DisplayString (SIZE (0..255)),\r
+                  ProtocolFilterActivity\r
+                      INTEGER\r
+              }\r
+\r
+          ProtocolFilterCode OBJECT-TYPE\r
+              SYNTAX  OCTET STRING (SIZE (2))\r
+              ACCESS  read-write\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "The protocol code configured into the bridge\r
+                      by (local or network) management specifying the\r
+                      set of protocol filter."\r
+              ::= { protocolFilterEntry 1 }\r
+\r
+          ProtocolFilterDescription OBJECT-TYPE\r
+              SYNTAX  DisplayString (SIZE (0..255))\r
+              ACCESS  read-write\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "A textual description of the protocol."\r
+              ::= { protocolFilterEntry 2 }\r
+\r
+          ProtocolFilterActivity OBJECT-TYPE\r
+              SYNTAX  INTEGER {enable(1),disable(2)}\r
+              ACCESS  read-write\r
+              STATUS  mandatory\r
+              DESCRIPTION\r
+                      "This object indicates the status of this filter."\r
+              ::= { protocolFilterEntry 3 }\r
+\r
+\r
+\r
+-----------------------------Ethernet STATISTICS-----------------------------\r
+\r
+\r
+EthStatisticsGRP OBJECT IDENTIFIER ::= {atmelSys 7}\r
+\r
+EthRxStatistics OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (64))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "Ethernet Rx Statistics\r
+               EthernetRxStatistics{\r
+                       unsigned long   TotalBytesRx;\r
+                       unsigned long   TotalPacketsRx;\r
+                       unsigned long   PacketCRCErrorRx;\r
+                       unsigned long   MulticastPacketRx;\r
+                       unsigned long   BroadcastPacketRx;\r
+                       unsigned long   ControlFramesRx;\r
+                       unsigned long   PauseFramesRx;\r
+                       unsigned long   UnknownOPCodeRx;\r
+                       unsigned long   AlignmentRxError;\r
+                       unsigned long   LengthOutOfRangeRx;\r
+                       unsigned long   CodeErrorRx;\r
+                       unsigned long   FalseCarrierRx;\r
+                       unsigned long   UndersizePacketsRx;\r
+                       unsigned long   OversizePacketsRx;\r
+                       unsigned long   TotalFragmentsRx;\r
+                       unsigned long   TotalJabberRx;\r
+               }"\r
+               ::= {EthStatisticsGRP 1 }\r
+\r
+EthTxStatistics OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (56))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "Ethernet Tx Statistics\r
+               EthernetTxStatistics{\r
+                       unsigned long   TotalBytesTx;\r
+                       unsigned long   TotalPacketsTx;\r
+                       unsigned long   PacketCRCErrorTx;\r
+                       unsigned long   MulticastPacketTx;\r
+                       unsigned long   BroadcastPacketTx;\r
+                       unsigned long   UnicastPacketTx;\r
+                       unsigned long   PauseFramesTx;\r
+                       unsigned long   SingleDeferPacketTx;\r
+                       unsigned long   MultiDeferPacketsTx;\r
+                       unsigned long   SingleCollisionsTx;\r
+                       unsigned long   MultiCollisionsTx;\r
+                       unsigned long   LateCollisionsTx;\r
+                       unsigned long   ExcessiveCollisionTx;\r
+                       unsigned long   TotalCollisionsTx;\r
+               }"\r
+\r
+               ::= {EthStatisticsGRP 2 }\r
+\r
+\r
+\r
+\r
+\r
+-----------------------------Test Mode Settings-----------------------------\r
+\r
+\r
+TestModeSettingsGRP OBJECT IDENTIFIER ::= {atmelSys 8}\r
+\r
+TestModeOnOff  OBJECT-TYPE\r
+                               SYNTAX INTEGER {enable(1),disable(2)}\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "When setting this attribute to enable(1), the device be\r
+                               at test mode."\r
+                               ::= { TestModeSettingsGRP 1 }\r
+\r
+\r
+TestModeCommandStruct  OBJECT-TYPE\r
+                               SYNTAX OCTET STRING (SIZE (8))\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "\r
+                               TestModeCommandStruct{\r
+                                       unsigned char Channel;\r
+                                       unsigned char Antenna;\r
+                                       unsigned char RegCR31;\r
+                                       unsigned char Rate;\r
+                                       unsigned char TxFiler;  //US - JPN\r
+                                       unsigned char Command;  //CMD_CONTINUOUS_TX 0x01, CMD_CONTINUOUS_RX 0x02, CMD_CARRIER_ACCURACY 0x03, CMD_IDLE 0x04\r
+                                       unsigned char Res1;\r
+                                       unsigned char Res2;\r
+                               } "\r
+\r
+                               ::= {TestModeSettingsGRP 2 }\r
+\r
+TestModeRadioConfiguration     OBJECT-TYPE\r
+                                       SYNTAX OCTET STRING (SIZE (14))\r
+                                       ACCESS read-write\r
+                                       STATUS mandatory\r
+                                       DESCRIPTION      \r
+                                       "Configuration of radio derive from tests. CR31 Reg 1-14"\r
+                                       ::= {TestModeSettingsGRP 8 }\r
+\r
+TestModeStatistics             OBJECT-TYPE\r
+                                       SYNTAX OCTET STRING (SIZE (8))\r
+                                       ACCESS read-only\r
+                                       STATUS mandatory\r
+                                       DESCRIPTION      \r
+                                       "Statistics derive from tests\r
+                                       TestModeStatistics{\r
+                                               unsigned long SuccessFrames;\r
+                                               unsigned long FailedFrames;\r
+                                       } "\r
+\r
+                                       ::= {TestModeSettingsGRP 9 }\r
+\r
+SleepModeOnOff                         OBJECT-TYPE\r
+                                       SYNTAX INTEGER {enable(1),disable(2)}\r
+                                       ACCESS read-write\r
+                                       STATUS mandatory\r
+                                       DESCRIPTION      \r
+                                       "When this attribute is set to enable(1), the device is at sleep mode."\r
+                                       ::= {TestModeSettingsGRP 10 }\r
+\r
+\r
+-----------------------------Authorized Settings-----------------------------\r
+\r
+\r
+AuthorizedSettingsGRP OBJECT IDENTIFIER ::= {atmelSys 9}\r
+\r
+AuthorizedUserPass     OBJECT-TYPE\r
+                               SYNTAX OCTET STRING (SIZE (16))\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "The community name of User."\r
+                               ::= {AuthorizedSettingsGRP 1 }\r
+\r
+\r
+AuthorizedAdminPass    OBJECT-TYPE\r
+                               SYNTAX OCTET STRING (SIZE (16))\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "The community name of Administrator."\r
+                               ::= {AuthorizedSettingsGRP 2 }\r
+\r
+\r
+AuthorizedManufactPass         OBJECT-TYPE\r
+                               SYNTAX OCTET STRING (SIZE (16))\r
+                               ACCESS read-write\r
+                               STATUS mandatory\r
+                               DESCRIPTION      \r
+                               "The community name of Manufacturer."\r
+                               ::= {AuthorizedSettingsGRP 3 }\r
+\r
+\r
+--*************************** wireless ***************************\r
+--****************************************************************\r
+\r
+-----------------------------Operational Settings-----------------------------\r
+\r
+\r
+OperationalSettingsGRP OBJECT IDENTIFIER ::= {wireless 1}\r
+\r
+\r
+\r
+\r
+operChannelID  OBJECT-TYPE\r
+       SYNTAX  INTEGER  {\r
+                       channel1(1),\r
+                       channel2(2),\r
+                       channel3(3),\r
+                       channel4(4),\r
+                       channel5(5),\r
+                       channel6(6),\r
+                       channel7(7),\r
+                       channel8(8),\r
+                       channel9(9),\r
+                       channel10(10),\r
+                       channel11(11),\r
+                       channel12(12),\r
+                       channel13(13),\r
+                       channel14(14)\r
+               }\r
+       ACCESS  read-write\r
+       STATUS  mandatory\r
+       DESCRIPTION\r
+               "The operating frequency channel. Valid numbers\r
+               are     as defind in ISO/IEC 8802-11:1999, 15.4.6.2."\r
+       ::= { OperationalSettingsGRP 1 }\r
+\r
+\r
+operESSIDLength OBJECT-TYPE\r
+     SYNTAX  INTEGER\r
+     ACCESS  read-write    \r
+     STATUS  mandatory\r
+     DESCRIPTION\r
+     "The ESSID Length"\r
+     ::= {OperationalSettingsGRP 2 }     \r
+\r
+operESSID OBJECT-TYPE\r
+     SYNTAX  OCTET STRING (SIZE (32))\r
+     ACCESS  read-write    \r
+     STATUS  mandatory\r
+     DESCRIPTION\r
+     "The network name. The size of the network name\r
+     should not be more than 32 characters long."\r
+     ::= {OperationalSettingsGRP 3 }     \r
+\r
+\r
+operRTSThreshold OBJECT-TYPE\r
+               SYNTAX  INTEGER  \r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the number of bytes in an \r
+               MPDU (frame), above which an RTS/CTS handshake will be\r
+               performed. Setting this attribute to be larger than the\r
+               maximum frame size, will prevent the RTS/CTS handshake \r
+               for frames trassmitted by this station."\r
+       ::= {OperationalSettingsGRP 4 }\r
+\r
+\r
+operFragmentationThreshold OBJECT-TYPE\r
+               SYNTAX  INTEGER  \r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the number of bytes in an \r
+               MPDU (frame), above which MPDU fragmentation will be\r
+               performed."\r
+       ::= {OperationalSettingsGRP 5 }\r
+       \r
+\r
+operPreambleType OBJECT-TYPE\r
+      SYNTAX  INTEGER {\r
+                       ShortPreamble(1),\r
+                       LongPreamble(2)\r
+               }\r
+      ACCESS  read-write\r
+      STATUS  mandatory\r
+      DESCRIPTION\r
+      "This parameter's value indicates the Preamble Type of device. Short or Long."\r
+             ::= {OperationalSettingsGRP 6 }\r
+\r
+\r
+operAuthenticationType OBJECT-TYPE\r
+               SYNTAX  INTEGER {\r
+       openSystem(1),\r
+       sharedKey(2),\r
+       BothType(3)\r
+       }\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the authentication algorithm\r
+               used during the authentication sequence.\r
+               The value of this attribute is one of the following:\r
+               1 - Open System,\r
+               2 - Shared Key\r
+               3 - Both Type "\r
+               ::= {OperationalSettingsGRP 7 }\r
+\r
+\r
+operBasicRates OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (4))\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates the basic and supported rates of Access Point.Valid format\r
+               is as defind in ISO/IEC 8802-11:1999"\r
+               ::= { OperationalSettingsGRP 8 }\r
+\r
+\r
+operAutoRateFallBack OBJECT-TYPE\r
+               SYNTAX INTEGER {enable(1),disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates if Auto Rate Fall Back is enable or disable."\r
+               ::= {OperationalSettingsGRP 9 }\r
+\r
+operAccessPointName OBJECT-TYPE\r
+     SYNTAX  OCTET STRING (SIZE (32))\r
+     ACCESS  read-write    \r
+     STATUS  mandatory\r
+     DESCRIPTION\r
+     "The AP name."\r
+     ::= {OperationalSettingsGRP 10 }     \r
+\r
+operSSIDBroadcasting OBJECT-TYPE\r
+               SYNTAX INTEGER {enable(1),disable(2)}\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute indicates if SSID is broadcasting or not."\r
+               ::= {OperationalSettingsGRP 11 }\r
+\r
+operAntennaSettings OBJECT-TYPE\r
+               SYNTAX INTEGER\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {OperationalSettingsGRP 12 }\r
+\r
+\r
+\r
+-----------------------------Privacy-----------------------------\r
+\r
+\r
+privacyGRP OBJECT IDENTIFIER ::= { wireless 2 }\r
+\r
+\r
+\r
+defaultWEPKey1 OBJECT-TYPE\r
+    SYNTAX OCTET STRING (SIZE (13))\r
+    ACCESS  write-only\r
+    STATUS  mandatory\r
+    DESCRIPTION    \r
+    "A WEP default secret key value."\r
+    ::= { privacyGRP 1 }    \r
+\r
+defaultWEPKey2 OBJECT-TYPE\r
+    SYNTAX OCTET STRING (SIZE (13))\r
+    ACCESS  write-only\r
+    STATUS  mandatory\r
+    DESCRIPTION    \r
+    "A WEP default secret key value."\r
+    ::= { privacyGRP 2 }    \r
+\r
+defaultWEPKey3 OBJECT-TYPE\r
+    SYNTAX OCTET STRING (SIZE (13))\r
+    ACCESS  write-only\r
+    STATUS  mandatory\r
+    DESCRIPTION    \r
+    "A WEP default secret key value."\r
+    ::= { privacyGRP 3 }    \r
+\r
+defaultWEPKey4 OBJECT-TYPE\r
+    SYNTAX OCTET STRING (SIZE (13))\r
+    ACCESS  write-only\r
+    STATUS  mandatory\r
+    DESCRIPTION    \r
+    "A WEP default secret key value."\r
+    ::= { privacyGRP 4 }    \r
+\r
+\r
+\r
+privacyWEPEnable OBJECT-TYPE\r
+               SYNTAX INTEGER {enable64(1),disable(2),enable128(3) }\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "This attribute, when enable64(1) or enable128(3), indicates that the 802.11\r
+               standard encryption mechanism (WEP) is implemented. WEP64, WEP128 or disable"\r
+               ::= {privacyGRP 5}\r
+\r
+\r
+privacyDefaultWEPKeyID OBJECT-TYPE\r
+               SYNTAX INTEGER   (1..4)\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION\r
+               "This attribute shall indicate the use of the first, second,\r
+               third or fourth DefaultWEPKey when set to values of one, two,\r
+               three or four."\r
+               ::= {privacyGRP 6}\r
+\r
+\r
+-----------------------------STATISTICS-----------------------------\r
+\r
+\r
+WLstatisticsGRP OBJECT IDENTIFIER ::= {wireless 3}\r
+\r
+wirelessStatistics OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (88))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "Wireless Statistics. 22 elements(ULONG)\r
+               WirelessStatistics{\r
+                       unsigned long   UnicastTransmittedPackets;\r
+                       unsigned long   BroadcastTransmittedPacets;\r
+                       unsigned long   MulticastTransmittedPackets;\r
+                       unsigned long   TransmittedBeacon;\r
+                       unsigned long   TransmittedACK;\r
+                       unsigned long   TransmittedRTS;\r
+                       unsigned long   TransmittedCTS;\r
+                       unsigned long   UnicastReceivedPackets;\r
+                       unsigned long   BroadcastReceivedPackets;\r
+                       unsigned long   MulticastReceivedPackets;\r
+                       unsigned long   ReceivedBeacon;\r
+                       unsigned long   ReceivedACK;\r
+                       unsigned long   ReceivedRTS;\r
+                       unsigned long   ReceivedCTS;\r
+                       unsigned long   ACKFailure;\r
+                       unsigned long   CTSFailure;\r
+                       unsigned long   RetryPackets;\r
+                       unsigned long   ReceivedDuplicate;\r
+                       unsigned long   FailedPackets;\r
+                       unsigned long   AgedPackets;\r
+                       unsigned long   FCSError;\r
+                       unsigned long   InvalidPLCP;\r
+               } "\r
+               ::= {WLstatisticsGRP 1 }\r
+\r
+\r
+-------------------------------Site Survey----------------------\r
+\r
+WLSiteSurveyGRP OBJECT IDENTIFIER ::= {wireless 4}\r
+\r
+ChannelStatus OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (14))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {WLSiteSurveyGRP 1}\r
+\r
+\r
+-------------------------------Associated Stations---------------------\r
+-----------------------------------------------------------------------\r
+\r
+AssociatedStationsGRP OBJECT IDENTIFIER ::= {wireless 5}\r
+\r
+AssociatedSTAsNum OBJECT-TYPE\r
+      SYNTAX  INTEGER (0..2007)\r
+      ACCESS  read-only\r
+      STATUS  mandatory\r
+      DESCRIPTION\r
+      "This parameter's value indicates the number of the currently\r
+      associated STAtions. Associated STAtions should not be more\r
+      than 2007."\r
+      ::= { AssociatedStationsGRP 1 }\r
+\r
+               \r
+AssociatedSTAsInfo     OBJECT-TYPE\r
+           SYNTAX      OCTET STRING (SIZE (24))\r
+           ACCESS  read-only\r
+           STATUS  mandatory\r
+           DESCRIPTION\r
+           "The associated STAtion's Information.\r
+               AssociatedSTAsInfo{\r
+                       unsigned short Index;\r
+                       unsigned char  MacAddress[6];\r
+                       unsigned char  Status;\r
+                       unsigned char  Port;\r
+                       unsigned char  ParentMacAddress[6];\r
+                       unsigned char  RSSI;\r
+                       unsigned char  LinkQuality;\r
+                       unsigned char  IP[4];\r
+                       unsigned char  Reserved1[2];\r
+               } "\r
+           ::= { AssociatedStationsGRP 2 }\r
+               \r
+\r
+-------------------------------Authorized Mac Addresses----------------------\r
+\r
+AuthorizedMacAddressesGRP OBJECT IDENTIFIER ::= {wireless 6}\r
+\r
+AuthorizationMacEnable OBJECT-TYPE\r
+               SYNTAX INTEGER (1..3)\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "When setting this attribute to 1, Internal MAC Authorization will be applied.\r
+                When setting this attribute to 2, no MAC Authorization will be applied.\r
+                When setting this attribute to 3, External MAC Authorization will be applied."\r
+               ::= {AuthorizedMacAddressesGRP 1}\r
+\r
+\r
+AuthorizedMac  OBJECT-TYPE\r
+           SYNTAX      OCTET STRING (SIZE (12))\r
+           ACCESS  read-write\r
+           STATUS  mandatory\r
+           DESCRIPTION\r
+           "The Authorized Wireless Mac Addresses\r
+               AuthorizedMacTableString{\r
+                       unsigned sort Action; //Set 0x01 or Get 0x02\r
+                       unsigned sort NumOfAllTableAddresses;\r
+                       unsigned sort NumOfCurrentAddress;\r
+                       unsigned char MacAddress[6];\r
+               } "\r
+\r
+           ::= { AuthorizedMacAddressesGRP 2 }\r
+\r
+AuthRadiusIP OBJECT-TYPE\r
+               SYNTAX IpAddress\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "The Radius Server IP Address."\r
+               ::= {AuthorizedMacAddressesGRP 3}\r
+\r
+AuthRadiusSecret OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (32))\r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "The Radius Server Secret Key."\r
+               ::= {AuthorizedMacAddressesGRP 4}\r
+\r
+AuthRadiusSecretLength OBJECT-TYPE\r
+            SYNTAX  INTEGER\r
+            ACCESS  read-write    \r
+            STATUS  mandatory\r
+            DESCRIPTION\r
+            "The Radius Server Secret Key Length."\r
+            ::= {AuthorizedMacAddressesGRP 5}     \r
+\r
+AuthRadiusPort OBJECT-TYPE\r
+               SYNTAX INTEGER  \r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "The source port for Radius Protocol packets."\r
+               ::= {AuthorizedMacAddressesGRP 6}\r
+\r
+AuthRadiusReauthorizationTime OBJECT-TYPE\r
+               SYNTAX INTEGER  \r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "The time for Radius Server Reauthorization."\r
+               ::= {AuthorizedMacAddressesGRP 7}\r
+\r
+AuthRadiusDestinPort OBJECT-TYPE\r
+               SYNTAX INTEGER  \r
+               ACCESS read-write\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "The destination port for Radius Protocol packets."\r
+               ::= {AuthorizedMacAddressesGRP 8}\r
+\r
+\r
+-----------------------------KNOWN ACCESS POINTS----------------------\r
+\r
+\r
+WLKnownAPGRP OBJECT IDENTIFIER ::= {wireless 7}\r
+\r
+wirelessKnownAPs OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (160))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "."\r
+               ::= {WLKnownAPGRP 1 }\r
+\r
+\r
+-----------------------------Network Settings----------------------\r
+\r
+\r
+NetworkSettingsGRP OBJECT IDENTIFIER ::= {wireless 8}\r
+\r
+NetworkSettings OBJECT-TYPE\r
+               SYNTAX OCTET STRING (SIZE (53))\r
+               ACCESS read-only\r
+               STATUS mandatory\r
+               DESCRIPTION      \r
+               "Network Settings.\r
+               struct NETWORK_SETTINGS {\r
+                       unsigned short reserved1;\r
+                       unsigned char BSSID[6];\r
+                       unsigned short InfoCapability;\r
+                       unsigned char Rssi;\r
+                       unsigned char Channel;\r
+                       unsigned char reserved2[2];\r
+                       unsigned char LinkQuality;\r
+                       unsigned char reserved3[5];\r
+                       unsigned char ESSID[32];\r
+                       unsigned char ESSLEN;\r
+               }"\r
+               ::= {NetworkSettingsGRP 1}\r
+\r
+\r
+\r
+--*************************** Traps ***************************\r
+--*************************************************************\r
+\r
+trapSTAMacAddress OBJECT-TYPE\r
+       SYNTAX OCTET STRING (SIZE (6))\r
+       ACCESS read-only\r
+       STATUS mandatory\r
+       DESCRIPTION      \r
+       "The MAC address of a station device"\r
+\r
+       ::= {traps 1}\r
+\r
+\r
+trapReassociation TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when a STAtion's reassosiation\r
+       request is received."\r
+       ::= 1\r
+\r
+trapRoamOut TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is used to indicate that a STAtion has\r
+       roamed out of the Wireless bridge's coverage area."\r
+       ::= 2\r
+\r
+trapAssociation TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "Indicates the reception of an association request packet\r
+       and     the sender STAtion's successful association with the\r
+       Access Point."\r
+       ::= 3\r
+       \r
+trapDisassociation TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when a disassociation notification\r
+       packet is received from a STAtion."\r
+       ::= 4\r
+\r
+trapAssociationExpire TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       trapSTAMacAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when the association's maximum time interval expires for\r
+       an associated STAtion."\r
+       ::= 5\r
+\r
+trapReset TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       sysReset\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when Access Point Resets."\r
+       ::= 6\r
+\r
+trapSettingPingIPAddress TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       operIPAddress\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when the Access Point IP address\r
+       is set with the transmition of a ping message."\r
+       ::= 7\r
+\r
+trapStartUp TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when Access Point Starts Up."\r
+       ::= 8\r
+\r
+trapFailedToEraseFlash TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "This trap message is sent when Access Point Failed To Erase Flash."\r
+       ::= 9\r
+\r
+trapAPClientScanning TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is scanning..."\r
+       ::= 10\r
+\r
+trapAPClientAuthenticating TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is authenticating with the AP."\r
+       ::= 11\r
+\r
+trapAPClientAssociating TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is associating with the AP."\r
+       ::= 12\r
+\r
+trapAPClientReAssociating TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is reassociating with the AP."\r
+       ::= 13\r
+\r
+trapAPClientAuthenticationFailed TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has failed authenticating with the AP."\r
+       ::= 14\r
+\r
+trapAPClientAssociationFailed TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has failed associating with the AP."\r
+       ::= 15\r
+\r
+trapAPClientConnected TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has been connected with the AP."\r
+       ::= 16\r
+\r
+trapAPClientDisconnected TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       bridgeRemoteBridgeBSSID\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has been disconnected from the AP."\r
+       ::= 17                         \r
+       \r
+trapAPClientScanFailed TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has failed scanning!"\r
+       ::= 18                         \r
+                        \r
+trapAPClientJoinFailed TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client has failed joining!"\r
+       ::= 19       \r
+\r
+trapAPClientJoining    TRAP-TYPE\r
+       ENTERPRISE atmel\r
+       VARIABLES {\r
+       }\r
+       DESCRIPTION\r
+       "Access Point Client is in join state."\r
+       ::= 20  \r
+\r
+END
\ No newline at end of file
index d004b856a47531035883b17bc900e6967c1e5939..c534604f2e94f68483978591fa63704b527813e4 100644 (file)
@@ -19,7 +19,7 @@
 
 ## Process this file with automake to produce Makefile.in
 
-SUBDIRS = intl lib src po Documentation ap-gl
+SUBDIRS = lib src ap-gl Documentation intl po
 
 AUTOMAKE_OPTIONS = gnu 
 
index 809e3fc8ee948c6ea04072eb90f59f146c5a7ac9..6438964f4ba38d8e70f40cbd289282a0acfecda1 100644 (file)
@@ -71,6 +71,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
+CURSESLIBS = @CURSESLIBS@
 CYGPATH_W = @CYGPATH_W@
 DATADIRNAME = @DATADIRNAME@
 DEFS = @DEFS@
@@ -157,7 +158,7 @@ sharedstatedir = @sharedstatedir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 
-SUBDIRS = intl lib src po Documentation ap-gl
+SUBDIRS = lib src ap-gl Documentation intl po
 
 AUTOMAKE_OPTIONS = gnu 
 
diff --git a/NEWS b/NEWS
index af15faac2f16ad778a89d23b6a374bd6584ee67d..0b06d6f5066c7161ac59f29522009890b5dbc270 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,11 @@
+ap-utils-1.4.1 => ap-utils-1.5
+       * New utilites: ap-rrd: to store stats from AP into RRD database,
+         ap-auth: command line utility to change the list of authorised MAC addresses,
+         ap-tftp: tftp client for upgrading ATMEL-based AP firmware.
+       * Now ap-config allow to change OEM information stored within the AP.
+       * Enhanced functionality and many bugfixes of existing utilites.
+       * Documentation and translation updates, Turkish translation added.
+
 ap-utils-1.4 => ap-utils-1.4.1
        * Decreaset timeouts in SNMP engine;
        * updates to build on Solaris, also now ap-utils works with SysV curses lib;
diff --git a/README b/README
index 7ed7118d4e05e06a4e65405c7d9a2523bdd45852..0752f21da2bdb32a35e51e570fbd83def9588074 100644 (file)
--- a/README
+++ b/README
@@ -73,96 +73,192 @@ and usually comes with your SNMP management utility for Windows.
 +------------------------------------------------------------------------------+
 |                              Supported Access Points                        |
 +------------------------------------------------------------------------------+
-| Manufacturer                 | Models                | Type                 |
+| Manufacturer (OEM)           | Model                 | AP MIB type          |
 +-------------------------------+-----------------------+----------------------+
-| Global Sun                   | ProWave GL2411AP      | ATMEL410             |
-| Linksys                      | WAP11 pre2 version    | ATMEL410             |
-| SMC                          | MC2655W               | ATMEL410             |
-| Netgear                      | ME102                 | ATMEL12350, ATMEL410 |
-| Eumitcom                     | WA3001A               | ATMEL410             |
-| Edimax                       | EW-7205               | ATMEL410             |
-| Target                       | WLAP 24212            | ATMEL410             |
-| Micronet                     | SP918                 | ATMEL410             |
-| Smartbridges                 | airPoint, airBridge   | ATMEL410             |
-| Belkin Components            | F5D6130               | ATMEL410             |
-| GemTek                       | TEW-210APB            | ATMEL410             |
-| GemTek                       | WX-1500               | NWN                  |
-| Intellinet                   | AP, Wireless Bridge   | ATMEL410             |
-| D-Link                       | DWL 900AP             | ATMEL410             |
-| D-Link                       | DWL 1000AP            | NWN                  |
-| WLink Syst. (D-Link subs.)   | Wen-2021              | ATMEL410             |
-| Advantek Networks             | AWN-AP128            | ATMEL410             |
-| Compex                       | WavePort WP11         | NWN                  |
-| Zoom                         | ZoomAir11AP           | NWN                  |
-| Telecom                      | T-Sinus 130X          | ATMEL410             |
-| Ovislink                     | Airlive WL-1100AP     | ATMEL410             |
-| CC&C Technologies            | Access Point          | ATMEL410             |
+| Acer                         | Warplink EJA-A        | NWN                  |
+| Advantek Networks             | AWN-AP128            | ATMEL410             |
+| Ark                          | SOHO-WLAP             | ATMEL410             |
+| Asus                         | WL-300                | ATMEL410             |
+| Belkin Components            | F5D6130               | ATMEL410             |
+| BOSSLAN                      | BOSSWAP               | ATMEL12350, ATMEL410 |
+| CC&C Technologies            | Access Point          | ATMEL410             |
+| CNet                         | CNAP-711              | ATMEL410             |
+| Cameo Communications          | WLB-2000/2001                | ATMEL410             |
 | Compaq                       | WL-400                | NWN (mostly works)   |
-| Asus                         | WL-300                | ATMEL410             |
-| Topcom                       | SkyLanR@cer 500       | ATMEL410             |
-| Fiberline                    | WL-1200AP             | ATMEL12350           |
-| CNet                         | CNAP-711              | ATMEL410             |
-| Yakumo                       | Access Point          | ATMEL410             |
-| Dynalink (Askey)             | RTW020                | ATMEL410             |
-| Acer                         | Warplink EJA-A        | NWN                  |
+| Compex                       | WavePort WP11         | NWN                  |
+| D-Link                       | DWL 900AP (rev. 1)    | ATMEL410             |
+| D-Link                       | DWL 1000AP            | NWN                  |
+| D-com                                | WX-1590 web           | ATMEL12350           |
+| Dynalink (Askey)             | RTW020                | ATMEL410             |
+| Edimax                       | EW-7205APB            | ATMEL410             |
+| Eumitcom                     | WA3001A               | ATMEL410             |
+| Fiberline                    | WL-1200AP             | ATMEL12350           |
+| GemTek                       | TEW-210APB            | ATMEL410             |
+| GemTek                       | WX-1500               | NWN                  |
+| GigaFast                     | WF711-AP              | ATMEL12350           |
+| Global Sun Technology                | ProWave GL2411AP      | ATMEL410             |
+| i-Tec                                | AP SILVER             | ATMEL410             |
+| i-Tec        (Tellus A13 OEM)        | AP GOLD (blue front)  | ATMEL410             |
+| i-Tec        (Tellus A14 OEM)        | AP GOLD (black front) | ATMEL12350           |
+| Infosmart                    | INAP88                | ATMEL410             |
+| Intellinet                   | AP, Wireless Bridge   | ATMEL410             |
+| InterEpoch                    | IWE1000A              | ATMEL410             |
+| Linksys (GL2411AP OEM)       | WAP11 pre2 version    | ATMEL410             |
+| Micronet                     | SP918                 | ATMEL410             |
+| Netgear                      | ME102                 | ATMEL12350, ATMEL410 |
+| OSBRiDGE                      | m2410                 | ATMEL12350           |
+| OSBRiDGE                      | p2410                 | ATMEL12350           |
+| OSBRiDGE                      | p2410i                | ATMEL12350           |
+| Ovislink                     | Airlive WL-1100AP     | ATMEL410             |
+| SMC                          | MC2655W               | ATMEL410             |
+| smartBridges                 | airPoint, airBridge   | ATMEL410             |
+| SparkLAN (Gemtek subs.)      | WX-1590               | ATMEL410             |
+| SparkLAN (Gemtek subs.)      | WX-1590L              | ATMEL12350           |
 | Svec                         | FD1811                | ATMEL12350, ATMEL410 |
-| Tellus Group Corp            | A14                   | ATMEL12350           |
-| Wline                         | A14                  | ATMEL12350           |
-| i-Tec                         | i-Tec AP SILVER      | ATMEL410             |
-| i-Tec                         | i-Tec AP GOLD                | ATMEL410             |
-| Infosmart                    | INAP88                | ATMEL410             |
-| Ark                          | SOHO-WLAP             | ATMEL410             |
-| Svec                          | SOHO-WLAP            | ATMEL410             |
-| GigaFast                      | WF711-AP             | ATMEL12350           |
-| Cameo Communications          | WLB-2000/2001         | ATMEL410            |
-| Wline                         | W-2000                | ATMEL410             |
+| Svec                         | SOHO-WLAP             | ATMEL410             |
+| Target                       | WLAP 24212            | ATMEL410             |
+| Telecom                      | T-Sinus 130X          | ATMEL410             |
+| Tellus Group Corp            | A14                   | ATMEL12350           |
+| Topcom                       | SkyLanR@cer 500       | ATMEL410             |
+| Wline                                | A14                   | ATMEL12350           |
+| Wline                                | W-2000                | ATMEL410             |
+| WLink Syst. (D-Link subs.)   | Wen-2021              | ATMEL410             |
+| Yakumo                       | Access Point          | ATMEL410             |
+| Zoom                         | ZoomAir11AP           | NWN                  |
 +-------------------------------+-----------------------+----------------------+
 
 Please note that although many of these devices may use the same MIB enterprise
 identification, the actual MIBs may slightly differ, depending on whether
-the manufacturer has decided upon hardware modifications.
+the manufacturer has decided upon firmware modifications.
 In ap-config, an effort has been made to only include functionality
 for features that are common to 2 or more MIBs with the same enterprise
 ID. If you have qualms, then please send us the MIB file that came
 with your device!
 
+
 WARNING 1: There actually exist two different kinds of ATMEL private MIBs,
-regardless of its enterprise ID - each with a different set of operational
-modes.
-One type the private MIB comes with is often referred to as "Access Point"
-firmware, often marked with shortcut "AP". Another one is referred to as
-"Wireless Adapter firmware", marked with shortcut "WA".
-"WA" firmware has questionable advantage that it is claimed to allow APs
-equipped with this firmware to connect with non-ATMEL-based APs of other
-manufacturers using "AP-client (Infrastructure)" mode (in reality, this is,
-unfortunately, often false), at cost of supporting no true "AP" mode
-(only Ad-Hoc and AP-client modes are available).
+regardless of its enterprise ID - each with different set of operational modes.
+The first MIB type comes with firmware referred to as 'Access Point firmware'
+('AP firmware').
+Second MIB type comes with firmware referred to as 'Wireless Adapter firmware'
+('WA firmware').
+WA firmwares have questionable advantage of being able to connect
+to WDS-equipped APs (some non-ATMEL-based APs) using "AP-Client
+(Infrastructure)" mode (in reality, this is, unfortunately, often false),
+at cost of supporting no true "AP" mode (only Ad-Hoc and AP-client modes
+are available).
 
 Whenever you can, use firmware labelled as "AP" and not "WA".
 "AP" version supports most networking modes, compared to "WA" version.
-MIBs AND FIRMWARES WITH "WA" LABEL ARE NOT SUPPORTED WITH AP-UTILS!
+!!!!!!!!! "WA" FIRMWARES ARE _NOT_ SUPPORTED BY AP-UTILS !!!!!!!!!
 They may appear to _partially_ work with ap-utils, but you
 can cause harm to your AP if you use ap-utils with such firmware.
 Do not complain if you use ap-utils with such firmware and it damages
 your AP!
 
+The only thing you may eventually use "WA" firmware for, is to downgrade
+your device to "AP" firmware with number lower than the one used previously
+- see below. This applies to devices with RFMD radio only.
+
+To understand firmware naming schemes better, it is highly recommended
+that you'll read the ap-tftp manpage.
+
+
 WARNING 2: Users of Tellus A14 and its OEM versions (Wline A14, Veriplus
-WL-A14, etc. - ATMEL12350 AP "types"): Beware. Firmwares up to (including)
-version 0.2.2.19 for these APs contain a SERIOUS BUG that may
-result in unpredictable and persistent lock-up of your AP, when configured
-over SNMP or even via its web interface. There's unfortunately no way
-of how to "resurrect" such a locked-up AP - the only option is to return
-the AP to its supplier for replacement.
+WL-A14, etc. - generally all AP types with ATMEL12350 MIB, equipped with
+web interface):
+Beware! Firmwares up to (including) version 0.2.2.19 for these APs contain
+a SERIOUS BUG that may result in unpredictable and persistent lock-up
+of your AP, when configured over SNMP or even via its web interface.
+There's unfortunately no way of how to "resurrect" such a locked-up AP
+- the only option is to return the AP to its supplier for replacement.
+
 To be on the safe side, we recommend everyone to upgrade to any firmware
-version above 0.2.2.19. At the time of this writing,
-you should be able to download firmware v. 0.2.2.21 including
-the corresponding TFTP utility for example from the following link:
+version above 0.2.2.19. More on firmware upgrade subject see next section.
+
+
+WARNING 3: Users of smartBridges equipment ("airPoint" and "airBridge"
+models): pay close attention to the WARNING 1 - only the "AP" firmware
+is supported! Do not expect "airBridge" models with their native
+firmware to work properly with ap-utils - only "airPoint" device
+firmware is supported. Future support for "airBridge" device firmware
+is very unlikely, becouse it really supports a subset of "airPoint"
+(AP) firmware functionality.
+
+All named devices use identical hardware with differences only in
+in connector types used, casing and use of industrial-grade components.
+This also means that the firmware for "airPoint" and "airBridge" models
+could be used interchangeably among these kinds of devices, however,
+loading of airPoint firmware into airBridge device has not been verified
+yet, so unless this warning disappears or states otherwise, flashing
+your (airBridge) device with AP firmware for different (airPoint)
+model (in order to gain ap-utils support) is discouraged.
+
+
+Firmware available free of charge for ATMEL12350 MIB devices:
+-------------------------------------------------------------
+If you own device that is detected as 'ATMEL12350 MIB' by ap-utils, chances
+are that free-of-charge EZYNET-enhanced firmware upgrade is eligible for you!
+Upgrading firmware in your AP may have following advantages for you:
+
+- supporting more options; apparently the richest set of them available
+  for ATMEL+RFMD devices to day
+
+- preventing 'death by reconfiguration bug' present in older firmwares.
+
+- RSSI diagnostics in both AP and client modes at no cost!
+
+Your device will qualify for free-of-charge firmware upgrade in case
+it would satisfy the following (SATISFYING ALL POINTS IS MANDATORY!):
+
+1. It is detected as 'ATMEL12350' MIB and 'GEMTEK' vendor MIB extension
+   by ap-utils.
+
+2. It has second SRAM chip. The sign of second SRAM chip availability
+   is presence of (poor, locky) web management interface.
+
+3. it runs firmware 0.2.x.x except 0.2.1.1
+
+Should it satisfy all three points above, you may now perform upgrading.
+
+0. READ ENTIRE MANPAGE FOR ap-tftp !!!
+
+1. download the AP firmware (*.rom files) by EZYNET from one of the following
+   URLs:
+
+   ftp://ftp.unob.cz/pub/firmware/wlan/atmel+rfmd/
+
+   http://www.e-zy.net/  (descend through sections: Support -> AT510 based
+   units -> Firmware -> AP)
+
+2. perform AP upgrade either by original windows-based ATMEL tftp client,
+   or by 'ap-tftp' utility supplied with ap-utils:
+
+   First, upgrade with 0.2.0.20.rom image. This one is so-called 'backup'
+   firmware. It lacks (needless) web, and is activated only if so-called
+   'primary' firmware fails for some reason.
+
+   Second, upgrade with 0.2.2.20.rom image. This is the 'primary' firmware
+   with web interface (which you apparently wont use at all).
+
+3. You now have device with ATMEL12350 MIB & EZYNET extensions !!!
+
+Should you observe that the device suddenly switched to 0.2.0.20 firmware
+after some time, it means that the 'primary' firmware has been damaged
+in flash by some odd circumstances, and you should repeat step 2. above
+to fix it.
+[Note: this may only happen under _extremely_ rare circumstances, when,
+for example, lightning stroke appears too close to the AP, or when AP
+power supply voltage suddenly drops below sane level and returns back]
 
-http://www.sparklan.com/download.htm
+Should you need firmware downgrade for any reason, it is possible, provided
+that you have the original firmware *.rom file(s) for your devices.
+If your firmware was 0.2.2.19 or lower, you'll also need to temporarily
+upgrade to the following WA firmware, which will allow you to subsequently
+downgrade to AP firmware release with lower number than (EZYNET's) 0.2.2.20:
 
-or send your AP to its supplier for firmware replacement in case
-he's able to supply you with customarily enhanced firmware version
-above 0.2.2.19.
+http://www.sparklan.com/Downloads/11b/AP/WX-1590_Client-Mode/Firmware/
+Client_Mode_firmware_WX-1590_v0.3.2.6.zip
 
 Frequently Asked Questions
 --------------------------
@@ -178,7 +274,7 @@ Windows-based setup utility.
 Try to install the accompanying Windows SNMP setup utility, and
 browse the directory to which you have got it installed.
 If you find the mentioned file, send this file via e-mail
-to <aputils-wmibs at cedric dot vabo dot cz> or <roma at polesye dot net>.
+to <jr-aputils at cedric dot vabo dot cz> or <roma at polesye dot net>.
 Chances are, that this file matches more or less the MIBs
 of other devices already being supported by ap-utils, and thus the
 utility code can be tailored accordingly to support your AP
@@ -186,10 +282,16 @@ in as broad number of its features as possible.
 
 Where to get more information
 -----------------------------
-You can find info about utils from this README and from man pages
-for utilites; as well as in INSTALL and TODO files at toplevel directory.
+You can find info about utilities from this README and from respective
+man pages (see Documentation directory), as well as from INSTALL and TODO
+files in the toplevel directory.
+Documentation/FAQ file may be of some interrest to you too.
 Additional info and useful links may be found in the Documentation
 directory of this package and on our web page http://ap-utils.polesye.net/ .
+Note, however, that informations on the web may somewhat lag behind this
+source.
+You may also peek into ChangeLog file if you are more of a technical person,
+for a list of changes and developer notes.
 We also run maillist to discuss any related topics - for more info please
 visit http://ap-utils.polesye.net/ .
 
@@ -198,8 +300,8 @@ Contributing & reporting problems
 Any help in developing, bugfixing and testing is welcome. Also any
 additional documentation, free hardware to support this project and job offers
 are greatly welcome.
-Please send your comments, if any, to my email -
-roma at polesye.net or to the maillist.
+Please send your comments, if any, to my email - roma at polesye.net
+or to the maillist.
 
 Before sending bugreports please be sure to read docs (firstly, README and FAQ)
 and upgrade to the latest version of ap-utils. If problem still exists, then
diff --git a/THANKS b/THANKS
index 99f577d35abf677c38ef306f2e0dc2b19416a7a7..9e7945cccdaacdce04790846bd96c0d3f88987a7 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -30,7 +30,8 @@ Michel Robitaille <robitail AT IRO.UMontreal.CA> - french localization
 Andy Igoshin <ai at vsu.ru> - AIX 4.3.3 and AIX native compiler port, a lot of big_endian and code fixes
 Rahul G <rahul at smartbridges.com> - sources to encode object identifiers
 Wojciech Puchar <wojtek at tensor.3miasto.net> - polish localization, hardware for testing
-Jan Rafaj <jr-aputils at cedric.vabo.cz> - spelling fixes, bugfixes, functionality enhancements, Q/A
+Jan Rafaj <jr-aputils at cedric.vabo.cz> - spelling fixes, bugfixes, many functionality enhancements, testing, further development and Q/A
+E-ZY.NET for very kind permission to freely use their functionally enhanced firmware for ATMEL+RFMD boards
 Ashley Gittins <ap-utils at purple dot dropbear dot id dot au> - ap-mrtg changes to support ATMEL12350/ME-102
 Daniel E. Eisenbud <eisenbud at cbio dot mskcc dot org> - MacOS X and Solaris porting
 
diff --git a/TODO b/TODO
index 8bada48341b8a3dfab0248dbeed404d506c31369..1a5acf0de384e75009f4a65c3fc36c3833c3f6b4 100644 (file)
--- a/TODO
+++ b/TODO
@@ -4,26 +4,45 @@ TODO for ap-utils:
 * porting to other Unix'es and platforms (ALWAYS)
 * support new AP's (ALWAYS)
 
-* (maybe): move S_DEFCHAN message up to screen beginning in set_oeminfo.c
+* try to implement an ap-dfu utility [already scheduled for next release!]
+  - ap-dfu, ap-dfu.8 (internal developer's notes):
+    - what DFU really stands for (and that ap-dfu contains some extra
+      Atmel-specific functionality)
+    - only for ATMEL AT76C510-based hardware
+    - *hci stuff - at least on Linux (prerequisities)
+    - PIDs and VIDs for INTERSIL & RFMD based boards.
+      If the AP does not present itself with PID & VID in kernel
+      ring buffer (use dmesg for displaying) after it has been plugged
+      to USB interface, it means that the flash content is apparently
+      damaged and AP dead (the only solution in such case is to return
+      AP to the reseller for replacement).
+    - mandate user to read ap-tftp.8 warning sections first!
+    - it is safe (?) if AP experiences power outtage during upgrade, or
+      if ap-dfu bails out with error due to USB interface inconsistency.
+      In such case, it is safe to start ap-dfu again, and it will continue
+      where it left off - typically, when the AP is stuck in DFU mode with
+      steady LEDs light.
+* (WA* firmware support?): get_mib_details(): rename to get_fw_details(); add
+  FW (AP, WA) type detection (fw_type); rename ap_type to fw_eprises;
+  rename ap_vendorext to fw_vendorext; enterprises should be named
+  410, 12350, NWN (strip down length)
+* make the screen appearance of deletion order same as for MAC auth. list
+* implement 'Insert' function for places where item lists are used (MAC
+  auth. list, list of APs from ~/.ap-config)
 * add S Search key in get_opts that would allow - instead of connecting -
   searching for APs first
-
-* implement displaying of 'NetworkSettings' OID structure in place of
-  'Stations' submenu, if the target AP using VERNET ATMEL12350 MIB
-  is in STA mode. This would finally bring us client-mode diagnostics
-  (client-side RSSI and wireless connection status), that has been
-  been missing so badly for a long time (for other ATMEL12350 MIBs
-  and ATMEL410 non-SB MIBs, it will apparently stay missing forever,
-  unfortunately)
+* WISHLIST (and very unlikely this will happen): assemble JTAG interface
+  documentation (and try to implement ap-jflash utility as last-resort flash
+  for APs with 'dead' flash memory content)
+* try to assemble table of configuration value names & corresponding offsets
+  in *.cfg (default conf.) files (may be different among different firmwares!)
 * switch the 'Status' field in 'Stations' from numeric to verbose representation
-* add 802.1X support for ATMEL12350 APs
 * patch test.c so that it works with ATMEL12350 devices
-* update src/ap-gl.c to reflect changes made in src/stations.c during 1.4.1pre*
-  transition
 * try to not rely on actually configured subnet information on each
   network interface in ap scan
 * implement rssi view toggling for nwn_stations()
 * update manpages
-* increase/disable knownAPs limit
+* increase/disable KnownAPs limit
 * use iptraf like ethernet.desc file to store stations description
 * add per client LQ and RSSI stats to ap-mrtg
+* add man page for ap-rrd
index 3d763da1914e5800961bb4d2f9296de1f6ce597d..39399d44ccd513b91656a7b7bd4130e31fc86be5 100644 (file)
@@ -23,6 +23,6 @@ LIBS = @INTLLIBS@ @LIBS@
 
 bin_PROGRAMS = ap-gl
  
-ap_gl_SOURCES = ap-gl.c auth_mac.c bridge.c stations.c
-ap_gl_LDADD = ../lib/libap.a -lmenu
+ap_gl_SOURCES = ap-gl.c auth.c bridge.c stations.c
+ap_gl_LDADD = ../lib/libap.a -lmenu @CURSESLIBS@
 
index ff3720d4c4e36d41bd1812e4df7e650e2f2ffa1d..c14073513d10af6562c9faebbd9dca54a597bc88 100644 (file)
@@ -71,6 +71,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
+CURSESLIBS = @CURSESLIBS@
 CYGPATH_W = @CYGPATH_W@
 DATADIRNAME = @DATADIRNAME@
 
@@ -161,8 +162,8 @@ INCLUDES = -I../lib -I../intl -I..
 
 bin_PROGRAMS = ap-gl
 
-ap_gl_SOURCES = ap-gl.c auth_mac.c bridge.c stations.c
-ap_gl_LDADD = ../lib/libap.a -lmenu
+ap_gl_SOURCES = ap-gl.c auth.c bridge.c stations.c
+ap_gl_LDADD = ../lib/libap.a -lmenu @CURSESLIBS@
 subdir = ap-gl
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
@@ -171,7 +172,7 @@ CONFIG_CLEAN_FILES =
 bin_PROGRAMS = ap-gl$(EXEEXT)
 PROGRAMS = $(bin_PROGRAMS)
 
-am_ap_gl_OBJECTS = ap-gl.$(OBJEXT) auth_mac.$(OBJEXT) bridge.$(OBJEXT) \
+am_ap_gl_OBJECTS = ap-gl.$(OBJEXT) auth.$(OBJEXT) bridge.$(OBJEXT) \
        stations.$(OBJEXT)
 ap_gl_OBJECTS = $(am_ap_gl_OBJECTS)
 ap_gl_DEPENDENCIES = ../lib/libap.a
@@ -180,7 +181,7 @@ ap_gl_LDFLAGS =
 DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ap-gl.Po ./$(DEPDIR)/auth_mac.Po \
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ap-gl.Po ./$(DEPDIR)/auth.Po \
 @AMDEP_TRUE@   ./$(DEPDIR)/bridge.Po ./$(DEPDIR)/stations.Po
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -234,7 +235,7 @@ distclean-compile:
        -rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ap-gl.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth_mac.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bridge.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stations.Po@am__quote@
 
index 610d949c43635e6b30e696942c7bd5fccdd736cf..b947255bb6c69c408bd7ff175778753dc0522c91 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *      ap-config.c from Wireless Access Point Utilites for Unix
+ *      ap-gl.c from Wireless Access Point Utilites for Unix
  *
  * Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
  *
@@ -29,7 +29,7 @@
 
 WINDOW *win_for_menu, *sub_for_menu, *win_for_help, *main_win, *main_sub;
 char *community, *name;
-int sockfd, atmel410_filter = 1, wait_mode = WAIT_FOREVER;
+int atmel410_filter = 1, wait_mode = WAIT_FOREVER;
 struct in_addr ap_ip;
 char *prog_title = "Wireless AP Configurator for GlobalSun";
 char set_oeminfo_allowed = 0;
@@ -42,7 +42,7 @@ void config_menu()
         0},
        {_("Wireless"), _("Set wireless options"), atmel_wireless, 0},
        {_("Privacy"), MENU_ENCRYPT, wep, 0},
-       {_("MAC auth"), MENU_MAC, atmel_auth_mac, 0},
+       {_("Auth"), MENU_AUTH, atmel_auth, 0},
        {_("Community"), MENU_COMMUNITY, AuthorizedSettings, 0},
        {_("Radio"), _("Set radio signal power and antenna options"),
         power, 0},
@@ -131,10 +131,19 @@ int main( /*int argc, char **argv */ )
     initscr();
     if (has_colors()) {
        start_color();
-       init_pair(1, COLOR_BLACK, COLOR_CYAN);
-       init_pair(2, COLOR_BLACK, COLOR_WHITE);
-       init_pair(3, COLOR_BLACK, COLOR_GREEN);
-       init_pair(4, COLOR_WHITE, COLOR_RED);
+
+       /* Never trust that these are defined by default. */
+       init_pair (COLOR_RED, COLOR_RED, COLOR_BLACK );
+       init_pair (COLOR_GREEN, COLOR_GREEN, COLOR_BLACK);
+       init_pair (COLOR_YELLOW, COLOR_YELLOW, COLOR_BLACK);
+       init_pair (COLOR_BLUE, COLOR_BLUE, COLOR_BLACK);
+       init_pair (COLOR_MAGENTA, COLOR_MAGENTA, COLOR_BLACK );
+       init_pair (COLOR_CYAN, COLOR_CYAN, COLOR_BLACK);
+
+       init_pair(11, COLOR_BLACK, COLOR_CYAN);
+       init_pair(12, COLOR_BLACK, COLOR_WHITE);
+       init_pair(13, COLOR_BLACK, COLOR_GREEN);
+       init_pair(14, COLOR_WHITE, COLOR_RED);
     }
 
     noraw();
@@ -147,12 +156,12 @@ int main( /*int argc, char **argv */ )
 
 /* draw help win */
     win_for_help = newwin(1, COLS, LINES - 1, 0);
-    wattrset(win_for_help, COLOR_PAIR(1));
+    wattrset(win_for_help, COLOR_PAIR(11));
     print_help("");
 
 /* draw title win */
     win_for_title = newwin(1, COLS, 0, 0);
-    wattrset(win_for_title, COLOR_PAIR(1));
+    wattrset(win_for_title, COLOR_PAIR(11));
     for (i = 0; i < COLS; i++)
        waddch(win_for_title, ' ');
     sprintf(message, _("Wireless Access Point Configurator ver. %s"),
@@ -165,7 +174,7 @@ int main( /*int argc, char **argv */ )
     sub_for_menu = derwin(win_for_menu, LINES - 5, MCOLS - 2, 2, 1);
     set_menu_win(NULL, win_for_menu);
     set_menu_sub(NULL, sub_for_menu);
-    attrset(COLOR_PAIR(1));
+    attrset(COLOR_PAIR(11));
 
     /* íÁÌÀÀ ÒÁÍËÕ */
     waddch(win_for_menu, ACS_BSSB);
diff --git a/ap-gl/auth.c b/ap-gl/auth.c
new file mode 100644 (file)
index 0000000..fe3960f
--- /dev/null
@@ -0,0 +1,482 @@
+/*
+ *      auth.c from Access Point SNMP Utils for Linux
+ *
+ * Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License Version 2 from
+ * June 1991 as published by the Free Software Foundation.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include "ap-utils.h"
+
+#define MAX_LINES LINES-6
+#define PACKET_ERROR _("AuthorizedMacTableString packet error")
+
+#define AUTH_TITLE _("APClient authorization credentials")
+
+#define MAC_AUTH _("[A] MAC authorization: ")
+#define MAC_ADD  _("Enter MAC: ")
+#define MAC_DEL  _("Delete Num: ")
+#define MAC_HEADER _("NUM       MAC address")
+#define MAC_HELP _("A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit")
+#define MAC_RADIUS_HELP _("A - auth; IPSTF - set; W - write conf; Q - quit")
+#define MAC_NONE_HELP _("A - auth; W - write conf; Q - quit")
+
+#define RADIUS_IP _("[I] RADIUS SERVER IP: ")
+#define RADIUS_DEST_PORT _("[P] RADIUS SERVER PORT: ")
+#define RADIUS_SECRET _("[S] RADIUS SERVER SECRET: ")
+#define RADIUS_TIME _("[T] REAUTHORIZATION TIME: ")
+#define RADIUS_PORT _("[F] RADIUS SOURCE PORT: ")
+
+extern WINDOW *main_sub;
+extern int LINES;
+extern short ap_type;
+
+void atmel_auth()
+{
+    struct AuthorizedMacTableString {
+       unsigned int short Action;
+       unsigned int short NumOfAllTableAddresses;
+       unsigned int short NumOfCurrentAddress;
+       unsigned char MacAddress[6];
+    } *AuthMac = NULL, get;
+
+    struct MacListStat *pmac, *first = NULL, *curr = NULL;
+    uint32_t auth_mac_hw;
+
+    char EnableAuthMAC[] =
+       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
+       0x02, 0x06, 0x01, 0x00
+    };
+    char AutorizedMac[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
+       0x02, 0x06, 0x02, 0x00
+    };
+
+    char AuthRadiusIP[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
+       0x02, 0x06, 0x03, 0x00
+    };
+    char AuthRadiusSecret[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
+       0x02, 0x06, 0x04, 0x00
+    };
+    char AuthRadiusSecretLength[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
+       0x02, 0x06, 0x05, 0x00
+    };
+    char AuthRadiusPort[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
+       0x02, 0x06, 0x06, 0x00
+    };
+    char AuthRadiusReauthorizationTime[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
+       0x02, 0x06, 0x07, 0x00
+    };
+    char AuthRadiusDestinPort[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
+       0x02, 0x06, 0x08, 0x00
+    };
+
+    char *auth_types[] = { _("Internal"), OFF, "RADIUS" };
+
+    struct in_addr radius_ip;
+    char message[1024], m_authmac = 0, radius_secret[32], m_radius_secret=0, m_radius_ip=0;
+    int radius_port, radius_time, radius_dest_port, m_radius_port=0, m_radius_time=0, m_radius_dest_port=0;
+    int i, total_mac, auth_mac = 0, mac_num = 0, begin=0, end=0, c=0;
+    varbind varbinds[7];
+
+    memcpy(radius_secret, _("<hidden>"), 32); 
+
+    varbinds[0].oid = EnableAuthMAC;
+    varbinds[0].len_oid = sizeof(EnableAuthMAC);
+    varbinds[0].type = NULL_VALUE;
+    varbinds[0].len_val = 0;
+
+    varbinds[1].oid = AuthRadiusIP;
+    varbinds[1].len_oid = sizeof(AuthRadiusIP);
+    varbinds[1].type = NULL_VALUE;
+    varbinds[1].len_val = 0;
+
+    varbinds[3].oid = AuthRadiusPort;
+    varbinds[3].len_oid = sizeof(AuthRadiusPort);
+    varbinds[3].type = NULL_VALUE;
+    varbinds[3].len_val = 0;
+
+    varbinds[4].oid = AuthRadiusReauthorizationTime;
+    varbinds[4].len_oid = sizeof(AuthRadiusReauthorizationTime);
+    varbinds[4].type = NULL_VALUE;
+    varbinds[4].len_val = 0;
+
+    varbinds[2].oid = AuthRadiusDestinPort;
+    varbinds[2].len_oid = sizeof(AuthRadiusDestinPort);
+    varbinds[2].type = NULL_VALUE;
+    varbinds[2].len_val = 0;
+
+    print_help(WAIT_RET);
+    if (snmp(varbinds, 5, GET) < 5) {
+       print_helperr(ERR_RET);
+       goto exit;
+    }
+    print_top(NULL, AUTH_TITLE);
+
+    auth_mac = *(varbinds[0].value);
+    memcpy(&radius_ip.s_addr, varbinds[1].value, 4);
+    memcpy(&radius_dest_port, varbinds[2].value, 2);
+    radius_dest_port = ntohs(radius_dest_port);
+    memcpy(&radius_port, varbinds[3].value, 2);
+    radius_port = ntohs(radius_port);
+    memcpy(&radius_time, varbinds[4].value, 2);
+    radius_time = ntohs(radius_time);
+       
+    sprintf(message, "%s%s", MAC_AUTH, auth_types[auth_mac-1]);
+    mvwaddstr(main_sub, 0, 0, message);
+    wrefresh(main_sub);
+
+    total_mac = 0;
+    mac_num = 0;
+
+    while (mac_num <= total_mac) {
+       get.Action = 0x02; rshort(get.Action);
+       get.NumOfAllTableAddresses = total_mac; rshort(get.NumOfAllTableAddresses);
+       get.NumOfCurrentAddress = mac_num; rshort(get.NumOfCurrentAddress);
+
+       varbinds[0].oid = AutorizedMac;
+       varbinds[0].len_oid = sizeof(AutorizedMac);
+       varbinds[0].value = (char *) &get;
+       varbinds[0].len_val = 12;
+       varbinds[0].type = STRING_VALUE;
+
+       i = snmp(varbinds, 1, SET);
+       if (i == 0) {
+           print_helperr(ERR_SET);
+           goto exit;
+       }
+       if (i < 0)
+           break;
+
+       if (varbinds[0].len_val == 12) {
+           if (AuthMac)
+               free(AuthMac);
+           AuthMac =
+               (struct AuthorizedMacTableString *) malloc(varbinds[0].
+                                                          len_val);
+           memcpy(AuthMac, varbinds[0].value, varbinds[0].len_val);
+/*         AuthMac =
+               (struct AuthorizedMacTableString *) varbinds[0].value;*/
+       } else {
+           print_helperr(PACKET_ERROR);
+           goto exit;
+       }
+
+       rshort(AuthMac->NumOfAllTableAddresses);
+       total_mac =
+           (AuthMac->NumOfAllTableAddresses ==
+            65535) ? 0 : AuthMac->NumOfAllTableAddresses;
+
+       if (mac_num) {
+           if (first == NULL) {
+               first = (struct MacListStat *)
+                   malloc(sizeof(struct MacListStat));
+               curr = first;
+           } else {
+               curr->next = (struct MacListStat *)
+                   malloc(sizeof(struct MacListStat));
+               curr = curr->next;
+           }
+           memcpy(curr->addr, AuthMac->MacAddress, 6);
+           curr->next = NULL;
+       }
+       mac_num++;
+    }
+
+choose_view:
+    clear_main(2);
+    if (auth_mac == 1) {
+       mvwaddstr(main_sub, 2, 1, MAC_HEADER);
+       begin = 1;
+       end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num;
+       scroll_rows(first, begin, end, 3, 0);
+        print_help(MAC_HELP);
+    } else if(auth_mac == 3) {
+       sprintf(message, "%s%s", RADIUS_IP, inet_ntoa(radius_ip));
+       mvwaddstr(main_sub, 2, 0, message);
+       sprintf(message, "%s%d", RADIUS_DEST_PORT, radius_dest_port);
+       mvwaddstr(main_sub, 3, 0, message);
+       sprintf(message, "%s%s", RADIUS_SECRET, radius_secret);
+       mvwaddstr(main_sub, 4, 0, message);
+       sprintf(message, "%s%d", RADIUS_TIME, radius_time);
+       mvwaddstr(main_sub, 5, 0, message);
+       sprintf(message, "%s%d", RADIUS_PORT, radius_port);
+       mvwaddstr(main_sub, 6, 0, message);
+
+        wrefresh(main_sub);
+        print_help(MAC_RADIUS_HELP);
+    } else {
+        print_help(MAC_NONE_HELP);
+    }
+
+    if (i < 0) {
+        mvwaddstr(main_sub, 3, 1, _("(insufficient community used)"));
+        wrefresh(main_sub);
+    }
+
+    noecho();
+
+    while (1) {
+       switch (getch()) {
+       case 'q':
+       case 'Q':
+           goto quit;
+       case 'a':
+       case 'A':
+           auth_mac = menu_choose(0, strlen(MAC_AUTH), auth_types, 3)+1;
+           clear_main_new(0, 1);
+           print_menusel(0, 0, MAC_AUTH, auth_types[auth_mac-1]);
+           m_authmac = 1;
+           goto choose_view;
+       case 'S':
+       case 's':
+            if (auth_mac != 3) {
+                       continue;
+            }
+           get_value(radius_secret, 4, strlen(RADIUS_SECRET), 32, ANY_STRING, 0, 0, NULL);
+           m_radius_secret = 1;
+           continue;
+       case 'P':
+       case 'p':
+            if (auth_mac != 3) {
+               continue;
+            }
+           get_value(message, 3, strlen(RADIUS_DEST_PORT), 6, INT_STRING, 0, 65535, MAC_RADIUS_HELP);
+           radius_dest_port = atoi(message);
+           m_radius_dest_port = 1;
+            continue;
+       case 'T':
+        case 't':
+            if (auth_mac != 3) {
+                   continue;
+           }
+            get_value(message, 5, strlen(RADIUS_TIME), 6, INT_STRING, 0, 65535, MAC_RADIUS_HELP);
+            radius_time = atoi(message);
+            m_radius_time = 1;
+            continue;
+       case 'F':
+       case 'f':
+           if (auth_mac != 3) {
+              continue;
+           }
+           get_value(message, 6, strlen(RADIUS_PORT), 6, INT_STRING, 0, 65535, MAC_RADIUS_HELP);
+           radius_port = atoi(message);
+           m_radius_port = 1;
+           continue;
+       case 'I':
+       case 'i':
+            if (auth_mac != 3) {
+               continue;
+           }
+           get_ip(&radius_ip, 2, strlen(RADIUS_IP), MAC_RADIUS_HELP);
+           m_radius_ip = 1;
+           continue;
+       case 'd':
+       case 'D':
+           if (auth_mac != 1) {
+               continue;
+           }
+           mvwaddstr(main_sub, 1, 0, MAC_DEL);
+           get_value(message, 1, strlen(MAC_DEL), 5, INT_STRING,
+               1, mac_num - 1, NULL);
+           i = atoi(message);
+           if (i == 1) {
+               pmac = first;
+               first = first->next;
+               free(pmac);
+           } else {
+               curr = first;
+               while (--i > 1)
+                   curr = curr->next;
+               pmac = curr->next;
+               curr->next = pmac->next;
+               free(pmac);
+           }
+           mac_num--;
+           begin = 1;
+           end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num;
+           scroll_rows(first, begin, end, 3, 0);
+           clear_main_new(1, 2);
+           continue;
+       case 'n':
+       case 'N':
+           if (auth_mac != 1) {
+               continue;
+           }
+           mvwaddstr(main_sub, 1, 0, MAC_ADD);
+           curr = first;
+           while (curr && curr->next)
+               curr = curr->next;
+           if (first == NULL) {
+               first = (struct MacListStat *)
+                   malloc(sizeof(struct MacListStat));
+               curr = first;
+           } else {
+               curr->next = (struct MacListStat *)
+                   malloc(sizeof(struct MacListStat));
+               curr = curr->next;
+           }
+           curr->next = NULL;
+           mac_num++;
+           get_mac(curr->addr, 1, strlen(MAC_ADD));
+           begin = 1;
+           end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num;
+           scroll_rows(first, begin, end, 3, 0);
+           clear_main_new(1, 2);
+           continue;
+       case 'w':
+       case 'W':
+           i=0;
+           if (m_authmac) {
+               auth_mac_hw = swap4(auth_mac);
+               varbinds[i].oid = EnableAuthMAC;
+               varbinds[i].len_oid = sizeof(EnableAuthMAC);
+               varbinds[i].type = INT_VALUE;
+               varbinds[i].value = (char *) &auth_mac_hw;
+               varbinds[i].len_val = 1;
+               i++;
+           }
+           
+           if (m_radius_ip) {
+                radius_ip.s_addr = htonl(radius_ip.s_addr);
+               radius_ip.s_addr = swap4(radius_ip.s_addr);
+                varbinds[i].oid = AuthRadiusIP;
+                varbinds[i].len_oid = sizeof(AuthRadiusIP);
+               varbinds[i].value = (char *) &radius_ip.s_addr;
+               varbinds[i].len_val = 4;
+               varbinds[i].type = INT_VALUE;
+               i++;
+           }
+          
+            if (m_radius_dest_port) {
+               varbinds[i].oid = AuthRadiusDestinPort;
+               varbinds[i].len_oid = sizeof(AuthRadiusDestinPort);
+               radius_dest_port = htons(radius_dest_port);
+               varbinds[i].value = (char *) &radius_dest_port;
+               varbinds[i].len_val = 2;
+               varbinds[i].type = 0x02;
+               i++;
+           }
+           
+            if (m_radius_time) {
+               varbinds[i].oid = AuthRadiusReauthorizationTime;
+               varbinds[i].len_oid = sizeof(AuthRadiusReauthorizationTime);
+               radius_time = htons(radius_time);
+               varbinds[i].value = (char *) &radius_time;
+                varbinds[i].len_val = 2;
+                varbinds[i].type = 0x02;
+                i++;
+            }
+
+           if (m_radius_port) {
+               varbinds[i].oid = AuthRadiusPort;
+               varbinds[i].len_oid = sizeof(AuthRadiusPort);
+               radius_port = htons(radius_port);
+               varbinds[i].value = (char *) &radius_port;
+                varbinds[i].len_val = 2;
+                varbinds[i].type = 0x02;
+                i++;
+            }
+           if (m_radius_secret) {
+                c = strlen(radius_secret);
+               varbinds[i].oid = AuthRadiusSecretLength;
+               varbinds[i].len_oid = sizeof(AuthRadiusSecretLength);
+               varbinds[i].value = (char *)&c;
+               varbinds[i].len_val = 1;
+               varbinds[i].type = INT_VALUE;
+               i++;
+               varbinds[i].oid = AuthRadiusSecret;
+               varbinds[i].len_oid = sizeof(AuthRadiusSecret);
+               varbinds[i].value = radius_secret;
+               varbinds[i].len_val = c;
+               varbinds[i].type = STRING_VALUE;
+               i++;
+          }
+
+           print_help(WAIT_SET);
+           if (snmp(varbinds, i, SET) <= 0) {
+               print_helperr(ERR_RET);
+               goto exit;
+           }
+           
+           curr = first;
+           i = 1;
+           while (curr != NULL) {
+               get.Action = 0x01; rshort(get.Action);
+               get.NumOfAllTableAddresses = mac_num - 1; rshort(get.NumOfAllTableAddresses);
+               get.NumOfCurrentAddress = i; rshort(get.NumOfCurrentAddress);
+               memcpy(get.MacAddress, curr->addr, 6);
+               varbinds[0].oid = AutorizedMac;
+               varbinds[0].len_oid = sizeof(AutorizedMac);
+               varbinds[0].value = (char *) &get;
+               varbinds[0].len_val = 12;
+               varbinds[0].type = STRING_VALUE;
+               print_help(WAIT_SET);
+               if (snmp(varbinds, 1, SET) <= 0) {
+                   print_helperr(ERR_RET);
+                   goto exit;
+               }
+               if (varbinds[0].len_val != 12) {
+                   print_helperr(PACKET_ERROR);
+                   goto exit;
+               }
+               curr = curr->next;
+               i++;
+           }
+           wbkgd(main_sub, A_NORMAL);
+           wrefresh(main_sub);
+           print_help(DONE_SET);
+           goto exit;
+       case KEY_DOWN:
+       case KEY_RIGHT:
+           if (auth_mac != 1) {
+               continue;
+           }
+           if (end < mac_num) {
+               begin++;
+               end++;
+               scroll_rows(first, begin, end, 3, 0);
+           }
+           continue;
+       case KEY_UP:
+       case KEY_LEFT:
+           if (auth_mac != 1) {
+               continue;
+           }
+           if (begin > 1) {
+               begin--;
+               end--;
+               scroll_rows(first, begin, end, 3, 0);
+           }
+           continue;
+       }
+       continue;
+    }
+
+    print_help(ANY_KEY);
+  exit:
+    getch();
+  quit:
+    while ((curr = first)) {
+       first = curr->next;
+       free(curr);
+    }
+    if (AuthMac)
+       free(AuthMac);
+    print_top(NULL, NULL);
+    clear_main(0);
+}
diff --git a/ap-gl/auth_mac.c b/ap-gl/auth_mac.c
deleted file mode 100644 (file)
index edcd20f..0000000
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- *      auth.c from Access Point SNMP Utils for Linux
- *
- * Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License Version 2 from
- * June 1991 as published by the Free Software Foundation.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include "ap-utils.h"
-
-#define MAX_LINES LINES-6
-#define PACKET_ERROR _("AuthorizedMacTableString packet error")
-
-#define MAC_AUTH _("[A] MAC authorization: ")
-#define MAC_ADD  _("Enter MAC: ")
-#define MAC_DEL  _("Delete Num: ")
-#define MAC_TITLE _("Authorized MAC addresses")
-#define MAC_HEADER _("NUM       MAC address")
-#define MAC_HELP _("A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit")
-#define MAC_RADIUS_HELP _("A - auth; IPSTF - set; W - write conf; Q - quit")
-#define MAC_NONE_HELP _("A - auth; W - write conf; Q - quit")
-
-#define RADIUS_IP _("[I] RADIUS SERVER IP: ")
-#define RADIUS_DEST_PORT _("[P] RADIUS SERVER PORT: ")
-#define RADIUS_SECRET _("[S] RADIUS SERVER SECRET: ")
-#define RADIUS_TIME _("[T] REAUTHORIZATION TIME: ")
-#define RADIUS_PORT _("[F] RADIUS SOURCE PORT: ")
-
-extern WINDOW *main_sub;
-extern int LINES;
-extern short ap_type;
-
-void atmel_auth_mac()
-{
-    struct AuthorizedMacTableString {
-       unsigned int short Action;
-       unsigned int short NumOfAllTableAddresses;
-       unsigned int short NumOfCurrentAddress;
-       unsigned char MacAddress[6];
-    } *AuthMac = NULL, get;
-
-    struct MacListStat *pmac, *first = NULL, *curr = NULL;
-    uint32_t auth_mac_hw;
-
-    char EnableAuthMAC[] =
-       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
-       0x02, 0x06, 0x01, 0x00
-    };
-    char AutorizedMac[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
-       0x02, 0x06, 0x02, 0x00
-    };
-
-    char AuthRadiusIP[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
-       0x02, 0x06, 0x03, 0x00
-    };
-    char AuthRadiusSecret[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
-       0x02, 0x06, 0x04, 0x00
-    };
-    char AuthRadiusSecretLength[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
-       0x02, 0x06, 0x05, 0x00
-    };
-    char AuthRadiusPort[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
-       0x02, 0x06, 0x06, 0x00
-    };
-    char AuthRadiusReauthorizationTime[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
-       0x02, 0x06, 0x07, 0x00
-    };
-    char AuthRadiusDestinPort[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
-       0x02, 0x06, 0x08, 0x00
-    };
-
-    char *auth_types[] = { _("Internal"), OFF, "RADIUS" };
-
-    struct in_addr radius_ip;
-    char message[1024], m_authmac = 0, radius_secret[32], m_radius_secret=0, m_radius_ip=0;
-    int radius_port, radius_time, radius_dest_port, m_radius_port=0, m_radius_time=0, m_radius_dest_port=0;
-    int i, total_mac, auth_mac = 0, mac_num = 0, begin=0, end=0, c=0;
-    varbind varbinds[7];
-
-    memcpy(radius_secret, _("<hidden>"), 32); 
-
-    varbinds[0].oid = EnableAuthMAC;
-    varbinds[0].len_oid = sizeof(EnableAuthMAC);
-    varbinds[0].type = NULL_VALUE;
-    varbinds[0].len_val = 0;
-
-    varbinds[1].oid = AuthRadiusIP;
-    varbinds[1].len_oid = sizeof(AuthRadiusIP);
-    varbinds[1].type = NULL_VALUE;
-    varbinds[1].len_val = 0;
-
-    varbinds[3].oid = AuthRadiusPort;
-    varbinds[3].len_oid = sizeof(AuthRadiusPort);
-    varbinds[3].type = NULL_VALUE;
-    varbinds[3].len_val = 0;
-
-    varbinds[4].oid = AuthRadiusReauthorizationTime;
-    varbinds[4].len_oid = sizeof(AuthRadiusReauthorizationTime);
-    varbinds[4].type = NULL_VALUE;
-    varbinds[4].len_val = 0;
-
-    varbinds[2].oid = AuthRadiusDestinPort;
-    varbinds[2].len_oid = sizeof(AuthRadiusDestinPort);
-    varbinds[2].type = NULL_VALUE;
-    varbinds[2].len_val = 0;
-
-    print_help(WAIT_RET);
-    if (snmp(varbinds, 5, GET) <= 0) {
-       print_helperr(ERR_RET);
-       goto exit;
-    }
-    print_top(NULL, MAC_TITLE);
-
-    auth_mac = *(varbinds[0].value);
-    memcpy(&radius_ip.s_addr, varbinds[1].value, 4);
-    memcpy(&radius_dest_port, varbinds[2].value, 2);
-    radius_dest_port = ntohs(radius_dest_port);
-    memcpy(&radius_port, varbinds[3].value, 2);
-    radius_port = ntohs(radius_port);
-    memcpy(&radius_time, varbinds[4].value, 2);
-    radius_time = ntohs(radius_time);
-       
-    sprintf(message, "%s%s", MAC_AUTH, auth_types[auth_mac-1]);
-    mvwaddstr(main_sub, 0, 0, message);
-    wrefresh(main_sub);
-
-    total_mac = 0;
-    mac_num = 0;
-
-    while (mac_num <= total_mac) {
-       get.Action = 0x02; rshort(get.Action);
-       get.NumOfAllTableAddresses = total_mac; rshort(get.NumOfAllTableAddresses);
-       get.NumOfCurrentAddress = mac_num; rshort(get.NumOfCurrentAddress);
-
-       varbinds[0].oid = AutorizedMac;
-       varbinds[0].len_oid = sizeof(AutorizedMac);
-       varbinds[0].value = (char *) &get;
-       varbinds[0].len_val = 12;
-       varbinds[0].type = STRING_VALUE;
-
-       if (snmp(varbinds, 1, SET) <= 0) {
-           print_helperr(ERR_RET);
-           goto exit;
-       }
-
-       if (varbinds[0].len_val == 12) {
-           if (AuthMac)
-               free(AuthMac);
-           AuthMac =
-               (struct AuthorizedMacTableString *) malloc(varbinds[0].
-                                                          len_val);
-           memcpy(AuthMac, varbinds[0].value, varbinds[0].len_val);
-/*         AuthMac =
-               (struct AuthorizedMacTableString *) varbinds[0].value;*/
-       } else {
-           print_helperr(PACKET_ERROR);
-           goto exit;
-       }
-
-       rshort(AuthMac->NumOfAllTableAddresses);
-       total_mac =
-           (AuthMac->NumOfAllTableAddresses ==
-            65535) ? 0 : AuthMac->NumOfAllTableAddresses;
-
-       if (mac_num) {
-           if (first == NULL) {
-               first = (struct MacListStat *)
-                   malloc(sizeof(struct MacListStat));
-               curr = first;
-           } else {
-               curr->next = (struct MacListStat *)
-                   malloc(sizeof(struct MacListStat));
-               curr = curr->next;
-           }
-           memcpy(curr->addr, AuthMac->MacAddress, 6);
-           curr->next = NULL;
-       }
-       mac_num++;
-    }
-
-choose_view:
-    clear_main(2);
-    if (auth_mac == 1) {
-       mvwaddstr(main_sub, 2, 1, MAC_HEADER);
-       begin = 1;
-       end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num;
-       scroll_rows(first, begin, end, 3, 0);
-        print_help(MAC_HELP);
-    } else if(auth_mac == 3) {
-       sprintf(message, "%s%s", RADIUS_IP, inet_ntoa(radius_ip));
-       mvwaddstr(main_sub, 2, 0, message);
-       sprintf(message, "%s%d", RADIUS_DEST_PORT, radius_dest_port);
-       mvwaddstr(main_sub, 3, 0, message);
-       sprintf(message, "%s%s", RADIUS_SECRET, radius_secret);
-       mvwaddstr(main_sub, 4, 0, message);
-       sprintf(message, "%s%d", RADIUS_TIME, radius_time);
-       mvwaddstr(main_sub, 5, 0, message);
-       sprintf(message, "%s%d", RADIUS_PORT, radius_port);
-       mvwaddstr(main_sub, 6, 0, message);
-
-        wrefresh(main_sub);
-        print_help(MAC_RADIUS_HELP);
-    } else {
-        print_help(MAC_NONE_HELP);
-    }
-    noecho();
-
-    while (1) {
-       switch (getch()) {
-       case 'q':
-       case 'Q':
-           goto quit;
-       case 'a':
-       case 'A':
-           auth_mac = menu_choose(0, strlen(MAC_AUTH), auth_types, 3)+1;
-           clear_main_new(0, 1);
-           print_menusel(0, 0, MAC_AUTH, auth_types[auth_mac-1]);
-           m_authmac = 1;
-           goto choose_view;
-       case 'S':
-       case 's':
-            if (auth_mac != 3) {
-                       continue;
-            }
-           get_value(radius_secret, 4, strlen(RADIUS_SECRET), 32, ANY_STRING, 0, 0, NULL);
-           m_radius_secret = 1;
-           continue;
-       case 'P':
-       case 'p':
-            if (auth_mac != 3) {
-               continue;
-            }
-           get_value(message, 3, strlen(RADIUS_DEST_PORT), 6, INT_STRING, 0, 65535, MAC_RADIUS_HELP);
-           radius_dest_port = atoi(message);
-           m_radius_dest_port = 1;
-            continue;
-       case 'T':
-        case 't':
-            if (auth_mac != 3) {
-                   continue;
-           }
-            get_value(message, 5, strlen(RADIUS_TIME), 6, INT_STRING, 0, 65535, MAC_RADIUS_HELP);
-            radius_time = atoi(message);
-            m_radius_time = 1;
-            continue;
-       case 'F':
-       case 'f':
-           if (auth_mac != 3) {
-              continue;
-           }
-           get_value(message, 6, strlen(RADIUS_PORT), 6, INT_STRING, 0, 65535, MAC_RADIUS_HELP);
-           radius_port = atoi(message);
-           m_radius_port = 1;
-           continue;
-       case 'I':
-       case 'i':
-            if (auth_mac != 3) {
-               continue;
-           }
-           get_ip(&radius_ip, 2, strlen(RADIUS_IP), MAC_RADIUS_HELP);
-           m_radius_ip = 1;
-           continue;
-       case 'd':
-       case 'D':
-           if (auth_mac != 1) {
-               continue;
-           }
-           mvwaddstr(main_sub, 1, 0, MAC_DEL);
-           get_value(message, 1, strlen(MAC_DEL), 5, INT_STRING,
-               1, mac_num - 1, NULL);
-           i = atoi(message);
-           if (i == 1) {
-               pmac = first;
-               first = first->next;
-               free(pmac);
-           } else {
-               curr = first;
-               while (--i > 1)
-                   curr = curr->next;
-               pmac = curr->next;
-               curr->next = pmac->next;
-               free(pmac);
-           }
-           mac_num--;
-           begin = 1;
-           end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num;
-           scroll_rows(first, begin, end, 3, 0);
-           clear_main_new(1, 2);
-           continue;
-       case 'n':
-       case 'N':
-           if (auth_mac != 1) {
-               continue;
-           }
-           mvwaddstr(main_sub, 1, 0, MAC_ADD);
-           curr = first;
-           while (curr && curr->next)
-               curr = curr->next;
-           if (first == NULL) {
-               first = (struct MacListStat *)
-                   malloc(sizeof(struct MacListStat));
-               curr = first;
-           } else {
-               curr->next = (struct MacListStat *)
-                   malloc(sizeof(struct MacListStat));
-               curr = curr->next;
-           }
-           curr->next = NULL;
-           mac_num++;
-           get_mac(curr->addr, 1, strlen(MAC_ADD));
-           begin = 1;
-           end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num;
-           scroll_rows(first, begin, end, 3, 0);
-           clear_main_new(1, 2);
-           continue;
-       case 'w':
-       case 'W':
-           i=0;
-           if (m_authmac) {
-               auth_mac_hw = swap4(auth_mac);
-               varbinds[i].oid = EnableAuthMAC;
-               varbinds[i].len_oid = sizeof(EnableAuthMAC);
-               varbinds[i].type = INT_VALUE;
-               varbinds[i].value = (char *) &auth_mac_hw;
-               varbinds[i].len_val = 1;
-               i++;
-           }
-           
-           if (m_radius_ip) {
-                radius_ip.s_addr = htonl(radius_ip.s_addr);
-               radius_ip.s_addr = swap4(radius_ip.s_addr);
-                varbinds[i].oid = AuthRadiusIP;
-                varbinds[i].len_oid = sizeof(AuthRadiusIP);
-               varbinds[i].value = (char *) &radius_ip.s_addr;
-               varbinds[i].len_val = 4;
-               varbinds[i].type = INT_VALUE;
-               i++;
-           }
-          
-            if (m_radius_dest_port) {
-               varbinds[i].oid = AuthRadiusDestinPort;
-               varbinds[i].len_oid = sizeof(AuthRadiusDestinPort);
-               radius_dest_port = htons(radius_dest_port);
-               varbinds[i].value = (char *) &radius_dest_port;
-               varbinds[i].len_val = 2;
-               varbinds[i].type = 0x02;
-               i++;
-           }
-           
-            if (m_radius_time) {
-               varbinds[i].oid = AuthRadiusReauthorizationTime;
-               varbinds[i].len_oid = sizeof(AuthRadiusReauthorizationTime);
-               radius_time = htons(radius_time);
-               varbinds[i].value = (char *) &radius_time;
-                varbinds[i].len_val = 2;
-                varbinds[i].type = 0x02;
-                i++;
-            }
-
-           if (m_radius_port) {
-               varbinds[i].oid = AuthRadiusPort;
-               varbinds[i].len_oid = sizeof(AuthRadiusPort);
-               radius_port = htons(radius_port);
-               varbinds[i].value = (char *) &radius_port;
-                varbinds[i].len_val = 2;
-                varbinds[i].type = 0x02;
-                i++;
-            }
-           if (m_radius_secret) {
-                c = strlen(radius_secret);
-               varbinds[i].oid = AuthRadiusSecretLength;
-               varbinds[i].len_oid = sizeof(AuthRadiusSecretLength);
-               varbinds[i].value = (char *)&c;
-               varbinds[i].len_val = 1;
-               varbinds[i].type = INT_VALUE;
-               i++;
-               varbinds[i].oid = AuthRadiusSecret;
-               varbinds[i].len_oid = sizeof(AuthRadiusSecret);
-               varbinds[i].value = radius_secret;
-               varbinds[i].len_val = c;
-               varbinds[i].type = STRING_VALUE;
-               i++;
-          }
-
-           print_help(WAIT_SET);
-           if (snmp(varbinds, i, SET) <= 0) {
-               print_helperr(ERR_RET);
-               goto exit;
-           }
-           
-           curr = first;
-           i = 1;
-           while (curr != NULL) {
-               get.Action = 0x01; rshort(get.Action);
-               get.NumOfAllTableAddresses = mac_num - 1; rshort(get.NumOfAllTableAddresses);
-               get.NumOfCurrentAddress = i; rshort(get.NumOfCurrentAddress);
-               memcpy(get.MacAddress, curr->addr, 6);
-               varbinds[0].oid = AutorizedMac;
-               varbinds[0].len_oid = sizeof(AutorizedMac);
-               varbinds[0].value = (char *) &get;
-               varbinds[0].len_val = 12;
-               varbinds[0].type = STRING_VALUE;
-               print_help(WAIT_SET);
-               if (snmp(varbinds, 1, SET) <= 0) {
-                   print_helperr(ERR_RET);
-                   goto exit;
-               }
-               if (varbinds[0].len_val != 12) {
-                   print_helperr(PACKET_ERROR);
-                   goto exit;
-               }
-               curr = curr->next;
-               i++;
-           }
-           print_help(DONE_SET);
-           goto exit;
-       case KEY_DOWN:
-       case KEY_RIGHT:
-           if (auth_mac != 1) {
-               continue;
-           }
-           if (end < mac_num) {
-               begin++;
-               end++;
-               scroll_rows(first, begin, end, 3, 0);
-           }
-           continue;
-       case KEY_UP:
-       case KEY_LEFT:
-           if (auth_mac != 1) {
-               continue;
-           }
-           if (begin > 1) {
-               begin--;
-               end--;
-               scroll_rows(first, begin, end, 3, 0);
-           }
-           continue;
-       }
-       continue;
-    }
-
-    print_help(ANY_KEY);
-  exit:
-    getch();
-  quit:
-    while ((curr = first)) {
-       first = curr->next;
-       free(curr);
-    }
-    if (AuthMac)
-       free(AuthMac);
-    print_top(NULL, NULL);
-    clear_main(0);
-}
index 1ef881361031557067ff58d11de813d27a69f9d9..370a5ba345135a441f796a6781463f553c74ebed 100644 (file)
@@ -33,7 +33,7 @@
 #define OPER _("[O] Operational mode: ")
 #define REMOTE_MAC _("[M] Preferred BSSID (remote MAC addr.): ")
 //#define CF_PORT _("[C] Configuration-enabled port(s): ")
-#define TRAP_PORT _("[T] Trap-sending port(s): ")
+#define TRAP_PORT _("[T] Trap-sending port: ")
 #define FW_BCAST _("[R] Forward broadcast traffic: ")
 //#define SB_BCAST _("[B] Isolate wireless clients (broadcast traffic): ")
 #define SB_UCAST _("[U] Isolate wireless clients: ")
 
 extern short ap_type;
 
+
 void bridging()
 {
 
+char *bridge_modes[6] = {
+    _("Wireless Bridge Point to MultiPoint"),
+    _("Access Point"),
+    _("Access Point client"),
+    _("Wireless Bridge Point to Point"),
+    _("Repeater"),
+    _("unknown")
+};
+
+
     char sysTrapSwitch[] =
        { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x03,
        0x00
@@ -77,7 +88,7 @@ void bridging()
        { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x02, 0x07,
        0x00
     };
-*/    /* This one is ATMEL12350 TELLUS MIB specific. */
+*/
     char TrapPort[] =
        { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x02, 0x08,
        0x00
@@ -88,8 +99,7 @@ void bridging()
        0x00
     };
 
-    /* These 3 are ATMEL12350 MIB specific. */
-    char ForwardBroadcast[] =
+    char ForwarbBcast[] =
        { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x02,
        0x00
     };
@@ -120,14 +130,7 @@ void bridging()
        m_dhcp = 0, m_ip = 0, m_mask = 0, m_gw = 0, m_remote_bssid = 0,
        /*m_config_port = 0, */m_trap_port = 0, m_fw_bcast = 0, /*m_sb_bcast = 0,*/
        m_sb_ucast = 0;
-    char *bridge_modes[6] = {
-       _("Wireless Bridge Point to MultiPoint"),
-       _("Access Point"),
-       _("Access Point client"),
-       _("Wireless Bridge Point to Point"),
-       _("Repeater"),
-       ("unknown")
-    }, *pr_ports[2] = {
+    char *pr_ports[2] = {
        _("Ethernet"),
        _("Wireless")
     } /*, *cf_trap_ports[3] = {
@@ -166,11 +169,11 @@ void bridging()
     varbinds[7].oid = bridgeOperationalMode;
     varbinds[8].oid = sysTrapSwitch;
     varbinds[9].oid = bridgeRemoteBridgeBSSID;
-    varbinds[10].oid = ForwardBroadcast;
+    varbinds[10].oid = ForwarbBcast;
     varbinds[11].oid = SendBackUnicast;
     varbinds[12].oid = SendBackBcast;
 
-    if (snmp(varbinds, 13, GET) <= 0) {
+    if (snmp(varbinds, 13, GET) < 13) {
        print_helperr(ERR_RET);
        goto exit;
     }
@@ -435,8 +438,8 @@ void bridging()
                i++;
            }
 */         if (m_fw_bcast) {
-               varbinds[i].oid = ForwardBroadcast;
-               varbinds[i].len_oid = sizeof(ForwardBroadcast);
+               varbinds[i].oid = ForwarbBcast;
+               varbinds[i].len_oid = sizeof(ForwarbBcast);
                varbinds[i].type = INT_VALUE;
                varbinds[i].value = (char *) &fw_bcast;
                varbinds[i].len_val = 1;
@@ -469,10 +472,13 @@ void bridging()
            }
 
            print_help(WAIT_SET);
-           if (snmp(varbinds, i, SET) <= 0)
+           if (snmp(varbinds, i, SET) <= 0) {
                print_helperr(ERR_SET);
-           else
+           } else {
+               wbkgd(main_sub, A_NORMAL);
+               wrefresh(main_sub);
                print_help(DONE_SET);
+           }
            goto exit;
        case 'Q':
        case 'q':
index 9d47e0eab4618efa22f561ec415dac994e69a4af..d8913808bdc1ab061d7314c5d634f3acc4c8f74d 100644 (file)
@@ -60,7 +60,7 @@ void atmel_stations()
     int mac_num, begin, end, total_mac;
     varbind varbinds[1];
 
-    print_top(NULL, TITLE_STAS);
+    print_top(NULL, ST_TITLE);
 
     varbinds[0].oid = bridgeOperationalMode;
     varbinds[0].len_oid = sizeof(bridgeOperationalMode);
@@ -97,9 +97,12 @@ void atmel_stations()
     total_mac = *(varbinds[0].value);
     mac_num = 1;
 
-    sprintf(message, "%s: %d", TITLE_STAS, total_mac);
+    sprintf(message, "%s: %d", ST_TITLE, total_mac);
     print_top(NULL, message);
-    mvwaddstr(main_sub, 0, 1, _("#     MAC       LQ    RSSI   Status Port IP"));
+    wattrset(main_sub, COLOR_PAIR(13));
+    mvwaddstr(main_sub, 0, 0,
+       _("  #     MAC       Parent MAC  RSSI   LQ Sts MACn      IP        "));
+    wattrset(main_sub, A_NORMAL);
     noecho();
 
     while (mac_num <= total_mac) {
@@ -154,7 +157,7 @@ void atmel_stations()
        mac_num++;
     }
     begin = 1;
-    end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num;
+    end = (mac_num > MAX_LINES) ? MAX_LINES : mac_num;
     scroll_rows(first, begin, end, 1, 2);
     while (1) {
        print_help(_("Arrows - scroll; S - save to file; Q - quit to menu."));
index 905e84c062de863d90f86e0438f66d5d8cce1751..bf7e4f09a3765846d8e9471bfce3ca47c0649e6a 100644 (file)
 /* Define if your <locale.h> file defines LC_MESSAGES. */
 #undef HAVE_LC_MESSAGES
 
-/* Define to 1 if you have the `curses' library (-lcurses). */
-#undef HAVE_LIBCURSES
-
-/* Define to 1 if you have the `ncurses' library (-lncurses). */
-#undef HAVE_LIBNCURSES
-
 /* Define to 1 if you have the <limits.h> header file. */
 #undef HAVE_LIMITS_H
 
index cf9108b3edcceba93b7cf4d1552d9ff802bff042..fa262c03924017ba730593f1f3e812845332bb0d 100755 (executable)
--- a/configure
+++ b/configure
@@ -308,7 +308,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB CPP EGREP LIBOBJS MKINSTALLDIRS MSGFMT GMSGFMT XGETTEXT MSGMERGE build build_cpu build_vendor build_os host host_cpu host_vendor host_os ALLOCA GLIBC21 LIBICONV LTLIBICONV INTLBISON USE_NLS BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT INTLOBJS DATADIRNAME INSTOBJEXT GENCAT INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB CPP EGREP LIBOBJS MKINSTALLDIRS MSGFMT GMSGFMT XGETTEXT MSGMERGE build build_cpu build_vendor build_os host host_cpu host_vendor host_os ALLOCA GLIBC21 LIBICONV LTLIBICONV INTLBISON USE_NLS BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT INTLOBJS DATADIRNAME INSTOBJEXT GENCAT INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB CURSESLIBS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -1551,7 +1551,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE=ap-utils
- VERSION=1.5pre1_FreedomOfUkraine
+ VERSION=1.5
 
 
 cat >>confdefs.h <<_ACEOF
@@ -7056,7 +7056,7 @@ _ACEOF
 
 
 
-
+aputils_save_LIBS="$LIBS"
 echo "$as_me:$LINENO: checking for initscr in -lncurses" >&5
 echo $ECHO_N "checking for initscr in -lncurses... $ECHO_C" >&6
 if test "${ac_cv_lib_ncurses_initscr+set}" = set; then
@@ -7112,19 +7112,13 @@ fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_initscr" >&5
 echo "${ECHO_T}$ac_cv_lib_ncurses_initscr" >&6
 if test $ac_cv_lib_ncurses_initscr = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBNCURSES 1
-_ACEOF
-
-  LIBS="-lncurses $LIBS"
-
+  CURSESLIBS="-lncurses"
 else
   NOCURSES=yes
 fi
 
 if test "$NOCURSES" = yes; then
-
-echo "$as_me:$LINENO: checking for initscr in -lcurses" >&5
+       echo "$as_me:$LINENO: checking for initscr in -lcurses" >&5
 echo $ECHO_N "checking for initscr in -lcurses... $ECHO_C" >&6
 if test "${ac_cv_lib_curses_initscr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7179,12 +7173,7 @@ fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_curses_initscr" >&5
 echo "${ECHO_T}$ac_cv_lib_curses_initscr" >&6
 if test $ac_cv_lib_curses_initscr = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBCURSES 1
-_ACEOF
-
-  LIBS="-lcurses $LIBS"
-
+  CURSESLIBS="-lcurses"
 else
   { { echo "$as_me:$LINENO: error: ap-utils requires installed ncurses or Sys V curses to build" >&5
 echo "$as_me: error: ap-utils requires installed ncurses or Sys V curses to build" >&2;}
@@ -7192,6 +7181,7 @@ echo "$as_me: error: ap-utils requires installed ncurses or Sys V curses to buil
 fi
 
 fi
+LIBS="$aputils_save_LIBS"
 
 # Check for OS and make OS define OS specific variables
 case "$host_os" in
@@ -7465,6 +7455,8 @@ _ACEOF
 
 fi;
 
+
+
                                                                       ac_config_files="$ac_config_files Makefile src/Makefile ap-gl/Makefile lib/Makefile po/Makefile.in intl/Makefile Documentation/Makefile"
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -8187,6 +8179,7 @@ s,@INTLLIBS@,$INTLLIBS,;t t
 s,@LIBINTL@,$LIBINTL,;t t
 s,@LTLIBINTL@,$LTLIBINTL,;t t
 s,@POSUB@,$POSUB,;t t
+s,@CURSESLIBS@,$CURSESLIBS,;t t
 s,@LTLIBOBJS@,$LTLIBOBJS,;t t
 CEOF
 
index a106b7dd4e48ee95ed54a01dfc2d96c5c37eab12..0a934f743000bc28e2fa5c997a1677998f3d8023 100644 (file)
@@ -18,7 +18,7 @@
 #
 AC_INIT([lib/snmp.c])
 AC_CONFIG_AUX_DIR(config)
-AM_INIT_AUTOMAKE(ap-utils, 1.5pre1_FreedomOfUkraine)
+AM_INIT_AUTOMAKE(ap-utils, 1.5)
 AM_CONFIG_HEADER(config.h)
 
 ac_aux_dir=config
@@ -55,10 +55,12 @@ ALL_LINGUAS="uk fr pl ro nl tr"
 
 AM_GNU_GETTEXT
 
-AC_CHECK_LIB(ncurses, initscr, , NOCURSES=yes)
+aputils_save_LIBS="$LIBS"
+AC_CHECK_LIB(ncurses, initscr, CURSESLIBS="-lncurses", NOCURSES=yes)
 if test "$NOCURSES" = yes; then
-       AC_CHECK_LIB(curses, initscr, , AC_MSG_ERROR([ap-utils requires installed ncurses or Sys V curses to build]))
+       AC_CHECK_LIB(curses, initscr, CURSESLIBS="-lcurses", AC_MSG_ERROR([ap-utils requires installed ncurses or Sys V curses to build]))
 fi
+LIBS="$aputils_save_LIBS"
 
 # Check for OS and make OS define OS specific variables
 case "$host_os" in
@@ -106,6 +108,8 @@ no)
  esac     
 ])
 
+AC_SUBST(CURSESLIBS)
+
 AC_OUTPUT([Makefile src/Makefile ap-gl/Makefile lib/Makefile po/Makefile.in intl/Makefile Documentation/Makefile])
 
 echo "
index 51c7132afcc3f09777737d24098541f141e4b178..2a853a3a3d2a461f502707d4ca0284609f200aa2 100644 (file)
@@ -68,6 +68,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
+CURSESLIBS = @CURSESLIBS@
 CYGPATH_W = @CYGPATH_W@
 DATADIRNAME = @DATADIRNAME@
 DEFS = @DEFS@
index 0936d4012cd125caf68c99b4eeb04f2799e54e3f..cd9c8c1610a2cb56d6b3a70c0a90329275de072b 100644 (file)
@@ -76,6 +76,9 @@ typedef unsigned int uint32_t;
 #define rshort(a)      ((a) = swap2(a))
 #define wshort(a)      ((a) = swap2(a))
 
+#define dbmconv(x)     (ap_type == ATMEL410 && ap_vendorext == SBRIDGES) ? \
+                           (int)(-95 + x * (float)2.125) : -96 + x
+
 #define MAC _("MAC address: ")
 #define TRAPS _("[S] SNMP traps: ")
 
@@ -100,34 +103,38 @@ typedef unsigned int uint32_t;
 #define BASIC _("Basic")
 
 #define ANY_KEY _("Press any key to continue.")
-#define QT_HELP _("Q - quit to menu. T - toggle polling mode, Other key - force update.")
+#define QT_HELP _("Q - quit to menu. T - toggle polling mode, Other key - force update")
 
 #define ERR_SET _("Unable to write data to AP. Press any key to continue.")
 #define ERR_RET _("Unable to retrieve (valid) data from AP. Press any key to continue.")
-#define WAIT_RET _("Trying to retrieve data from AP. Please wait...")
+#define WAIT_RET _("Trying to retrieve data from AP - please wait (or press Q to quit).")
 #define WAIT_SET _("Writing data to AP. Please wait...")
 #define DONE_SET _("Configuration written to the AP. Press any key to continue.")
-#define SELECT _("select() function error. Press any key.")
+#define ERR_SELECT _("select() function error. Press any key.")
+#define ERR_SOCKET _("socket() or bind() function error. Press any key.")
 
-#define CREATE_SOCKET_ERROR _("Create socket error. Press any key.")
-#define BIND_SOCKET_ERROR _("Bind socket error. Press any key.")
+#define ERR_WRITING_APCONF _("Unable to write AP list file ~/.ap-config. Press any key.")
+#define DONE_WRITING_APCONF _("AP list file ~/.ap-config successfully written. Press any key.")
 
 #define MAIN_MENU _("Back to main menu")
 #define MENU_EXIT _("Exit program")
 #define MENU_SHELL _("Run subshell. To return type 'exit'.")
+#define MENU_POLLING _("Change polling mode interval")
 #define MENU_ABOUT _("Short info about program")
 #define MENU_SEARCH _("Find connected Access Points")
 #define MENU_CONNECT _("Set connection options: ip and community")
 #define MENU_ENCRYPT _("Set encryption; edit WEP keys")
-#define MENU_MAC _("Set MAC authorization; edit MAC authorization table")
+#define MENU_AUTH _("Set authorization; edit MAC authorization table")
 #define MENU_COMMUNITY _("Set SNMP community/password for access to the AP")
 #define MENU_SYSINFO _("Get info about AP hardware and firmware")
 #define MENU_WIRELESS _("Get wireless port statistics")
 #define MENU_STAS _("Get list of currently associated stations (Access Point clients)")
+#define MENU_APLINK _("Get link status in APclient mode")
 #define MENU_INFO _("Get info and statistics from AP")
 #define MENU_CONFIG _("Set various configuration options")
 
-#define TITLE_STAS _("Associated stations")
+#define ST_TITLE _("Associated stations")
+#define AP_TITLE _("AP Client link state")
 
 #define POLL_ON _("Polling: on")
 #define POLL_OFF _("Polling: off")
@@ -169,8 +176,8 @@ typedef unsigned int uint32_t;
 /* Numbering with respect to order in ap_vendorexts */
 #define NONE 0
 #define SBRIDGES 1
-#define TELLUS 1
-#define VERNET 2
+#define GEMTEK 1
+#define EZYNET 2
 
 typedef struct {
     unsigned char *oid;
@@ -194,7 +201,7 @@ struct umitems {
        int is_menu;
 };
 
-struct EthernetRxStatistics {
+struct EthRxStatistics_s {
        uint32_t TotalBytesRx;
        uint32_t TotalPacketsRx;
        uint32_t PacketCRCErrorRx;
@@ -213,7 +220,7 @@ struct EthernetRxStatistics {
        uint32_t TotalJabberRx;
 };
 
-struct EthernetTxStatistics {
+struct EthTxStatistics_s {
        uint32_t TotalBytesTx;
        uint32_t TotalPacketsTx;
        uint32_t PacketCRCErrorTx;
@@ -230,7 +237,7 @@ struct EthernetTxStatistics {
        uint32_t TotalCollisionsTx;
 };
 
-struct WirelessStatistics {
+struct wirelessStatistics_s {
        uint32_t UnicastTransmittedPackets;
        uint32_t BroadcastTransmittedPackets;
        uint32_t MulticastTransmittedPackets;
@@ -253,15 +260,15 @@ struct WirelessStatistics {
        uint32_t AgedPackets;
        uint32_t FCSError;
        uint32_t InvalidPLCP;
-       /* following 4 are specific for ATMEL 12350 MIB enhanced by VERNET */
+       /* following 4 are specific for ATMEL 12350 MIB enhanced by EZYNET */
        uint32_t TransmittedPackets_11Mbps;
        uint32_t TransmittedPackets_55Mbps;
        uint32_t TransmittedPackets_2Mbps;
        uint32_t TransmittedPackets_1Mbps;
 };
 
-struct sysDeviceInfo_ATMEL410 {
-    /* sysDeviceInfo OID struct for ATMEL 410 */
+struct sysDeviceInfo_128 {
+    /* sysDeviceInfo OID struct - version 128 bytes long */
     uint32_t StructVersion;
     unsigned char MacAddress[6];
     unsigned short Reserved;
@@ -271,10 +278,16 @@ struct sysDeviceInfo_ATMEL410 {
     uint32_t OEMID;
     unsigned char ProductName[32];
     uint32_t HardwareRevision;
+    /*
+     * NOTE: Although MIBs claim 92 bytes length, it does not need to be true.
+     * 92 bytes seems to be just the 'official' part; the unofficial
+     * (and undocumented) remnant padding the total length to 128 bytes
+     * may or may not eventually appear (resulting in returned length 128 b.).
+     */
 };
 
-struct sysDeviceInfo_ATMEL12350 {
-    /* sysDeviceInfo OID struct for ATMEL 12350 */
+struct sysDeviceInfo_160 {
+    /* sysDeviceInfo OID struct - version 160 bytes long */
     uint32_t StructVersion;
     unsigned char MacAddress[6];
     unsigned char Channel;
@@ -296,6 +309,34 @@ struct sysDeviceInfo_ATMEL12350 {
     unsigned char Reserved3[10];
 };
 
+/* AP mode: Associated stations diagnostics */
+
+struct AssociatedSTAsInfo_ATMEL410 {
+    unsigned short Index;
+    unsigned char  MacAddress[6];
+    /* The rest is only supported by ATMEL410 SBRIDGES MIB */
+    unsigned char  Status;
+    unsigned char  Port;
+    unsigned char  ParentMacAddress[6];
+    unsigned char  RSSI;
+    unsigned char  LinkQuality;
+    unsigned char  IP[4];
+    unsigned char  Reserved1[2];
+};
+
+struct AssociatedSTAsInfo_ATMEL12350 {
+    unsigned short Index;
+    unsigned char  MacAddress[6];
+    /* The rest is only supported by ATMEL12350 EZYNET MIB */
+    unsigned char  Status;
+    unsigned char  Port;
+    unsigned char  ParentMacAddress[6];
+    unsigned char  RSSI;
+    unsigned char  IP[4];
+    unsigned char  Reserved1[3];
+};
+
+/* This structure unifies all the unique members of the 2 structs above */
 struct MacListStat {
     unsigned char addr[6];
     struct MacListStat *next;
@@ -308,6 +349,36 @@ struct MacListStat {
     struct in_addr IP;
 };
 
+/* APClient mode: AP link diagnostics */
+
+/* size: 53 bytes */
+struct NetworkSettings_ATMEL410_SBRIDGES {
+    unsigned short reserved1;
+    unsigned char BSSID[6];
+    unsigned short InfoCapability;
+    unsigned char Rssi;
+    unsigned char Channel;
+    unsigned char reserved2[2];
+    unsigned char LinkQuality;
+    unsigned char reserved3[5];
+    unsigned char ESSID[32];
+    unsigned char ESSLEN;
+};
+
+/* size: 56 bytes */
+struct NetworkSettings_ATMEL12350_EZYNET {
+    unsigned short reserved1;
+    unsigned char BSSID[6];
+    unsigned short InfoCapability;
+    unsigned char Rssi;
+    unsigned char Channel;
+    unsigned char reserved2[2];
+    unsigned char CurrentRate;
+    unsigned char reserved3[5];
+    unsigned char ESSID[32];
+    unsigned long ESSLEN;
+};
+
 /* function prototypes specific/common for both utilites */
 
 /* service */
@@ -338,11 +409,12 @@ extern void get_pass(char *, int, int, int);
 extern int  yes_no(int, int);
 extern int  on_off(int, int);
 extern int  menu_choose(int, int, char **, unsigned int);
-extern int  wait_key(void);
+extern int  wait_key(int);
 extern int  help_ysn(void);
 extern void scroll_rows(struct MacListStat *, int, int, int, int);
 extern void exit_shell(void);
 extern void exit_program(void);
+extern void polling_interval(void);
 extern int  get_opts(void);
 extern void save_Stations(struct MacListStat *);
 extern void uni_menu(struct umitems *umenu, int num);
@@ -353,11 +425,15 @@ extern void bridging(void);
 extern void wep(void);
 extern void WirelessStat(void);
 extern void atmel_stations(void);
+extern void atmel_aplink(void);
 extern void atmel_sysinfo(void);
 extern void atmel_set_oeminfo(void);
 extern void ap_search(void);
 
 /* snmp engine*/
+extern void close_sockfd(void);
+extern int  open_sockfd(void);
+extern int  reopen_sockfd(void);
 extern int snmp(varbind *, int, int);
 extern int ber(char *, varbind *, int, int);
 /* extern unsigned int ber_decode_uint(unsigned char *, int); */
@@ -373,7 +449,7 @@ extern void APs(void);
 extern void power(void);
 extern void test(void);
 extern void atmel_wireless(void);
-extern void atmel_auth_mac(void);
+extern void atmel_auth(void);
 
 /* function prototypes specific for NWN utility */
 extern void latest(void);
index a633d0d2cf339d8e50558b0d68c63f0d49f31a2f..be1e09dffa25d037b5b19c10b93907b9055093c8 100644 (file)
@@ -2,7 +2,7 @@
  *      ap_search.c from Access Point SNMP Utils for Linux
  *
  * Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
- * Copyright (c) 2003 Jan Rafaj <aputils at cedric dot vabo dot cz>
+ * Copyright (c) 2003 Jan Rafaj <jr-aputils at cedric dot unob dot cz>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License Version 2 from
@@ -46,7 +46,7 @@
 #endif
 
 #define SEARCH_COMMUNITY _("Community name: ")
-#define SEARCH_HEADER _("  NUM  IP ADDRESS       MIB TYPE    NAME")
+#define SEARCH_HEADER _("  NUM  IP ADDRESS       MIB TYPE    FW TYPE (VERSION) AP NAME")
 #define MAX_APS LAST_ROW-7
 
 extern int atmel410_filter;
@@ -65,26 +65,32 @@ void scan_local_segment (struct sockaddr_in *from, struct sockaddr_in *to,
     extern WINDOW *main_sub;
     extern char *ap_types[];
     unsigned char message[1024], *start;
-       extern int atmel410_filter; /* to check is this function called from ap-gl utility */
+    /* unsigned char name_fw[256], *name_p, *fwver_p; */
+    extern int atmel410_filter; /* if called from ap-gl utility */
 
     
-    char Wireless[3][12] = {
-      {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x01, 0x00},
-      {0x2B, 0x06, 0x01, 0x02, 0x01, 0x01, 0x01, 0x00},
-      {0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x01, 0x01, 0x00}
-    };
-
     /*
      * operAccessPointName OIDs used to detect AP MIB type [in order
      * of appearance in the 'for' loop below: ATMEL410, NWN, ATMEL12350]
      */
-/*    char operAccessPointName[3][12] = {
+/*
+    char operAccessPointName[3][12] = {
       {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x0A, 0x00},
       {0x2B, 0x06, 0x01, 0x02, 0x01, 0x01, 0x05, 0x00},
       {0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x01, 0x0A, 0x00}
     };
 */
-    int scd_ap_type, last_searched_type=ATMEL12350;
+    /*
+     * note: we'll rather use sysDescr OID for probing, becouse the devices
+     * wont rely on correct community for this query
+     */
+    char sysDescr[3][12] = {
+      {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x01, 0x00},
+      {0x2B, 0x06, 0x01, 0x02, 0x01, 0x01, 0x01, 0x00},
+      {0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x01, 0x01, 0x00}
+    };
+
+    int scd_ap_type, last_searched_type = ATMEL12350;
     int c, s2, errno, len, client_len = SIZE;
     struct in_addr to_addr_reserv;
     struct sopts {
@@ -100,13 +106,13 @@ void scan_local_segment (struct sockaddr_in *from, struct sockaddr_in *to,
        print_help(_("Please wait while scanning, or press 'Q' to quit."));
 
     if ((s2 = socket(PF_INET, SOCK_DGRAM, 0)) == -1) {
-       print_helperr(CREATE_SOCKET_ERROR);
+       print_helperr(ERR_SOCKET);
        getch();
        return;
     }
 
     if (bind(s2, (struct sockaddr *) from, SIZE) == -1) {
-       print_helperr(BIND_SOCKET_ERROR);
+       print_helperr(ERR_SOCKET);
        getch();
        goto close_ret;
     }
@@ -138,7 +144,7 @@ void scan_local_segment (struct sockaddr_in *from, struct sockaddr_in *to,
     mvwaddstr(main_sub, LAST_ROW - 2, 1, message);
 
     if(atmel410_filter) {
-       last_searched_type=ATMEL410;
+       last_searched_type = ATMEL410;
     }  
     
     for (scd_ap_type = ATMEL410; scd_ap_type <= last_searched_type; scd_ap_type++) {
@@ -149,10 +155,10 @@ void scan_local_segment (struct sockaddr_in *from, struct sockaddr_in *to,
        wrefresh(main_sub);
 
 /*     varbinds[0].oid = operAccessPointName[scd_ap_type];*/
-       varbinds[0].oid = Wireless[scd_ap_type];
+       varbinds[0].oid = sysDescr[scd_ap_type];
        varbinds[0].len_oid = (scd_ap_type == NWN ?
 /*         8 : sizeof(operAccessPointName[scd_ap_type]));*/
-           8 : sizeof(Wireless[scd_ap_type]));
+           8 : sizeof(sysDescr[scd_ap_type]));
        varbinds[0].len_val = 0;
        varbinds[0].type = NULL_VALUE;
        len = ber(message, varbinds, 1, GET);
@@ -292,11 +298,37 @@ void scan_local_segment (struct sockaddr_in *from, struct sockaddr_in *to,
 
            for (len = 0; len < varbinds[0].len_val && start[len]; len++);
            start[len + 1] = '\0';
-           if (len > 25) {
-               /* Truncate (limited screen size) and screen-width independent! */
-               start[COLS-53-atmel410_filter] = '>';
-               start[COLS-52-atmel410_filter] = '\0';
+
+           /*
+            * Returned sysDescr string is (hopefully!) always of format:
+            *             string1 (Ver. string2) string3
+            * where:
+            *   string1 = "802.11 X "
+            *     where: "X" identifies firmware type (AP, APP, WB, WA, etc)
+            *            unfortunately this is not deterministic across
+            *            manufacturers (each one uses different naming scheme)
+            *   string2 = firmware version
+            *   string3 = device name, as defined with operAccessPointName
+            *             OID
+           name_p = strchr(start, ')');
+           *name_p = '\0';
+           name_p += 2;
+           fwver_p = strstr(start, "(Ver. ");
+           fwver_p += strlen("(Ver. ");
+           sprintf(name_fw, "%s (%s)", name_p, fwver_p);
+
+           if (strlen(name_fw) > (size_t)(COLS - MCOLS - 37)) {
+               name_fw[COLS - MCOLS - 38] = '>';
+               name_fw[COLS - MCOLS - 37] = '\0';
+           }
+            */
+
+           if (strlen(start) > (size_t)(COLS - MCOLS - 37)) {
+               /* truncate (limit to scr. size) */
+               start[COLS - MCOLS - 38] = '>';
+               start[COLS - MCOLS - 37] = '\0';
            }
+
            sprintf(message, "  %3i  %-15s  %-10s  %s", i,
                inet_ntoa(fapsa[i].ip), ap_types[fapsa[i].type], start);
            i++;
@@ -328,6 +360,7 @@ void ap_search()
     struct ifconf ifc;
     struct ifreq *ifr;
     char *ifbuf_ptr = NULL, *ifrec_ptr;
+/*
     char *old_community;
     char buf[16];
 
@@ -341,13 +374,13 @@ void ap_search()
     strncpy(community, buf, strlen(buf) + 1);
     print_help("");
     clear_main(0);
-
+*/
     print_top(NULL, _("Access Points Search"));
     mvwaddstr(main_sub, 0, 0, SEARCH_HEADER);
     wrefresh(main_sub);
 
     if ((s1 = socket(PF_INET, SOCK_DGRAM, 0)) == -1) {
-       print_helperr(CREATE_SOCKET_ERROR);
+       print_helperr(ERR_SOCKET);
        goto wait_quit;
     }
 
@@ -478,7 +511,7 @@ void ap_search()
 
                    print_top(NULL, NULL);
                    clear_main(0);
-                   free(old_community);
+/*                 free(old_community); */
                    connect_options(fapsa[ac - '0'].ip.s_addr,
                        fapsa[ac - '0'].type + 1);
                    free(fapsa);
@@ -494,12 +527,11 @@ quit:
 
     if (fapsa)
        free(fapsa);
-
+/*
     free(community);
     community = old_community;
-
+*/
     print_help("");
     print_top(NULL, NULL);
     clear_main(0);
 }
-
index 585b2477c675e69d5d8b8fa7fa47371f3983b3c4..234a2c2ed4b33d05834add6c92e6f00ff42def75 100644 (file)
--- a/lib/aps.c
+++ b/lib/aps.c
@@ -2,6 +2,7 @@
  *      aps.c from Access Point SNMP Utils for Linux
  *
  * Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
+ * Copyright (c) 2004 Jan Rafaj <jr-aputils at cedric dot unob dot cz>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License Version 2 from
@@ -29,7 +30,7 @@
 #define KNOWN_APS _("Known Access Points")
 
 extern WINDOW *main_win, *main_sub /* *win_for_menu */;
-extern short ap_type;
+extern short ap_type, ap_vendorext;
 extern int sockfd, atmel410_filter;
 extern struct in_addr ap_ip;
 
@@ -194,7 +195,7 @@ get_stats:
 show_stats:
     /* display column info in main_sub */
     mvwin(main_sub, 0, 0);
-    wattrset(main_sub, COLOR_PAIR(3));
+    wattrset(main_sub, COLOR_PAIR(13));
     for (i = 0; i < 64; i++)
        waddch(main_sub, ' ');
     switch (ap_viewtype) {
@@ -316,7 +317,7 @@ show_stats:
                }
                break;
            case 2:
-               sprintf(message, "%3d", -96 + app->q1);
+               sprintf(message, "%3d", dbmconv(app->q1));
                mvwaddstr(main_sub, aps_num+1, 56, message);
                if (ap_type == ATMEL410) {
                    sprintf(message, "%3d%%",
index 9c3b4bec7a3d36203a42594fb9c153aa6423a014..a3df8a3a7472fc1e71c11854769f5ea0cea862a5 100644 (file)
@@ -2,6 +2,7 @@
  *      common.c from Access Point SNMP Utils for Linux
  *
  * Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
+ * Copyright (c) 2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License Version 2 from
@@ -25,6 +26,7 @@
 #include <unistd.h>
 #include <fcntl.h>
 #include <sys/ioctl.h>
+#include <sys/socket.h>
 #include "ap-utils.h"
 
 #define APIP _("Access Point IP-address: ")
@@ -35,6 +37,8 @@
 #define WANT_SYS_APLABEL _("Do you want to use AP's name as its label? ")
 #define APLABEL _("Access Point label: ")
 #define SAVESETTINGS _("Save connect-settings: ")
+#define POLL_I _("[P] Polling mode interval (tenths of second): ")
+#define POLL_HELP _("P - change polling mode interval; Q - quit to menu")
 
 char *ap_types[] = {
     "ATMEL410",
@@ -45,7 +49,8 @@ char *ap_types[] = {
 char *ap_vendorexts[][3] = {
     { "NONE", "SBRIDGES" },            /* ATMEL410 exts */
     { "NONE" },                                /* NWN exts */
-    { "NONE", "TELLUS", "VERNET" }     /* ATMEL12350 exts */
+    { "NONE", "GEMTEK", "EZYNET" },    /* ATMEL12350 exts */
+    { 0 }                              /* do not delete! */
 };
 
 rdprops regdom_types[] = {
@@ -67,10 +72,11 @@ char *channels[] = {
 
 extern WINDOW *main_sub;
 extern char *community, *prog_title;
-short ap_type, ap_vendorext;
-extern int sockfd;
 extern struct in_addr ap_ip;
 
+short ap_type, ap_vendorext;
+int poll_delay = 10;
+
 void about()
 {
     int nrow = 14, ncol = 47, brow = (LINES - 5 - nrow) / 2, bcol =
@@ -102,21 +108,20 @@ void about()
     sprintf(message, _("Version %s"), VERSION);
     mvwaddstr(main_sub, brow + 3, bcol + 2, message);
     mvwaddstr(main_sub, brow + 5, bcol + 2,
-             _("Written by Roman Festchook roma@polesye.net"));
+       _("Written by Roman Festchook roma@polesye.net"));
     mvwaddstr(main_sub, brow + 6, bcol + 2,
-             _("Portions by Jan Rafaj aputils@cedric.unob.cz"));
+       _("and Jan Rafaj jr-aputils@cedric.unob.cz"));
     mvwaddstr(main_sub, brow + 7, bcol + 2,
-             _("Copyright (c) 2001-2004"));
+       _("Copyright (c) 2001-2005"));
     mvwaddstr(main_sub, brow + 8, bcol + 2,
-             _("Roman Festchook and Jan Rafaj"));
+       _("Roman Festchook and Jan Rafaj"));
     mvwaddstr(main_sub, brow + 9, bcol + 2, "http://ap-utils.polesye.net/");
     mvwaddstr(main_sub, brow + 11, bcol + 2,
-             _("This program is distributed under the terms"));
+       _("This program is distributed under the terms"));
     mvwaddstr(main_sub, brow +12, bcol + 2,
-             _("of the GNU General Public License version 2."));
+       _("of the GNU General Public License version 2."));
     mvwaddstr(main_sub, brow + 13, bcol + 2,
-             _("See the included COPYING file for details."));
-
+       _("See the included COPYING file for details."));
 
     wrefresh(main_sub);
 
@@ -140,8 +145,7 @@ void connect_options(unsigned long int ip, int type)
       {0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x01, 0x0A, 0x00}
     };
 
-    struct sockaddr_in client;
-    extern int atmel410_filter; /* to check is this function called from ap-gl utility */
+    extern int atmel410_filter; /* boolean; = 1 if we call from ap-gl utility */
     unsigned char message[256];
     unsigned char label[17];
     int fd, i;
@@ -149,22 +153,8 @@ void connect_options(unsigned long int ip, int type)
     char save_settings=1;
     varbind varbinds[1];
 
-    memset(&client, 0, sizeof client);
-    client.sin_family = AF_INET;
-    client.sin_port = INADDR_ANY;
-    client.sin_addr.s_addr = INADDR_ANY;
-
-    if (sockfd)
-       close(sockfd);
-
-    if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
-       print_helperr(CREATE_SOCKET_ERROR);
-       getch();
-       goto exit;
-    }
-
-    if (bind(sockfd, (struct sockaddr *) &client, SIZE) == -1) {
-       print_helperr(BIND_SOCKET_ERROR);
+    if (reopen_sockfd() == -1) {
+       print_helperr(ERR_SOCKET);
        getch();
        goto exit;
     }
@@ -189,17 +179,16 @@ get_all_again:
     i = 0;
     print_help("");
 
-       print_help(_("Entered characters will not be displayed "
-                    "for security reason."));
-       get_pass(message, 2, 1 + strlen(APPASS), 16);
-       if (community)
-           free(community);
-       i = strlen(message) + 1;
-       community = (char *) malloc(i);
-       strncpy(community, message, i);
-
+    print_help(_("Entered characters will not be displayed "
+                "for security reason."));
+    get_pass(message, 2, 1 + strlen(APPASS), 16);
+    if (community)
+       free(community);
+    i = strlen(message) + 1;
+    community = (char *) malloc(i);
+    strncpy(community, message, i);
 
-    if (type && ! atmel410_filter) {
+    if (type && !atmel410_filter) {
        /* entered from ap_search() */
 
        /* community already exists */
@@ -219,47 +208,41 @@ get_all_again:
 
        mvwaddstr(main_sub, 4, 1, APVENDOREXT);
     } else {
-
        if (atmel410_filter) {
-               ap_type = --type;
-               print_menusel(3, 1, APTYPE, ap_types[ap_type]);
-               ap_vendorext = NONE; /* no need to choose here, really */
-               /* marks that we want offer AP name -> AP label later */
-               i = 1;
-               mvwaddstr(main_sub, 4, 1, APVENDOREXT);
+           ap_type = --type;
+           print_menusel(3, 1, APTYPE, ap_types[ap_type]);
+           ap_vendorext = NONE; /* no need to choose here, really */
+           /* marks that we want offer AP name -> AP label later */
+           i = 1;
+           mvwaddstr(main_sub, 4, 1, APVENDOREXT);
        } else {
-               mvwaddstr(main_sub, 3, 1, AUTODETECT);
-               wrefresh(main_sub);
-               i = yes_no(3, 1 + strlen(AUTODETECT));
-               clear_main_new(3, 4);
-               mvwaddstr(main_sub, 3, 1, APTYPE);
-               if (i == 2) { /* NO */
-                   char **p;
-    
-                   wrefresh(main_sub);
-
-                   ap_type = menu_choose(3, 1 + strlen(APTYPE), ap_types, 3);
-                   print_bold(main_sub, ap_types[ap_type]);
-
-                   mvwaddstr(main_sub, 4, 1, APVENDOREXT);
-                   wrefresh(main_sub);
-                   for (i = 0, p = ap_vendorexts[ap_type]; *p++; i++);
-                   if (i == 1)
-                       ap_vendorext = NONE; /* no need to choose here, really */
-                   else
-                       ap_vendorext = menu_choose(4, 1 + strlen(APVENDOREXT),
+           mvwaddstr(main_sub, 3, 1, AUTODETECT);
+           wrefresh(main_sub);
+           i = yes_no(3, 1 + strlen(AUTODETECT));
+           clear_main_new(3, 4);
+           mvwaddstr(main_sub, 3, 1, APTYPE);
+           if (i == 2) { /* NO */
+               wrefresh(main_sub);
+               ap_type = menu_choose(3, 1 + strlen(APTYPE), ap_types, 3);
+               print_bold(main_sub, ap_types[ap_type]);
+               mvwaddstr(main_sub, 4, 1, APVENDOREXT);
+               wrefresh(main_sub);
+               for (i = 0; ap_vendorexts[ap_type][i]; i++);
+               if (i == 1)
+                   ap_vendorext = NONE; /* no need to choose here, really */
+               else
+                   ap_vendorext = menu_choose(4, 1 + strlen(APVENDOREXT),
                    ap_vendorexts[ap_type], i);
-               } else { /* YES */
-                   if (get_mib_details() == -1) {
-                       clear_main_new(1, 4);
-                       goto get_all_again;
-                   }
+           } else { /* YES */
+               if (get_mib_details() == -1) {
+                   clear_main_new(1, 4);
+                   goto get_all_again;
+               }
                print_bold(main_sub, ap_types[ap_type]);
-
-           mvwaddstr(main_sub, 4, 1, APVENDOREXT);
+               mvwaddstr(main_sub, 4, 1, APVENDOREXT);
+           }
        }
     }
-    }
     print_bold(main_sub, ap_vendorexts[ap_type][ap_vendorext]);
 
     print_help(
@@ -291,7 +274,7 @@ get_all_again:
                    label[i] = *(varbinds[0].value + i);
                    waddch(main_sub, label[i]);
                }
-               label[++i] = '\0';
+               label[i] = '\0';
                wattrset(main_sub, A_NORMAL);
                if (strlen(varbinds[0].value) > 16) {
                    print_helperr("Warning! AP LABEL truncated to first 16 characters of AP NAME. Press any key.");
@@ -314,6 +297,8 @@ get_all_again:
     mvwaddstr(main_sub, 6, 1, SAVESETTINGS);
     wrefresh(main_sub);
     save_settings = on_off(6, 1 + strlen(SAVESETTINGS));
+    clear_main_new(6, 7);
+    print_menusel(6, 1, SAVESETTINGS, (save_settings == 1) ? ON : OFF);
 
     print_bottom(inet_ntoa(ap_ip));
 
@@ -325,7 +310,13 @@ get_all_again:
                    community, label, ap_type, ap_vendorext);
                write(fd, message, strlen(message));
                close(fd);
-           }
+               wbkgd(main_sub, A_NORMAL);
+               wrefresh(main_sub);
+               print_help(DONE_WRITING_APCONF);
+           } else
+               print_helperr(ERR_WRITING_APCONF);
+
+           getch();
        }
     }
   exit:
@@ -336,8 +327,8 @@ get_all_again:
 }
 
 /*
- * Determines AP MIB type (fills ap_type), and AP MIB vendor extensions
- * (changes values of ap_vendorext global). Returns with -1 on error or 0
+ * Determines AP MIB type (fills ap_type global), and AP MIB vendor extensions
+ * (fills ap_vendorext global). Returns with -1 on error or 0
  * if everything is OK.
  */
 int get_mib_details()
@@ -348,15 +339,25 @@ int get_mib_details()
     char sysDescr_ATMEL[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x01, 0x00
     };
-    char operEthernetAddress_ATMEL[] = {
-        0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x03, 0x00
+    /*
+     * ATMEL410: SMARTBRIDGES MIB define this with length 4 (IpAddress); others
+     * (hopefully) do not define this but eventually return (hopefully)
+     * different value than 4.
+     */
+    char AuthRadiusIP_ATMEL[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x06, 0x03, 0x00
+    };
+    /* ATMEL12350: GEMTEK and EZYNET MIBs define length 160, others 92 or 128 */
+    char sysDeviceInfo_ATMEL[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x01, 0x05, 0x00
     };
-    char Wireless_ATMEL[] = {
-       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x03, 0x01, 0x00
+    /* ATMEL12350: EZYNET MIB defines length 104, others 88 */
+    char wirelessStatistics_ATMEL[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x03, 0x01, 0x00
     };
+
     varbind varbinds[2];
-    char oui_sbridges[3] = { 0x00, 0x30, 0x1A };
-    char oui_tellus[3] = { 0x00, 0x04, 0xDB };
+    int i;
 
     print_help(_("Trying to probe AP for MIB properties. Please wait..."));
 
@@ -397,53 +398,67 @@ int get_mib_details()
 
     /*
      * It is best to do the following HERE and FOR ONCE ONLY: find out more
-     * about specific MIB modifications - we'll use them on different places
-     * later.
+     * about specific MIB vendor extensions - we'll check against them
+     * on different places later.
      */
-    varbinds[0].type = NULL_VALUE;
-    varbinds[0].oid = operEthernetAddress_ATMEL;
-    varbinds[0].len_oid = sizeof(operEthernetAddress_ATMEL);
-    varbinds[0].len_val = 0;
-    varbinds[1].type = NULL_VALUE;
-    varbinds[1].oid = Wireless_ATMEL;
-    varbinds[1].len_oid = sizeof(Wireless_ATMEL);
-    varbinds[1].len_val = 0;
-    if (ap_type == ATMEL12350) {
-       operEthernetAddress_ATMEL[5] = 0xE0;
-       operEthernetAddress_ATMEL[6] = 0x3E;
-       Wireless_ATMEL[5] = 0xE0;
-       Wireless_ATMEL[6] = 0x3E;
-    }
-    if (snmp(varbinds, 2, GET) <= 0) {
-        print_helperr(ERR_RET);
-       getch();
-        return -1;
-    }
 
-    /*
-     * Detection of different vendor-modified ATMEL private MIBs.
-     * Note that results here are considered mutually exclusive, although
-     * MIBs *may* share a lot of properties - for example, the condition
-     * for TELLUS is matched also with VERNET firmware, but we want
-     * unambiguous results => exactly one type is to be returned each pass
-     * => the order of these conditions is important.
-     */
     ap_vendorext = NONE;
 
-    if (ap_type == ATMEL410 && (memcmp(oui_sbridges, varbinds[0].value, 3) ==0))
-       ap_vendorext = SBRIDGES;
+    if (ap_type == ATMEL410) {
+       varbinds[0].oid = AuthRadiusIP_ATMEL;
+       varbinds[0].len_oid = sizeof(AuthRadiusIP_ATMEL);
+       varbinds[0].value = NULL;
+       varbinds[0].len_val = 0;
+       varbinds[0].type = NULL_VALUE;
+
+       i = snmp(varbinds, 1, GET);
+       if (i < 0) {
+           print_helperr(ERR_RET);
+           getch();
+           return -1;
+       }
+
+       /*
+        * i == 0 => 'no such variable in the MIB' returned =>
+        * consider 'ap_vendorext = NONE' too.
+        */
+
+       if (varbinds[0].len_val == 4)
+           ap_vendorext = SBRIDGES;
+    }
 
-    if (ap_type == ATMEL12350 && (memcmp(oui_tellus, varbinds[0].value, 3) ==0))
-       ap_vendorext = TELLUS;
+    if (ap_type == ATMEL12350) {
+       varbinds[0].oid = sysDeviceInfo_ATMEL;
+       varbinds[0].len_oid = sizeof(sysDeviceInfo_ATMEL);
+       varbinds[0].value = NULL;
+       varbinds[0].len_val = 0;
+       varbinds[0].type = NULL_VALUE;
+       varbinds[1].oid = wirelessStatistics_ATMEL;
+       varbinds[1].len_oid = sizeof(wirelessStatistics_ATMEL);
+       varbinds[1].value = NULL;
+       varbinds[1].len_val = 0;
+       varbinds[1].type = NULL_VALUE;
+
+       if (snmp(varbinds, 2, GET) <= 0) {
+           print_helperr(ERR_RET);
+           getch();
+           return -1;
+       }
 
-    if (ap_type == ATMEL12350 && varbinds[1].len_val == 104)
-       ap_vendorext = VERNET;
+       if (varbinds[0].len_val == 160)
+           ap_vendorext = GEMTEK;
+
+       if (varbinds[1].len_val == 104)
+           ap_vendorext = EZYNET;
+    }
 
     return 0;
 }
 
 void exit_program()
 {
+    erase();
+    refresh();
     endwin();
     exit(0);
 }
@@ -457,6 +472,46 @@ void exit_shell()
     refresh();
 }
 
+/*
+ * Sets different-than-default (1 sec.) polling interval for polling-active
+ * modes, from interval <0.1;86400> seconds.
+ * poll_delay is natively in tenths of second.
+ */
+void polling_interval()
+{
+    unsigned char message[256];
+    int c = 0;
+
+    noecho();
+    print_help(POLL_HELP);
+
+    while (1) {
+       sprintf(message, _("%s%u"), POLL_I, poll_delay);
+       mvwaddstr(main_sub, 0, 0, message);
+       sprintf(message, _("(%0.1f seconds)"), (float) poll_delay / 10);
+       mvwaddstr(main_sub, 1, strlen(POLL_I), message);
+       wrefresh(main_sub);
+       c = getch();
+       switch (c) {
+           case 'P':
+           case 'p':
+               get_value(message, 0, strlen(POLL_I), 7, INT_STRING, 1, 864000,
+                   POLL_HELP);
+               poll_delay = atoi(message);
+               clear_main_new(0, 2);
+               break;
+           case 'Q':
+           case 'q':
+               goto quit;
+       }
+    }
+
+quit:
+    print_help("");
+    clear_main(0);
+    return;
+}
+
 /*
  * Expects regulatory domain code on input and returns index of a corresponding
  * regdom_types[] member, that describes the given regulatory domain properties.
@@ -471,4 +526,3 @@ int regdom_idx(char regdom)
 
     return i;
 }
-
index 22dbf7a0f5deb303406f711e5ea87e280498fbb3..415cfcc64f3f84ed0c7b06fef996d1cbdd8b3ca1 100644 (file)
@@ -32,6 +32,7 @@ extern char *ap_types[], *ap_vendorexts[][3];
 extern short ap_type, ap_vendorext;
 extern struct in_addr ap_ip;
 extern int atmel410_filter;
+
 #define MAX_LINES LINES-6
 
 struct APList {
@@ -140,20 +141,13 @@ int get_opts()
 {
     extern char *community;
     extern struct in_addr ap_ip;
-    extern int sockfd;
-       
+
     char *home_dir, buf[1024], mess[64];
     char message[50];
     int c, fd, rval = 0, pos;
     signed int j, i, begin, end, record_num = 0;
     struct APList *first = NULL, *curr = NULL, *pmac; 
-    struct sockaddr_in client;
-
 
-    memset(&client, 0, sizeof client);
-    client.sin_family = AF_INET;
-    client.sin_port = INADDR_ANY;
-    client.sin_addr.s_addr = INADDR_ANY;
 
     if ((home_dir = getenv("HOME")) == NULL)
        return 0;
@@ -246,14 +240,9 @@ int get_opts()
                strncpy(community, curr->passwd, i);
                ap_type = curr->type;
                ap_vendorext = curr->vendorext;
-               rval = 1;
-               if (sockfd)
-                   close(sockfd);
 
-               if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
-                   rval = 0;
-
-               if (bind(sockfd, (struct sockaddr *) &client, SIZE) == -1)
+               rval = 1;
+               if (reopen_sockfd() == -1)
                    rval = 0;
 
                print_bottom(inet_ntoa(ap_ip));
@@ -282,14 +271,9 @@ int get_opts()
                strncpy(community, curr->passwd, i);
                ap_type = curr->type;
                ap_vendorext = curr->vendorext;
-               rval = 1;
-               if (sockfd)
-                   close(sockfd);
 
-               if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
-                   rval = 0;
-
-               if (bind(sockfd, (struct sockaddr *) &client, SIZE) == -1)
+               rval = 1;
+               if (reopen_sockfd() == -1)
                    rval = 0;
 
                print_bottom(inet_ntoa(ap_ip));
@@ -356,6 +340,42 @@ wrong_num:
                }
                continue;
 
+           case KEY_NPAGE:
+               if (end < record_num) {
+                   end = (end + (MAX_LINES) - 1 < record_num) ?
+                       end + (MAX_LINES) - 1 : record_num;
+                   begin = (end - (MAX_LINES) + 1 > 0) ?
+                       end - (MAX_LINES) + 1 : 1;
+                   _scroll_rows(first, begin, end);
+               }
+               continue;
+
+           case KEY_PPAGE:
+               if (begin > 1) {
+                   begin = (begin - (MAX_LINES) + 1 > 0) ?
+                       begin - (MAX_LINES) + 1 : 1;
+                   end = (begin + (MAX_LINES) - 1 < record_num) ?
+                       begin + (MAX_LINES) - 1 : record_num;
+                   _scroll_rows(first, begin, end);
+               }
+               continue;
+
+           case KEY_END:
+               if (end < record_num) {
+                   begin = (record_num > MAX_LINES) ? record_num + 1 - (MAX_LINES) : 1;
+                   end = record_num;
+                   _scroll_rows(first, begin, end);
+               }
+               continue;
+
+           case KEY_HOME:
+               if (begin > 1) {
+                   begin = 1;
+                   end = (record_num > MAX_LINES) ? MAX_LINES : record_num;
+                   _scroll_rows(first, begin, end);
+               }
+               continue;
+
            case 'w':
            case 'W':
                sprintf(buf, "%s/.ap-config", home_dir);
@@ -368,14 +388,10 @@ wrong_num:
                        curr = curr->next;
                    }
                    close(fd);
-                   print_help(
-                       _("AP list file ~/.ap-config successfully written. "
-                         "Press any key."));
-               } else {
-                   print_helperr(
-                       _("Unable to write AP list file ~/.ap-config. "
-                         "Press any key."));
-               }
+                   print_help(DONE_WRITING_APCONF);
+               } else
+                   print_helperr(ERR_WRITING_APCONF);
+
                getch();
                continue;
        }
index b77dd835bbaf5e85688c48c10c8fc9c01f1862d9..b966f12558d5c303a803101723e544ad83510cdb 100644 (file)
@@ -1,8 +1,9 @@
 /*
- *      scr.c from Access Point SNMP Utils for Linux
+ *      input.c from Access Point SNMP Utils for Linux
  *     program input & screen related functions
  *
  * Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
+ * Copyright (c) 2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License Version 2 from
@@ -21,8 +22,6 @@
 
 #include <stdlib.h>
 #include <string.h>
-#include <sys/time.h>
-#include <sys/types.h>
 #include <unistd.h>
 #include <menu.h>
 #include <errno.h>
@@ -42,8 +41,9 @@ get_mac(char *mac, int row, int col)
     char message[MAC_LEN+1], mess[MAC_LEN/MAC_BYTES+1];
     int i;
 
-    get_value(message, row, col, MAC_LEN+1, HEX_STRING, 0, 0, NULL);
-    if (strlen(message) < 12) i = 255;
+    message[0] = '\0';
+    while (strlen(message) != 12)
+       get_value(message, row, col, MAC_LEN+1, HEX_STRING, 0, 0, NULL);
 
     for (i = 0; i < MAC_BYTES; i++) {
        mess[0] = message[2 * i];
@@ -77,9 +77,10 @@ get_ip_again:
 void
 get_mask(struct in_addr *ip, int row, int col, char *helpmsg)
 {
-    int i, bit, hmask, trans_count = 0;
+    int i, bit, hmask, trans_count;
 
 get_mask_again:
+    trans_count = 0;
     get_ip(ip, row, col, helpmsg);
     hmask = ntohl(ip->s_addr);
     bit = hmask & 0x00000001;
@@ -125,28 +126,29 @@ void
 get_value(char *value, int row, int col, int len,
          char vt, unsigned int minv, unsigned int maxv, char *helpmsg)
 {
-    unsigned int i;
-    unsigned char c, acs;
+    int c, i, x, y;
+    unsigned char acs;
     char iv_msg[128], zerolen_perm = 0;
+    enum { INSERT, OVERWRITE } mode;
+    WINDOW *gv_win;
 
     if (vt == ANY_STRING && len < 0) {
        zerolen_perm = 1;
        len = -len;
     }
 
-    echo();
-    wattrset(main_sub, COLOR_PAIR(2));
+    gv_win = derwin(main_sub, 1, len - 1, row, col);
+    wbkgdset(gv_win, A_REVERSE);
+
 get_value_again:
-    wmove(main_sub, row, col);
-    for (i = 0; i < (unsigned int)len - 1; i++)
-       waddch(main_sub, ' ');
+    mode = INSERT;
     curs_set(1);
-    wmove(main_sub, row, col);
-    wrefresh(main_sub);
+    werase(gv_win);
+    wrefresh(gv_win);
 
-    i = 0;
+    i = 0; /* means 'character count' here */
     while (1) {
-       c = getchar();
+       c = getch();
        acs = 0;
        switch (vt) {
            case INT_STRING:
@@ -160,54 +162,116 @@ get_value_again:
            case ANY_STRING:
                acs = 1;
        }
-       if (c == 0x7F) {
-           /* DELETE KEY */
-           if (i > 0) {
-               value[i--] = 0;
-               wmove(main_sub, row, col + i);
-               waddch(main_sub, ' ');
-               /* put backspace to move cursor back */
-               wechochar(main_sub, 0x08);
-           }
-           continue;
-       } else if (c == 0x0D) {
-           /* ENTER KEY */
-           if (i > 0 || zerolen_perm)
+       /* rather do not ask, how this works... */
+       getyx(gv_win, y, x);
+       switch (c) {
+           case KEY_BACKSPACE:
+               /* lefthandside DELETE */
+               if (x > 0) {
+                   /*
+                    * do not step cursor back only if window is filled AND
+                    * cursor is totally on RHS
+                    */
+                   if ((i < len - 1) || (x < len - 2))
+                       x--;
+                   mvwdelch(gv_win, 0, x);
+                   wrefresh(gv_win);
+                   i--;
+               }
                break;
-           continue;
-       } else if (c == 0x1B) {
-           /* ESCAPE KEY */
-           continue;
-       } else if (acs && (i < (unsigned int)len - 1)) {
-           value[i++] = c;
-           wechochar(main_sub, c);
+           case KEY_DC:
+               /* righthandside DELETE */
+               if (i > 0) {
+                   if (x == i)
+                       x--;
+                   mvwdelch(gv_win, 0, x);
+                   wrefresh(gv_win);
+                   i--;
+               }
+               break;
+           case KEY_LEFT:
+               if (x > 0) {
+                   wmove(gv_win, 0, --x);
+                   wrefresh(gv_win);
+               }
+               break;
+           case KEY_RIGHT:
+               if (x < i) {
+                   wmove(gv_win, 0, ++x);
+                   wrefresh(gv_win);
+               }
+               break;
+           case KEY_HOME:
+               wmove(gv_win, 0, 0);
+               wrefresh(gv_win);
+               break;
+           case KEY_END:
+               wmove(gv_win, 0, (i == len - 1 ? i - 1 : i));
+               wrefresh(gv_win);
+               break;
+           case KEY_IC:
+               mode = (mode == INSERT ? OVERWRITE : INSERT);
+               curs_set(mode == INSERT ? 1 : 2);
+               break;
+           case 0x0A:
+               /* ENTER KEY */
+               if (i > 0 || zerolen_perm)
+                   goto away;
+
+               break;
+           default:
+               if (acs && (c < 0x100)) {
+                   if (mode == INSERT) {
+                       if (i < len - 1) {
+                           winsch(gv_win, c);
+                           i++;
+                           wmove(gv_win, 0, ++x);
+                           wrefresh(gv_win);
+                       }
+                   } else {
+                       if (i <= len - 1) {
+//                         wechochar(gv_win, c);
+                           waddch(gv_win, c);
+                           if (x == i)
+                               i++;
+                           wmove(gv_win, 0, ++x);
+                           wrefresh(gv_win);
+                       }
+                   }
+               }
        }
     }
+
+away:
+    wmove(gv_win, 0, 0);
+    winnstr(gv_win, value, i);
     value[i] = 0;
+    curs_set(0);
 
-    noecho();
-    if (vt == INT_STRING && (minv | maxv)) {
-       errno = 0;
+    if (vt == INT_STRING) {
        i = strtoul(value, (char **)NULL, 10);
-       if (i < minv || i > maxv || errno == ERANGE) {
-           if (helpmsg) {
-               snprintf(iv_msg, sizeof(iv_msg) - 1, OOR_IV_MSG, minv, maxv);
-               print_helperr(iv_msg);
-               getch();
-               print_help(helpmsg);
+       sprintf(value, "%i", i); /* eat leading zeros */
+       if (minv | maxv) {
+           errno = 0;
+           if ((unsigned)i < minv || (unsigned)i > maxv || errno == ERANGE) {
+               if (helpmsg) {
+                   snprintf(iv_msg, sizeof(iv_msg) -1, OOR_IV_MSG, minv, maxv);
+                   print_helperr(iv_msg);
+                   getch();
+                   print_help(helpmsg);
+               }
+               goto get_value_again;
            }
-           goto get_value_again;
        }
     }
 
-    curs_set(0);
-    wattrset(main_sub, A_BOLD);
-    wmove(main_sub, row, col);
-    for (i = 0; i < (unsigned int)len - 1; i++)
-       waddch(main_sub, ' ');
-    mvwaddstr(main_sub, row, col, value);
-    wattrset(main_sub, A_NORMAL);
-    wrefresh(main_sub);
+    wbkgdset(gv_win, A_BOLD);
+    werase(gv_win);
+    waddstr(gv_win, value);
+    wrefresh(gv_win);
+//    mvwprintw(main_sub, 18, 1, "length: %i", i);
+//    wrefresh(main_sub);
+    delwin(gv_win);
 }
 
 /*
@@ -220,7 +284,7 @@ get_pass(char *value, int row, int col, int len)
 {
     int i, j = 0;
 
-    wattrset(main_sub, COLOR_PAIR(2));
+    wattrset(main_sub, COLOR_PAIR(12));
     wmove(main_sub, row, col);
     for (i = 0; i < len - 1; i++)
        waddch(main_sub, ' ');
@@ -293,7 +357,7 @@ int menu_choose(int brow, int bcol, char **names, unsigned int num)
     else
        choose_menu = newwin(nrow, ncol, brow - nrow + 3, bcol + MCOLS);
     sub_choose_menu = derwin(choose_menu, nrow - 2, ncol - 2, 1, 1);
-    attrset(COLOR_PAIR(1));
+    attrset(COLOR_PAIR(11));
 
     mvwaddch(choose_menu, 0, 0, ACS_ULCORNER);
     mvwaddch(choose_menu, 0, ncol - 1, ACS_URCORNER);
@@ -363,45 +427,29 @@ int menu_choose(int brow, int bcol, char **names, unsigned int num)
 }
 
 /*
- * Reads key by either getch() (WAIT_FOREVER mode) or select()
- * (WAIT_TIMEOUT mode). Returns -1 upon error, 0 for timeout, or
- * pressed key code.
+ * Reads key by either no-delay getch() (WAIT_FOREVER mode) or using
+ * getch() with tval tenths of second timeout (WAIT_TIMEOUT mode).
+ * Returns 0 for timeout, or pressed key code.
  */
-int wait_key()
+int wait_key(int tval)
 {
-    int i = 0;
-    fd_set rds;
-    struct timeval timeout;
+    int i;
     extern int wait_mode;
 
-    timeout.tv_sec = 1;
-    timeout.tv_usec = 0;
-    FD_ZERO(&rds);
-    FD_SET(0, &rds);
-
-    if (wait_mode == WAIT_TIMEOUT) {
-       /*
-        * wait up to timeout until anything is avail. for reading
-        * on stdin
-        */
-       i = select(1, &rds, NULL, NULL, &timeout);
-
-       /* not timed out => anything avail. for reading in rds */
-       if (i > 0)
-           i = getc(stdin);
-
-       /* error occured */
-       if (i == -1) {
-           print_helperr(SELECT);
-           getch();
-       }
+    if (wait_mode == WAIT_TIMEOUT)
+       timeout(tval * 100);
 
-       /* also happens: i = 0 => timeout => release */
+    i = getch();
 
-    } else { /* wait_mode = WAIT_FOREVER */
-       i = getch();
+    if (wait_mode == WAIT_TIMEOUT) {
+       timeout(-1);
+//     nocbreak();
+//     cbreak();
     }
 
+    if (i == ERR)
+       i = 0;
+
     return i;
 }
 
index 9aeb6d93c5a47dbbc3167ac8a180f9079f8b99b2..e2cfaef3178235bfd66da2f78e2b46d771892cb6 100644 (file)
@@ -44,44 +44,38 @@ void uni_menu(struct umitems *umenu, int num)
 
     post_menu(menu);
 
-    wrefresh(sub_for_menu);
     print_help(umenu[0].help);
 
     while (1) {
+       wrefresh(sub_for_menu);
        switch (getch()) {
        case KEY_DOWN:
        case 'j':
        case 'J':
            menu_driver(menu, REQ_NEXT_ITEM);
-           wrefresh(sub_for_menu);
            break;
        case KEY_RIGHT:
        case 'l':
        case 'L':
            menu_driver(menu, REQ_LAST_ITEM);
-           wrefresh(sub_for_menu);
            break;
        case KEY_LEFT:
        case 'h':
        case 'H':
            menu_driver(menu, REQ_FIRST_ITEM);
-           wrefresh(sub_for_menu);
            break;
        case KEY_UP:
        case 'k':
        case 'K':    
            menu_driver(menu, REQ_PREV_ITEM);
-           wrefresh(sub_for_menu);
            break;
        case KEY_PPAGE:
        case KEY_HOME:
            menu_driver(menu, REQ_FIRST_ITEM);
-           wrefresh(sub_for_menu);
            break;
        case KEY_NPAGE:
        case KEY_END:
            menu_driver(menu, REQ_LAST_ITEM);
-           wrefresh(sub_for_menu);
            break;
        case 'q':
        case 'Q':
@@ -89,9 +83,14 @@ void uni_menu(struct umitems *umenu, int num)
            goto quitmenu;
        case 's':
        case 'S':
-           if (set_oeminfo_allowed)
+           if (set_oeminfo_allowed) {
+               set_menu_mark(menu, " ");
+               set_menu_fore(menu, A_NORMAL);
+               wrefresh(sub_for_menu);
                atmel_set_oeminfo();
-
+               set_menu_mark(menu, "-");
+               set_menu_fore(menu, A_STANDOUT);
+           }
            break;
        /* Enter */
        case 10:
@@ -111,11 +110,12 @@ quitmenu:
            }
            if (umenu[idx].is_menu)
                unpost_menu(menu);
+
            umenu[idx].func();
-           if (umenu[idx].is_menu) {
+
+           if (umenu[idx].is_menu)
                post_menu(menu);
-               wrefresh(sub_for_menu);
-           }
+
            break;
        default:
            continue;           
index 5295e1451fe53e38073598f0b2766a81e4e84eb2..b125abd69cb10857ecbcf2a05e3ed7d01607758f 100644 (file)
--- a/lib/oui.c
+++ b/lib/oui.c
@@ -2741,7 +2741,10 @@ char *oui2manufacturer(char *mac)
        0x00, 0x0C, 0xCE, "Cisco Systems"}, {
        0x00, 0x0D, 0x54, "3Com Europe Ltd"}, {
        0x00, 0x0D, 0x88, "D-Link Corporation"}, {
+       0x00, 0x0E, 0x2E, "Edimax Technology Co., Ltd."}, {
        0x00, 0x0E, 0xA6, "ASUSTEK COMPUTER INC."}, {
+       0x00, 0x0F, 0x3D, "D-Link Corporation"}, {
+       0x00, 0x0F, 0x66, "Cisco-Linksys"}, {
        0x00, 0x10, 0x00, "CABLE TELEVISION LABORATIES, INC."}, {
        0x00, 0x10, 0x01, "MCK COMMUNICATIONS"}, {
        0x00, 0x10, 0x02, "ACTIA"}, {
@@ -2998,6 +3001,8 @@ char *oui2manufacturer(char *mac)
        0x00, 0x10, 0xFD, "COCOM A/S"}, {
        0x00, 0x10, 0xFE, "DIGITAL EQUIPMENT CORPORATION"}, {
        0x00, 0x10, 0xFF, "CISCO SYSTEMS, INC."}, {
+       0x00, 0x11, 0x2F, "ASUSTek Computer Inc."}, {
+       0x00, 0x11, 0x7C, "e-zy.net"}, {
        0x00, 0x1C, 0x7C, "PERQ SYSTEMS CORPORATION"}, {
        0x00, 0x20, 0x00, "LEXMARK INTERNATIONAL, INC."}, {
        0x00, 0x20, 0x01, "DSP SOLUTIONS, INC."}, {
index d96137e46df3d4b1f2a28999f1cefada8c22c2d8..f7551fcf4ba3b8b59df03f8ecb3bfe22a4120e19 100644 (file)
@@ -108,7 +108,7 @@ void power()
     varbinds[1].type = NULL_VALUE;
 
     print_help(WAIT_RET);
-    if (snmp(varbinds, 2, GET) <= 0) {
+    if (snmp(varbinds, 2, GET) < 2) {
        print_helperr(ERR_RET);
        goto exit;
     }
@@ -299,6 +299,8 @@ void power()
                print_helperr(ERR_SET);
                goto exit;
            }
+           wbkgd(main_sub, A_NORMAL);
+           wrefresh(main_sub);
            break;
        default:
            continue;
index b0eeb0ca69164c7d8bc54911de5b0058c661b801..6ad506a3bcbefc3b2da320e9658380e4d9ac96b5 100644 (file)
--- a/lib/scr.c
+++ b/lib/scr.c
@@ -25,6 +25,7 @@
 #include <menu.h>
 
 extern WINDOW *main_sub, *win_for_help, *main_win;
+extern short ap_type, ap_vendorext;
 
 enum { dBm, percentage, rawval } sts_viewtype = dBm;
 
@@ -36,22 +37,16 @@ scroll_rows(struct MacListStat *first, int begin, int end, int row,
     struct MacListStat *curr = first;
     char message[100];
 
-    clear_main(3);
+    clear_main(row);
 
     while (i++ < begin)
        curr = curr->next;
     i = 0;
     while (end-- > begin) {
        if (stat == 1) {
-           /* NWN view */
+           /* NWN STAtions listing */
            sprintf(message,
-               (sts_viewtype == dBm) ?
-               "%4u       %02X%02X%02X%02X%02X%02X        %3u%5u   %3udBm"
-               :
-               (sts_viewtype == percentage) ?
-               "%4u       %02X%02X%02X%02X%02X%02X        %3u%5u     %3u%%"
-               :
-               "%4u       %02X%02X%02X%02X%02X%02X        %3u%5u      %3u",
+               "%4u       %02X%02X%02X%02X%02X%02X        %3u%5u     %3d",
                begin + i, curr->addr[0] & 0xFF, curr->addr[1] & 0xFF,
                curr->addr[2] & 0xFF, curr->addr[3] & 0xFF,
                curr->addr[4] & 0xFF, curr->addr[5] & 0xFF,
@@ -60,56 +55,50 @@ scroll_rows(struct MacListStat *first, int begin, int end, int row,
                conv_rssi(curr->rssi)
            );
        } else if (stat == 2) {
-           /* ATMEL410_SBRIDGES (firmware 1.4k.1) view */
-           sprintf(message,
-               (sts_viewtype == dBm) ?
-               "%2u %02X%02X%02X%02X%02X%02X %3d%% %4ddBm  %3u    %2u   %s"
-               :
-               (sts_viewtype == percentage) ?
-               "%2u %02X%02X%02X%02X%02X%02X %3d%%   %3u%%  %3u    %2u   %s"
-               :
-               "%2u %02X%02X%02X%02X%02X%02X %3d%%    %3u  %3u    %2u   %s",
-               begin + i,
-               curr->addr[0] & 0xFF, curr->addr[1] & 0xFF,
-               curr->addr[2] & 0xFF, curr->addr[3] & 0xFF,
-               curr->addr[4] & 0xFF, curr->addr[5] & 0xFF,
-               curr->quality,
-               conv_rssi(curr->rssi),
-               curr->Status,
-               curr->Port,
-               inet_ntoa(curr->IP)
-           );
-       } else if (stat == 3) {
-           /* ATMEL12350_VERNET view */
-           sprintf(message,
-               (sts_viewtype == dBm) ?
-               "%2u %02X%02X%02X%02X%02X%02X %02X%02X%02X%02X%02X%02X "
-               "%4ddBm  %3u    %2u  %s"
-               :
-               (sts_viewtype == percentage) ?
-               "%2u %02X%02X%02X%02X%02X%02X %02X%02X%02X%02X%02X%02X "
-               "  %3u%%   %3u    %2u  %s"
-               :
-               "%2u %02X%02X%02X%02X%02X%02X %02X%02X%02X%02X%02X%02X "
-               "   %3u   %3u    %2u  %s",
+           /* ATMEL STAtions listing */
+           char parentmac[13] = "      -     ";
+           char rssi[5] = "   -";
+           char quality[5] = "   -";
+           char status[4] = "  -";
+           char port[4] = " -";
+           char ip[16] = "      -        ";
+
+           if (curr->ParentMacAddress[0] | curr->ParentMacAddress[1] |
+               curr->ParentMacAddress[2] | curr->ParentMacAddress[3] |
+               curr->ParentMacAddress[4] | curr->ParentMacAddress[5])
+               sprintf(parentmac, "%02X%02X%02X%02X%02X%02X",
+                   curr->ParentMacAddress[0] & 0xFF,
+                   curr->ParentMacAddress[1] & 0xFF,
+                   curr->ParentMacAddress[2] & 0xFF,
+                   curr->ParentMacAddress[3] & 0xFF,
+                   curr->ParentMacAddress[4] & 0xFF,
+                   curr->ParentMacAddress[5] & 0xFF);
+
+           if (curr->rssi)
+               sprintf(rssi, "%4d", conv_rssi(curr->rssi));
+
+           if (curr->quality)
+               sprintf(quality, "%3u%%", curr->quality);
+
+           if (curr->Status)
+               sprintf(status, "%3u", curr->Status);
+
+           if (curr->Port)
+               sprintf(port, "%2u", curr->Port);
+
+           if(curr->IP.s_addr)
+               sprintf(ip, "%s", inet_ntoa(curr->IP));
+
+           sprintf(message, "%3u %02X%02X%02X%02X%02X%02X %s %s %s %s   %s %s",
                begin + i,
                curr->addr[0] & 0xFF, curr->addr[1] & 0xFF,
                curr->addr[2] & 0xFF, curr->addr[3] & 0xFF,
                curr->addr[4] & 0xFF, curr->addr[5] & 0xFF,
-               curr->ParentMacAddress[0] & 0xFF,
-               curr->ParentMacAddress[1] & 0xFF,
-               curr->ParentMacAddress[2] & 0xFF,
-               curr->ParentMacAddress[3] & 0xFF,
-               curr->ParentMacAddress[4] & 0xFF,
-               curr->ParentMacAddress[5] & 0xFF,
-               conv_rssi(curr->rssi),
-               curr->Status,
-               curr->Port,
-               inet_ntoa(curr->IP)
+               parentmac, rssi, quality, status, port, ip
            );
        } else {
-           /* generic ATMEL view */
-           sprintf(message, "%2u       %02X%02X%02X%02X%02X%02X",
+           /* MAC auth table listing */
+           sprintf(message, " %3u     %02X%02X%02X%02X%02X%02X",
                begin + i, curr->addr[0] & 0xFF, curr->addr[1] & 0xFF,
                curr->addr[2] & 0xFF, curr->addr[3] & 0xFF,
                curr->addr[4] & 0xFF, curr->addr[5] & 0xFF
@@ -139,9 +128,9 @@ void print_help(char *mess)
 
 void print_helperr(char *mess)
 {
-    wattrset(win_for_help, COLOR_PAIR(4) | A_BOLD);
+    wattrset(win_for_help, COLOR_PAIR(14) | A_BOLD);
     print_help(mess);
-    wattrset(win_for_help, COLOR_PAIR(1));
+    wattrset(win_for_help, COLOR_PAIR(11));
 }
 
 void print_bold(WINDOW *wptr, char *mess)
@@ -199,16 +188,16 @@ void print_top_rssi(char *message_r)
 {
     char message_l[200];
 
-    sprintf(message_l, "%s", VIEW);
+    sprintf(message_l, "%s", "RSSI: ");
     switch (sts_viewtype) {
        case dBm:
-          strcat(message_l, "RSSI in dBm");
+          strcat(message_l, "dBm");
           break;
        case percentage:
-          strcat(message_l, "RSSI in percentage");
+          strcat(message_l, "%");
           break;
        case rawval:
-          strcat(message_l, "RSSI in raw values");
+          strcat(message_l, "raw");
     }
     print_top(message_l, message_r);
 }
@@ -232,7 +221,7 @@ int conv_rssi(int raw_rssi)
 {
     switch (sts_viewtype) {
        case dBm:
-          return (-96 + raw_rssi); 
+          return (dbmconv(raw_rssi)); 
        case percentage:
           return ((int)((minimum (raw_rssi, 40)) * (float)2.5));
        case rawval:
index 84e7c7380474a405146d719f93debf1a18c5e747..22f6c20edd21d8c0266f249a04ba8df0461b29a9 100644 (file)
@@ -71,7 +71,7 @@ void AuthorizedSettings()
     print_top(NULL, COMMUNITY_TOP_HEADER);
 
     mvwaddstr(main_sub, 0, 0, COMMUNITY_HEADER1);
-    mvwaddstr(main_sub, 0, 25, COMMUNITY_HEADER2);
+    mvwaddstr(main_sub, 0, 37, COMMUNITY_HEADER2);
     mvwaddstr(main_sub, 1, 0, COMMUNITY_USER);
     mvwaddstr(main_sub, 2, 0, COMMUNITY_ADMIN);
 
@@ -88,23 +88,22 @@ void AuthorizedSettings()
            continue;
        case 'U':
        case 'u':
-/*         get_value(user, 1, 25, sizeof(user), ANY_STRING, 0, 0, NULL); */
-           get_pass(user, 1, strlen(COMMUNITY_USER), sizeof(user));
+/*         get_value(user, 1, 37, sizeof(user), ANY_STRING, 0, 0, NULL); */
+           get_pass(user, 1, 37, sizeof(user));
            continue;
        case 'A':
        case 'a':
-/*         get_value(admin, 2, 25, sizeof(admin), ANY_STRING, 0, 0, NULL); */
-           get_pass(admin, 2, strlen(COMMUNITY_ADMIN), sizeof(admin));
+/*         get_value(admin, 2, 37, sizeof(admin), ANY_STRING, 0, 0, NULL); */
+           get_pass(admin, 2, 37, sizeof(admin));
            continue;
        case 'M':
        case 'm':
            if (ap_type == ATMEL410 || ap_type == ATMEL12350)
 /*
-               get_value(manufact, 3, 25, sizeof(manufact), ANY_STRING,
+               get_value(manufact, 3, 37, sizeof(manufact), ANY_STRING,
                    0, 0, NULL);
 */
-               get_pass(manufact, 3, strlen(COMMUNITY_MANUF),
-                   sizeof(manufact));
+               get_pass(manufact, 3, 37, sizeof(manufact));
            continue;
        case 'Q':
        case 'q':
@@ -141,6 +140,8 @@ void AuthorizedSettings()
                print_helperr(ERR_SET);
                goto exit;
            }
+           wbkgd(main_sub, A_NORMAL);
+           wrefresh(main_sub);
            break;
        }
        break;
index a150bd4b11aec43bb091d495aef24c5aaf292bae..3d137a3fd3d6e2c1db7a4272dea256104d2fd32a 100644 (file)
@@ -1,7 +1,7 @@
 /*
- *      sysinfo_set.c from Access Point SNMP Utils for Linux
+ *      set_oeminfo.c from Access Point SNMP Utils for Linux
  *
- * Copyright (c) Jan Rafaj <jr-aputils at cedric dot unob dot cz>
+ * Copyright (c) 2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License Version 2 from
@@ -19,6 +19,7 @@
  */
 
 #include <stdlib.h>
+#include <string.h>
 #include <unistd.h>
 #include <sys/time.h>
 #include <sys/types.h>
 #define S_STRUCTVERSION _("Info structure version: ")
 #define S_MAC _("[M] Device MAC address: ")
 #define V_OUI _("    Manufacturer with this OUI: ")
-#define S_DEFCHAN _("[C] Default channel: ")
 #define S_REGDOM _("[D] Regulatory domain: ")
 #define S_PRODTYPE _("[T] Product type: ")
 #define S_OEMNAME _("[E] OEM name: ")
 #define S_OEMID _("[I] OEM ID: ")
 #define S_PRODNAME _("[N] Product name: ")
 #define S_HWREV _("[H] Hardware revision: ")
-// #define S_PIDVID _("[V] PID & VID: ")
 #define S_COUNTRYC _("[O] Country code: ")
-// #define S_CHANNELS _("[A] Available channels: ")
-#define S_TXPOWER _("[P] Nominal Tx Power (CR31) value for all used channels: ")
+#define S_DEFCHAN _("[C] Default channel: ")
+#define S_CHANNELS _("[A] Calibrated channels: ")
+#define S_TXPOWER _("[P] Nominal Tx Power (CR31) value for calibrated channels: ")
 #define OEMSET_HELP _("Keys in brackets - set corresponding option; W - write conf; Q - quit to menu")
 
 extern WINDOW *main_sub;
@@ -52,43 +52,47 @@ void atmel_set_oeminfo()
     char sysDeviceInfo[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x05, 0x00
     };
-    // Following one is only available in ATMEL12350 MIBs
+    // Following one is only available in newer ATMEL12350 MIBs
     char sysDeviceMoreInfo[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x01, 0x08, 0x00
     };
 
     char message[200], c;
     char **regdoms;
-    int i, rd_idx;
+    int i, rd_idx, st_len;
     varbind varbinds[1];
-    struct sysDeviceInfo_ATMEL410 str410;
-    struct sysDeviceInfo_ATMEL12350 str12350;
+    struct sysDeviceInfo_128 str128; /* SHORTst */
+    struct sysDeviceInfo_160 str160; /* LONGst */
 
     /*
-     * These have to represent used sysDeviceInfo_{ATMEL410,ATMEL12350} members
-     * Note that sysOIDSize and sysOID can NOT be written using sysDevice*Info
-     * OID at all.
+     * These have to represent used sysDeviceInfo_{128,160} members
+     * Note that sysOIDSize, sysOID and PID_VID can NOT be written
+     * using sysDevice*Info OIDs at all - the only way to change them
+     * (highly discouraged !) is in OEM configuration file, using AP RFMD
+     * or AP INTERSIL configuration editor, followed by uploading this file
+     * to the AP using ATMEL tftp client - this way, *all* defaults
+     * can be changed.
      */
     uint32_t StructVersion;    // [4]
     char *MacAddress;          // [6]
-                               // [2 reserved for ATMEL410; 0 for ATMEL12350]
-    char Channel = 0; // ATMEL12350 specific; [0 for AT.410; 1 for ATMEL12350]
-    uint32_t RegulatoryDomain; // [4 for ATMEL410; 1 for ATMEL12350]
+                               // [2 reserved for SHORTst; 0 for LONGst] 
+    char Channel = 0; // LONGst specific: [0 for SHORTst; 1 for LONGst]
+    uint32_t RegulatoryDomain; // [4 for SHORTst; 1 for LONGst]
     uint32_t ProductType;      // [4]
     char *OEMName;             // [32]
     uint32_t OEMID;            // [4]
     char *ProductName;         // [32]
     uint32_t HardwareRevision; // [4]
-    /* the rest is ATMEL12350 specific */
-    char *PID_VID = NULL;      // [0 for ATMEL410; 4 for ATMEL12350]
-    uint32_t sysOIDSize = 0;   // [0 for ATMEL410; 4 for ATMEL12350]
-    uint16_t *sysOID = NULL;   // [0 for ATMEL410; 32 for ATMEL12350]
-    char *CountryCode = NULL;  // [0 for ATMEL410; 3 for ATMEL12350]
-                               // [0 for ATMEL410; 1 reserved for ATMEL12350]
-    uint16_t ChannelInformation = 0; // [0 for ATMEL410; 2 for ATMEL12350]
-                               // [0 for ATMEL410; 2 reserved for ATMEL12350]
-    char *TxPower = NULL;      // [0 for ATMEL410; 14 for ATMEL12350]
-                               // [0 for ATMEL410; 10 reserved for ATMEL12350]
+    /* the rest is LONGst specific */
+    char *PID_VID = NULL;      // [0 for SHORTst; 4 for LONGst]
+    uint32_t sysOIDSize = 0;   // [0 for SHORTst; 4 for LONGst]
+    uint16_t *sysOID = NULL;   // [0 for SHORTst; 32 for LONGst]
+    char *CountryCode = NULL;  // [0 for SHORTst; 3 for LONGst]
+                               // [0 for SHORTst; 1 reserved for LONGst]
+    uint16_t ChannelInformation = 0; // [0 for SHORTst; 2 for LONGst]
+                               // [0 for SHORTst; 2 reserved for LONGst]
+    char *TxPower = NULL;      // [0 for SHORTst; 14 for LONGst]
+                               // [0 for SHORTst; 10 reserved for LONGst]
     clear_main(0);
     noecho();
 
@@ -153,35 +157,37 @@ void atmel_set_oeminfo()
        goto exit;
     }
 
-    if (ap_type == ATMEL410) {
-       memcpy(&str410, varbinds[0].value,
-           sizeof(struct sysDeviceInfo_ATMEL410));
-       StructVersion           = str410.StructVersion;
-       MacAddress              = str410.MacAddress;
-       RegulatoryDomain        = str410.RegulatoryDomain;
-       ProductType             = str410.ProductType;
-       OEMName                 = str410.OEMName;
-       OEMID                   = str410.OEMID;
-       ProductName             = str410.ProductName;
-       HardwareRevision        = str410.HardwareRevision;
-    } else { /* ATMEL12350 */
-       memcpy(&str12350, varbinds[0].value,
-           sizeof(struct sysDeviceInfo_ATMEL12350));
-       StructVersion           = str12350.StructVersion;
-       MacAddress              = str12350.MacAddress;
-       Channel                 = str12350.Channel;
-       RegulatoryDomain        = str12350.RegulatoryDomain;
-       ProductType             = str12350.ProductType;
-       OEMName                 = str12350.OEMName;
-       OEMID                   = str12350.OEMID;
-       ProductName             = str12350.ProductName;
-       HardwareRevision        = str12350.HardwareRevision;
-       PID_VID                 = str12350.PID_VID;
-       sysOIDSize              = str12350.sysOIDSize;
-       sysOID                  = str12350.sysOID;
-       CountryCode             = str12350.CountryCode;
-       ChannelInformation      = str12350.ChannelInformation;
-       TxPower                 = str12350.TxPower;
+    st_len = varbinds[0].len_val;
+
+    if (st_len == 92 || st_len == 128) { /* SHORTst */
+       memcpy(&str128, varbinds[0].value,
+           sizeof(struct sysDeviceInfo_128));
+       StructVersion           = str128.StructVersion;
+       MacAddress              = str128.MacAddress;
+       RegulatoryDomain        = str128.RegulatoryDomain;
+       ProductType             = str128.ProductType;
+       OEMName                 = str128.OEMName;
+       OEMID                   = str128.OEMID;
+       ProductName             = str128.ProductName;
+       HardwareRevision        = str128.HardwareRevision;
+    } else { /* st_len == 160 => LONGst */
+       memcpy(&str160, varbinds[0].value,
+           sizeof(struct sysDeviceInfo_160));
+       StructVersion           = str160.StructVersion;
+       MacAddress              = str160.MacAddress;
+       Channel                 = str160.Channel;
+       RegulatoryDomain        = str160.RegulatoryDomain;
+       ProductType             = str160.ProductType;
+       OEMName                 = str160.OEMName;
+       OEMID                   = str160.OEMID;
+       ProductName             = str160.ProductName;
+       HardwareRevision        = str160.HardwareRevision;
+       PID_VID                 = str160.PID_VID;
+       sysOIDSize              = str160.sysOIDSize;
+       sysOID                  = str160.sysOID;
+       CountryCode             = str160.CountryCode;
+       ChannelInformation      = str160.ChannelInformation;
+       TxPower                 = str160.TxPower;
     }
 
     clear_main(0);
@@ -218,41 +224,52 @@ void atmel_set_oeminfo()
     sprintf(message, "%s%u", S_HWREV, HardwareRevision);
     mvwaddstr(main_sub, 8, 0, message);
 
-    if (ap_type == ATMEL12350) {
-       sprintf(message, "%s%02u (%u MHz)", S_DEFCHAN, Channel,
-           2407 + 5 * Channel);
-       mvwaddstr(main_sub, 9, 0, message);
-
-       wmove(main_sub, 10, 0);
-       for (i = 0; i++ < COLS - MCOLS; waddch(main_sub, ACS_BSBS));
+    wmove(main_sub, 9, 0);
+    for (i = 0; ++i < COLS - MCOLS; waddch(main_sub, ACS_BSBS));
 
+    if (st_len == 160) {
        sprintf(message, "%s%s", S_COUNTRYC, CountryCode);
-       mvwaddstr(main_sub, 11, 0, message);
+       mvwaddstr(main_sub, 10, 0, message);
 
-//     TODO: find out what format this is in [apparently 2x uint16?]
-//     sprintf(message, "%s%u %u %u %u", S_PIDVID,
-//         PID_VID[0] & 0xFF, PID_VID[1] & 0xFF,
-//         PID_VID[2] & 0xFF, PID_VID[3] & 0xFF);
-//     mvwaddstr(main_sub, 12, 0, message);
+       sprintf(message, "%s%02u (%u MHz)", S_DEFCHAN, Channel,
+           2407 + 5 * Channel);
+       mvwaddstr(main_sub, 11, 0, message);
 
-//     TODO: find out what format ChannelInformation is in & enable this
-//     sprintf(message, "%s%u", S_CHANNELS, ChannelInformation);
-//     mvwaddstr(main_sub, 13, 0, message);
+       i = 1;
+       while(ChannelInformation >> i) i++;
+       sprintf(message, "%s%i", S_CHANNELS, i);
+       mvwaddstr(main_sub, 12, 0, message);
 
        sprintf(message, "%s%u", S_TXPOWER,
            TxPower[regdom_types[rd_idx].first_ch] & 0xFF);
-       mvwaddstr(main_sub, 12, 0, message);
+       mvwaddstr(main_sub, 13, 0, message);
 #if 0 /* DEBUG */
-       wmove(main_sub, 17, 0);
+       wmove(main_sub, 18, 0);
        for (i = 0; i < 14; i++) {
            sprintf(message, "%-3u ", TxPower[i] & 0xFF);
            waddstr(main_sub, message);
        }
 #endif /* DEBUG */
 
-       sprintf(message, "[-] First %u OID elements: .%u.%u.%u.%u",
-           sysOIDSize / 2, sysOID[0], sysOID[1], sysOID[2], sysOID[3]);
-       mvwaddstr(main_sub, 13, 0, message);
+       wmove(main_sub, 14, 0);
+       for (i = 0; ++i < COLS - MCOLS; waddch(main_sub, ACS_BSBS));
+
+       sprintf(message, "System control OID part [%u elements]: ", sysOIDSize);
+       mvwaddstr(main_sub, 15, 0, message);
+       i = 0;
+       while (i < (int)sysOIDSize) {
+           sprintf(message, ".%u", sysOID[i++]);
+           waddstr(main_sub, message);
+       }
+
+       sprintf(message, "USB Vendor ID: 0x%04X", (PID_VID[0] & 0xFF) |
+           ((PID_VID[1] & 0xFF) << 8));
+       mvwaddstr(main_sub, 16, 0, message);
+
+       sprintf(message, "USB Product ID: 0x%04X", (PID_VID[2] & 0xFF) |
+           ((PID_VID[3] & 0xFF) << 8));
+       mvwaddstr(main_sub, 17, 0, message);
+
     }
     wrefresh(main_sub);
 
@@ -294,11 +311,11 @@ void atmel_set_oeminfo()
 
                free(regdoms);
 
-               if (ap_type == ATMEL12350) {
+               if (st_len == 160) {
                    Channel = regdom_types[rd_idx].first_ch;
                    sprintf(message, "%02u (%u MHz)", Channel,
                        2407 + 5 * Channel);
-                   print_menusel(9, 0, S_DEFCHAN, message);
+                   print_menusel(11, 0, S_DEFCHAN, message);
                }
                continue;
            case 'e':
@@ -329,12 +346,21 @@ void atmel_set_oeminfo()
                    INT_STRING, 0, 0xFFFFFFFF, OEMSET_HELP);
                HardwareRevision = atoi(message);
                continue;
+           case 'o':
+           case 'O':
+               if (st_len == 92 || st_len == 128)
+                   continue;
+
+               get_value(CountryCode, 10, strlen(S_COUNTRYC), 3, ANY_STRING,
+                   0, 0, NULL);
+               continue;
            case 'c':
            case 'C':
-               if (ap_type != ATMEL12350)
+               if (st_len == 92 || st_len == 128)
                    continue;
 
-               Channel = menu_choose(3, strlen(S_DEFCHAN) - 2,
+               Channel = menu_choose(11 - regdom_types[rd_idx].chans / 2,
+               strlen(S_DEFCHAN) - 2,
 #ifndef NO_REG_DOMAIN
                 channels + regdom_types[rd_idx].first_ch - 1,
                 regdom_types[rd_idx].chans) + regdom_types[rd_idx].first_ch;
@@ -342,29 +368,43 @@ void atmel_set_oeminfo()
                 channels, 14) + 1;
 #endif
                sprintf(message, "%02u (%u MHz)", Channel, 2407 + 5 * Channel);
-               print_menusel(9, 0, S_DEFCHAN, message);
+               print_menusel(11, 0, S_DEFCHAN, message);
                continue;
-           case 'o':
-           case 'O':
-               if (ap_type != ATMEL12350)
+           case 'a':
+           case 'A':
+               if (st_len == 92 || st_len == 128)
                    continue;
 
-               get_value(CountryCode, 11, strlen(S_COUNTRYC), 3, ANY_STRING,
-                   0, 0, NULL);
+               get_value(message, 12, strlen(S_CHANNELS), 3, INT_STRING, 1, 14,
+                   OEMSET_HELP);
+               memset((void *)TxPower + 1, 0, 13);
+               for(i = 1; i < atoi(message); i++)
+                   TxPower[i] = TxPower[0];
+
+               i = 1 << (atoi(message) - 1);
+               ChannelInformation = i | (i - 1);
                continue;
            case 'p':
            case 'P':
-               if (ap_type != ATMEL12350)
+               if (st_len == 92 || st_len == 128)
                    continue;
 
-               memset((void *)TxPower, 0, 14);
-               get_value(message, 12, strlen(S_TXPOWER), 4, INT_STRING, 0, 255,
+               get_value(message, 13, strlen(S_TXPOWER), 4, INT_STRING, 0, 255,
                    OEMSET_HELP);
                c = atoi(message) & 0xFF;
+
+               memset((void *)TxPower, 0, 14);
+               i = 0;
+               while(ChannelInformation >> i) {
+                   TxPower[i] = c;
+                   i++;
+               }
+/*
+               memset((void *)TxPower, 0, 14);
                for (i = regdom_types[rd_idx].first_ch; i <
                regdom_types[rd_idx].first_ch + regdom_types[rd_idx].chans; i++)
                   TxPower[i - 1] = c;
-
+*/
                continue;
            case 'q':
            case 'Q':
@@ -375,23 +415,23 @@ void atmel_set_oeminfo()
                varbinds[0].len_oid = sizeof(sysDeviceInfo);
                varbinds[0].type = STRING_VALUE;
 
-               if (ap_type == ATMEL410) {
-                   str410.RegulatoryDomain     = RegulatoryDomain;
-                   str410.ProductType          = ProductType;
-                   str410.OEMID                = OEMID;
-                   str410.HardwareRevision     = HardwareRevision;
-                   varbinds[0].value = (char *) &str410;
+               if (st_len == 92 || st_len == 128) { /* SHORTst */
+                   str128.RegulatoryDomain     = RegulatoryDomain;
+                   str128.ProductType          = ProductType;
+                   str128.OEMID                = OEMID;
+                   str128.HardwareRevision     = HardwareRevision;
+                   varbinds[0].value = (char *) &str128;
                    varbinds[0].len_val =
-                       sizeof(struct sysDeviceInfo_ATMEL410);
-               } else { /* ATMEL12350 */
-                   str12350.Channel            = Channel;
-                   str12350.RegulatoryDomain   = RegulatoryDomain;
-                   str12350.ProductType        = ProductType;
-                   str12350.OEMID              = OEMID;
-                   str12350.HardwareRevision   = HardwareRevision;
-//                 str12350.ChannelInformation = ChannelInformation;
-                   varbinds[0].value = (char *) &str12350;
-                   // first 92 bytes of struct sysDeviceInfo_ATMEL12350 here
+                       sizeof(struct sysDeviceInfo_128);
+               } else { /* st_len == 160 => LONGst */
+                   str160.Channel              = Channel;
+                   str160.RegulatoryDomain     = RegulatoryDomain;
+                   str160.ProductType  = ProductType;
+                   str160.OEMID                = OEMID;
+                   str160.HardwareRevision     = HardwareRevision;
+                   str160.ChannelInformation   = ChannelInformation;
+                   varbinds[0].value = (char *) &str160;
+                   /* first 92 bytes of struct sysDeviceInfo_160 here */
                    varbinds[0].len_val = 92;
                }
 
@@ -401,12 +441,12 @@ void atmel_set_oeminfo()
                    goto exit;
                }
 
-               if (ap_type == ATMEL12350) {
+               if (st_len == 160) {
                    varbinds[0].oid = sysDeviceMoreInfo;
                    varbinds[0].len_oid = sizeof(sysDeviceMoreInfo);
                    varbinds[0].type = STRING_VALUE;
-                   // last 32 bytes of struct sysDeviceInfo_ATMEL12350 here
-                   varbinds[0].value = (char *) &str12350.CountryCode;
+                   /* last 32 bytes of struct sysDeviceInfo_160 here */
+                   varbinds[0].value = (char *) &str160.CountryCode;
                    varbinds[0].len_val = 32;
                    if (snmp(varbinds, 1, SET) <= 0) {
                        print_helperr(ERR_SET);
@@ -414,6 +454,8 @@ void atmel_set_oeminfo()
                    }
                }
 
+               wbkgd(main_sub, A_NORMAL);
+               wrefresh(main_sub);
                print_help(DONE_SET);
                goto exit;
        }
index 03bbf81a277a78bc6cef8a5c358b93b19e3654d5..cab421281a14ff1414c535daa2e841435b51c6ee 100644 (file)
@@ -3,7 +3,6 @@
  *     basic snmp packets assembly/disassembly and send/receive functions
  *
  * Copyright (c) Roman Festchook <roma at polesye dot net>
- *               Jan Rafaj <jr-aputils at cedric dot unob dot cz>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License Version 2 from
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <signal.h>
-#include <setjmp.h>
+#include <sys/time.h>
 #include <sys/types.h>
 #include <netinet/in.h>
 #include <sys/socket.h>
 #include <arpa/inet.h>
 #include "ap-utils.h"
 
-#define RETRIES 5
-
-sigjmp_buf position;
-
 extern char *community;
 extern short ap_type;
-extern int sockfd;
 extern struct in_addr ap_ip;
-int retries;
-char *buf = NULL;
 
-static void alarm_handler()
+int sockfd = 0, snmp_quit_by_keypress = 0;
+
+void close_sockfd()
+{
+    if (sockfd)
+       close(sockfd);
+}
+
+int open_sockfd()
+{
+    struct sockaddr_in client;
+
+    if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
+       return -1;
+
+    memset(&client, 0, sizeof client);
+    client.sin_family = AF_INET;
+    client.sin_port = INADDR_ANY;
+    client.sin_addr.s_addr = INADDR_ANY;
+
+    if (bind(sockfd, (struct sockaddr *) &client, SIZE) == -1)
+       return -1;
+
+    return 0;
+}
+
+int reopen_sockfd()
 {
-    retries--;
-    siglongjmp(position, 1);
+    close_sockfd();
+    return (open_sockfd());
 }
 
 /*
@@ -145,43 +162,75 @@ int ber(char *message, varbind * varbindlist, int num, int type)
 
 int snmp(varbind * varbindlist, int num, int type)
 {
-    unsigned char message[1024], *start;
+    static char buf[1024];
+    unsigned char *start;
     unsigned int num_reply;
-    int len;
+    int len = 0, tries = 5;
     struct sockaddr_in server;
+    struct timeval timeout;
+    fd_set rds;
 
     if (num == 0)
        return 1;
 
+    /*
+     * Flush sockfd by reopening. This prevents various 'something received/
+     * available on sockfd prior snmp() call' desync problems.
+     */
+    if (reopen_sockfd() == -1)
+       return 0;
+
     memset(&server, 0, sizeof server);
     server.sin_family = AF_INET;
     server.sin_port = htons(161);
     server.sin_addr.s_addr = ap_ip.s_addr;
 
-    signal(SIGALRM, alarm_handler);
-    retries = RETRIES;
-    sigsetjmp(position, 1);
-    if (!retries) {
-       return 0;
-    }
+    while (tries--) {
+       len = ber(buf, varbindlist, num, type);
+       if (sendto(sockfd, buf, len, 0, (struct sockaddr *) &server, SIZE)
+           == -1) {
+           return 0;
+       }
 
-    alarm(1);
-    len = ber(message, varbindlist, num, type);
-    if (sendto(sockfd, message, len, 0, (struct sockaddr *) &server, SIZE)
-       == -1) {
-       alarm(0);
-       return 0;
-    }
-    if ((len = recv(sockfd, message, 1024, 0)) == -1) {
-       alarm(0);
-       return 0;
+       FD_ZERO(&rds);
+       FD_SET(sockfd, &rds);
+       timeout.tv_sec = 1;
+       timeout.tv_usec = 0;
+
+       if (select(sockfd + 1, &rds, NULL, NULL, &timeout) == -1)
+           return 0;
+
+       if (FD_ISSET(sockfd, &rds)) {
+           if ((len = recv(sockfd, buf, sizeof buf, 0)) <= 0)
+               return 0;
+           else
+               break;
+       }
+
+       /* timeout => next try, as long as no key has been pressed */
+
+       /*
+        * Allow for quick 'last resort' escape using q/Q. Note:
+        * we may not use one select() for checking both fd 0 and sockfd, since
+        * something may appear on sockfd later than key has been pressed =>
+        * give gratuitous 1sec delay for response arrival to sockfd, and THEN
+        * just poll for anything on fd 0.
+        */
+       if (snmp_quit_by_keypress && type == GET) {
+           FD_ZERO(&rds);
+           FD_SET(0, &rds);
+           timeout.tv_sec = 0;
+           timeout.tv_usec = 0;
+           if (select(1, &rds, NULL, NULL, &timeout) == -1)
+               return 0;
+
+           if (FD_ISSET(0, &rds))
+               return 0;
+       }
     }
-    alarm(0);
 
-    if (buf)
-       free(buf);
-    buf = (char *) malloc(len);
-    memcpy(buf, message, len);
+    if (!tries)
+       return 0;
 
     start = buf;
     num_reply = 0;
index 7ebe726a926bc266899692df6468de6358ade8e1..e5a340e704ea05c802c59965214dd982c48fea76 100644 (file)
 
 extern WINDOW *main_sub;
 extern short ap_type;
-extern int wait_mode;
+extern int wait_mode, poll_delay;
 
 void EthStat()
 {
-    struct EthernetRxStatistics *EthRxStat = NULL;
-    struct EthernetTxStatistics *EthTxStat = NULL;
+    struct EthRxStatistics_s *EthRxStat = NULL;
+    struct EthTxStatistics_s *EthTxStat = NULL;
 
-    char EthRx[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01,
-       0x07, 0x01, 0x00
+    char EthRxStatistics[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x07, 0x01, 0x00
     };
-
-    char EthTx[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01,
-       0x07, 0x02, 0x00
+    char EthTxStatistics[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x07, 0x02, 0x00
     };
+
     char message[1024];
     varbind varbinds[2];
     int i;
 
     if (ap_type == ATMEL12350) {
-       EthRx[5] = 0xE0;
-       EthRx[6] = 0x3E;
-       EthTx[5] = 0xE0;
-       EthTx[6] = 0x3E;
+       EthRxStatistics[5] = 0xE0;
+       EthRxStatistics[6] = 0x3E;
+       EthTxStatistics[5] = 0xE0;
+       EthTxStatistics[6] = 0x3E;
     }
     
     print_top(wait_mode == WAIT_TIMEOUT ? POLL_ON : POLL_OFF, ETH_STAT);
@@ -62,23 +62,23 @@ void EthStat()
     if (wait_mode == WAIT_TIMEOUT)
         print_help(QT_HELP);
 
-    varbinds[0].oid = EthRx;
-    varbinds[0].len_oid = sizeof(EthRx);
-    varbinds[1].oid = EthTx;
-    varbinds[1].len_oid = sizeof(EthTx);
+    varbinds[0].oid = EthRxStatistics;
+    varbinds[0].len_oid = sizeof(EthRxStatistics);
+    varbinds[1].oid = EthTxStatistics;
+    varbinds[1].len_oid = sizeof(EthTxStatistics);
 
     while (1) {
-//     varbinds[0].value = EthTx;
+//     varbinds[0].value = EthRxStatistics;
        varbinds[0].len_val = 0;
        varbinds[0].type = NULL_VALUE;
-//     varbinds[1].value = EthTx;
+//     varbinds[1].value = EthTxStatistics;
        varbinds[1].len_val = 0;
        varbinds[1].type = NULL_VALUE;
 
        if (wait_mode == WAIT_FOREVER)
            print_help(WAIT_RET);
 
-       if (snmp(varbinds, 2, GET) <= 0) {
+       if (snmp(varbinds, 2, GET) < 2) {
            print_helperr(ERR_RET);
            getch();
            goto quit;
@@ -91,7 +91,7 @@ void EthStat()
            if (EthRxStat)
                free(EthRxStat);
            EthRxStat =
-               (struct EthernetRxStatistics *) malloc(varbinds[0].
+               (struct EthRxStatistics_s *) malloc(varbinds[0].
                                                       len_val);
            memcpy(EthRxStat, varbinds[0].value, varbinds[0].len_val);
        } else {
@@ -104,7 +104,7 @@ void EthStat()
            if (EthTxStat)
                free(EthTxStat);
            EthTxStat =
-               (struct EthernetTxStatistics *) malloc(varbinds[1].
+               (struct EthTxStatistics_s *) malloc(varbinds[1].
                                                       len_val);
            memcpy(EthTxStat, varbinds[1].value, varbinds[1].len_val);
        } else {
@@ -181,7 +181,7 @@ void EthStat()
        mvwaddstr(main_sub, 18, 2, message);
        wrefresh(main_sub);
 
-       i = wait_key();
+       i = wait_key(poll_delay);
        if (i == -1)
            goto quit;
 
@@ -214,19 +214,19 @@ void EthStat()
 
 void WirelessStat()
 {
-    struct WirelessStatistics *WirelessStat = NULL;
+    struct wirelessStatistics_s *WirelessStat = NULL;
 
-    char Wireless[] =
-       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x03, 0x01,
-       0x00
+    char wirelessStatistics[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x03, 0x01, 0x00
     };
+
     char message[80];
     int i;
     varbind varbinds[1];
 
     if (ap_type == ATMEL12350) {
-       Wireless[5] = 0xE0;
-       Wireless[6] = 0x3E;
+       wirelessStatistics[5] = 0xE0;
+       wirelessStatistics[6] = 0x3E;
     }
 
     print_top(wait_mode == WAIT_TIMEOUT ? POLL_ON : POLL_OFF, W_STAT);
@@ -235,11 +235,11 @@ void WirelessStat()
     if (wait_mode == WAIT_TIMEOUT)
        print_help(QT_HELP);
 
-    varbinds[0].oid = Wireless;
-    varbinds[0].len_oid = sizeof(Wireless);
+    varbinds[0].oid = wirelessStatistics;
+    varbinds[0].len_oid = sizeof(wirelessStatistics);
 
     while (1) {
-       varbinds[0].value = Wireless;
+       varbinds[0].value = wirelessStatistics;
        varbinds[0].len_val = 0;
        varbinds[0].type = NULL_VALUE;
 
@@ -258,12 +258,12 @@ void WirelessStat()
        if (varbinds[0].len_val == 88 || varbinds[0].len_val == 104) {
            /*
             * 88 ... using traditional ATMEL 12350 MIB
-            * 104 .. using functionally enhanced ATMEL 12350 MIB by VERNET
+            * 104 .. using functionally enhanced ATMEL 12350 MIB by EZYNET
             */
            if (WirelessStat)
                free(WirelessStat);
            WirelessStat =
-               (struct WirelessStatistics *) malloc(varbinds[0].len_val);
+               (struct wirelessStatistics_s *) malloc(varbinds[0].len_val);
            memcpy(WirelessStat, varbinds[0].value, varbinds[0].len_val);
        } else {
            print_helperr
@@ -332,7 +332,7 @@ void WirelessStat()
                swap4(WirelessStat->InvalidPLCP));
        mvwaddstr(main_sub, 15, 1, message);
 
-       /* ATMEL12350 MIB 'VERNET' modification has in addition the following */
+       /* ATMEL12350 MIB EZYNET modification has in addition the following */
        if (varbinds[0].len_val == 104) {
            mvwaddstr(main_sub, 16, 1, "TransmittedPackets:");
            sprintf(message, "* at 11 Mbps       %10u",
@@ -350,7 +350,7 @@ void WirelessStat()
        }
        wrefresh(main_sub);
 
-       i = wait_key();
+       i = wait_key(poll_delay);
        if (i == -1)
            goto quit;
 
@@ -468,7 +468,7 @@ void nwn_wireless_stat()
        if (wait_mode == WAIT_FOREVER)
            print_help(WAIT_RET);
 
-       if (snmp(varbinds, 16, GET) <= 0) {
+       if (snmp(varbinds, 16, GET) < 16) {
            print_helperr(ERR_RET);
            getch();
            goto quit;
@@ -510,7 +510,7 @@ void nwn_wireless_stat()
        mvwaddstr(main_sub, 10, 1, message);
        wrefresh(main_sub);
 
-       i = wait_key();
+       i = wait_key(poll_delay);
        if (i == -1)
            goto quit;
 
index 283309f87779bbe79b2e0d3892f94ead8975ad22..a190762d51a08af40fc68386b2ea07cf1d229545 100644 (file)
@@ -32,6 +32,8 @@
 #define OID_NUM 11
 
 extern WINDOW *main_sub;
+extern char* bridge_modes[6];
+extern int poll_delay;
 
 void atmel_sysinfo()
 {
@@ -41,22 +43,35 @@ void atmel_sysinfo()
     char sysDeviceInfo[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x05, 0x00
     };
-    /* This one is ATMEL12350 VERNET MIB specific. */
+    char bridgeOperationalMode[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x01, 0x00
+    };
+    /* This one is ATMEL12350 EZYNET MIB specific. */
     char UpTime[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x09, 0x01, 0x00
     };
 
+char *bridge_modes[6] = {
+           _("Wireless Bridge Point to MultiPoint"),
+               _("Access Point"),
+                   _("Access Point client"),
+                       _("Wireless Bridge Point to Point"),
+                           _("Repeater"),
+                               _("unknown")
+};
+
+    
     char message[200];
     int i;
-    varbind varbinds[3];
-    struct sysDeviceInfo_ATMEL410 str410;
-    struct sysDeviceInfo_ATMEL12350 str12350;
+    varbind varbinds[4];
+    struct sysDeviceInfo_128 str128;
+    struct sysDeviceInfo_160 str160;
     extern short ap_type, ap_vendorext;
     extern int LINES, wait_mode;
     extern rdprops regdom_types[];
 
     /*
-     * These have to represent used sysDeviceInfo_{ATMEL410,ATMEL12350} members
+     * These have to represent used sysDeviceInfo_{128,160} members
      */
     uint32_t ap_sversion;
     char *ap_macaddr;
@@ -72,6 +87,8 @@ void atmel_sysinfo()
        sysDescr[6] = 0x3E;
        sysDeviceInfo[5] = 0xE0;
        sysDeviceInfo[6] = 0x3E;
+       bridgeOperationalMode[5] = 0xE0;
+       bridgeOperationalMode[6] = 0x3E;
     }
 
     print_top(wait_mode == WAIT_TIMEOUT ? POLL_ON : POLL_OFF, SYSINFO);
@@ -82,33 +99,40 @@ void atmel_sysinfo()
     while (1) {
        i = 0;
 
-       varbinds[0].oid = sysDescr;
-       varbinds[0].len_oid = sizeof(sysDescr);
-       varbinds[0].value = sysDescr;
-       varbinds[0].type = NULL_VALUE;
-       varbinds[0].len_val = 0;
+       varbinds[i].oid = sysDescr;
+       varbinds[i].len_oid = sizeof(sysDescr);
+       varbinds[i].value = sysDescr;
+       varbinds[i].type = NULL_VALUE;
+       varbinds[i].len_val = 0;
        i++;
 
-       varbinds[1].oid = sysDeviceInfo;
-       varbinds[1].len_oid = sizeof(sysDeviceInfo);
-       varbinds[1].value = sysDeviceInfo;
-       varbinds[1].len_val = 0;
-       varbinds[1].type = NULL_VALUE;
+       varbinds[i].oid = sysDeviceInfo;
+       varbinds[i].len_oid = sizeof(sysDeviceInfo);
+       varbinds[i].value = sysDeviceInfo;
+       varbinds[i].len_val = 0;
+       varbinds[i].type = NULL_VALUE;
        i++;
 
-       if (ap_vendorext == VERNET) {
-           varbinds[2].oid = UpTime;
-           varbinds[2].len_oid = sizeof(UpTime);
-           varbinds[2].value = UpTime;
-           varbinds[2].len_val = 0;
-           varbinds[2].type = NULL_VALUE;
+       varbinds[i].oid = bridgeOperationalMode;
+       varbinds[i].len_oid = sizeof(bridgeOperationalMode);
+       varbinds[i].value = bridgeOperationalMode;
+       varbinds[i].len_val = 0;
+       varbinds[i].type = NULL_VALUE;
+       i++;
+
+       if (ap_type == ATMEL12350 && ap_vendorext == EZYNET) {
+           varbinds[i].oid = UpTime;
+           varbinds[i].len_oid = sizeof(UpTime);
+           varbinds[i].value = UpTime;
+           varbinds[i].len_val = 0;
+           varbinds[i].type = NULL_VALUE;
            i++;
        }
 
        if (wait_mode == WAIT_FOREVER)
            print_help(WAIT_RET);
 
-       if (snmp(varbinds, i, GET) <= 0) {
+       if (snmp(varbinds, i, GET) < i) {
            print_helperr(ERR_RET);
            getch();
            goto quit;
@@ -121,86 +145,90 @@ void atmel_sysinfo()
        for (i = 0; i < varbinds[0].len_val && *(varbinds[0].value + i); i++)
            mvwaddch(main_sub, 1, i + 1, *(varbinds[0].value + i));
 
-       if (ap_type == ATMEL410) {
-           memcpy(&str410, varbinds[1].value,
-               sizeof(struct sysDeviceInfo_ATMEL410));
-           ap_sversion = str410.StructVersion;
-           ap_macaddr = str410.MacAddress;
-           ap_regdomain = swap4(str410.RegulatoryDomain);
-           ap_prodtype = str410.ProductType;
-           ap_oemname = str410.OEMName;
-           ap_oemid = str410.OEMID;
-           ap_prodname = str410.ProductName;
-           ap_hwrev = str410.HardwareRevision;
-       } else { /* ATMEL12350 */
-           memcpy(&str12350, varbinds[1].value,
-               sizeof(struct sysDeviceInfo_ATMEL12350));
-           ap_regdomain = str12350.RegulatoryDomain;
-           ap_sversion = str12350.StructVersion;
-           ap_macaddr = str12350.MacAddress;
-           ap_prodtype = str12350.ProductType;
-           ap_oemname = str12350.OEMName;
-           ap_oemid = str12350.OEMID;
-           ap_prodname = str12350.ProductName;
-           ap_hwrev = str12350.HardwareRevision;
+       if (varbinds[1].len_val == 92 || varbinds[1].len_val == 128) {
+           memcpy(&str128, varbinds[1].value,
+               sizeof(struct sysDeviceInfo_128));
+           ap_sversion = str128.StructVersion;
+           ap_macaddr = str128.MacAddress;
+           ap_regdomain = swap4(str128.RegulatoryDomain);
+           ap_prodtype = str128.ProductType;
+           ap_oemname = str128.OEMName;
+           ap_oemid = str128.OEMID;
+           ap_prodname = str128.ProductName;
+           ap_hwrev = str128.HardwareRevision;
+       } else { /* varbinds[1].len_val == 160 */
+           memcpy(&str160, varbinds[1].value,
+               sizeof(struct sysDeviceInfo_160));
+           ap_regdomain = str160.RegulatoryDomain;
+           ap_sversion = str160.StructVersion;
+           ap_macaddr = str160.MacAddress;
+           ap_prodtype = str160.ProductType;
+           ap_oemname = str160.OEMName;
+           ap_oemid = str160.OEMID;
+           ap_prodname = str160.ProductName;
+           ap_hwrev = str160.HardwareRevision;
        }
 
+       sprintf(message, _("Operational mode: %s"),
+           bridge_modes[*(varbinds[2].value) - 1]);
+       mvwaddstr(main_sub, 2, 0, message);
+
        sprintf(message, "%s%02X%02X%02X%02X%02X%02X", MAC,
            ap_macaddr[0] & 0xFF, ap_macaddr[1] & 0xFF,
            ap_macaddr[2] & 0xFF, ap_macaddr[3] & 0xFF,
            ap_macaddr[4] & 0xFF, ap_macaddr[5] & 0xFF);
-       mvwaddstr(main_sub, 2, 0, message);
+       mvwaddstr(main_sub, 3, 0, message);
 
-       mvwaddstr(main_sub, 3, 0, _("Product name:"));
+       mvwaddstr(main_sub, 4, 0, _("Product name: "));
        for (i = 0; i < 32 && ap_prodname[i]; i++)
-           mvwaddch(main_sub, 3, i + 14, ap_prodname[i]);
+           waddch(main_sub, ap_prodname[i]);
 
        sprintf(message, _("Product type: %u"), swap4(ap_prodtype));
-       mvwaddstr(main_sub, 4, 0, message);
+       mvwaddstr(main_sub, 5, 0, message);
 
-       mvwaddstr(main_sub, 5, 0, _("OEM name:"));
+       mvwaddstr(main_sub, 6, 0, _("OEM name: "));
        for (i = 0; i < 32 && ap_oemname[i]; i++)
-           mvwaddch(main_sub, 5, i + 10, ap_oemname[i]);
+           waddch(main_sub, ap_oemname[i]);
 
        sprintf(message, "OEM ID: %u", swap4(ap_oemid));
-       mvwaddstr(main_sub, 6, 0, message);
+       mvwaddstr(main_sub, 7, 0, message);
 
        sprintf(message, _("Hardware revision: %u"), swap4(ap_hwrev));
-       mvwaddstr(main_sub, 7, 0, message);
+       mvwaddstr(main_sub, 8, 0, message);
 
        i = regdom_idx(ap_regdomain);
        sprintf(message, "Regulatory domain: %s [%d]",
            regdom_types[i].desc, ap_regdomain);
-       mvwaddstr(main_sub, 8, 0, message);
+       mvwaddstr(main_sub, 9, 0, message);
 
        sprintf(message, _("Info structure version: %u"), swap4(ap_sversion));
-       mvwaddstr(main_sub, 9, 0, message);
+       mvwaddstr(main_sub, 10, 0, message);
 
        sprintf(message, _("Manufacturer OUI: %02X %02X %02X (%s)"),
            ap_macaddr[0] & 0xFF, ap_macaddr[1] & 0xFF, ap_macaddr[2] & 0xFF,
            oui2manufacturer(ap_macaddr));
-       mvwaddstr(main_sub, 10, 0, message);
+       mvwaddstr(main_sub, 11, 0, message);
 
-       if (ap_vendorext == VERNET) {
+       if (ap_type == ATMEL12350 && ap_vendorext == EZYNET) {
            unsigned int j = 0;
 
-           if (varbinds[2].len_val > 1) {
-               for (i = 0; i < varbinds[2].len_val; i++)
-                   j |= (varbinds[2].value[i]
-                       << (8 * (varbinds[2].len_val - i - 1)));
+           if (varbinds[3].len_val > 1) {
+               for (i = 0; i < varbinds[3].len_val; i++)
+                   j |= (varbinds[3].value[i]
+                       << (8 * (varbinds[3].len_val - i - 1)));
            } else {
-               j = varbinds[2].value[0] & 0x80 ?
-                   0xff00 | varbinds[2].value[0] : varbinds[2].value[0];
+               j = varbinds[3].value[0] & 0x80 ?
+                   0xff00 | varbinds[3].value[0] : varbinds[3].value[0];
            }
            sprintf(message,
                _("Uptime: %u days, %02u:%02u:%02u hours:mins:secs"),
                j / 60 / 60 / 24, j / 60 / 60 % 24, j / 60 % 60, j % 60);
-           mvwaddstr(main_sub, 11, 0, message);
+           mvwaddstr(main_sub, 12, 0, message);
        }
 
        wrefresh(main_sub);
 
-       i = wait_key();
+       i = wait_key(poll_delay);
        if (i == -1)
            goto quit;
 
@@ -330,7 +358,7 @@ void nwn_sysinfo()
        if (wait_mode == WAIT_FOREVER)
            print_help(WAIT_RET);
 
-       if (snmp(varbinds, OID_NUM - 1, GET) <= 0) {
+       if (snmp(varbinds, OID_NUM - 1, GET) < OID_NUM - 1) {
            print_helperr(ERR_RET);
            getch();
            goto quit;
@@ -420,7 +448,7 @@ void nwn_sysinfo()
        varbinds[3].type = NULL_VALUE;
        varbinds[3].len_val = 0;
 
-       if (snmp(varbinds, 4, GET) <= 0) {
+       if (snmp(varbinds, 4, GET) < 4) {
            print_helperr(ERR_RET);
            getch();
            goto quit;
@@ -481,7 +509,7 @@ void nwn_sysinfo()
        mvwaddstr(main_sub, 1, 0, message);
        wrefresh(main_sub);
 
-       i = wait_key();
+       i = wait_key(poll_delay);
        if (i == -1)
            goto quit;
 
index 037a6e7c9ac13bf023903665b8a4f5fd8e62dbe8..56b953a41ae5ccf4207189226e9b63d242ac585a 100644 (file)
@@ -75,6 +75,11 @@ void test()
     varbind varbinds[5];
 
     if (ap_type == ATMEL12350) {
+#if 1 /* Temporary kludge */
+       mvwaddstr(main_sub, 1, 0, _("Devices with ATMEL12350 MIB not yet supported."));
+       wrefresh(main_sub);
+       goto exit;
+#endif
        TestModeOnOff[5] = 0xE0;
        TestModeOnOff[6] = 0x3E;
        TestModeCommandStruct[5] = 0xE0;
index 4495a36b3d6e430075668fb8fb0d723e18b131eb..1cda0e8c3a0c619622973a8de51358fb02f3d1ab 100644 (file)
--- a/lib/wep.c
+++ b/lib/wep.c
@@ -76,7 +76,7 @@ void wep()
     varbinds[1].type = NULL_VALUE;
     varbinds[1].len_val = 0;
     print_help(WAIT_RET);
-    if (snmp(varbinds, 2, GET) <= 0) {
+    if (snmp(varbinds, 2, GET) < 2) {
        print_helperr(ERR_RET);
        goto exit;
     }
@@ -236,7 +236,7 @@ void nwn_wep()
     varbinds[3].len_val = 0;
                        
     print_help(WAIT_RET);
-    if (snmp(varbinds, 4, GET) <= 0) {
+    if (snmp(varbinds, 4, GET) < 4) {
        print_helperr(ERR_RET);
        goto exit;
     }
index fc8e555ec7a0b0b77fe78e53a265f01948835cd3..543718c1449a00712197c10fb0898534bbe984c3 100644 (file)
@@ -45,7 +45,7 @@
 #define INT_ROAMING _("[I] International roaming: ")
 #define BEACON_PER _("[B] Beacon period (msec): ")
 #define DTIM_I _("[D] DTIM sending interval (beacons): ")
-#define SIFS_T _("[T] SIFS time (msec): ")
+#define SIFS_T _("[T] SIFS time (2nd+ interframe spacing, usec): ")
 #define WLAN_HELP _("[key] - set option; W - write conf; Q - quit to menu")
 
 extern short ap_type, ap_vendorext;
@@ -94,14 +94,14 @@ void atmel_wireless()
     char operInterRoaming[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x01, 0x0D, 0x00
     };
-    /* These two are ATMEL12350 TELLUS MIB specific. */
+    /* These two are ATMEL12350 GEMTEK MIB specific. */
     char operBeaconPeriod[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x01, 0x0E, 0x00
     };
     char operDTIM[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x01, 0x0F, 0x00
     };
-    /* This one is ATMEL12350 VERNET MIB specific. */
+    /* This one is ATMEL12350 EZYNET MIB specific. */
     char operSIFSTIME[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x01, 0x10, 0x00
     };
@@ -115,8 +115,8 @@ void atmel_wireless()
     unsigned char dtim, ch;
     char *AuthenticationTypes[3] = { OSYS, SH_KEY, BOTH_TYPE },
        message[1024];
-    char domain[32], basic_rates[4], AutoRateFallBack, SSIDBroadcasting,
-       ap_name[32], PreambleType, AuthenticationType, channel;
+    char domain[33], basic_rates[4], AutoRateFallBack, SSIDBroadcasting,
+       ap_name[33], PreambleType, AuthenticationType, channel;
     char m_channel = 0, m_essid = 0, m_broadcast = 0, m_rts = 0,
        m_fragment = 0, m_auth = 0, m_ap_name = 0, m_preambule = 0,
        m_auto_rate = 0, m_inter_roaming = 0, m_beacon = 0, m_dtim = 0,
@@ -126,8 +126,8 @@ void atmel_wireless()
     short __rates[4] = { 2, 4, 11, 22 };
     int i, c = 0, rd_idx;
     unsigned short ap_regdomain;
-    struct sysDeviceInfo_ATMEL410 str410;
-    struct sysDeviceInfo_ATMEL12350 str12350;
+    struct sysDeviceInfo_128 str128;
+    struct sysDeviceInfo_160 str160;
 
 
     if (ap_type == ATMEL12350) {
@@ -179,16 +179,16 @@ void atmel_wireless()
     varbinds[i++].oid = sysDeviceInfo;
     if (ap_type == ATMEL12350) {
        varbinds[i++].oid = operInterRoaming;
-       if (ap_vendorext == TELLUS || ap_vendorext == VERNET) {
+       if (ap_vendorext == GEMTEK || ap_vendorext == EZYNET) {
            varbinds[i++].oid = operBeaconPeriod;
            varbinds[i++].oid = operDTIM;
        }
-       if (ap_vendorext == VERNET)
+       if (ap_vendorext == EZYNET)
            varbinds[i++].oid = operSIFSTIME;
     }
 
     print_help(WAIT_RET);
-    if (snmp(varbinds, i, GET) <= 0) {
+    if (snmp(varbinds, i, GET) < i) {
        print_helperr(ERR_RET);
        goto exit;
     }
@@ -196,6 +196,7 @@ void atmel_wireless()
     channel = *(varbinds[0].value);
     c = *(varbinds[1].value);
     memcpy(domain, varbinds[2].value, 32);
+    domain[32] = '\0';
     SSIDBroadcasting = *(varbinds[3].value);
     memcpy(basic_rates, varbinds[4].value, 4);
     AutoRateFallBack = *(varbinds[5].value);
@@ -206,30 +207,31 @@ void atmel_wireless()
     PreambleType = *(varbinds[8].value);
     AuthenticationType = *(varbinds[9].value);
     memcpy(ap_name, varbinds[10].value, 32);
+    ap_name[32] = '\0';
     if (ap_type == ATMEL12350) {
        InterRoaming = *(varbinds[12].value);
-       if (ap_vendorext == TELLUS || ap_vendorext == VERNET) {
+       if (ap_vendorext == GEMTEK || ap_vendorext == EZYNET) {
            BeaconPeriod = varbinds[13].len_val == 2 ?
                (varbinds[13].value[0] << 8) | varbinds[13].value[1] :
                varbinds[13].value[0] < 0x80 ?
                varbinds[13].value[0] : 0xff00 | varbinds[13].value[0];
            dtim = *(varbinds[14].value);
        }
-       if (ap_vendorext == VERNET)
+       if (ap_vendorext == EZYNET)
            sifs = varbinds[15].len_val == 2 ?
                (varbinds[15].value[0] << 8) | varbinds[15].value[1] :
                varbinds[15].value[0] < 0x80 ?
                varbinds[15].value[0] : 0xff00 | varbinds[15].value[0];
     }
 
-    if (ap_type == ATMEL12350) {
-       memcpy(&str12350, varbinds[11].value,
-           sizeof(struct sysDeviceInfo_ATMEL12350));
-       ap_regdomain=str12350.RegulatoryDomain;
-    } else /* ATMEL410 */{
-       memcpy(&str410, varbinds[11].value,
-           sizeof(struct sysDeviceInfo_ATMEL410));
-       ap_regdomain = swap4(str410.RegulatoryDomain);
+    if (varbinds[11].len_val == 160) {
+       memcpy(&str160, varbinds[11].value,
+           sizeof(struct sysDeviceInfo_160));
+       ap_regdomain = str160.RegulatoryDomain;
+    } else { /* varbinds[11].len_val == 92 || varbinds[11].len_val == 128 */
+       memcpy(&str128, varbinds[11].value,
+           sizeof(struct sysDeviceInfo_128));
+       ap_regdomain = swap4(str128.RegulatoryDomain);
     }
 
     rd_idx = regdom_idx(ap_regdomain);
@@ -265,13 +267,13 @@ void atmel_wireless()
     if (ap_type == ATMEL12350) {
        sprintf(message, "%s%s", INT_ROAMING, (InterRoaming == 1) ? ON : OFF);
        mvwaddstr(main_sub, 15, 0, message);
-       if (ap_vendorext == TELLUS || ap_vendorext == VERNET) {
+       if (ap_vendorext == GEMTEK || ap_vendorext == EZYNET) {
            sprintf(message, "%s%u", BEACON_PER, BeaconPeriod);
            mvwaddstr(main_sub, 16, 0, message);
            sprintf(message, "%s%u", DTIM_I, dtim);
            mvwaddstr(main_sub, 17, 0, message);
        }
-       if (ap_vendorext == VERNET) {
+       if (ap_vendorext == EZYNET) {
            sprintf(message, "%s%u", SIFS_T, sifs);
            mvwaddstr(main_sub, 18, 0, message);
        }
@@ -354,20 +356,20 @@ void atmel_wireless()
            continue;
        case 'N':
        case 'n':
-//          make_field(2, strlen(AP_NAME), 32);
-           get_value(ap_name, 2, strlen(AP_NAME), -32, ANY_STRING, 0, 0, NULL);
+//          make_field(2, strlen(AP_NAME), 33);
+           get_value(ap_name, 2, strlen(AP_NAME), -33, ANY_STRING, 0, 0, NULL);
            m_ap_name = 1;
            continue;
        case 'E':
        case 'e':
-//          make_field(1, strlen(ESSID), 32);
-           get_value(domain, 1, strlen(ESSID), 32, ANY_STRING, 0, 0, NULL);
+//          make_field(1, strlen(ESSID), 33);
+           get_value(domain, 1, strlen(ESSID), 33, ANY_STRING, 0, 0, NULL);
            m_essid = 1;
            continue;
        case 'F':
        case 'f':
 //          make_field(4, strlen(FRG_TR), 6);
-           get_value(message, 4, strlen(FRG_TR), 6, INT_STRING, 256, 2346,
+           get_value(message, 4, strlen(FRG_TR), 5, INT_STRING, 256, 2346,
                WLAN_HELP);
            FragmentationThreshold = atoi(message);
            m_fragment = 1;
@@ -375,7 +377,7 @@ void atmel_wireless()
        case 'R':
        case 'r':
 //          make_field(3, strlen(RTS_TR), 6);
-           get_value(message, 3, strlen(RTS_TR), 6, INT_STRING, 0, 2347,
+           get_value(message, 3, strlen(RTS_TR), 5, INT_STRING, 0, 2347,
                WLAN_HELP);
            RTSThreshold = atoi(message);
            m_rts = 1;
@@ -391,7 +393,7 @@ void atmel_wireless()
            continue;
        case 'B':
        case 'b':
-           if (ap_vendorext != TELLUS && ap_vendorext != VERNET)
+           if (ap_vendorext != GEMTEK && ap_vendorext != EZYNET)
                continue;
            get_value(message, 16, strlen(BEACON_PER), 6, INT_STRING, 0, 65535,
                WLAN_HELP);
@@ -400,7 +402,7 @@ void atmel_wireless()
            continue;
        case 'D':
        case 'd':
-           if (ap_vendorext != TELLUS && ap_vendorext != VERNET)
+           if (ap_vendorext != GEMTEK && ap_vendorext != EZYNET)
                continue;
            get_value(message, 17, strlen(DTIM_I), 4, INT_STRING, 0, 255,
                WLAN_HELP);
@@ -409,7 +411,7 @@ void atmel_wireless()
            continue;
        case 'T':
        case 't':
-           if (ap_vendorext != VERNET)
+           if (ap_vendorext != EZYNET)
                continue;
            get_value(message, 18, strlen(SIFS_T), 6, INT_STRING, 0, 65535,
                WLAN_HELP);
@@ -555,6 +557,8 @@ void atmel_wireless()
                print_helperr(ERR_SET);
                goto exit;
            }
+           wbkgd(main_sub, A_NORMAL);
+           wrefresh(main_sub);
            print_help(DONE_SET);
            goto exit;
        }
@@ -647,7 +651,7 @@ void nwn_wireless()
     varbinds[7].oid = operAccessPointName;
     varbinds[7].len_oid = sizeof(operAccessPointName);
     print_help(WAIT_RET);
-    if (snmp(varbinds, 8, GET) <= 0) {
+    if (snmp(varbinds, 8, GET) < 8) {
        print_helperr(ERR_RET);
        goto exit;
     }
@@ -704,7 +708,7 @@ void nwn_wireless()
     varbinds[8].oid = operAccessPointLocation;
     varbinds[8].len_oid = sizeof(operAccessPointLocation);
 
-    if (snmp(varbinds, 9, GET) <= 0) {
+    if (snmp(varbinds, 9, GET) < 9) {
        print_helperr(ERR_RET);
        goto exit;
     }
@@ -886,14 +890,14 @@ void nwn_wireless()
            continue;
        case 'F':
        case 'f':
-           get_value(message, 4, strlen(FRG_TR), 6, INT_STRING, 256, 2346,
+           get_value(message, 4, strlen(FRG_TR), 5, INT_STRING, 256, 2346,
                WLAN_HELP);
            FragmentationThreshold = atoi(message);
            m_fragment = 1;
            continue;
        case 'R':
        case 'r':
-           get_value(message, 3, strlen(RTS_TR), 6, INT_STRING, 0, 2347,
+           get_value(message, 3, strlen(RTS_TR), 5, INT_STRING, 0, 2347,
                WLAN_HELP);
            RTSThreshold = atoi(message);
            m_rts = 1;
@@ -916,7 +920,6 @@ void nwn_wireless()
                varbinds[i].type = 0x02;
                i++;
            }
-
            if (m_basic_rates) {
                varbinds[i].oid = operBasicRates;
                varbinds[i].len_oid = sizeof(operBasicRates);
@@ -926,13 +929,14 @@ void nwn_wireless()
                i++;
            }
 
-               print_help(WAIT_SET);
-               if (snmp(varbinds, i, SET) <= 0) {
-                   print_helperr(ERR_SET);
-                   goto exit;
-               }
-           i = 0;
+           print_help(WAIT_SET);
 
+           if (snmp(varbinds, i, SET) <= 0) {
+               print_helperr(ERR_SET);
+               goto exit;
+           }
+
+           i = 0;
            if (m_auth) {
                m_auth = (authi == 1) ? 2 : 1;
                m_basic_rates = (authi == 0) ? 2 : 1;
@@ -949,13 +953,13 @@ void nwn_wireless()
                varbinds[i].type = INT_VALUE;
                i++;
            }
-               print_help(WAIT_SET);
-               if (snmp(varbinds, i, SET) <= 0) {
-                   print_helperr(ERR_SET);
-                   goto exit;
-               }
-           i = 0;
 
+           if (snmp(varbinds, i, SET) <= 0) {
+               print_helperr(ERR_SET);
+               goto exit;
+           }
+
+           i = 0;
            if (m_ap_name) {
                c = strlen(ap_name);
                varbinds[i].oid = operAccessPointName;
@@ -965,7 +969,6 @@ void nwn_wireless()
                varbinds[i].type = STRING_VALUE;
                i++;
            }
-
            if (m_ap_location) {
                c = strlen(ap_location);
                varbinds[i].oid = operAccessPointLocation;
@@ -976,11 +979,10 @@ void nwn_wireless()
                i++;
            }
 
-               print_help(WAIT_SET);
-               if (snmp(varbinds, i, SET) <= 0) {
-                   print_helperr(ERR_SET);
-                   goto exit;
-               }
+           if (snmp(varbinds, i, SET) <= 0) {
+               print_helperr(ERR_SET);
+               goto exit;
+           }
 
            i = 0;
            if (m_ap_contact) {
@@ -1018,11 +1020,12 @@ void nwn_wireless()
                varbinds[i].type = 0x02;
                i++;
            }
-               print_help(WAIT_SET);
-               if (snmp(varbinds, i, SET) <= 0) {
-                   print_helperr(ERR_SET);
-                   goto exit;
-               }
+
+           if (snmp(varbinds, i, SET) <= 0) {
+               print_helperr(ERR_SET);
+               goto exit;
+           }
+
            c = 0;
            for (i = 0; i < 4; i++)
                if (m_antenna[i]) {
@@ -1034,11 +1037,12 @@ void nwn_wireless()
                    varbinds[c].type = INT_VALUE;
                    c++;
                }
-               print_help(WAIT_SET);
-               if (snmp(varbinds, c, SET) <= 0) {
-                   print_helperr(ERR_SET);
-                   goto exit;
-               }
+
+           if (snmp(varbinds, c, SET) <= 0) {
+               print_helperr(ERR_SET);
+               goto exit;
+           }
+
            c = 0;
            for (i = i; i < 6; i++)
                if (m_antenna[i]) {
@@ -1050,11 +1054,12 @@ void nwn_wireless()
                    varbinds[c].type = INT_VALUE;
                    c++;
                }
-               print_help(WAIT_SET);
-               if (snmp(varbinds, c, SET) <= 0) {
-                   print_helperr(ERR_SET);
-                   goto exit;
+
+           if (snmp(varbinds, c, SET) <= 0) {
+               print_helperr(ERR_SET);
+               goto exit;
            }
+
            i = 0;
            if (m_essid) {
                c = strlen(domain);
@@ -1065,12 +1070,14 @@ void nwn_wireless()
                varbinds[i].type = 0x04;
                i++;
            }
-               print_help(WAIT_SET);
-               if (snmp(varbinds, i, SET) <= 0) {
-                   print_helperr(ERR_SET);
-                   goto exit;
-               }
 
+           if (snmp(varbinds, i, SET) <= 0) {
+               print_helperr(ERR_SET);
+               goto exit;
+           }
+
+           wbkgd(main_sub, A_NORMAL);
+           wrefresh(main_sub);
            print_help(DONE_SET);
            goto exit;
        default:
index c70873e04bbd3ee1b1dba60355994ee00e062cd2..0003964b9808eb31f45b55f2394ca2917791df7d 100644 (file)
@@ -1,10 +1,7 @@
 # List of source files containing translatable strings.
 # Copyright (C) 1995 Free Software Foundation, Inc.
 
-ap-gl/ap-gl.c
-ap-gl/auth_mac.c
-ap-gl/bridge.c
-ap-gl/stations.c
+lib/ap-curses.h
 lib/aps.c
 lib/ap_search.c
 lib/ap-utils.h
@@ -19,16 +16,21 @@ lib/radio.c
 lib/reset.c
 lib/scr.c
 lib/set_community.c
+lib/set_oeminfo.c
 lib/snmp.c
 lib/stat.c
 lib/sysinfo.c
 lib/test.c
 lib/wep.c
 lib/wlan.c
+src/ap-auth.c
 src/ap-config.c
+src/aplink.c
 src/ap-mrtg.c
+src/ap-rrd.c
+src/ap-tftp.c
 src/ap-trapd.c
-src/auth_mac.c
+src/auth.c
 src/bridge.c
 src/nwn_advanced.c
 src/nwn_latest.c
index 6502b65e5af71289cdeb26c896ac980cfe0c57a8..7246bc3a069fc3f5c591e7adb0f00197c63bb9c9 100644 (file)
@@ -7,7 +7,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2004-11-28 00:59+0200\n"
+"POT-Creation-Date: 2005-03-07 01:13+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -15,415 +15,128 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ap-gl/ap-gl.c:41 ap-gl/bridge.c:178 src/ap-config.c:41 src/bridge.c:182
-msgid "Bridging"
-msgstr ""
-
-#: ap-gl/ap-gl.c:41 src/ap-config.c:41
-msgid "Set bridging and IP-related options"
-msgstr ""
-
-#: ap-gl/ap-gl.c:43 ap-gl/ap-gl.c:81 ap-gl/bridge.c:132 src/ap-config.c:43
-#: src/ap-config.c:112 src/ap-config.c:120 src/bridge.c:117 src/bridge.c:121
-msgid "Wireless"
-msgstr ""
-
-#: ap-gl/ap-gl.c:43 src/ap-config.c:43
-msgid "Set wireless options"
-msgstr ""
-
-#: ap-gl/ap-gl.c:44 src/ap-config.c:44 src/ap-config.c:56
-msgid "Privacy"
-msgstr ""
-
-#: ap-gl/ap-gl.c:45 src/ap-config.c:45 src/ap-config.c:57
-msgid "MAC auth"
-msgstr ""
-
-#: ap-gl/ap-gl.c:46 src/ap-config.c:46 src/ap-config.c:58
-msgid "Community"
-msgstr ""
-
-#: ap-gl/ap-gl.c:47 src/ap-config.c:47
-msgid "Radio"
-msgstr ""
-
-#: ap-gl/ap-gl.c:47 src/ap-config.c:47
-msgid "Set radio signal power and antenna options"
-msgstr ""
-
-#: ap-gl/ap-gl.c:62 src/ap-config.c:80
-msgid "Upload"
-msgstr ""
-
-#: ap-gl/ap-gl.c:62 src/ap-config.c:80
-msgid "Activate current configuration"
-msgstr ""
-
-#: ap-gl/ap-gl.c:63 src/ap-config.c:81
-msgid "Defaults"
-msgstr ""
-
-#: ap-gl/ap-gl.c:63 src/ap-config.c:81
-msgid "Restore factory default settings"
-msgstr ""
-
-#: ap-gl/ap-gl.c:64 src/ap-config.c:82 src/ap-config.c:89
-msgid "Reset"
-msgstr ""
-
-#: ap-gl/ap-gl.c:65 src/ap-config.c:83
-msgid "Reset AP. All not uploaded configuration will be lost"
-msgstr ""
-
-#: ap-gl/ap-gl.c:66 src/ap-config.c:84
-msgid "TestMode"
-msgstr ""
-
-#: ap-gl/ap-gl.c:66 src/ap-config.c:84
-msgid "Put Access Point in test mode"
-msgstr ""
-
-#: ap-gl/ap-gl.c:79 src/ap-config.c:110 src/ap-config.c:119
-msgid "SysInfo"
-msgstr ""
-
-#: ap-gl/ap-gl.c:80 ap-gl/bridge.c:131 src/ap-config.c:111 src/bridge.c:116
-#: src/bridge.c:120
-msgid "Ethernet"
-msgstr ""
-
-#: ap-gl/ap-gl.c:80 src/ap-config.c:111
-msgid "Get ethernet port statistics"
-msgstr ""
-
-#: ap-gl/ap-gl.c:82 src/ap-config.c:113 src/ap-config.c:121
-msgid "Stations"
-msgstr ""
-
-#: ap-gl/ap-gl.c:83 src/ap-config.c:114
-msgid "KnownAPs"
-msgstr ""
-
-#: ap-gl/ap-gl.c:83 src/ap-config.c:114
-msgid "Get info about known Access Points"
-msgstr ""
-
-#: ap-gl/ap-gl.c:100 src/ap-config.c:147
-msgid "Info"
-msgstr ""
-
-#: ap-gl/ap-gl.c:101 src/ap-config.c:148
-msgid "Config"
-msgstr ""
-
-#: ap-gl/ap-gl.c:102 src/ap-config.c:149
-msgid "Commands"
-msgstr ""
-
-#: ap-gl/ap-gl.c:102 src/ap-config.c:149
-msgid "Execute commands on Access Point"
-msgstr ""
-
-#: ap-gl/ap-gl.c:104 src/ap-config.c:151
-msgid "Connect"
-msgstr ""
-
-#: ap-gl/ap-gl.c:105 src/ap-config.c:152
-msgid "Search"
-msgstr ""
-
-#: ap-gl/ap-gl.c:106 lib/common.c:83 src/ap-config.c:153
-msgid "About"
-msgstr ""
-
-#: ap-gl/ap-gl.c:107 src/ap-config.c:154
-msgid "Shell"
-msgstr ""
-
-#: ap-gl/ap-gl.c:108 src/ap-config.c:155
-msgid "Exit"
-msgstr ""
-
-#: ap-gl/ap-gl.c:158 src/ap-config.c:204
-#, c-format
-msgid "Wireless Access Point Configurator ver. %s"
-msgstr ""
-
-#: ap-gl/auth_mac.c:27 src/auth_mac.c:27
-msgid "AuthorizedMacTableString packet error"
-msgstr ""
-
-#: ap-gl/auth_mac.c:29 src/auth_mac.c:29
-msgid "[A] MAC authorization: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:30 src/auth_mac.c:30
-msgid "Enter MAC: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:31 src/auth_mac.c:31
-msgid "Delete Num: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:32 src/auth_mac.c:32
-msgid "Authorized MAC addresses"
-msgstr ""
-
-#: ap-gl/auth_mac.c:33
-msgid "NUM       MAC address"
-msgstr ""
-
-#: ap-gl/auth_mac.c:34 src/auth_mac.c:34
-msgid "A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit"
-msgstr ""
-
-#: ap-gl/auth_mac.c:35
-msgid "A - auth; IPSTF - set; W - write conf; Q - quit"
-msgstr ""
-
-#: ap-gl/auth_mac.c:36
-msgid "A - auth; W - write conf; Q - quit"
-msgstr ""
-
-#: ap-gl/auth_mac.c:38
-msgid "[I] RADIUS SERVER IP: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:39
-msgid "[P] RADIUS SERVER PORT: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:40
-msgid "[S] RADIUS SERVER SECRET: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:41
-msgid "[T] REAUTHORIZATION TIME: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:42
-msgid "[F] RADIUS SOURCE PORT: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:87
-msgid "Internal"
-msgstr ""
-
-#: ap-gl/auth_mac.c:95
-msgid "<hidden>"
-msgstr ""
-
-#: ap-gl/bridge.c:26 src/bridge.c:26
-msgid "[I] IP: "
-msgstr ""
-
-#: ap-gl/bridge.c:27 src/bridge.c:27
-msgid "[N] Netmask: "
-msgstr ""
-
-#: ap-gl/bridge.c:28 src/bridge.c:28
-msgid "[G] Gateway: "
-msgstr ""
-
-#: ap-gl/bridge.c:29 src/bridge.c:29
-msgid "[F] Filter non-IP traffic: "
-msgstr ""
-
-#: ap-gl/bridge.c:30 src/bridge.c:30
-msgid "[P] Primary port: "
-msgstr ""
-
-#: ap-gl/bridge.c:31 src/bridge.c:31
-msgid "Attached station MAC: "
-msgstr ""
-
-#: ap-gl/bridge.c:32 src/bridge.c:32
-msgid "[D] DHCP client: "
-msgstr ""
-
-#: ap-gl/bridge.c:33 src/bridge.c:33
-msgid "[O] Operational mode: "
-msgstr ""
-
-#: ap-gl/bridge.c:34 src/bridge.c:34
-msgid "[M] Preferred BSSID (remote MAC addr.): "
-msgstr ""
-
-#: ap-gl/bridge.c:36 src/bridge.c:36
-msgid "[T] Trap-sending port(s): "
-msgstr ""
-
-#: ap-gl/bridge.c:37 src/bridge.c:37
-msgid "[R] Forward broadcast traffic: "
-msgstr ""
-
-#: ap-gl/bridge.c:39
-msgid "[U] Isolate wireless clients: "
-msgstr ""
-
-#: ap-gl/bridge.c:40 src/bridge.c:40
-msgid "INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu"
-msgstr ""
-
-#: ap-gl/bridge.c:124 src/bridge.c:109
-msgid "Wireless Bridge Point to MultiPoint"
-msgstr ""
-
-#: ap-gl/bridge.c:125 src/bridge.c:110
-msgid "Access Point"
-msgstr ""
-
-#: ap-gl/bridge.c:126 src/bridge.c:111
-msgid "Access Point client"
-msgstr ""
-
-#: ap-gl/bridge.c:127 src/bridge.c:112
-msgid "Wireless Bridge Point to Point"
-msgstr ""
-
-#: ap-gl/bridge.c:128 src/bridge.c:113
-msgid "Repeater"
-msgstr ""
-
-#: ap-gl/stations.c:77 src/stations.c:100
-msgid "AP is currently in AP Client Mode => no associated STAtions."
-msgstr ""
-
-#: ap-gl/stations.c:102
-msgid "#     MAC       LQ    RSSI   Status Port IP"
-msgstr ""
-
-#: ap-gl/stations.c:128 src/stations.c:159
-msgid "AssociatedSTAsInfo packet error"
-msgstr ""
-
-#: ap-gl/stations.c:160
-msgid "Arrows - scroll; S - save to file; Q - quit to menu."
-msgstr ""
-
-#: lib/aps.c:29
+#: lib/aps.c:30
 msgid "Known Access Points"
 msgstr ""
 
-#: lib/aps.c:129
+#: lib/aps.c:130
 msgid "Your Access Point is not in \"AP client\" mode => getting"
 msgstr ""
 
-#: lib/aps.c:132
+#: lib/aps.c:133
 msgid "up-to-date \"Known APs\" info requires your AP to be"
 msgstr ""
 
-#: lib/aps.c:135
+#: lib/aps.c:136
 msgid "temporarily configured into \"AP client\" mode and rebooted."
 msgstr ""
 
-#: lib/aps.c:138
+#: lib/aps.c:139
 msgid "Your AP will be reconfigured back to original mode by this"
 msgstr ""
 
-#: lib/aps.c:141
+#: lib/aps.c:142
 msgid "utility once you quit the \"KnownAP\" view. This, in turn, may"
 msgstr ""
 
-#: lib/aps.c:144
+#: lib/aps.c:145
 msgid "cause loss of Access Point's current configuration."
 msgstr ""
 
-#: lib/aps.c:148
+#: lib/aps.c:149
 msgid "Do NOT answer \"Yes\" if you're connected to the Access Point"
 msgstr ""
 
-#: lib/aps.c:151
+#: lib/aps.c:152
 msgid "via its wireless port."
 msgstr ""
 
-#: lib/aps.c:153 lib/cmd.c:45 lib/cmd.c:75 lib/test.c:91
+#: lib/aps.c:154 lib/cmd.c:45 lib/cmd.c:75 lib/test.c:96
 msgid "Do you want to continue? "
 msgstr ""
 
-#: lib/aps.c:207
+#: lib/aps.c:208
 msgid "NetworkType"
 msgstr ""
 
-#: lib/aps.c:283
+#: lib/aps.c:284
 msgid "Infrastructure"
 msgstr ""
 
-#: lib/aps.c:343 lib/aps.c:351 lib/aps.c:359
+#: lib/aps.c:344 lib/aps.c:352 lib/aps.c:360
 msgid "CN: Channel Name; P: Preambule Type (S: Short; L: Long);"
 msgstr ""
 
-#: lib/aps.c:345
+#: lib/aps.c:346
 msgid "RSSI: Radio Signal Strength Indicator [%]"
 msgstr ""
 
-#: lib/aps.c:347 lib/aps.c:355
+#: lib/aps.c:348 lib/aps.c:356
 msgid "; LQ: Link Quality [%]"
 msgstr ""
 
-#: lib/aps.c:353
+#: lib/aps.c:354
 msgid "RSSI: Radio Signal Strength Indicator [dBm]"
 msgstr ""
 
-#: lib/aps.c:361
+#: lib/aps.c:362
 msgid "RSSI: Radio Signal Strength Indicator [raw]"
 msgstr ""
 
-#: lib/aps.c:363
+#: lib/aps.c:364
 msgid "; LQ: Link Q. [raw]"
 msgstr ""
 
-#: lib/aps.c:369
+#: lib/aps.c:370
 msgid ""
 "# con. to AP #; R refresh with reset; T toggle; Q quit; Other = refr. w/o "
 "reset"
 msgstr ""
 
-#: lib/aps.c:371
+#: lib/aps.c:372
 msgid ""
 "# con. to AP #; R initiate AP scan; T toggle view; Q quit; Other = refresh "
 "view"
 msgstr ""
 
-#: lib/aps.c:500 lib/ap_search.c:167
+#: lib/aps.c:501 lib/ap_search.c:173
 #, c-format
 msgid "Failure in sendto(): %s. Press any key."
 msgstr ""
 
-#: lib/aps.c:509
+#: lib/aps.c:510
 msgid "You have just initiated the AP scan. Be advised that it may"
 msgstr ""
 
-#: lib/aps.c:512
+#: lib/aps.c:513
 msgid "take a few seconds for your Access Point to find out some"
 msgstr ""
 
-#: lib/aps.c:515
+#: lib/aps.c:516
 msgid "values, so expect finishing the scan in about 5 seconds."
 msgstr ""
 
-#: lib/aps.c:518
+#: lib/aps.c:519
 msgid "Also note that your Access Point stops forwarding the network"
 msgstr ""
 
-#: lib/aps.c:521
+#: lib/aps.c:522
 msgid "traffic while the scan is in progress, but restores itself"
 msgstr ""
 
-#: lib/aps.c:524
+#: lib/aps.c:525
 msgid "to normal operation in time ranging up to 1 minute."
 msgstr ""
 
-#: lib/aps.c:527
+#: lib/aps.c:528
 msgid "Hence, if you are connected to target Access Point via its"
 msgstr ""
 
-#: lib/aps.c:530
+#: lib/aps.c:531
 msgid "wireless port, you need to wait a bit longer"
 msgstr ""
 
-#: lib/aps.c:533
+#: lib/aps.c:534
 msgid "after pressing 'S'."
 msgstr ""
 
@@ -432,250 +145,262 @@ msgid "Community name: "
 msgstr ""
 
 #: lib/ap_search.c:49
-msgid "  NUM  IP ADDRESS       MIB TYPE    NAME"
+msgid "  NUM  IP ADDRESS       MIB TYPE    FW TYPE (VERSION) AP NAME"
 msgstr ""
 
-#: lib/ap_search.c:100
+#: lib/ap_search.c:106
 msgid "Please wait while scanning, or press 'Q' to quit."
 msgstr ""
 
-#: lib/ap_search.c:116
+#: lib/ap_search.c:122
 msgid "Can't set broadcast option on socket. Press any key."
 msgstr ""
 
-#: lib/ap_search.c:125
+#: lib/ap_search.c:131
 msgid "Can't set multicast membership on socket. Press any key."
 msgstr ""
 
-#: lib/ap_search.c:132
+#: lib/ap_search.c:138
 msgid "Scanning via network interface:"
 msgstr ""
 
-#: lib/ap_search.c:133
+#: lib/ap_search.c:139
 #, c-format
 msgid "  Index: %i"
 msgstr ""
 
-#: lib/ap_search.c:135
+#: lib/ap_search.c:141
 #, c-format
 msgid "  Name: %s"
 msgstr ""
 
-#: lib/ap_search.c:137
+#: lib/ap_search.c:143
 #, c-format
 msgid "  IP: %s"
 msgstr ""
 
-#: lib/ap_search.c:146
+#: lib/ap_search.c:152
 #, c-format
 msgid "Scanning for AP with MIB type: %s"
 msgstr ""
 
-#: lib/ap_search.c:334
-msgid "Please enter SNMP community name that will be used for AP detection."
-msgstr ""
-
-#: lib/ap_search.c:345
+#: lib/ap_search.c:378
 msgid "Access Points Search"
 msgstr ""
 
-#: lib/ap_search.c:363
+#: lib/ap_search.c:396
 msgid "realloc() error."
 msgstr ""
 
-#: lib/ap_search.c:375
+#: lib/ap_search.c:408
 msgid "Network interface discovery error."
 msgstr ""
 
-#: lib/ap_search.c:450
+#: lib/ap_search.c:483
 msgid "No local network interfaces found. Press any key."
 msgstr ""
 
-#: lib/ap_search.c:452
+#: lib/ap_search.c:485
 msgid "No directly reachable Access Points found. Press any key."
 msgstr ""
 
-#: lib/ap_search.c:457
+#: lib/ap_search.c:490
 msgid "Single-screen maximum number of APs found."
 msgstr ""
 
-#: lib/ap_search.c:460
+#: lib/ap_search.c:493
 msgid "# - connect to AP; Q - quit"
 msgstr ""
 
-#: lib/ap-utils.h:79
+#: lib/ap-utils.h:82
 msgid "MAC address: "
 msgstr ""
 
-#: lib/ap-utils.h:80
+#: lib/ap-utils.h:83
 msgid "[S] SNMP traps: "
 msgstr ""
 
-#: lib/ap-utils.h:82
+#: lib/ap-utils.h:85
 msgid "[C] Frequency channel: "
 msgstr ""
 
-#: lib/ap-utils.h:84
+#: lib/ap-utils.h:87
 msgid "Receive  antenna:"
 msgstr ""
 
-#: lib/ap-utils.h:85
+#: lib/ap-utils.h:88
 msgid "[U] Left"
 msgstr ""
 
-#: lib/ap-utils.h:86
+#: lib/ap-utils.h:89
 msgid "[I] Right"
 msgstr ""
 
-#: lib/ap-utils.h:87
+#: lib/ap-utils.h:90
 msgid "Transmit antenna:"
 msgstr ""
 
-#: lib/ap-utils.h:88
+#: lib/ap-utils.h:91
 msgid "[O] Left"
 msgstr ""
 
-#: lib/ap-utils.h:89
+#: lib/ap-utils.h:92
 msgid "[P] Right"
 msgstr ""
 
-#: lib/ap-utils.h:90
+#: lib/ap-utils.h:93
 msgid "Diversity select:"
 msgstr ""
 
-#: lib/ap-utils.h:91
+#: lib/ap-utils.h:94
 msgid "[T] Left"
 msgstr ""
 
-#: lib/ap-utils.h:92
+#: lib/ap-utils.h:95
 msgid "[Y] Right"
 msgstr ""
 
-#: lib/ap-utils.h:94
+#: lib/ap-utils.h:97
 msgid "Yes"
 msgstr ""
 
-#: lib/ap-utils.h:95
+#: lib/ap-utils.h:98
 msgid "No"
 msgstr ""
 
-#: lib/ap-utils.h:97
+#: lib/ap-utils.h:100
 msgid "On"
 msgstr ""
 
-#: lib/ap-utils.h:98
+#: lib/ap-utils.h:101
 msgid "Off"
 msgstr ""
 
-#: lib/ap-utils.h:100
+#: lib/ap-utils.h:103
 msgid "Basic"
 msgstr ""
 
-#: lib/ap-utils.h:102
+#: lib/ap-utils.h:105
 msgid "Press any key to continue."
 msgstr ""
 
-#: lib/ap-utils.h:103
-msgid "Q - quit to menu. T - toggle polling mode, Other key - force update."
+#: lib/ap-utils.h:106
+msgid "Q - quit to menu. T - toggle polling mode, Other key - force update"
 msgstr ""
 
-#: lib/ap-utils.h:105
+#: lib/ap-utils.h:108
 msgid "Unable to write data to AP. Press any key to continue."
 msgstr ""
 
-#: lib/ap-utils.h:106
+#: lib/ap-utils.h:109
 msgid "Unable to retrieve (valid) data from AP. Press any key to continue."
 msgstr ""
 
-#: lib/ap-utils.h:107
-msgid "Trying to retrieve data from AP. Please wait..."
+#: lib/ap-utils.h:110
+msgid "Trying to retrieve data from AP - please wait (or press Q to quit)."
 msgstr ""
 
-#: lib/ap-utils.h:108
+#: lib/ap-utils.h:111
 msgid "Writing data to AP. Please wait..."
 msgstr ""
 
-#: lib/ap-utils.h:109
+#: lib/ap-utils.h:112
 msgid "Configuration written to the AP. Press any key to continue."
 msgstr ""
 
-#: lib/ap-utils.h:110
+#: lib/ap-utils.h:113
 msgid "select() function error. Press any key."
 msgstr ""
 
-#: lib/ap-utils.h:112
-msgid "Create socket error. Press any key."
+#: lib/ap-utils.h:114
+msgid "socket() or bind() function error. Press any key."
 msgstr ""
 
-#: lib/ap-utils.h:113
-msgid "Bind socket error. Press any key."
+#: lib/ap-utils.h:116
+msgid "Unable to write AP list file ~/.ap-config. Press any key."
+msgstr ""
+
+#: lib/ap-utils.h:117
+msgid "AP list file ~/.ap-config successfully written. Press any key."
 msgstr ""
 
-#: lib/ap-utils.h:115
+#: lib/ap-utils.h:119
 msgid "Back to main menu"
 msgstr ""
 
-#: lib/ap-utils.h:116
+#: lib/ap-utils.h:120
 msgid "Exit program"
 msgstr ""
 
-#: lib/ap-utils.h:117
+#: lib/ap-utils.h:121
 msgid "Run subshell. To return type 'exit'."
 msgstr ""
 
-#: lib/ap-utils.h:118
+#: lib/ap-utils.h:122
+msgid "Change polling mode interval"
+msgstr ""
+
+#: lib/ap-utils.h:123
 msgid "Short info about program"
 msgstr ""
 
-#: lib/ap-utils.h:119
+#: lib/ap-utils.h:124
 msgid "Find connected Access Points"
 msgstr ""
 
-#: lib/ap-utils.h:120
+#: lib/ap-utils.h:125
 msgid "Set connection options: ip and community"
 msgstr ""
 
-#: lib/ap-utils.h:121
+#: lib/ap-utils.h:126
 msgid "Set encryption; edit WEP keys"
 msgstr ""
 
-#: lib/ap-utils.h:122
-msgid "Set MAC authorization; edit MAC authorization table"
+#: lib/ap-utils.h:127
+msgid "Set authorization; edit MAC authorization table"
 msgstr ""
 
-#: lib/ap-utils.h:123
+#: lib/ap-utils.h:128
 msgid "Set SNMP community/password for access to the AP"
 msgstr ""
 
-#: lib/ap-utils.h:124
+#: lib/ap-utils.h:129
 msgid "Get info about AP hardware and firmware"
 msgstr ""
 
-#: lib/ap-utils.h:125
+#: lib/ap-utils.h:130
 msgid "Get wireless port statistics"
 msgstr ""
 
-#: lib/ap-utils.h:126
+#: lib/ap-utils.h:131
 msgid "Get list of currently associated stations (Access Point clients)"
 msgstr ""
 
-#: lib/ap-utils.h:127
+#: lib/ap-utils.h:132
+msgid "Get link status in APclient mode"
+msgstr ""
+
+#: lib/ap-utils.h:133
 msgid "Get info and statistics from AP"
 msgstr ""
 
-#: lib/ap-utils.h:128
+#: lib/ap-utils.h:134
 msgid "Set various configuration options"
 msgstr ""
 
-#: lib/ap-utils.h:130
+#: lib/ap-utils.h:136
 msgid "Associated stations"
 msgstr ""
 
-#: lib/ap-utils.h:132
+#: lib/ap-utils.h:137
+msgid "AP Client link state"
+msgstr ""
+
+#: lib/ap-utils.h:139
 msgid "Polling: on"
 msgstr ""
 
-#: lib/ap-utils.h:133
+#: lib/ap-utils.h:140
 msgid "Polling: off"
 msgstr ""
 
@@ -727,151 +452,165 @@ msgstr ""
 msgid "Configuration uploaded. Press any key to continue."
 msgstr ""
 
-#: lib/common.c:30
+#: lib/common.c:32
 msgid "Access Point IP-address: "
 msgstr ""
 
-#: lib/common.c:31
+#: lib/common.c:33
 msgid "Password (community): "
 msgstr ""
 
-#: lib/common.c:32
+#: lib/common.c:34
 msgid "Autodetect AP MIB properties? "
 msgstr ""
 
-#: lib/common.c:33
+#: lib/common.c:35
 msgid "AP MIB type: "
 msgstr ""
 
-#: lib/common.c:34
+#: lib/common.c:36
 msgid "AP MIB vendor extensions: "
 msgstr ""
 
-#: lib/common.c:35
+#: lib/common.c:37
 msgid "Do you want to use AP's name as its label? "
 msgstr ""
 
-#: lib/common.c:36
+#: lib/common.c:38
 msgid "Access Point label: "
 msgstr ""
 
-#: lib/common.c:37
+#: lib/common.c:39
 msgid "Save connect-settings: "
 msgstr ""
 
-#: lib/common.c:100
+#: lib/common.c:40
+msgid "[P] Polling mode interval (tenths of second): "
+msgstr ""
+
+#: lib/common.c:41
+msgid "P - change polling mode interval; Q - quit to menu"
+msgstr ""
+
+#: lib/common.c:89 src/ap-config.c:158
+msgid "About"
+msgstr ""
+
+#: lib/common.c:106
 #, c-format
 msgid "From %s"
 msgstr ""
 
-#: lib/common.c:102
+#: lib/common.c:108
 #, c-format
 msgid "Version %s"
 msgstr ""
 
-#: lib/common.c:105
+#: lib/common.c:111
 msgid "Written by Roman Festchook roma@polesye.net"
 msgstr ""
 
-#: lib/common.c:107
-msgid "Portions by Jan Rafaj aputils@cedric.unob.cz"
+#: lib/common.c:113
+msgid "and Jan Rafaj jr-aputils@cedric.unob.cz"
 msgstr ""
 
-#: lib/common.c:109
-msgid "Copyright (c) 2001-2004"
+#: lib/common.c:115
+msgid "Copyright (c) 2001-2005"
 msgstr ""
 
-#: lib/common.c:111
+#: lib/common.c:117
 msgid "Roman Festchook and Jan Rafaj"
 msgstr ""
 
-#: lib/common.c:114
+#: lib/common.c:120
 msgid "This program is distributed under the terms"
 msgstr ""
 
-#: lib/common.c:116
+#: lib/common.c:122
 msgid "of the GNU General Public License version 2."
 msgstr ""
 
-#: lib/common.c:118
+#: lib/common.c:124
 msgid "See the included COPYING file for details."
 msgstr ""
 
-#: lib/common.c:175
+#: lib/common.c:165
 msgid "Connect options"
 msgstr ""
 
-#: lib/common.c:183
+#: lib/common.c:173
 msgid "Enter IP address of your Access Point."
 msgstr ""
 
-#: lib/common.c:192
+#: lib/common.c:182
 msgid "Entered characters will not be displayed for security reason."
 msgstr ""
 
-#: lib/common.c:266
+#: lib/common.c:249
 msgid "This label will be stored on HDD (independently on AP name!)."
 msgstr ""
 
-#: lib/common.c:361
+#: lib/common.c:362
 msgid "Trying to probe AP for MIB properties. Please wait..."
 msgstr ""
 
-#: lib/common.c:390
+#: lib/common.c:391
 msgid ""
 "Unable to determine AP MIB properties (no response from AP). Press any key."
 msgstr ""
 
-#: lib/file.c:205
+#: lib/common.c:489 lib/set_oeminfo.c:221
+#, c-format
+msgid "%s%u"
+msgstr ""
+
+#: lib/common.c:491
+#, c-format
+msgid "(%0.1f seconds)"
+msgstr ""
+
+#: lib/file.c:199
 msgid "NUM  IP ADDRESS       MIB TYPE    MIB EXT.  LABEL"
 msgstr ""
 
-#: lib/file.c:206
+#: lib/file.c:200
 msgid "Choose an AP to connect to"
 msgstr ""
 
-#: lib/file.c:212
+#: lib/file.c:206
 msgid "1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll"
 msgstr ""
 
-#: lib/file.c:268
+#: lib/file.c:257
 msgid "Connect to AP num:"
 msgstr ""
 
-#: lib/file.c:304
+#: lib/file.c:288
 msgid "Delete num:"
 msgstr ""
 
-#: lib/file.c:372
-msgid "AP list file ~/.ap-config successfully written. Press any key."
-msgstr ""
-
-#: lib/file.c:376
-msgid "Unable to write AP list file ~/.ap-config. Press any key."
-msgstr ""
-
-#: lib/file.c:426
+#: lib/file.c:442
 msgid "Unable to write stations file. Press any key."
 msgstr ""
 
-#: lib/file.c:428
+#: lib/file.c:444
 msgid "Stations file succesfully written. Press any key."
 msgstr ""
 
-#: lib/input.c:33
+#: lib/input.c:32
 msgid "Invalid value. Press any key to continue."
 msgstr ""
 
-#: lib/input.c:34
+#: lib/input.c:33
 #, c-format
 msgid "Value must be in range %u - %u. Press any key to continue."
 msgstr ""
 
-#: lib/input.c:412
+#: lib/input.c:460
 msgid "Y - Yes; Any other key - No (it's safer to answer No)"
 msgstr ""
 
-#: lib/oui.c:6056
+#: lib/oui.c:6061
 msgid "Unknown or Private"
 msgstr ""
 
@@ -910,7 +649,7 @@ msgid ""
 "key."
 msgstr ""
 
-#: lib/scr.c:168
+#: lib/scr.c:157
 #, c-format
 msgid "Current AP: %s Type: %s Ext: %s"
 msgstr ""
@@ -944,6 +683,135 @@ msgid ""
 "[key] - set community/password; W - write config to AP; Q - quit to menu"
 msgstr ""
 
+#: lib/set_oeminfo.c:28
+msgid "Info structure version: "
+msgstr ""
+
+#: lib/set_oeminfo.c:29
+msgid "[M] Device MAC address: "
+msgstr ""
+
+#: lib/set_oeminfo.c:30
+msgid "    Manufacturer with this OUI: "
+msgstr ""
+
+#: lib/set_oeminfo.c:31
+msgid "[D] Regulatory domain: "
+msgstr ""
+
+#: lib/set_oeminfo.c:32
+msgid "[T] Product type: "
+msgstr ""
+
+#: lib/set_oeminfo.c:33
+msgid "[E] OEM name: "
+msgstr ""
+
+#: lib/set_oeminfo.c:34
+msgid "[I] OEM ID: "
+msgstr ""
+
+#: lib/set_oeminfo.c:35
+msgid "[N] Product name: "
+msgstr ""
+
+#: lib/set_oeminfo.c:36
+msgid "[H] Hardware revision: "
+msgstr ""
+
+#: lib/set_oeminfo.c:37
+msgid "[O] Country code: "
+msgstr ""
+
+#: lib/set_oeminfo.c:38
+msgid "[C] Default channel: "
+msgstr ""
+
+#: lib/set_oeminfo.c:39
+msgid "[A] Calibrated channels: "
+msgstr ""
+
+#: lib/set_oeminfo.c:40
+msgid "[P] Nominal Tx Power (CR31) value for calibrated channels: "
+msgstr ""
+
+#: lib/set_oeminfo.c:41
+msgid ""
+"Keys in brackets - set corresponding option; W - write conf; Q - quit to menu"
+msgstr ""
+
+#: lib/set_oeminfo.c:101
+msgid "THIS IS A SECRET MENU LEADING TO VERY DANGEROUS OPTIONS."
+msgstr ""
+
+#: lib/set_oeminfo.c:103
+msgid "It is intended only for WISPs and repair shops."
+msgstr ""
+
+#: lib/set_oeminfo.c:107
+msgid "It allows to set OEM information stored in the AP (like its"
+msgstr ""
+
+#: lib/set_oeminfo.c:109
+msgid "MAC address, manuf. name, OEM ID, etc.). BE ABSOLUTELY SURE"
+msgstr ""
+
+#: lib/set_oeminfo.c:111
+msgid "THAT YOU KNOW WHAT YOU ARE DOING, AND THAT YOU HAVE THE"
+msgstr ""
+
+#: lib/set_oeminfo.c:113
+msgid "LEGAL RIGHT TO DO ANY MODIFICATION. Disobserving of these"
+msgstr ""
+
+#: lib/set_oeminfo.c:115
+msgid "rules may lead you into a conflict with your local"
+msgstr ""
+
+#: lib/set_oeminfo.c:117
+msgid "regulations and/or law."
+msgstr ""
+
+#: lib/set_oeminfo.c:119
+msgid "Also be warned that the setting of any from these options"
+msgstr ""
+
+#: lib/set_oeminfo.c:121
+msgid "may DAMAGE YOUR AP (other reason why this menu is hidden)."
+msgstr ""
+
+#: lib/set_oeminfo.c:123
+msgid "Values changed here will NOT be restored upon reset"
+msgstr ""
+
+#: lib/set_oeminfo.c:125
+msgid "of the device to factory defaults! It is advisable to"
+msgstr ""
+
+#: lib/set_oeminfo.c:127
+msgid "write them down somewhere prior their changing."
+msgstr ""
+
+#: lib/set_oeminfo.c:129
+msgid "Finally, note that you need to use MANUFACTURER community, "
+msgstr ""
+
+#: lib/set_oeminfo.c:131
+msgid "in order to be able to do any OEM info modification."
+msgstr ""
+
+#: lib/set_oeminfo.c:133
+msgid "Proceed further only at your full risk and responsibility. "
+msgstr ""
+
+#: lib/set_oeminfo.c:135
+msgid "You got the warnings."
+msgstr ""
+
+#: lib/set_oeminfo.c:141
+msgid "OEM Info settings"
+msgstr ""
+
 #: lib/stat.c:29
 msgid "Ethernet Statistics"
 msgstr ""
@@ -980,548 +848,1201 @@ msgstr ""
 msgid "System Info"
 msgstr ""
 
-#: lib/sysinfo.c:120
+#: lib/sysinfo.c:55 src/bridge.c:50
+msgid "Wireless Bridge Point to MultiPoint"
+msgstr ""
+
+#: lib/sysinfo.c:56 src/bridge.c:51
+msgid "Access Point"
+msgstr ""
+
+#: lib/sysinfo.c:57 src/bridge.c:52
+msgid "Access Point client"
+msgstr ""
+
+#: lib/sysinfo.c:58 src/bridge.c:53
+msgid "Wireless Bridge Point to Point"
+msgstr ""
+
+#: lib/sysinfo.c:59 src/bridge.c:54
+msgid "Repeater"
+msgstr ""
+
+#: lib/sysinfo.c:60 lib/sysinfo.c:315 lib/sysinfo.c:424 src/bridge.c:55
+msgid "unknown"
+msgstr ""
+
+#: lib/sysinfo.c:144
 msgid "Device hardware/software/name info:"
 msgstr ""
 
-#: lib/sysinfo.c:154
-msgid "Product name:"
+#: lib/sysinfo.c:172
+#, c-format
+msgid "Operational mode: %s"
+msgstr ""
+
+#: lib/sysinfo.c:182
+msgid "Product name: "
 msgstr ""
 
-#: lib/sysinfo.c:158
+#: lib/sysinfo.c:186
 #, c-format
 msgid "Product type: %u"
 msgstr ""
 
-#: lib/sysinfo.c:161
-msgid "OEM name:"
+#: lib/sysinfo.c:189
+msgid "OEM name: "
 msgstr ""
 
-#: lib/sysinfo.c:168
+#: lib/sysinfo.c:196
 #, c-format
 msgid "Hardware revision: %u"
 msgstr ""
 
-#: lib/sysinfo.c:176
+#: lib/sysinfo.c:204
 #, c-format
 msgid "Info structure version: %u"
 msgstr ""
 
-#: lib/sysinfo.c:179 lib/sysinfo.c:355
+#: lib/sysinfo.c:207 lib/sysinfo.c:383
 #, c-format
 msgid "Manufacturer OUI: %02X %02X %02X (%s)"
 msgstr ""
 
-#: lib/sysinfo.c:196
+#: lib/sysinfo.c:224
 #, c-format
 msgid "Uptime: %u days, %02u:%02u:%02u hours:mins:secs"
 msgstr ""
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "FHSS 2.4 GHz"
 msgstr ""
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "DSSS 2.4 GHz"
 msgstr ""
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "IR Baseband"
 msgstr ""
 
-#: lib/sysinfo.c:285
+#: lib/sysinfo.c:313
 msgid "Commercial range 0..40 C"
 msgstr ""
 
-#: lib/sysinfo.c:286
+#: lib/sysinfo.c:314
 msgid "Industrial range -30..70 C"
 msgstr ""
 
-#: lib/sysinfo.c:287 lib/sysinfo.c:396
-msgid "unknown"
-msgstr ""
-
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "manual"
 msgstr ""
 
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "notsupported"
 msgstr ""
 
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "dynamic"
 msgstr ""
 
-#: lib/sysinfo.c:345
+#: lib/sysinfo.c:373
 msgid "Manufacturer:"
 msgstr ""
 
-#: lib/sysinfo.c:350
+#: lib/sysinfo.c:378
 msgid "Manufacturer ID:"
 msgstr ""
 
-#: lib/sysinfo.c:361
+#: lib/sysinfo.c:389
 msgid "Product Name:"
 msgstr ""
 
-#: lib/sysinfo.c:367
+#: lib/sysinfo.c:395
 msgid "Product ID:"
 msgstr ""
 
-#: lib/sysinfo.c:373
-msgid "Product Version:"
+#: lib/sysinfo.c:401
+msgid "Product Version:"
+msgstr ""
+
+#: lib/sysinfo.c:407
+#, c-format
+msgid "PHYType: %s"
+msgstr ""
+
+#: lib/sysinfo.c:410
+#, c-format
+msgid "Temperature: %s"
+msgstr ""
+
+#: lib/sysinfo.c:418
+#, c-format
+msgid "Regulatory Domain: %s"
+msgstr ""
+
+#: lib/sysinfo.c:419
+msgid "FCC (USA)"
+msgstr ""
+
+#: lib/sysinfo.c:420
+msgid "DOC (Canada)"
+msgstr ""
+
+#: lib/sysinfo.c:421
+msgid "ETSI (Europe)"
+msgstr ""
+
+#: lib/sysinfo.c:422
+msgid "Spain"
+msgstr ""
+
+#: lib/sysinfo.c:423
+msgid "France"
+msgstr ""
+
+#: lib/sysinfo.c:424
+msgid "MKK (Japan)"
+msgstr ""
+
+#: lib/sysinfo.c:427
+#, c-format
+msgid "Transmit Power: %u mW"
+msgstr ""
+
+#: lib/sysinfo.c:457
+#, c-format
+msgid "WEP implemented: %s"
+msgstr ""
+
+#: lib/sysinfo.c:460
+#, c-format
+msgid "Diversity: %s"
+msgstr ""
+
+#: lib/sysinfo.c:488
+#, c-format
+msgid "Uptime: %u:%02u:%02u.%02u"
+msgstr ""
+
+#: lib/sysinfo.c:508
+#, c-format
+msgid "IP  Address: %s"
+msgstr ""
+
+#: lib/test.c:26
+msgid "[T] Test mode: "
+msgstr ""
+
+#: lib/test.c:27
+msgid "[A] Antenna: "
+msgstr ""
+
+#: lib/test.c:28
+msgid "[S] Signal level: "
+msgstr ""
+
+#: lib/test.c:29
+msgid "[R] Rate: "
+msgstr ""
+
+#: lib/test.c:30
+msgid "[F] TxFiler: "
+msgstr ""
+
+#: lib/test.c:31
+msgid "[O] Command: "
+msgstr ""
+
+#: lib/test.c:32
+msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu"
+msgstr ""
+
+#: lib/test.c:70
+msgid "Left"
+msgstr ""
+
+#: lib/test.c:70
+msgid "Right"
+msgstr ""
+
+#: lib/test.c:79
+msgid "Devices with ATMEL12350 MIB not yet supported."
+msgstr ""
+
+#: lib/test.c:91
+msgid "Test mode"
+msgstr ""
+
+#: lib/test.c:94
+msgid "Using the \"Test mode\" may cause loss of your current"
+msgstr ""
+
+#: lib/test.c:95
+msgid "configuration."
+msgstr ""
+
+#: lib/test.c:107
+msgid "Options:"
+msgstr ""
+
+#: lib/test.c:133
+msgid "Statistics:"
+msgstr ""
+
+#: lib/test.c:134
+msgid "Success Frames: 0 Failed Frames: 0"
+msgstr ""
+
+#: lib/test.c:195
+#, c-format
+msgid "Success Frames: %lu Failed Frames: %lu"
+msgstr ""
+
+#: lib/wep.c:28
+msgid "Privacy Settings"
+msgstr ""
+
+#: lib/wep.c:29
+msgid "[E] Standard encryption mechanism: "
+msgstr ""
+
+#: lib/wep.c:30
+msgid "[A] Allow unencrypted: "
+msgstr ""
+
+#: lib/wep.c:31
+msgid "[K] Default WEP key: "
+msgstr ""
+
+#: lib/wep.c:32
+msgid "[P] Public key: "
+msgstr ""
+
+#: lib/wep.c:85
+msgid "EK1234 - set; W - write conf; Q - quit to menu"
+msgstr ""
+
+#: lib/wep.c:94 lib/wep.c:263
+msgid "Key  WEP"
+msgstr ""
+
+#: lib/wep.c:101
+msgid "Hint! Confused by WEP key values? See man ap-config for info..."
+msgstr ""
+
+#: lib/wep.c:247
+msgid "AEPK1234 - set options; W - write conf; Q - quit to menu"
+msgstr ""
+
+#: lib/wlan.c:27
+msgid "[E] ESSID: "
+msgstr ""
+
+#: lib/wlan.c:28
+msgid "[N] AP name: "
+msgstr ""
+
+#: lib/wlan.c:30
+msgid "[K] AP contact: "
+msgstr ""
+
+#: lib/wlan.c:31
+msgid "[L] AP location: "
+msgstr ""
+
+#: lib/wlan.c:33
+msgid "[R] RTS threshold: "
+msgstr ""
+
+#: lib/wlan.c:34
+msgid "[F] Fragmentation threshold: "
+msgstr ""
+
+#: lib/wlan.c:35
+msgid "[P] Preambule type: "
+msgstr ""
+
+#: lib/wlan.c:36
+msgid "[A] Auth type: "
+msgstr ""
+
+#: lib/wlan.c:37
+msgid "Open system"
+msgstr ""
+
+#: lib/wlan.c:38
+msgid "Shared key"
+msgstr ""
+
+#: lib/wlan.c:39
+msgid "Both types"
+msgstr ""
+
+#: lib/wlan.c:40
+msgid "[U] Auto rate fallback: "
+msgstr ""
+
+#: lib/wlan.c:41
+msgid "[S] Insert ESSID in broadcast packets: "
+msgstr ""
+
+#: lib/wlan.c:42
+msgid "Basic and Supported rates:"
+msgstr ""
+
+#: lib/wlan.c:43
+msgid "Key   Rate  Status"
+msgstr ""
+
+#: lib/wlan.c:45
+msgid "[I] International roaming: "
+msgstr ""
+
+#: lib/wlan.c:46
+msgid "[B] Beacon period (msec): "
+msgstr ""
+
+#: lib/wlan.c:47
+msgid "[D] DTIM sending interval (beacons): "
+msgstr ""
+
+#: lib/wlan.c:48
+msgid "[T] SIFS time (2nd+ interframe spacing, usec): "
+msgstr ""
+
+#: lib/wlan.c:49
+msgid "[key] - set option; W - write conf; Q - quit to menu"
+msgstr ""
+
+#: lib/wlan.c:125
+msgid "Short"
+msgstr ""
+
+#: lib/wlan.c:125
+msgid "Long"
+msgstr ""
+
+#: lib/wlan.c:239
+msgid "Wireless Settings"
+msgstr ""
+
+#: lib/wlan.c:735
+msgid "Antenna Configuration:"
+msgstr ""
+
+#: lib/wlan.c:752
+msgid "General Options"
+msgstr ""
+
+#: lib/wlan.c:754
+msgid ""
+"UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu"
+msgstr ""
+
+#: src/ap-auth.c:32 src/auth.c:28
+msgid "AuthorizedMacTableString packet error"
+msgstr ""
+
+#: src/ap-auth.c:33
+msgid "Invalid data in source file"
+msgstr ""
+
+#: src/ap-auth.c:34
+msgid "Can't open file"
+msgstr ""
+
+#: src/ap-auth.c:35
+msgid "Can't write to file"
+msgstr ""
+
+#: src/ap-auth.c:36
+msgid "Error closing file"
+msgstr ""
+
+#: src/ap-auth.c:44 src/ap-mrtg.c:41 src/ap-rrd.c:40
+msgid ""
+"\n"
+"Usage:\n"
+msgstr ""
+
+#: src/ap-auth.c:45
+msgid "\tap-auth -i ip -c community -d filename [-h]\n"
+msgstr ""
+
+#: src/ap-auth.c:46
+msgid ""
+"\tap-auth -i ip -c community -u filename [-h]\n"
+"\n"
+msgstr ""
+
+#: src/ap-auth.c:47
+msgid ""
+"Change accesspoint's list of authorised MAC addresses\n"
+"\n"
+msgstr ""
+
+#: src/ap-auth.c:48 src/ap-mrtg.c:45 src/ap-rrd.c:45
+msgid "-i ip        - AP ip address\n"
+msgstr ""
+
+#: src/ap-auth.c:49 src/ap-mrtg.c:46 src/ap-rrd.c:46
+msgid "-c community - SNMP community string\n"
+msgstr ""
+
+#: src/ap-auth.c:50
+msgid ""
+"-d filename  - download list of authorised MAC addresses from AP to a file\n"
+msgstr ""
+
+#: src/ap-auth.c:52
+msgid ""
+"-u filename  - upload list of authorised MAC addresses from a file to AP\n"
+msgstr ""
+
+#: src/ap-auth.c:54 src/ap-mrtg.c:55 src/ap-rrd.c:55
+msgid ""
+"-h           - print this help screen\n"
+"\n"
+msgstr ""
+
+#: src/ap-auth.c:55
+#, c-format
+msgid ""
+"ap-auth %s Copyright (c) 2004 Teemu Kiviniemi\n"
+"\n"
+msgstr ""
+
+#: src/ap-auth.c:138 src/ap-mrtg.c:132
+msgid "Error: invalid IP-address.\n"
+msgstr ""
+
+#: src/ap-auth.c:203 src/ap-mrtg.c:204
+msgid "Unable to determine AP MIB type (no response from AP)."
+msgstr ""
+
+#: src/ap-auth.c:211
+msgid "NWN devices are not yet supported."
+msgstr ""
+
+#: src/ap-config.c:43 src/bridge.c:201
+msgid "Bridging"
+msgstr ""
+
+#: src/ap-config.c:43
+msgid "Set bridging and IP-related options"
+msgstr ""
+
+#: src/ap-config.c:45 src/ap-config.c:114 src/ap-config.c:123 src/bridge.c:125
+msgid "Wireless"
+msgstr ""
+
+#: src/ap-config.c:45
+msgid "Set wireless options"
+msgstr ""
+
+#: src/ap-config.c:46 src/ap-config.c:58
+msgid "Privacy"
+msgstr ""
+
+#: src/ap-config.c:47
+msgid "Auth"
+msgstr ""
+
+#: src/ap-config.c:48 src/ap-config.c:60
+msgid "Community"
+msgstr ""
+
+#: src/ap-config.c:49
+msgid "Radio"
+msgstr ""
+
+#: src/ap-config.c:49
+msgid "Set radio signal power and antenna options"
+msgstr ""
+
+#: src/ap-config.c:56
+msgid "General"
+msgstr ""
+
+#: src/ap-config.c:56
+msgid "Set general options"
+msgstr ""
+
+#: src/ap-config.c:57
+msgid "Advanced"
+msgstr ""
+
+#: src/ap-config.c:57
+msgid "Set advanced options"
+msgstr ""
+
+#: src/ap-config.c:59
+msgid "MAC auth"
+msgstr ""
+
+#: src/ap-config.c:82
+msgid "Upload"
+msgstr ""
+
+#: src/ap-config.c:82
+msgid "Activate current configuration"
+msgstr ""
+
+#: src/ap-config.c:83
+msgid "Defaults"
+msgstr ""
+
+#: src/ap-config.c:83
+msgid "Restore factory default settings"
+msgstr ""
+
+#: src/ap-config.c:84 src/ap-config.c:91
+msgid "Reset"
+msgstr ""
+
+#: src/ap-config.c:85
+msgid "Reset AP. All not uploaded configuration will be lost"
+msgstr ""
+
+#: src/ap-config.c:86
+msgid "TestMode"
+msgstr ""
+
+#: src/ap-config.c:86
+msgid "Put Access Point in test mode"
+msgstr ""
+
+#: src/ap-config.c:91
+msgid "Reset AP."
+msgstr ""
+
+#: src/ap-config.c:112 src/ap-config.c:122
+msgid "SysInfo"
+msgstr ""
+
+#: src/ap-config.c:113 src/bridge.c:124 src/bridge.c:127
+msgid "Ethernet"
+msgstr ""
+
+#: src/ap-config.c:113
+msgid "Get ethernet port statistics"
+msgstr ""
+
+#: src/ap-config.c:115 src/ap-config.c:124
+msgid "Stations"
+msgstr ""
+
+#: src/ap-config.c:116
+msgid "AP link"
+msgstr ""
+
+#: src/ap-config.c:117
+msgid "KnownAPs"
+msgstr ""
+
+#: src/ap-config.c:117
+msgid "Get info about known Access Points"
+msgstr ""
+
+#: src/ap-config.c:125
+msgid "Latest"
+msgstr ""
+
+#: src/ap-config.c:125
+msgid "Get info about latest events"
+msgstr ""
+
+#: src/ap-config.c:150
+msgid "Info"
+msgstr ""
+
+#: src/ap-config.c:151
+msgid "Config"
+msgstr ""
+
+#: src/ap-config.c:152
+msgid "Commands"
+msgstr ""
+
+#: src/ap-config.c:152
+msgid "Execute commands on Access Point"
+msgstr ""
+
+#: src/ap-config.c:154
+msgid "Connect"
+msgstr ""
+
+#: src/ap-config.c:155
+msgid "Search"
+msgstr ""
+
+#: src/ap-config.c:156
+msgid "Polling"
+msgstr ""
+
+#: src/ap-config.c:157
+msgid "Shell"
+msgstr ""
+
+#: src/ap-config.c:159
+msgid "Exit"
+msgstr ""
+
+#: src/ap-config.c:218
+#, c-format
+msgid "Wireless Access Point Configurator ver. %s"
+msgstr ""
+
+#: src/aplink.c:25
+msgid "RSSI:     ["
+msgstr ""
+
+#: src/aplink.c:26
+msgid "RSSI avg: ["
+msgstr ""
+
+#: src/aplink.c:27
+msgid "RSSI top: ["
+msgstr ""
+
+#: src/aplink.c:28
+msgid "RSSI rou: ["
+msgstr ""
+
+#: src/aplink.c:29
+msgid ""
+"P - pause, T - toggle graph view, Q - quit to menu, Other key - force update."
+msgstr ""
+
+#: src/aplink.c:81
+msgid "RSSI [%]"
+msgstr ""
+
+#: src/aplink.c:82
+msgid "RSSI average [%]"
+msgstr ""
+
+#: src/aplink.c:83
+msgid "RSSI rounded [%]"
+msgstr ""
+
+#: src/aplink.c:84
+msgid "Link Quality [%]"
+msgstr ""
+
+#: src/aplink.c:133
+msgid "Not available - device must have firmware with necessary "
+msgstr ""
+
+#: src/aplink.c:135
+msgid "vendor extensions and be in either 'Access Point client'"
+msgstr ""
+
+#: src/aplink.c:137
+msgid "or 'Repeater' mode."
+msgstr ""
+
+#: src/ap-mrtg.c:42
+msgid ""
+"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-v] [-h] [-r]\n"
+"\n"
+msgstr ""
+
+#: src/ap-mrtg.c:44
+msgid ""
+"Get stats from AP and return it in MRTG parsable format\n"
+"\n"
+msgstr ""
+
+#: src/ap-mrtg.c:47
+msgid ""
+"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
+"or <l>ink quality (last one will only "
+msgstr ""
+
+#: src/ap-mrtg.c:49
+msgid "work with ATMEL410 MIB devices in AP Client mode)\n"
+msgstr ""
+
+#: src/ap-mrtg.c:50
+msgid ""
+"-b bssid     - mac address of the AP from which get link quality, only if "
+"type=l\n"
+msgstr ""
+
+#: src/ap-mrtg.c:52
+msgid "-n name      - AP name - for check only\n"
+msgstr ""
+
+#: src/ap-mrtg.c:53
+msgid "-v           - report MRTG about problems connecting to AP\n"
 msgstr ""
 
-#: lib/sysinfo.c:379
-#, c-format
-msgid "PHYType: %s"
+#: src/ap-mrtg.c:54 src/ap-rrd.c:54
+msgid "-r           - reset AP when getting LinkQuality stats\n"
 msgstr ""
 
-#: lib/sysinfo.c:382
+#: src/ap-mrtg.c:56
 #, c-format
-msgid "Temperature: %s"
+msgid ""
+"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n"
+"\n"
 msgstr ""
 
-#: lib/sysinfo.c:390
+#: src/ap-rrd.c:32
 #, c-format
-msgid "Regulatory Domain: %s"
-msgstr ""
-
-#: lib/sysinfo.c:391
-msgid "FCC (USA)"
+msgid "Error getting data from AP %s\n"
 msgstr ""
 
-#: lib/sysinfo.c:392
-msgid "DOC (Canada)"
+#: src/ap-rrd.c:42
+msgid ""
+"\tap-rrd -i ip -c community -t type -d db_file [-b bssid] [-n name] [-a "
+"aptype] [-h] [-r] \n"
+"\n"
 msgstr ""
 
-#: lib/sysinfo.c:393
-msgid "ETSI (Europe)"
+#: src/ap-rrd.c:44
+msgid ""
+"Get stats from AP and put it in to specified RRDtool database\n"
+"\n"
 msgstr ""
 
-#: lib/sysinfo.c:394
-msgid "Spain"
+#: src/ap-rrd.c:48
+msgid ""
+"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
+"or <l>ink quality in client mode\n"
 msgstr ""
 
-#: lib/sysinfo.c:395
-msgid "France"
+#: src/ap-rrd.c:49
+msgid "-d db_file   - RRD database file with full path\n"
 msgstr ""
 
-#: lib/sysinfo.c:396
-msgid "MKK (Japan)"
+#: src/ap-rrd.c:51
+msgid ""
+"-b bssid     - mac address of the AP to which get link quality, only if "
+"type=l\n"
 msgstr ""
 
-#: lib/sysinfo.c:399
-#, c-format
-msgid "Transmit Power: %u mW"
+#: src/ap-rrd.c:52
+msgid "-n name     - AP name - for check only\n"
 msgstr ""
 
-#: lib/sysinfo.c:429
-#, c-format
-msgid "WEP implemented: %s"
+#: src/ap-rrd.c:53
+msgid ""
+"-a aptype    - AP type - 410 (default) or 510 for ATMEL12350's, like the ME-"
+"102\n"
 msgstr ""
 
-#: lib/sysinfo.c:432
+#: src/ap-rrd.c:56
 #, c-format
-msgid "Diversity: %s"
+msgid ""
+"ap-rrd %s Copyright (c) 2002-2004 Roman Festchook\n"
+"\n"
 msgstr ""
 
-#: lib/sysinfo.c:460
-#, c-format
-msgid "Uptime: %u:%02u:%02u.%02u"
+#: src/ap-rrd.c:133
+msgid "Invalid IP-address\n"
 msgstr ""
 
-#: lib/sysinfo.c:480
+#: src/ap-rrd.c:179
 #, c-format
-msgid "IP  Address: %s"
+msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n"
 msgstr ""
 
-#: lib/test.c:26
-msgid "[T] Test mode: "
+#: src/ap-tftp.c:84
+msgid "yes"
 msgstr ""
 
-#: lib/test.c:27
-msgid "[A] Antenna: "
+#: src/ap-tftp.c:85
+msgid "no"
 msgstr ""
 
-#: lib/test.c:28
-msgid "[S] Signal level: "
+#: src/ap-tftp.c:87
+msgid "Error while read()ing firmware file"
 msgstr ""
 
-#: lib/test.c:29
-msgid "[R] Rate: "
+#: src/ap-tftp.c:100
+msgid "Undefined error"
 msgstr ""
 
-#: lib/test.c:30
-msgid "[F] TxFiler: "
+#: src/ap-tftp.c:101
+msgid "File not found"
 msgstr ""
 
-#: lib/test.c:31
-msgid "[O] Command: "
+#: src/ap-tftp.c:102
+msgid "Access violation"
 msgstr ""
 
-#: lib/test.c:32
-msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu"
+#: src/ap-tftp.c:103
+msgid "Disk full or allocation error"
 msgstr ""
 
-#: lib/test.c:70
-msgid "Left"
+#: src/ap-tftp.c:104
+msgid "Illegal TFTP operation"
 msgstr ""
 
-#: lib/test.c:70
-msgid "Right"
+#: src/ap-tftp.c:105
+msgid "Unknown transfer ID"
 msgstr ""
 
-#: lib/test.c:86
-msgid "Test mode"
+#: src/ap-tftp.c:106
+msgid "File already exists"
 msgstr ""
 
-#: lib/test.c:89
-msgid "Using the \"Test mode\" may cause loss of your current"
+#: src/ap-tftp.c:107
+msgid "No such user"
 msgstr ""
 
-#: lib/test.c:90
-msgid "configuration."
+#: src/ap-tftp.c:157
+msgid "Remote-filename too long.\n"
 msgstr ""
 
-#: lib/test.c:102
-msgid "Options:"
+#: src/ap-tftp.c:183
+#, c-format
+msgid "%sError in read()"
 msgstr ""
 
-#: lib/test.c:128
-msgid "Statistics:"
+#: src/ap-tftp.c:212
+#, c-format
+msgid "sending %u bytes\n"
 msgstr ""
 
-#: lib/test.c:129
-msgid "Success Frames: 0 Failed Frames: 0"
+#: src/ap-tftp.c:221
+#, c-format
+msgid "%sError in sendto()"
 msgstr ""
 
-#: lib/test.c:190
+#: src/ap-tftp.c:244
 #, c-format
-msgid "Success Frames: %lu Failed Frames: %lu"
+msgid "%sError in recvfrom()"
 msgstr ""
 
-#: lib/wep.c:28
-msgid "Privacy Settings"
+#: src/ap-tftp.c:256
+#, c-format
+msgid "\rProgress: uploaded %3i%%."
 msgstr ""
 
-#: lib/wep.c:29
-msgid "[E] Standard encryption mechanism: "
+#: src/ap-tftp.c:267
+#, c-format
+msgid "%sMalformed packet received. Aborting.\n"
 msgstr ""
 
-#: lib/wep.c:30
-msgid "[A] Allow unencrypted: "
+#: src/ap-tftp.c:276
+#, c-format
+msgid "%sTimed out waiting for response from server (%i/%i).\n"
 msgstr ""
 
-#: lib/wep.c:31
-msgid "[K] Default WEP key: "
+#: src/ap-tftp.c:283
+#, c-format
+msgid "%sError in select()"
 msgstr ""
 
-#: lib/wep.c:32
-msgid "[P] Public key: "
+#: src/ap-tftp.c:297
+#, c-format
+msgid "Received %d bytes: %04x %04x\n"
 msgstr ""
 
-#: lib/wep.c:85
-msgid "EK1234 - set; W - write conf; Q - quit to menu"
+#: src/ap-tftp.c:308
+#, c-format
+msgid "%sError: server responded with %s. Aborting.\n"
 msgstr ""
 
-#: lib/wep.c:94 lib/wep.c:263
-msgid "Key  WEP"
+#: src/ap-tftp.c:315
+#, c-format
+msgid "%sFlash programming in progress...\n"
 msgstr ""
 
-#: lib/wep.c:101
-msgid "Hint! Confused by WEP key values? See man ap-config for info..."
+#: src/ap-tftp.c:317
+msgid "Finished successfully.\n"
 msgstr ""
 
-#: lib/wep.c:247
-msgid "AEPK1234 - set options; W - write conf; Q - quit to menu"
+#: src/ap-tftp.c:335
+msgid "PLEASE BE _ABSOLUTELY_ SURE TO READ MANPAGE PRIOR USE!!!\n"
 msgstr ""
 
-#: lib/wlan.c:27
-msgid "[E] ESSID: "
+#: src/ap-tftp.c:337
+#, c-format
+msgid ""
+"\n"
+"Usage: %s -i IP -f firmware_file.rom [-c community] [-h]\n"
 msgstr ""
 
-#: lib/wlan.c:28
-msgid "[N] AP name: "
+#: src/ap-tftp.c:361
+msgid "TFTP client for upgrading firmware in ATMEL AT76C510 WiSOC-based APs.\n"
 msgstr ""
 
-#: lib/wlan.c:30
-msgid "[K] AP contact: "
+#: src/ap-tftp.c:363
+msgid "(C) 2004-2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>\n"
 msgstr ""
 
-#: lib/wlan.c:31
-msgid "[L] AP location: "
+#: src/ap-tftp.c:379
+msgid "Error: invalid IP address format given.\n"
 msgstr ""
 
-#: lib/wlan.c:33
-msgid "[R] RTS threshold: "
+#: src/ap-tftp.c:405
+msgid "Error: invalid argument combination.\n"
 msgstr ""
 
-#: lib/wlan.c:34
-msgid "[F] Fragmentation threshold: "
+#: src/ap-tftp.c:412
+msgid "Error while open()ing firmware file"
 msgstr ""
 
-#: lib/wlan.c:35
-msgid "[P] Preambule type: "
+#: src/ap-tftp.c:419 src/ap-tftp.c:472
+msgid "Error: invalid firmware file given.\n"
 msgstr ""
 
-#: lib/wlan.c:36
-msgid "[A] Auth type: "
+#: src/ap-tftp.c:461
+#, c-format
+msgid ""
+"Firmware file contains:\n"
+"- string \"ATMEL\": %s\n"
+"- string \"802.11 AP\": %s\n"
+"- string \"atbrfirm.bin\": %s\n"
+"- string \"atsingle.bin\": %s\n"
 msgstr ""
 
-#: lib/wlan.c:37
-msgid "Open system"
+#: src/ap-tftp.c:485
+#, c-format
+msgid ""
+"Using:\n"
+"- server: %s\n"
+"- firmware file: \"%s\"\n"
+"- name used for upload: \"%s\"\n"
 msgstr ""
 
-#: lib/wlan.c:38
-msgid "Shared key"
+#: src/ap-tftp.c:568
+msgid ""
+"Error: device with the given IP does not seem to run SmartBridges firmware.\n"
 msgstr ""
 
-#: lib/wlan.c:39
-msgid "Both types"
+#: src/ap-tftp.c:574
+msgid "Error: SNMP authorization error or device unavailable.\n"
 msgstr ""
 
-#: lib/wlan.c:40
-msgid "[U] Auto rate fallback: "
+#: src/ap-tftp.c:653
+msgid "Error while lseek()ing in firmware file\n"
 msgstr ""
 
-#: lib/wlan.c:41
-msgid "[S] Insert ESSID in broadcast packets: "
+#: src/ap-trapd.c:150
+#, c-format
+msgid "ap-trapd %s started%s%s."
 msgstr ""
 
-#: lib/wlan.c:42
-msgid "Basic and Supported rates:"
+#: src/ap-trapd.c:151
+msgid " on "
 msgstr ""
 
-#: lib/wlan.c:43
-msgid "Key   Rate  Status"
+#: src/ap-trapd.c:157
+msgid "Unable to fork. Exiting."
 msgstr ""
 
-#: lib/wlan.c:45
-msgid "[I] International roaming: "
+#: src/ap-trapd.c:161
+msgid "Can't create socket. Exiting."
 msgstr ""
 
-#: lib/wlan.c:46
-msgid "[B] Beacon period (msec): "
+#: src/ap-trapd.c:167
+msgid "Can't bind socket. Exiting."
 msgstr ""
 
-#: lib/wlan.c:47
-msgid "[D] DTIM sending interval (beacons): "
+#: src/ap-trapd.c:174
+#, c-format
+msgid "Can't bind to device %s. Exiting."
 msgstr ""
 
-#: lib/wlan.c:48
-msgid "[T] SIFS time (msec): "
+#: src/ap-trapd.c:185
+#, c-format
+msgid "Unable to process username %s. Error: %m."
 msgstr ""
 
-#: lib/wlan.c:49
-msgid "[key] - set option; W - write conf; Q - quit to menu"
+#: src/ap-trapd.c:190
+#, c-format
+msgid "Unable to change to uid %d."
 msgstr ""
 
-#: lib/wlan.c:125
-msgid "Short"
+#: src/ap-trapd.c:239
+#, c-format
+msgid ""
+"Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s."
 msgstr ""
 
-#: lib/wlan.c:125
-msgid "Long"
+#: src/ap-trapd.c:311
+#, c-format
+msgid "Agent:v%d %s (%s@%s:%d) Trap %i: %s%s%s. SysUptime %d:%02d:%02d.%02d"
 msgstr ""
 
-#: lib/wlan.c:237
-msgid "Wireless Settings"
+#: src/auth.c:30
+msgid "APClient authorization credentials"
 msgstr ""
 
-#: lib/wlan.c:731
-msgid "Antenna Configuration:"
+#: src/auth.c:32
+msgid "[A] MAC authorization: "
 msgstr ""
 
-#: lib/wlan.c:748
-msgid "General Options"
+#: src/auth.c:33
+msgid "Enter MAC: "
 msgstr ""
 
-#: lib/wlan.c:750
-msgid ""
-"UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu"
+#: src/auth.c:34
+msgid "Delete Num: "
 msgstr ""
 
-#: src/ap-config.c:54
-msgid "General"
+#: src/auth.c:35
+msgid " NUM     MAC address     "
 msgstr ""
 
-#: src/ap-config.c:54
-msgid "Set general options"
+#: src/auth.c:36
+msgid "A: auth; N: new; D: del; arrows: scroll; W: write conf; Q: quit"
 msgstr ""
 
-#: src/ap-config.c:55
-msgid "Advanced"
+#: src/auth.c:38
+msgid "[I] Radius server IP: "
 msgstr ""
 
-#: src/ap-config.c:55
-msgid "Set advanced options"
+#: src/auth.c:39
+msgid "[P] Radius server port: "
 msgstr ""
 
-#: src/ap-config.c:89
-msgid "Reset AP."
+#: src/auth.c:40
+msgid "[S] Radius server secret: "
 msgstr ""
 
-#: src/ap-config.c:122
-msgid "Latest"
+#: src/auth.c:41
+msgid "[T] Reauthorization time (minutes): "
 msgstr ""
 
-#: src/ap-config.c:122
-msgid "Get info about latest events"
+#: src/auth.c:42
+msgid "[F] Radius source port: "
 msgstr ""
 
-#: src/ap-mrtg.c:42
+#: src/auth.c:43
 msgid ""
-"\n"
-"Usage:\n"
+"A: auth; N: new; D: del; IPSTF: set; arrows: scroll; W: write conf; Q: quit"
 msgstr ""
 
-#: src/ap-mrtg.c:44
-msgid ""
-"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-"
-"h] [-r]\n"
-"\n"
+#: src/auth.c:45
+msgid "[M] 802.1x authorization: "
 msgstr ""
 
-#: src/ap-mrtg.c:46
-msgid ""
-"Get stats from AP and return it in MRTG parsable format\n"
-"\n"
+#: src/auth.c:46
+msgid "[T] key broadcasting time period (seconds): "
 msgstr ""
 
-#: src/ap-mrtg.c:47
-msgid "-i ip        - AP ip address\n"
+#: src/auth.c:47
+msgid "[I] 802.1x auth. server IP: "
 msgstr ""
 
-#: src/ap-mrtg.c:48
-msgid "-c community - SNMP community string\n"
+#: src/auth.c:48
+msgid "[S] 802.1x auth. server secret: "
 msgstr ""
 
-#: src/ap-mrtg.c:50
+#: src/auth.c:49
 msgid ""
-"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
-"or <l>ink quality in client mode\n"
+"A: auth; N: new; D: del; MTIS: set; arrows: scroll; W: write conf; Q: quit"
 msgstr ""
 
-#: src/ap-mrtg.c:52
-msgid ""
-"-b bssid     - mac address of the AP to which get link quality, only if "
-"type=l\n"
+#: src/auth.c:114
+msgid "Internal"
 msgstr ""
 
-#: src/ap-mrtg.c:53
-msgid "-n name     - AP name - for check only\n"
+#: src/auth.c:116
+msgid "Radius"
 msgstr ""
 
-#: src/ap-mrtg.c:54
-msgid ""
-"-a aptype        - AP type - 410 (default) or 510 for ATMEL12350's, like the "
-"ME-102\n"
+#: src/auth.c:121
+msgid "Allow listed MACs only"
 msgstr ""
 
-#: src/ap-mrtg.c:56
-msgid "-v           - report MRTG about problems connecting to AP\n"
+#: src/auth.c:123
+msgid "Deny listed MACs only"
 msgstr ""
 
-#: src/ap-mrtg.c:57
-msgid "-r           - reset AP when getting LinkQuality stats\n"
+#: src/auth.c:129
+msgid "Mixed environment"
 msgstr ""
 
-#: src/ap-mrtg.c:58
-msgid ""
-"-h           - print this help screen\n"
-"\n"
+#: src/auth.c:213
+msgid "(not shown)"
 msgstr ""
 
-#: src/ap-mrtg.c:59
-#, c-format
-msgid ""
-"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n"
-"\n"
+#: src/auth.c:276
+msgid "Authorized MAC addresses:"
 msgstr ""
 
-#: src/ap-mrtg.c:143
-msgid "Invalid IP-address\n"
+#: src/auth.c:345
+msgid "(insufficient community used)"
 msgstr ""
 
-#: src/ap-mrtg.c:188
+#: src/auth.c:472
 #, c-format
-msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n"
+msgid "Given MAC already exists in MAC list at position %d. Press any key."
 msgstr ""
 
-#: src/ap-mrtg.c:207
-msgid "Create socket error"
+#: src/bridge.c:27
+msgid "[I] IP: "
 msgstr ""
 
-#: src/ap-mrtg.c:211
-msgid "Bind socket error"
+#: src/bridge.c:28
+msgid "[N] Netmask: "
 msgstr ""
 
-#: src/ap-trapd.c:148
-#, c-format
-msgid "ap-trapd %s started%s%s."
+#: src/bridge.c:29
+msgid "[G] Gateway: "
 msgstr ""
 
-#: src/ap-trapd.c:149
-msgid " on "
+#: src/bridge.c:30
+msgid "[F] Filter non-IP traffic: "
 msgstr ""
 
-#: src/ap-trapd.c:155
-msgid "Unable to fork. Exiting."
+#: src/bridge.c:31
+msgid "[P] Primary port: "
 msgstr ""
 
-#: src/ap-trapd.c:159
-msgid "Can't create socket. Exiting."
+#: src/bridge.c:32
+msgid "Attached station MAC: "
 msgstr ""
 
-#: src/ap-trapd.c:165
-msgid "Can't bind socket. Exiting."
+#: src/bridge.c:33
+msgid "[D] DHCP client: "
 msgstr ""
 
-#: src/ap-trapd.c:172
-#, c-format
-msgid "Can't bind to device %s. Exiting."
+#: src/bridge.c:34
+msgid "[O] Operational mode: "
 msgstr ""
 
-#: src/ap-trapd.c:183
-#, c-format
-msgid "Unable to process username %s. Error: %m."
+#: src/bridge.c:35
+msgid "[M] Preferred BSSID (remote MAC addr.): "
 msgstr ""
 
-#: src/ap-trapd.c:188
-#, c-format
-msgid "Unable to change to uid %d."
+#: src/bridge.c:36
+msgid "[C] Configuration-enabled port(s): "
 msgstr ""
 
-#: src/ap-trapd.c:235
-#, c-format
-msgid ""
-"Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s."
+#: src/bridge.c:37
+msgid "[T] Trap-sending port: "
 msgstr ""
 
-#: src/ap-trapd.c:307
-#, c-format
-msgid "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d"
+#: src/bridge.c:38
+msgid "[R] Forward broadcast traffic: "
 msgstr ""
 
-#: src/auth_mac.c:33
-msgid "NUM     MAC address"
+#: src/bridge.c:39
+msgid "[B] Isolate wireless clients (broadcast traffic): "
 msgstr ""
 
-#: src/bridge.c:35
-msgid "[C] Configuration-enabled port(s): "
+#: src/bridge.c:40
+msgid "[U] Isolate wireless clients (unicast traffic): "
 msgstr ""
 
-#: src/bridge.c:38
-msgid "[B] Isolate wireless clients (broadcast traffic): "
+#: src/bridge.c:41
+msgid "INGFPDOMSCRBUT - set; W - write conf; Q - quit to menu"
 msgstr ""
 
-#: src/bridge.c:39
-msgid "[U] Isolate wireless clients (unicast traffic): "
+#: src/bridge.c:128
+msgid "Wireless (can be risky)"
 msgstr ""
 
-#: src/bridge.c:119
+#: src/bridge.c:129
 msgid "Both"
 msgstr ""
 
@@ -1572,28 +2093,28 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-#: src/stations.c:33
-msgid "AP link state"
+#: src/stations.c:82
+msgid "Not available (device not in AP mode)."
 msgstr ""
 
-#: src/stations.c:37
-msgid " #            MAC                                               "
+#: src/stations.c:92
+msgid "  #     MAC       Parent MAC  RSSI   LQ Sts MACn      IP        "
 msgstr ""
 
-#: src/stations.c:40
-msgid " #     MAC       Parent MAC    RSSI  Status MACn      IP        "
+#: src/stations.c:136
+msgid "AssociatedSTAsInfo packet error"
 msgstr ""
 
-#: src/stations.c:195 src/stations.c:367
+#: src/stations.c:189 src/stations.c:363
 msgid ""
 "Arrows - scroll; S - save to file; Q - return; T - toggle view; Other - "
 "refresh"
 msgstr ""
 
-#: src/stations.c:200
+#: src/stations.c:193
 msgid "Arrows - scroll; S - save to file; Q - return; Other key - refresh"
 msgstr ""
 
-#: src/stations.c:279
+#: src/stations.c:275
 msgid "Id       MAC address     Quality  Age  RSSI"
 msgstr ""
index 8f4fe59d5756f05d6cb3ed9144a96fd62d3781d5..d42552739bf58c4b8aaa0409287c3c7033090ec8 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU ap-utils 1.3.2-pre3\n"
-"POT-Creation-Date: 2004-11-28 00:59+0200\n"
-"PO-Revision-Date: 2004-05-10 08:00-0500\n"
+"Project-Id-Version: GNU ap-utils 1.5pre1\n"
+"POT-Creation-Date: 2005-03-07 01:13+0200\n"
+"PO-Revision-Date: 2004-11-30 08:00-0500\n"
 "Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
 "Language-Team: French <traduc@traduc.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
-"Report-Msgid-Bugs-To: \n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: ap-gl/ap-gl.c:41 ap-gl/bridge.c:178 src/ap-config.c:41 src/bridge.c:182
-msgid "Bridging"
-msgstr ""
-
-#: ap-gl/ap-gl.c:41 src/ap-config.c:41
-msgid "Set bridging and IP-related options"
-msgstr "Configuré les options relative au pont et à IP"
-
-#: ap-gl/ap-gl.c:43 ap-gl/ap-gl.c:81 ap-gl/bridge.c:132 src/ap-config.c:43
-#: src/ap-config.c:112 src/ap-config.c:120 src/bridge.c:117 src/bridge.c:121
-msgid "Wireless"
-msgstr "Sans fil"
-
-#: ap-gl/ap-gl.c:43 src/ap-config.c:43
-msgid "Set wireless options"
-msgstr "Configurer les options sans fil"
-
-#: ap-gl/ap-gl.c:44 src/ap-config.c:44 src/ap-config.c:56
-msgid "Privacy"
-msgstr "Intimité"
-
-#: ap-gl/ap-gl.c:45 src/ap-config.c:45 src/ap-config.c:57
-msgid "MAC auth"
-msgstr ""
-
-#: ap-gl/ap-gl.c:46 src/ap-config.c:46 src/ap-config.c:58
-msgid "Community"
-msgstr "Communauté"
-
-#: ap-gl/ap-gl.c:47 src/ap-config.c:47
-msgid "Radio"
-msgstr "Radio"
-
-#: ap-gl/ap-gl.c:47 src/ap-config.c:47
-msgid "Set radio signal power and antenna options"
-msgstr ""
-"Sélectionner les options pour l'antenne et la puissance du signal radio"
-
-#: ap-gl/ap-gl.c:62 src/ap-config.c:80
-msgid "Upload"
-msgstr "Téléchargement"
-
-#: ap-gl/ap-gl.c:62 src/ap-config.c:80
-#, fuzzy
-msgid "Activate current configuration"
-msgstr "Rendre la configuration courante active"
-
-#: ap-gl/ap-gl.c:63 src/ap-config.c:81
-msgid "Defaults"
-msgstr "Défauts"
-
-#: ap-gl/ap-gl.c:63 src/ap-config.c:81
-msgid "Restore factory default settings"
-msgstr "Restaurer les paramètres par défaut du manufacturier"
-
-#: ap-gl/ap-gl.c:64 src/ap-config.c:82 src/ap-config.c:89
-msgid "Reset"
-msgstr "Réinitialisation"
-
-#: ap-gl/ap-gl.c:65 src/ap-config.c:83
-msgid "Reset AP. All not uploaded configuration will be lost"
-msgstr ""
-"Réinitialiser le point d'accès. Toutes les config. non préservées seront "
-"perdues."
-
-#: ap-gl/ap-gl.c:66 src/ap-config.c:84
-msgid "TestMode"
-msgstr "Mode test"
-
-#: ap-gl/ap-gl.c:66 src/ap-config.c:84
-msgid "Put Access Point in test mode"
-msgstr "Placer le point d'accès en mode test."
-
-#: ap-gl/ap-gl.c:79 src/ap-config.c:110 src/ap-config.c:119
-msgid "SysInfo"
-msgstr "SysInfo"
-
-#: ap-gl/ap-gl.c:80 ap-gl/bridge.c:131 src/ap-config.c:111 src/bridge.c:116
-#: src/bridge.c:120
-msgid "Ethernet"
-msgstr "Ethernet"
-
-#: ap-gl/ap-gl.c:80 src/ap-config.c:111
-msgid "Get ethernet port statistics"
-msgstr "Obtenir les statistiques des ports Ethernet"
-
-#: ap-gl/ap-gl.c:82 src/ap-config.c:113 src/ap-config.c:121
-msgid "Stations"
-msgstr "Stations"
-
-#: ap-gl/ap-gl.c:83 src/ap-config.c:114
-msgid "KnownAPs"
-msgstr "Point d'accès connus"
-
-#: ap-gl/ap-gl.c:83 src/ap-config.c:114
-msgid "Get info about known Access Points"
-msgstr "Obtenir les info des points d'accès connus"
-
-#: ap-gl/ap-gl.c:100 src/ap-config.c:147
-msgid "Info"
-msgstr "Info"
-
-#: ap-gl/ap-gl.c:101 src/ap-config.c:148
-msgid "Config"
-msgstr "Config"
-
-#: ap-gl/ap-gl.c:102 src/ap-config.c:149
-msgid "Commands"
-msgstr "Commandes"
-
-#: ap-gl/ap-gl.c:102 src/ap-config.c:149
-msgid "Execute commands on Access Point"
-msgstr "Exécuter les commandes sur le point d'accès"
-
-#: ap-gl/ap-gl.c:104 src/ap-config.c:151
-msgid "Connect"
-msgstr "Connecter"
-
-#: ap-gl/ap-gl.c:105 src/ap-config.c:152
-msgid "Search"
-msgstr "Chercher"
-
-#: ap-gl/ap-gl.c:106 lib/common.c:83 src/ap-config.c:153
-msgid "About"
-msgstr "À propos"
-
-#: ap-gl/ap-gl.c:107 src/ap-config.c:154
-msgid "Shell"
-msgstr "Shell"
-
-#: ap-gl/ap-gl.c:108 src/ap-config.c:155
-msgid "Exit"
-msgstr "Quitter"
-
-#: ap-gl/ap-gl.c:158 src/ap-config.c:204
-#, c-format
-msgid "Wireless Access Point Configurator ver. %s"
-msgstr "Configurateur de point d'accès sans fil version %s"
-
-#: ap-gl/auth_mac.c:27 src/auth_mac.c:27
-msgid "AuthorizedMacTableString packet error"
-msgstr "Erreur de paquet AuthorizedMacTableString"
-
-#: ap-gl/auth_mac.c:29 src/auth_mac.c:29
-#, fuzzy
-msgid "[A] MAC authorization: "
-msgstr "[A] Autorisation Mac: %s"
-
-#: ap-gl/auth_mac.c:30 src/auth_mac.c:30
-#, fuzzy
-msgid "Enter MAC: "
-msgstr "Entrer Mac:"
-
-#: ap-gl/auth_mac.c:31 src/auth_mac.c:31
-#, fuzzy
-msgid "Delete Num: "
-msgstr "Détruire Num:"
-
-#: ap-gl/auth_mac.c:32 src/auth_mac.c:32
-#, fuzzy
-msgid "Authorized MAC addresses"
-msgstr "Mac adresses autorisées"
-
-#: ap-gl/auth_mac.c:33
-#, fuzzy
-msgid "NUM       MAC address"
-msgstr "NUM     MAC address"
-
-#: ap-gl/auth_mac.c:34 src/auth_mac.c:34
-msgid "A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit"
-msgstr ""
-"A - autor.; N - nouveau; D - détruire; flèches - défiler; W - sauvegarder la "
-"config.; Q - quitter"
-
-#: ap-gl/auth_mac.c:35
-#, fuzzy
-msgid "A - auth; IPSTF - set; W - write conf; Q - quit"
-msgstr ""
-"BPGINFDRT - initialisé; W - sauvegarder la config.; Q - quitter vers le menu"
-
-#: ap-gl/auth_mac.c:36
-#, fuzzy
-msgid "A - auth; W - write conf; Q - quit"
-msgstr ""
-"DA - options; W - sauvegarder la configuration; Q - quitter vers le menu"
-
-#: ap-gl/auth_mac.c:38
-msgid "[I] RADIUS SERVER IP: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:39
-msgid "[P] RADIUS SERVER PORT: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:40
-msgid "[S] RADIUS SERVER SECRET: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:41
-msgid "[T] REAUTHORIZATION TIME: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:42
-msgid "[F] RADIUS SOURCE PORT: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:87
-#, fuzzy
-msgid "Internal"
-msgstr "Général"
-
-#: ap-gl/auth_mac.c:95
-msgid "<hidden>"
-msgstr ""
-
-#: ap-gl/bridge.c:26 src/bridge.c:26
-msgid "[I] IP: "
-msgstr ""
-
-#: ap-gl/bridge.c:27 src/bridge.c:27
-#, fuzzy
-msgid "[N] Netmask: "
-msgstr "[N] netmask: %s"
-
-#: ap-gl/bridge.c:28 src/bridge.c:28
-#, fuzzy
-msgid "[G] Gateway: "
-msgstr "[G] Passerelle (gateway) %s"
-
-#: ap-gl/bridge.c:29 src/bridge.c:29
-#, fuzzy
-msgid "[F] Filter non-IP traffic: "
-msgstr "[F] Filtrer le traffic non IP: %s"
-
-#: ap-gl/bridge.c:30 src/bridge.c:30
-#, fuzzy
-msgid "[P] Primary port: "
-msgstr "[P] Port primaire: %s"
-
-#: ap-gl/bridge.c:31 src/bridge.c:31
-#, fuzzy
-msgid "Attached station MAC: "
-msgstr "Station rattachée MAC: %02X%02X%02X%02X%02X%02X"
-
-#: ap-gl/bridge.c:32 src/bridge.c:32
-#, fuzzy
-msgid "[D] DHCP client: "
-msgstr "[D] protocol DHCP: %s"
-
-#: ap-gl/bridge.c:33 src/bridge.c:33
-#, fuzzy
-msgid "[O] Operational mode: "
-msgstr "[O] Mode opérationnel: %s"
-
-#: ap-gl/bridge.c:34 src/bridge.c:34
-msgid "[M] Preferred BSSID (remote MAC addr.): "
-msgstr ""
-
-#: ap-gl/bridge.c:36 src/bridge.c:36
-msgid "[T] Trap-sending port(s): "
-msgstr ""
-
-#: ap-gl/bridge.c:37 src/bridge.c:37
-msgid "[R] Forward broadcast traffic: "
-msgstr ""
-
-#: ap-gl/bridge.c:39
-msgid "[U] Isolate wireless clients: "
-msgstr ""
-
-#: ap-gl/bridge.c:40 src/bridge.c:40
-#, fuzzy
-msgid "INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu"
-msgstr ""
-"BPGINFDRT - initialisé; W - sauvegarder la config.; Q - quitter vers le menu"
-
-#: ap-gl/bridge.c:124 src/bridge.c:109
-msgid "Wireless Bridge Point to MultiPoint"
-msgstr "Point d'accès pont sans fil vers Multi-point"
-
-#: ap-gl/bridge.c:125 src/bridge.c:110
-msgid "Access Point"
-msgstr "Point d'accès"
-
-#: ap-gl/bridge.c:126 src/bridge.c:111
-msgid "Access Point client"
-msgstr "Point d'accès client"
-
-#: ap-gl/bridge.c:127 src/bridge.c:112
-msgid "Wireless Bridge Point to Point"
-msgstr "Point pont sans fil vers un point"
-
-#: ap-gl/bridge.c:128 src/bridge.c:113
-msgid "Repeater"
-msgstr "Répéteur"
-
-#: ap-gl/stations.c:77 src/stations.c:100
-msgid "AP is currently in AP Client Mode => no associated STAtions."
-msgstr ""
-
-#: ap-gl/stations.c:102
-msgid "#     MAC       LQ    RSSI   Status Port IP"
-msgstr ""
-
-#: ap-gl/stations.c:128 src/stations.c:159
-msgid "AssociatedSTAsInfo packet error"
-msgstr "Erreur de paquet AssociatedSTAsInfo"
-
-#: ap-gl/stations.c:160
-msgid "Arrows - scroll; S - save to file; Q - quit to menu."
-msgstr ""
-"Flècher - défiler; S - sauvegarder dans un fichier; Q - quitter vers le menu."
-
-#: lib/aps.c:29
+#: lib/aps.c:30
 msgid "Known Access Points"
 msgstr "Point d'accès connus"
 
-#: lib/aps.c:129
+#: lib/aps.c:130
 msgid "Your Access Point is not in \"AP client\" mode => getting"
-msgstr ""
+msgstr "Votre Point d'accès n'est pas en mode \"Client AP\" => obtention"
 
-#: lib/aps.c:132
+#: lib/aps.c:133
 msgid "up-to-date \"Known APs\" info requires your AP to be"
 msgstr ""
+"mise à jour des infos \"Points d'accès connus\" requiert que votre Point "
+"d'accès soit"
 
-#: lib/aps.c:135
+#: lib/aps.c:136
 msgid "temporarily configured into \"AP client\" mode and rebooted."
 msgstr ""
+"configuré temporairement dans le mode \"Point d'accès client\" et réamorcé"
 
-#: lib/aps.c:138
+#: lib/aps.c:139
 msgid "Your AP will be reconfigured back to original mode by this"
-msgstr ""
+msgstr "Votre Point d'accès sera reconfiguré à son mode d'origine par cet"
 
-#: lib/aps.c:141
+#: lib/aps.c:142
 msgid "utility once you quit the \"KnownAP\" view. This, in turn, may"
 msgstr ""
+"utilitaire une fois que vous aurez quitté la vue \"KnownAP\". Ceci, en "
+"retour, peut"
 
-#: lib/aps.c:144
-#, fuzzy
+#: lib/aps.c:145
 msgid "cause loss of Access Point's current configuration."
-msgstr "Configurateur de point d'accès sans fil"
+msgstr "provoquer la perte des Points d'accès de la configuration courante."
 
-#: lib/aps.c:148
+#: lib/aps.c:149
 msgid "Do NOT answer \"Yes\" if you're connected to the Access Point"
-msgstr ""
+msgstr "Ne PAS répondre par \"Yes\", si vous êtes connecté à un Point d'accès"
 
-#: lib/aps.c:151
-#, fuzzy
+#: lib/aps.c:152
 msgid "via its wireless port."
-msgstr "Configurer les options sans fil"
+msgstr "via le port sans fil."
 
-#: lib/aps.c:153 lib/cmd.c:45 lib/cmd.c:75 lib/test.c:91
+#: lib/aps.c:154 lib/cmd.c:45 lib/cmd.c:75 lib/test.c:96
 msgid "Do you want to continue? "
 msgstr "Désirez-vous poursuivre?"
 
-#: lib/aps.c:207
+#: lib/aps.c:208
 msgid "NetworkType"
 msgstr "Type de réseau"
 
-#: lib/aps.c:283
+#: lib/aps.c:284
 msgid "Infrastructure"
 msgstr "Infrastructure"
 
-#: lib/aps.c:343 lib/aps.c:351 lib/aps.c:359
-#, fuzzy
+#: lib/aps.c:344 lib/aps.c:352 lib/aps.c:360
 msgid "CN: Channel Name; P: Preambule Type (S: Short; L: Long);"
-msgstr "P: type de préambule; S: court; L: long"
+msgstr "Cn: Nom du canal; P: type de préambule (S: court; L: long);"
 
-#: lib/aps.c:345
+#: lib/aps.c:346
 msgid "RSSI: Radio Signal Strength Indicator [%]"
-msgstr ""
+msgstr "RSSI: indicateur de la force du signal radio [%]"
 
-#: lib/aps.c:347 lib/aps.c:355
+#: lib/aps.c:348 lib/aps.c:356
 msgid "; LQ: Link Quality [%]"
-msgstr ""
+msgstr "; LQ: qualité du lien [%]"
 
-#: lib/aps.c:353
+#: lib/aps.c:354
 msgid "RSSI: Radio Signal Strength Indicator [dBm]"
-msgstr ""
+msgstr "RSSI: indicateur de la force du signal radio [dBm]"
 
-#: lib/aps.c:361
+#: lib/aps.c:362
 msgid "RSSI: Radio Signal Strength Indicator [raw]"
-msgstr ""
+msgstr "RSSI: indicateur de la force du signal radio [brut]"
 
-#: lib/aps.c:363
+#: lib/aps.c:364
 msgid "; LQ: Link Q. [raw]"
-msgstr ""
+msgstr "; LQ: qualité du lien [brut]"
 
-#: lib/aps.c:369
-#, fuzzy
+#: lib/aps.c:370
 msgid ""
 "# con. to AP #; R refresh with reset; T toggle; Q quit; Other = refr. w/o "
 "reset"
 msgstr ""
-"# connecter à cet AP; R rafraîchir avec réinitialisation; G rafraîchior sans "
-"réinitialisation; Q quitter"
+"# con. au Point d'accès; R rafraîchir avec réinitialisation; T basculer; Q "
+"quitter; O (other=autre) rafraîchir réinitialisation w/o"
 
-#: lib/aps.c:371
-#, fuzzy
+#: lib/aps.c:372
 msgid ""
 "# con. to AP #; R initiate AP scan; T toggle view; Q quit; Other = refresh "
 "view"
 msgstr ""
-"# connecter à cet AP; R rafraîchir avec réinitialisation; G rafraîchior sans "
-"réinitialisation; Q quitter"
+"# con. au Point d'accès #;R rechercher les Points d'accès;T basculer la vue; "
+"Q uitter; O (other=autre) = rafraîchir la vue"
 
-#: lib/aps.c:500 lib/ap_search.c:167
-#, fuzzy, c-format
+#: lib/aps.c:501 lib/ap_search.c:173
+#, c-format
 msgid "Failure in sendto(): %s. Press any key."
-msgstr "sendto() invalide: %s. Appuyer sur une touche."
+msgstr "Échec de sendto(): %s. Appuyez sur une touche."
 
-#: lib/aps.c:509
+#: lib/aps.c:510
 msgid "You have just initiated the AP scan. Be advised that it may"
 msgstr ""
+"Vous avez lancer une recherche des Points d'accès. Sachez que cela peut"
 
-#: lib/aps.c:512
+#: lib/aps.c:513
 msgid "take a few seconds for your Access Point to find out some"
-msgstr ""
+msgstr "prendre quelques secondes à votre Point d'accès pour retourner"
 
-#: lib/aps.c:515
+#: lib/aps.c:516
 msgid "values, so expect finishing the scan in about 5 seconds."
-msgstr ""
+msgstr "les valeurs, aussi il faut s'attendre à une fin du scan de 5 secondes"
 
-#: lib/aps.c:518
+#: lib/aps.c:519
 msgid "Also note that your Access Point stops forwarding the network"
 msgstr ""
+"Notez aussi que votre Point d'accès arrête le relayage du trafic avant "
+"(forward) vers le réseau"
 
-#: lib/aps.c:521
+#: lib/aps.c:522
 msgid "traffic while the scan is in progress, but restores itself"
-msgstr ""
+msgstr "lorsque le scan est lancé, il est restauré par la suite"
 
-#: lib/aps.c:524
+#: lib/aps.c:525
 msgid "to normal operation in time ranging up to 1 minute."
-msgstr ""
+msgstr "en mode normal d'opération dans un délais allant jusqu'à 1 minute."
 
-#: lib/aps.c:527
+#: lib/aps.c:528
 msgid "Hence, if you are connected to target Access Point via its"
-msgstr ""
+msgstr "Donc, si vous êtes connecté au Point d'accès cible via son"
 
-#: lib/aps.c:530
+#: lib/aps.c:531
 msgid "wireless port, you need to wait a bit longer"
-msgstr ""
+msgstr "port sans fil, vous devrez attendre un peut plus longtemps"
 
-#: lib/aps.c:533
+#: lib/aps.c:534
 msgid "after pressing 'S'."
-msgstr ""
+msgstr "après avoir appuyé sur la touche 'S'."
 
 #: lib/ap_search.c:48
-#, fuzzy
 msgid "Community name: "
-msgstr "Communauté"
+msgstr "Nom de la communauté: "
 
 #: lib/ap_search.c:49
 #, fuzzy
-msgid "  NUM  IP ADDRESS       MIB TYPE    NAME"
-msgstr "NUM       ADRESSE IP   TYPE"
+msgid "  NUM  IP ADDRESS       MIB TYPE    FW TYPE (VERSION) AP NAME"
+msgstr "  NUM  ADRESSE IP       MIB TYPE    NOM"
 
-#: lib/ap_search.c:100
+#: lib/ap_search.c:106
 msgid "Please wait while scanning, or press 'Q' to quit."
 msgstr ""
+"SVP attendre la fin de la scrutation (scan) ou appuyez 'Q' pour quitter."
 
-#: lib/ap_search.c:116
-#, fuzzy
+#: lib/ap_search.c:122
 msgid "Can't set broadcast option on socket. Press any key."
-msgstr "Ne peut diffuser l'option au socket. Appuyer sur une touche."
+msgstr ""
+"Ne peut initialiser l'option de diffusion sur le socket. Appuyez sur une "
+"touche."
 
-#: lib/ap_search.c:125
-#, fuzzy
+#: lib/ap_search.c:131
 msgid "Can't set multicast membership on socket. Press any key."
-msgstr "Ne peut diffiser par multicast au socket. Appuyer sur une touche."
+msgstr ""
+"Ne peut initialiser le membership multicast sur le socket. Appuyez sur une "
+"touche."
 
-#: lib/ap_search.c:132
+#: lib/ap_search.c:138
 msgid "Scanning via network interface:"
-msgstr ""
+msgstr "Scan via l'interface réseau:"
 
-#: lib/ap_search.c:133
+#: lib/ap_search.c:139
 #, c-format
 msgid "  Index: %i"
-msgstr ""
+msgstr "  Index: %i"
 
-#: lib/ap_search.c:135
-#, fuzzy, c-format
+#: lib/ap_search.c:141
+#, c-format
 msgid "  Name: %s"
-msgstr "[N] Nom du point d'accès:"
+msgstr "  Nom: %s"
 
-#: lib/ap_search.c:137
+#: lib/ap_search.c:143
 #, c-format
 msgid "  IP: %s"
-msgstr ""
+msgstr "  IP: %s"
 
-#: lib/ap_search.c:146
+#: lib/ap_search.c:152
 #, c-format
 msgid "Scanning for AP with MIB type: %s"
-msgstr ""
-
-#: lib/ap_search.c:334
-msgid "Please enter SNMP community name that will be used for AP detection."
-msgstr ""
+msgstr "Scan des Points d'accès ayant le type MIB: %s"
 
-#: lib/ap_search.c:345
+#: lib/ap_search.c:378
 msgid "Access Points Search"
-msgstr "Recherche des points d'accès"
+msgstr "Recherche des Points d'accès"
 
-#: lib/ap_search.c:363
-#, fuzzy
+#: lib/ap_search.c:396
 msgid "realloc() error."
-msgstr "Erreur de création de socket"
+msgstr "erreur de realloc()."
 
-#: lib/ap_search.c:375
+#: lib/ap_search.c:408
 msgid "Network interface discovery error."
-msgstr ""
+msgstr "Erreur de l'interface réseau lors de la recherche en mode découverte"
 
-#: lib/ap_search.c:450
-#, fuzzy
+#: lib/ap_search.c:483
 msgid "No local network interfaces found. Press any key."
-msgstr "erreur de fork(). Appuyer sur une touche."
+msgstr "Aucune interface locale réseau retrouvée. Appuyez sur une touche."
 
-#: lib/ap_search.c:452
+#: lib/ap_search.c:485
 msgid "No directly reachable Access Points found. Press any key."
 msgstr ""
+"Aucun Point d'accès directement atteignable n'a été retrouvé. Appuyez sur "
+"une touche."
 
-#: lib/ap_search.c:457
+#: lib/ap_search.c:490
 msgid "Single-screen maximum number of APs found."
 msgstr ""
+"Nombre maximum de Points d'accès retrouvés à afficher sur un seul écran."
 
-#: lib/ap_search.c:460
-#, fuzzy
+#: lib/ap_search.c:493
 msgid "# - connect to AP; Q - quit"
-msgstr "Connexion avec AP numéro:"
+msgstr "# - connectés au Point d'accès; Q - quitter"
 
-#: lib/ap-utils.h:79
-#, fuzzy
+#: lib/ap-utils.h:82
 msgid "MAC address: "
-msgstr "NUM     MAC address"
+msgstr "adresse MAC: "
 
-#: lib/ap-utils.h:80
-#, fuzzy
+#: lib/ap-utils.h:83
 msgid "[S] SNMP traps: "
-msgstr "[S] Trappes SNMP: %s"
+msgstr "[S] Trappes SNMP: "
 
-#: lib/ap-utils.h:82
-#, fuzzy
+#: lib/ap-utils.h:85
 msgid "[C] Frequency channel: "
-msgstr "[C] canal de fréquence: %02u (%u MHz)"
+msgstr "[C] canal de fréquence: "
 
-#: lib/ap-utils.h:84
-#, fuzzy
+#: lib/ap-utils.h:87
 msgid "Receive  antenna:"
-msgstr "Reçu:"
+msgstr "Antenne de réception:"
 
-#: lib/ap-utils.h:85
-#, fuzzy
+#: lib/ap-utils.h:88
 msgid "[U] Left"
-msgstr "Gauche"
+msgstr "[U] Gauche"
 
-#: lib/ap-utils.h:86
-#, fuzzy
+#: lib/ap-utils.h:89
 msgid "[I] Right"
-msgstr "Droite"
+msgstr "[I] Droite"
 
-#: lib/ap-utils.h:87
-#, fuzzy
+#: lib/ap-utils.h:90
 msgid "Transmit antenna:"
-msgstr "Transmis:"
+msgstr "Antenne de transmission:"
 
-#: lib/ap-utils.h:88
-#, fuzzy
+#: lib/ap-utils.h:91
 msgid "[O] Left"
-msgstr "Gauche"
+msgstr "[O] Gauche"
 
-#: lib/ap-utils.h:89
-#, fuzzy
+#: lib/ap-utils.h:92
 msgid "[P] Right"
-msgstr "Droite"
+msgstr "[P] Droite"
 
-#: lib/ap-utils.h:90
-#, fuzzy
+#: lib/ap-utils.h:93
 msgid "Diversity select:"
-msgstr "Diversité: %s"
+msgstr "Sélection de la diversité: "
 
-#: lib/ap-utils.h:91
-#, fuzzy
+#: lib/ap-utils.h:94
 msgid "[T] Left"
-msgstr "Gauche"
+msgstr "[T] Gauche"
 
-#: lib/ap-utils.h:92
-#, fuzzy
+#: lib/ap-utils.h:95
 msgid "[Y] Right"
-msgstr "Droite"
+msgstr "[Y] Droite"
 
-#: lib/ap-utils.h:94
+#: lib/ap-utils.h:97
 msgid "Yes"
-msgstr ""
+msgstr "Yes (Oui)"
 
-#: lib/ap-utils.h:95
+#: lib/ap-utils.h:98
 msgid "No"
-msgstr ""
+msgstr "No (Non)"
 
-#: lib/ap-utils.h:97
+#: lib/ap-utils.h:100
 msgid "On"
-msgstr ""
+msgstr "On"
 
-#: lib/ap-utils.h:98
-#, fuzzy
+#: lib/ap-utils.h:101
 msgid "Off"
-msgstr "off"
+msgstr "Off"
 
-#: lib/ap-utils.h:100
-#, fuzzy
+#: lib/ap-utils.h:103
 msgid "Basic"
 msgstr "de base"
 
-#: lib/ap-utils.h:102
+#: lib/ap-utils.h:105
 msgid "Press any key to continue."
-msgstr "Appuyer sur une touche pour continuer"
+msgstr "Appuyez sur une touche pour continuer"
 
-#: lib/ap-utils.h:103
-msgid "Q - quit to menu. T - toggle polling mode, Other key - force update."
+#: lib/ap-utils.h:106
+#, fuzzy
+msgid "Q - quit to menu. T - toggle polling mode, Other key - force update"
 msgstr ""
+"Q - quitter vers le menu. T - basculer en mode polling, Autre clé - forcer "
+"la mise à jour."
 
-#: lib/ap-utils.h:105
+#: lib/ap-utils.h:108
 msgid "Unable to write data to AP. Press any key to continue."
 msgstr ""
-"Incapable d'écrire les données sur le point d'accès. Appuyer sur une touche "
+"Incapable d'écrire les données sur le point d'accès. Appuyez sur une touche "
 "pour continuer."
 
-#: lib/ap-utils.h:106
-#, fuzzy
+#: lib/ap-utils.h:109
 msgid "Unable to retrieve (valid) data from AP. Press any key to continue."
 msgstr ""
-"Incapable de récupérer les données du point d'accès. Appuyer sur une touche "
-"pour continuer."
+"Incapable de récupérer les données valides à partir du Point d'accès. "
+"Appuyez sur une touche pour continuer."
 
-#: lib/ap-utils.h:107
+#: lib/ap-utils.h:110
 #, fuzzy
-msgid "Trying to retrieve data from AP. Please wait..."
-msgstr "Récupérationd des données du point d'accès. SVP patientez..."
+msgid "Trying to retrieve data from AP - please wait (or press Q to quit)."
+msgstr ""
+"Tentative de récupération des données du Point d'accès. SVP patientez..."
 
-#: lib/ap-utils.h:108
+#: lib/ap-utils.h:111
 msgid "Writing data to AP. Please wait..."
 msgstr "Écriture des données sur le point d'accès. SVP patientez..."
 
-#: lib/ap-utils.h:109
-#, fuzzy
+#: lib/ap-utils.h:112
 msgid "Configuration written to the AP. Press any key to continue."
 msgstr ""
-"Incapable d'écrire les données sur le point d'accès. Appuyer sur une touche "
-"pour continuer."
+"Configuration écrite dans le Point d'accès. Appuyez sur une touche pour "
+"continuer."
 
-#: lib/ap-utils.h:110
-#, fuzzy
+#: lib/ap-utils.h:113
 msgid "select() function error. Press any key."
-msgstr "erreur fcntl(). Appuyer sur une touche."
+msgstr "erreur de la fonction select(). Appuyez sur une touche."
 
-#: lib/ap-utils.h:112
-msgid "Create socket error. Press any key."
-msgstr "Erreur de création du socket. Appuyer sur n'importe quelle touche."
+#: lib/ap-utils.h:114
+#, fuzzy
+msgid "socket() or bind() function error. Press any key."
+msgstr "erreur de la fonction select(). Appuyez sur une touche."
 
-#: lib/ap-utils.h:113
-msgid "Bind socket error. Press any key."
-msgstr "Erreur de liaison de socket (bind). Appuyer sur une touche."
+#: lib/ap-utils.h:116
+msgid "Unable to write AP list file ~/.ap-config. Press any key."
+msgstr ""
+"Incapable d'écrire dans le fichier de la liste de Points d'accès ~/.ap-"
+"config. Appuyez sur une touche."
+
+#: lib/ap-utils.h:117
+msgid "AP list file ~/.ap-config successfully written. Press any key."
+msgstr ""
+"Succès d'écriture au fichier de la liste de Points d'accès ~/.ap-config. "
+"Appuyez sur une touche."
 
-#: lib/ap-utils.h:115
+#: lib/ap-utils.h:119
 msgid "Back to main menu"
 msgstr "De retour au menu principal"
 
-#: lib/ap-utils.h:116
+#: lib/ap-utils.h:120
 msgid "Exit program"
 msgstr "Quitter le programme"
 
-#: lib/ap-utils.h:117
-#, fuzzy
+#: lib/ap-utils.h:121
 msgid "Run subshell. To return type 'exit'."
-msgstr "Exécuter le sous-shell. Pour retourner taper 'exit'"
+msgstr "Exécuter le sous-shell. Pour retourner taper 'exit'."
 
-#: lib/ap-utils.h:118
+#: lib/ap-utils.h:122
+msgid "Change polling mode interval"
+msgstr ""
+
+#: lib/ap-utils.h:123
 msgid "Short info about program"
 msgstr "Infos courtes à propos du logiciel"
 
-#: lib/ap-utils.h:119
+#: lib/ap-utils.h:124
 msgid "Find connected Access Points"
-msgstr "Repérer les points d'accès connectés"
+msgstr "Repérer les Points d'accès connectés"
 
-#: lib/ap-utils.h:120
+#: lib/ap-utils.h:125
 msgid "Set connection options: ip and community"
-msgstr "Sélectionner les options de connexion: ip et communauté"
+msgstr "Sélectionnez les options de connexion: IP et Communauté"
 
-#: lib/ap-utils.h:121
-#, fuzzy
+#: lib/ap-utils.h:126
 msgid "Set encryption; edit WEP keys"
-msgstr "Sélectionner l'encryptage, éditer les clés WEP"
+msgstr "Sélectionnez l'encryptage, éditez les clés WEP"
 
-#: lib/ap-utils.h:122
+#: lib/ap-utils.h:127
 #, fuzzy
-msgid "Set MAC authorization; edit MAC authorization table"
+msgid "Set authorization; edit MAC authorization table"
 msgstr ""
-"Sélectionner le type d'autorisation MAC, éditer le table d'autorisation MAC"
+"Sélectionnez le type d'autorisation MAC, éditez la table d'autorisation MAC"
 
-#: lib/ap-utils.h:123
-#, fuzzy
+#: lib/ap-utils.h:128
 msgid "Set SNMP community/password for access to the AP"
 msgstr ""
-"Sélectionner la communauté/mot de passe SNMP pour accéder un point d'accès"
+"Sélectionnez la communauté/mot de passe SNMP pour accéder au Points d'accès"
 
-#: lib/ap-utils.h:124
-#, fuzzy
+#: lib/ap-utils.h:129
 msgid "Get info about AP hardware and firmware"
-msgstr "Obtenir les infos à propos du point d'accès matériel et logiciel"
+msgstr ""
+"Obtenir les infos à propos du matériel du Point d'accès matériel et logiciel "
+"(firmware)"
 
-#: lib/ap-utils.h:125
-#, fuzzy
+#: lib/ap-utils.h:130
 msgid "Get wireless port statistics"
-msgstr "Obtenir les statistiques des ports sans fils"
+msgstr "Obtenir les statistiques des ports sans fil"
 
-#: lib/ap-utils.h:126
-#, fuzzy
+#: lib/ap-utils.h:131
 msgid "Get list of currently associated stations (Access Point clients)"
-msgstr "Obtenir la liste des stations courramment associées"
+msgstr ""
+"Obtenir la liste des stations courramment associées (clients des Points "
+"d'accès)"
 
-#: lib/ap-utils.h:127
-#, fuzzy
+#: lib/ap-utils.h:132
+msgid "Get link status in APclient mode"
+msgstr ""
+
+#: lib/ap-utils.h:133
 msgid "Get info and statistics from AP"
-msgstr "Obtention des infos et des statistiques à partir du point d'accès"
+msgstr "Obtenir les infos et les statistiques des Points d'accès"
 
-#: lib/ap-utils.h:128
-#, fuzzy
+#: lib/ap-utils.h:134
 msgid "Set various configuration options"
-msgstr "Sélectionner diverses options de configuration"
+msgstr "Initialiser diverses options de configuration"
 
-#: lib/ap-utils.h:130
+#: lib/ap-utils.h:136
 msgid "Associated stations"
 msgstr "Stations associées"
 
-#: lib/ap-utils.h:132
+#: lib/ap-utils.h:137
+#, fuzzy
+msgid "AP Client link state"
+msgstr "État du lien du Point d'accès"
+
+#: lib/ap-utils.h:139
 msgid "Polling: on"
-msgstr ""
+msgstr "Polling: on"
 
-#: lib/ap-utils.h:133
+#: lib/ap-utils.h:140
 msgid "Polling: off"
-msgstr ""
+msgstr "Polling: off"
 
 #: lib/cmd.c:40
 msgid "Restore factory default configuration"
 msgstr "Restauter les paramètres par défaut du manufacturier."
 
 #: lib/cmd.c:43
-#, fuzzy
 msgid "After restoring factory defaults your current configuration"
 msgstr ""
-"Après restauration des paramètres du manufacturier, vous avez perdu la "
-"configuration courante."
+"Après la restauration des paramètres du manufacturier, votre configuration "
+"courante"
 
 #: lib/cmd.c:44
 msgid "will be lost."
-msgstr ""
+msgstr "sera perdue."
 
 #: lib/cmd.c:63
-#, fuzzy
 msgid "Factory default settings loaded. Press any key to continue."
 msgstr ""
-"Configuration par défaut activée. Appuyer sur une touche pour continuer."
+"Configuration du manufacturier par défaut installée. Appuyez sur une touche "
+"pour continuer."
 
 #: lib/cmd.c:71
 msgid "Reset Access Point"
-msgstr "Réinitialiser le point d'accès"
+msgstr "Réinitialiser le Point d'accès"
 
 #: lib/cmd.c:74
-#, fuzzy
 msgid "By reset you'll lose all non-uploaded configuration."
 msgstr ""
-"Après réinitialisation vous avez perdu toutes les configurations non "
-"préservées."
+"En effectuant la réinitialisation, vous perdrez toutes les configurations "
+"non préservées."
 
 #: lib/cmd.c:85
 msgid "Access Point reset. Press any key to continue."
@@ -798,223 +488,224 @@ msgid "Upload configuration"
 msgstr "Configuration de chargement à distance"
 
 #: lib/cmd.c:119
-#, fuzzy
 msgid "You may need to upload the configuration only if you've"
 msgstr ""
-"Vous avez besoin de télécharger la configuration seulement lors de "
-"changements sur les options."
+"Vous aurez besoin de télécharger la configuration seulement si vous avez "
+"changé"
 
 #: lib/cmd.c:121
 msgid "changed some option values before. Using this option may"
-msgstr ""
+msgstr "changé des valeurs d'option auparavant. Utiliser cette option peut"
 
 #: lib/cmd.c:123
-#, fuzzy
 msgid "cause loss of your current configuration."
-msgstr "Rendre la configuration courante active"
+msgstr "peut causer la perte de votre configuration courante."
 
 #: lib/cmd.c:135
-#, fuzzy
 msgid "Configuration uploaded. Press any key to continue."
 msgstr ""
-"Téléchargement de la configuration complété. Appuyer sur une touche pour "
+"Téléchargement de la configuration complété. Appuyez sur une touche pour "
 "continuer."
 
-#: lib/common.c:30
-#, fuzzy
+#: lib/common.c:32
 msgid "Access Point IP-address: "
-msgstr "Adresse IP du point d'accès:"
+msgstr "Adresse-IP du Point d'accès: "
 
-#: lib/common.c:31
-#, fuzzy
+#: lib/common.c:33
 msgid "Password (community): "
-msgstr "Mot de passe (communauté):"
+msgstr "Mot de passe (communauté): "
 
-#: lib/common.c:32
+#: lib/common.c:34
 msgid "Autodetect AP MIB properties? "
-msgstr ""
+msgstr "Autodétection des propriétés MIB du Point d'accès?"
 
-#: lib/common.c:33
-#, fuzzy
+#: lib/common.c:35
 msgid "AP MIB type: "
-msgstr "Type de point d'accès:"
+msgstr "Type MIB du Point d'accès: "
 
-#: lib/common.c:34
+#: lib/common.c:36
 msgid "AP MIB vendor extensions: "
-msgstr ""
+msgstr "Extension MIB du manufacturier du Point d'accès: "
 
-#: lib/common.c:35
-#, fuzzy
+#: lib/common.c:37
 msgid "Do you want to use AP's name as its label? "
-msgstr "Désirez-vous poursuivre?"
+msgstr "Désirez-vous utiliser le nom du Point d'accès comme étiquette? "
 
-#: lib/common.c:36
-#, fuzzy
+#: lib/common.c:38
 msgid "Access Point label: "
-msgstr "Point d'accès"
+msgstr "Étiquette du Point d'accès: "
 
-#: lib/common.c:37
-#, fuzzy
+#: lib/common.c:39
 msgid "Save connect-settings: "
-msgstr "Sauvegarder la configuration de connexion:"
+msgstr "Sauvegarder la configuration de connexion: "
+
+#: lib/common.c:40
+msgid "[P] Polling mode interval (tenths of second): "
+msgstr ""
+
+#: lib/common.c:41
+#, fuzzy
+msgid "P - change polling mode interval; Q - quit to menu"
+msgstr ""
+"[key] - initialiser l'option; W - sauvegarder la config.; Q - quitter vers "
+"le menu"
+
+#: lib/common.c:89 src/ap-config.c:158
+msgid "About"
+msgstr "À propos"
 
-#: lib/common.c:100
+#: lib/common.c:106
 #, c-format
 msgid "From %s"
 msgstr "À partir de %s"
 
-#: lib/common.c:102
+#: lib/common.c:108
 #, c-format
 msgid "Version %s"
 msgstr "Version %s"
 
-#: lib/common.c:105
+#: lib/common.c:111
 msgid "Written by Roman Festchook roma@polesye.net"
 msgstr "Écrit par Roman Festchook (roma@polesye.net)"
 
-#: lib/common.c:107
-msgid "Portions by Jan Rafaj aputils@cedric.unob.cz"
-msgstr ""
+#: lib/common.c:113
+#, fuzzy
+msgid "and Jan Rafaj jr-aputils@cedric.unob.cz"
+msgstr "Portions par Jan Rafaj aputils@cedric.unob.cz"
 
-#: lib/common.c:109
+#: lib/common.c:115
 #, fuzzy
-msgid "Copyright (c) 2001-2004"
-msgstr "Copyright © Roman Festchook 2001-2002"
+msgid "Copyright (c) 2001-2005"
+msgstr "Copyright © 2001-2004"
 
-#: lib/common.c:111
+#: lib/common.c:117
 msgid "Roman Festchook and Jan Rafaj"
-msgstr ""
+msgstr "Roman Festchook et Jan Rafaj"
 
-#: lib/common.c:114
+#: lib/common.c:120
 msgid "This program is distributed under the terms"
 msgstr "Ce logiciel est distribué selon les termes"
 
-#: lib/common.c:116
+#: lib/common.c:122
 msgid "of the GNU General Public License version 2."
 msgstr "de la GNU General Public License version 2."
 
-#: lib/common.c:118
+#: lib/common.c:124
 msgid "See the included COPYING file for details."
 msgstr "Consulter le fichier COPYING pour les détails."
 
-#: lib/common.c:175
+#: lib/common.c:165
 msgid "Connect options"
 msgstr "Option d'établissement de connexion"
 
-#: lib/common.c:183
+#: lib/common.c:173
 msgid "Enter IP address of your Access Point."
 msgstr "Entrer l'adresse IP de votre point d'accès"
 
-#: lib/common.c:192
+#: lib/common.c:182
 msgid "Entered characters will not be displayed for security reason."
 msgstr ""
 "Caractères saisies ne seront pas affichés pour des raisons de sécurité."
 
-#: lib/common.c:266
+#: lib/common.c:249
 msgid "This label will be stored on HDD (independently on AP name!)."
 msgstr ""
+"Cette étiquette sera stocké sur le disque dur (indépendamment du nom du "
+"Point d'accès!)."
 
-#: lib/common.c:361
-#, fuzzy
+#: lib/common.c:362
 msgid "Trying to probe AP for MIB properties. Please wait..."
-msgstr "Écriture des données sur le point d'accès. SVP patientez..."
+msgstr ""
+"Tentative de scrutation des propriétés MIB du Point d'accès. SVP patienter..."
 
-#: lib/common.c:390
-#, fuzzy
+#: lib/common.c:391
 msgid ""
 "Unable to determine AP MIB properties (no response from AP). Press any key."
 msgstr ""
-"Incapable de récupérer les données du point d'accès. Appuyer sur une touche "
-"pour continuer."
+"Incapable de déterminer les propriétés MIB du Point d'accès (pas de "
+"réponse). Appuyez sur une touche pour continuer."
 
-#: lib/file.c:205
-msgid "NUM  IP ADDRESS       MIB TYPE    MIB EXT.  LABEL"
+#: lib/common.c:489 lib/set_oeminfo.c:221
+#, c-format
+msgid "%s%u"
 msgstr ""
 
-#: lib/file.c:206
-#, fuzzy
+#: lib/common.c:491
+#, c-format
+msgid "(%0.1f seconds)"
+msgstr ""
+
+#: lib/file.c:199
+msgid "NUM  IP ADDRESS       MIB TYPE    MIB EXT.  LABEL"
+msgstr "NUM  ADRESSE IP       TYPE MIB    EXT.MIB   ÉTIQUTTE"
+
+#: lib/file.c:200
 msgid "Choose an AP to connect to"
-msgstr "Choisir AP pour établir la connexion"
+msgstr "Choisir un Point d'accès pour établir une connexion"
 
-#: lib/file.c:212
+#: lib/file.c:206
 msgid "1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll"
 msgstr ""
 "1-9,C: connect; N: nouveau; D: détruire; W: sauvegarder; Q: quitter; "
 "flèches: défiler"
 
-#: lib/file.c:268
+#: lib/file.c:257
 msgid "Connect to AP num:"
 msgstr "Connexion avec AP numéro:"
 
-#: lib/file.c:304
+#: lib/file.c:288
 msgid "Delete num:"
 msgstr "Détruire num:"
 
-#: lib/file.c:372
-msgid "AP list file ~/.ap-config successfully written. Press any key."
-msgstr ""
-
-#: lib/file.c:376
-#, fuzzy
-msgid "Unable to write AP list file ~/.ap-config. Press any key."
-msgstr ""
-"Incapable de récupérer les données du point d'accès. Appuyer sur une touche "
-"pour continuer."
-
-#: lib/file.c:426
-#, fuzzy
+#: lib/file.c:442
 msgid "Unable to write stations file. Press any key."
 msgstr ""
-"Incapable d'écrire les données sur le point d'accès. Appuyer sur une touche "
-"pour continuer."
+"Incapable d'écrire dans le fichier des stations. Appuyez sur une touche pour "
+"continuer."
 
-#: lib/file.c:428
+#: lib/file.c:444
 msgid "Stations file succesfully written. Press any key."
-msgstr ""
+msgstr "Succès d'écriture au fichier des stations. Appuyez sur une touche."
 
-#: lib/input.c:33
-#, fuzzy
+#: lib/input.c:32
 msgid "Invalid value. Press any key to continue."
-msgstr "Adresse IP invalide. Appuyer sur une touche."
+msgstr "Valeur invalide. Appuyez sur une touche."
 
-#: lib/input.c:34
-#, fuzzy, c-format
+#: lib/input.c:33
+#, c-format
 msgid "Value must be in range %u - %u. Press any key to continue."
 msgstr ""
-"Incapable d'écrire les données sur le point d'accès. Appuyer sur une touche "
-"pour continuer."
+"La valeur doit être contenue entre les bornes %u - %u. Appuyez sur une "
+"touche pour continuer."
 
-#: lib/input.c:412
-#, fuzzy
+#: lib/input.c:460
 msgid "Y - Yes; Any other key - No (it's safer to answer No)"
-msgstr "(Y - Oui; N - Non (il est plus sûr de répondre non)"
+msgstr ""
+"Y - Oui; N'importe quelle autre touche - Non (il est plus sûr de répondre No "
+"pour non)"
 
-#: lib/oui.c:6056
+#: lib/oui.c:6061
 msgid "Unknown or Private"
 msgstr "Inconnu ou privé"
 
 #: lib/radio.c:26
-#, fuzzy
 msgid ""
 "[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu"
 msgstr ""
-"Key - niveau de puissance; UIOP - antenne; W - sauvegarder la config.; Q - "
-"quitter"
+"[clé] - niveau de puissance; UIOP ou LR - antenne; W - sauvegarder la "
+"config.; Q - quitter vers le menu"
 
 #: lib/radio.c:28
-#, fuzzy
 msgid "Antenna:"
-msgstr "[A] Antenne: %s"
+msgstr "Antenne:"
 
 #: lib/radio.c:29
-#, fuzzy
 msgid "[L] Left:"
-msgstr "Gauche"
+msgstr "[L] Gauche:"
 
 #: lib/radio.c:30
-#, fuzzy
 msgid "[R] Right:"
-msgstr "Droite"
+msgstr "[R] Droite:"
 
 #: lib/radio.c:120
 msgid "Radio Configuration"
@@ -1022,297 +713,448 @@ msgstr "Configuration radio"
 
 #: lib/radio.c:121
 msgid "Output RF signal power level (CR31 register values)"
-msgstr ""
+msgstr "Niveau de puissance du signal RF (valeur de registre CR31)"
 
 #: lib/radio.c:123
-#, fuzzy
 msgid "Key Channel Level"
-msgstr "niveau du canal de clé"
+msgstr "niveau du canal clé"
 
 #: lib/radio.c:279
-#, fuzzy
 msgid ""
 "You can't disable both antennas; unable to save antenna-config. Press any "
 "key."
 msgstr ""
-"Vous ne pouvez pas déactiver les deux antennes, incapable de sauvegarder la "
-"config. des antennes. Appuyer sur une touche."
+"Vous ne pouvez pas désactiver les deux antennes, incapable de sauvegarder la "
+"config. des antennes. Appuyez sur une touche."
 
-#: lib/scr.c:168
-#, fuzzy, c-format
+#: lib/scr.c:157
+#, c-format
 msgid "Current AP: %s Type: %s Ext: %s"
-msgstr "Point d'accès courant: %s Type: %s"
+msgstr "Point d'accès courant: %s Type: %s Ext: %s"
 
 #: lib/set_community.c:27
 msgid "Set community/password"
 msgstr "Initialiser la communauté/mot de passe"
 
 #: lib/set_community.c:28
-#, fuzzy
 msgid "Key Access level"
-msgstr "Niveau d'accès de la clé"
+msgstr "Niveau d'accès clé"
 
 #: lib/set_community.c:29
 msgid "Community/Password"
 msgstr "Communauté/Mot de passe"
 
 #: lib/set_community.c:30
-#, fuzzy
 msgid "[U] User "
-msgstr "[U] Usager"
+msgstr "[U] Usager "
 
 #: lib/set_community.c:31
-#, fuzzy
 msgid "[A] Administrator "
-msgstr "[A] Administrateur"
+msgstr "[A] Administrateur "
 
 #: lib/set_community.c:32
-#, fuzzy
 msgid "[M] Manufacturer "
-msgstr "[M] Manufacturier"
+msgstr "[M] Manufacturier "
 
 #: lib/set_community.c:33
-#, fuzzy
 msgid ""
 "[key] - set community/password; W - write config to AP; Q - quit to menu"
 msgstr ""
-"Clé - initialiser la communauté/mot de passe; W - sauvegarder la config du "
-"point d'accès; Q - quitter"
+"[clé] - initialiser la communauté/mot de passe; W - sauvegarder la config du "
+"Point d'accès; Q - quitter vers le menu"
 
-#: lib/stat.c:29
-msgid "Ethernet Statistics"
-msgstr "Statistiques Etherne"
+#: lib/set_oeminfo.c:28
+#, fuzzy
+msgid "Info structure version: "
+msgstr "Version des infos de structure: %u"
 
-#: lib/stat.c:30
-msgid "Wireless Statistics"
-msgstr "Statistiques du sans fil"
+#: lib/set_oeminfo.c:29
+#, fuzzy
+msgid "[M] Device MAC address: "
+msgstr "adresse MAC: "
 
-#: lib/stat.c:98
+#: lib/set_oeminfo.c:30
 #, fuzzy
-msgid "EthRxStat packet error. Press any key."
-msgstr "Erreur de paquet EthRxStat. Appuyer sur la touche Q pour continuer."
+msgid "    Manufacturer with this OUI: "
+msgstr "Identificateur du manufacturier"
 
-#: lib/stat.c:111
+#: lib/set_oeminfo.c:31
 #, fuzzy
-msgid "EthTxStat packet error. Press any key."
-msgstr "Erreur de paquet EthTxStat. Appuyer sur la touche Q pour continuer."
+msgid "[D] Regulatory domain: "
+msgstr "Domaine régulateur: %s"
 
-#: lib/stat.c:115
-msgid "Received:"
-msgstr "Reçu:"
+#: lib/set_oeminfo.c:32
+#, fuzzy
+msgid "[T] Product type: "
+msgstr "Type de produit: %u"
 
-#: lib/stat.c:116
+#: lib/set_oeminfo.c:33
 #, fuzzy
-msgid "Transmitted:"
-msgstr "Transmis:"
+msgid "[E] OEM name: "
+msgstr "Nom OEM:"
 
-#: lib/stat.c:270
+#: lib/set_oeminfo.c:34
 #, fuzzy
-msgid "WirelessStat packet error. Press any key."
-msgstr "Erreur de paquet WirelessStat. Appuyer sur la touche Q pour continuer."
+msgid "[I] OEM ID: "
+msgstr "[I] IP: "
 
-#: lib/sysinfo.c:29
-msgid "System Description: "
-msgstr "Description système: "
+#: lib/set_oeminfo.c:35
+#, fuzzy
+msgid "[N] Product name: "
+msgstr "Nom du produit:"
 
-#: lib/sysinfo.c:30
-msgid "System Info"
-msgstr "Info système"
+#: lib/set_oeminfo.c:36
+#, fuzzy
+msgid "[H] Hardware revision: "
+msgstr "Révision matérielle: %u"
 
-#: lib/sysinfo.c:120
-msgid "Device hardware/software/name info:"
-msgstr ""
+#: lib/set_oeminfo.c:37
+#, fuzzy
+msgid "[O] Country code: "
+msgstr "[O] Commande: "
 
-#: lib/sysinfo.c:154
+#: lib/set_oeminfo.c:38
 #, fuzzy
-msgid "Product name:"
-msgstr "Nom de produit:"
+msgid "[C] Default channel: "
+msgstr "[C] canal de fréquence: "
 
-#: lib/sysinfo.c:158
-#, fuzzy, c-format
-msgid "Product type: %u"
-msgstr "Type de produit: %lu"
+#: lib/set_oeminfo.c:39
+#, fuzzy
+msgid "[A] Calibrated channels: "
+msgstr "[C] canal de fréquence: "
+
+#: lib/set_oeminfo.c:40
+msgid "[P] Nominal Tx Power (CR31) value for calibrated channels: "
+msgstr ""
 
-#: lib/sysinfo.c:161
+#: lib/set_oeminfo.c:41
 #, fuzzy
-msgid "OEM name:"
-msgstr "Nom du OEM:"
+msgid ""
+"Keys in brackets - set corresponding option; W - write conf; Q - quit to menu"
+msgstr ""
+"[key] - initialiser l'option; W - sauvegarder la config.; Q - quitter vers "
+"le menu"
+
+#: lib/set_oeminfo.c:101
+msgid "THIS IS A SECRET MENU LEADING TO VERY DANGEROUS OPTIONS."
+msgstr ""
+
+#: lib/set_oeminfo.c:103
+msgid "It is intended only for WISPs and repair shops."
+msgstr ""
+
+#: lib/set_oeminfo.c:107
+msgid "It allows to set OEM information stored in the AP (like its"
+msgstr ""
+
+#: lib/set_oeminfo.c:109
+msgid "MAC address, manuf. name, OEM ID, etc.). BE ABSOLUTELY SURE"
+msgstr ""
+
+#: lib/set_oeminfo.c:111
+msgid "THAT YOU KNOW WHAT YOU ARE DOING, AND THAT YOU HAVE THE"
+msgstr ""
+
+#: lib/set_oeminfo.c:113
+msgid "LEGAL RIGHT TO DO ANY MODIFICATION. Disobserving of these"
+msgstr ""
+
+#: lib/set_oeminfo.c:115
+msgid "rules may lead you into a conflict with your local"
+msgstr ""
+
+#: lib/set_oeminfo.c:117
+msgid "regulations and/or law."
+msgstr ""
+
+#: lib/set_oeminfo.c:119
+msgid "Also be warned that the setting of any from these options"
+msgstr ""
+
+#: lib/set_oeminfo.c:121
+msgid "may DAMAGE YOUR AP (other reason why this menu is hidden)."
+msgstr ""
+
+#: lib/set_oeminfo.c:123
+msgid "Values changed here will NOT be restored upon reset"
+msgstr ""
+
+#: lib/set_oeminfo.c:125
+msgid "of the device to factory defaults! It is advisable to"
+msgstr ""
 
-#: lib/sysinfo.c:168
+#: lib/set_oeminfo.c:127
+msgid "write them down somewhere prior their changing."
+msgstr ""
+
+#: lib/set_oeminfo.c:129
+msgid "Finally, note that you need to use MANUFACTURER community, "
+msgstr ""
+
+#: lib/set_oeminfo.c:131
+msgid "in order to be able to do any OEM info modification."
+msgstr ""
+
+#: lib/set_oeminfo.c:133
+msgid "Proceed further only at your full risk and responsibility. "
+msgstr ""
+
+#: lib/set_oeminfo.c:135
+msgid "You got the warnings."
+msgstr ""
+
+#: lib/set_oeminfo.c:141
+msgid "OEM Info settings"
+msgstr ""
+
+#: lib/stat.c:29
+msgid "Ethernet Statistics"
+msgstr "Statistiques Ethernet"
+
+#: lib/stat.c:30
+msgid "Wireless Statistics"
+msgstr "Statistiques du sans fil"
+
+#: lib/stat.c:98
+msgid "EthRxStat packet error. Press any key."
+msgstr "Erreur de paquet EthRxStat. Appuyez sur une touche."
+
+#: lib/stat.c:111
+msgid "EthTxStat packet error. Press any key."
+msgstr "Erreur de paquet EthTxStat. Appuyez sur une touche."
+
+#: lib/stat.c:115
+msgid "Received:"
+msgstr "Reçu:"
+
+#: lib/stat.c:116
+msgid "Transmitted:"
+msgstr "Transmis:"
+
+#: lib/stat.c:270
+msgid "WirelessStat packet error. Press any key."
+msgstr "Erreur de paquet WirelessStat. Appuyez sur une touche."
+
+#: lib/sysinfo.c:29
+msgid "System Description: "
+msgstr "Description système: "
+
+#: lib/sysinfo.c:30
+msgid "System Info"
+msgstr "Info système"
+
+#: lib/sysinfo.c:55 src/bridge.c:50
+msgid "Wireless Bridge Point to MultiPoint"
+msgstr "Point d'accès pont sans fil vers Multi-point"
+
+#: lib/sysinfo.c:56 src/bridge.c:51
+msgid "Access Point"
+msgstr "Point d'accès"
+
+#: lib/sysinfo.c:57 src/bridge.c:52
+msgid "Access Point client"
+msgstr "Point d'accès client"
+
+#: lib/sysinfo.c:58 src/bridge.c:53
+msgid "Wireless Bridge Point to Point"
+msgstr "Point pont sans fil vers un point"
+
+#: lib/sysinfo.c:59 src/bridge.c:54
+msgid "Repeater"
+msgstr "Répéteur"
+
+#: lib/sysinfo.c:60 lib/sysinfo.c:315 lib/sysinfo.c:424 src/bridge.c:55
+msgid "unknown"
+msgstr "inconnu"
+
+#: lib/sysinfo.c:144
+msgid "Device hardware/software/name info:"
+msgstr "Info du périphérique matériel/logiciel/nom:"
+
+#: lib/sysinfo.c:172
 #, fuzzy, c-format
+msgid "Operational mode: %s"
+msgstr "[O] Mode opérationnel: "
+
+#: lib/sysinfo.c:182
+#, fuzzy
+msgid "Product name: "
+msgstr "Nom du produit:"
+
+#: lib/sysinfo.c:186
+#, c-format
+msgid "Product type: %u"
+msgstr "Type de produit: %u"
+
+#: lib/sysinfo.c:189
+#, fuzzy
+msgid "OEM name: "
+msgstr "Nom OEM:"
+
+#: lib/sysinfo.c:196
+#, c-format
 msgid "Hardware revision: %u"
-msgstr "Révision matérielle: %lu"
+msgstr "Révision matérielle: %u"
 
-#: lib/sysinfo.c:176
-#, fuzzy, c-format
+#: lib/sysinfo.c:204
+#, c-format
 msgid "Info structure version: %u"
-msgstr "Version du Struct: %lu"
+msgstr "Version des infos de structure: %u"
 
-#: lib/sysinfo.c:179 lib/sysinfo.c:355
+#: lib/sysinfo.c:207 lib/sysinfo.c:383
 #, c-format
 msgid "Manufacturer OUI: %02X %02X %02X (%s)"
 msgstr "OUI du manufacturier: %02X %02X %02X (%s)"
 
-#: lib/sysinfo.c:196
-#, fuzzy, c-format
+#: lib/sysinfo.c:224
+#, c-format
 msgid "Uptime: %u days, %02u:%02u:%02u hours:mins:secs"
-msgstr "Temps de marche (uptime): %u:%02u:%02u.%02u"
+msgstr "Temps de marche (uptime): %u jours, %02u:%02u:%02u heures:mins:secs"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "FHSS 2.4 GHz"
 msgstr "FHSS 2.4 GHz"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "DSSS 2.4 GHz"
 msgstr "DSSS 2.4 GHz"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "IR Baseband"
 msgstr "Fréquence de base IR"
 
-#: lib/sysinfo.c:285
+#: lib/sysinfo.c:313
 msgid "Commercial range 0..40 C"
 msgstr "Étendue commerciale 0..40 C"
 
-#: lib/sysinfo.c:286
+#: lib/sysinfo.c:314
 msgid "Industrial range -30..70 C"
 msgstr "Étendue industrielle -30..70 C"
 
-#: lib/sysinfo.c:287 lib/sysinfo.c:396
-msgid "unknown"
-msgstr "inconnu"
-
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "manual"
 msgstr "manuel"
 
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "notsupported"
 msgstr "non supporté"
 
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "dynamic"
 msgstr "dynamique"
 
-#: lib/sysinfo.c:345
+#: lib/sysinfo.c:373
 msgid "Manufacturer:"
 msgstr "Manufacturier"
 
-#: lib/sysinfo.c:350
+#: lib/sysinfo.c:378
 msgid "Manufacturer ID:"
 msgstr "Identificateur du manufacturier"
 
-#: lib/sysinfo.c:361
+#: lib/sysinfo.c:389
 msgid "Product Name:"
 msgstr "Nom de produit:"
 
-#: lib/sysinfo.c:367
+#: lib/sysinfo.c:395
 msgid "Product ID:"
 msgstr "Identificateur du produit:"
 
-#: lib/sysinfo.c:373
+#: lib/sysinfo.c:401
 msgid "Product Version:"
 msgstr "Version du produit:"
 
-#: lib/sysinfo.c:379
+#: lib/sysinfo.c:407
 #, c-format
 msgid "PHYType: %s"
 msgstr "Type PHY: %s"
 
-#: lib/sysinfo.c:382
+#: lib/sysinfo.c:410
 #, c-format
 msgid "Temperature: %s"
 msgstr "Température: %s"
 
-#: lib/sysinfo.c:390
-#, fuzzy, c-format
+#: lib/sysinfo.c:418
+#, c-format
 msgid "Regulatory Domain: %s"
 msgstr "Domaine régulateur: %s"
 
-#: lib/sysinfo.c:391
+#: lib/sysinfo.c:419
 msgid "FCC (USA)"
 msgstr "FCC (EU)"
 
-#: lib/sysinfo.c:392
+#: lib/sysinfo.c:420
 msgid "DOC (Canada)"
 msgstr "DOC (Canada)"
 
-#: lib/sysinfo.c:393
+#: lib/sysinfo.c:421
 msgid "ETSI (Europe)"
 msgstr "ETSI (Europe)"
 
-#: lib/sysinfo.c:394
+#: lib/sysinfo.c:422
 msgid "Spain"
 msgstr "Espagne"
 
-#: lib/sysinfo.c:395
+#: lib/sysinfo.c:423
 msgid "France"
 msgstr "France"
 
-#: lib/sysinfo.c:396
+#: lib/sysinfo.c:424
 msgid "MKK (Japan)"
 msgstr "MKK (Japon)"
 
-#: lib/sysinfo.c:399
+#: lib/sysinfo.c:427
 #, c-format
 msgid "Transmit Power: %u mW"
 msgstr "Puissance de transmission: %u mW"
 
-#: lib/sysinfo.c:429
-#, fuzzy, c-format
+#: lib/sysinfo.c:457
+#, c-format
 msgid "WEP implemented: %s"
 msgstr "WEP non implanté: %s"
 
-#: lib/sysinfo.c:432
+#: lib/sysinfo.c:460
 #, c-format
 msgid "Diversity: %s"
 msgstr "Diversité: %s"
 
-#: lib/sysinfo.c:460
+#: lib/sysinfo.c:488
 #, c-format
 msgid "Uptime: %u:%02u:%02u.%02u"
 msgstr "Temps de marche (uptime): %u:%02u:%02u.%02u"
 
-#: lib/sysinfo.c:480
+#: lib/sysinfo.c:508
 #, c-format
 msgid "IP  Address: %s"
 msgstr "Adresse IP: %s"
 
 #: lib/test.c:26
-#, fuzzy
 msgid "[T] Test mode: "
-msgstr "[T] Mode test: %s"
+msgstr "[T] Mode test: "
 
 #: lib/test.c:27
-#, fuzzy
 msgid "[A] Antenna: "
-msgstr "[A] Antenne: %s"
+msgstr "[A] Antenne: "
 
 #: lib/test.c:28
-#, fuzzy
 msgid "[S] Signal level: "
-msgstr "[S] niveau du signal: %03u"
+msgstr "[S] niveau du signal: "
 
 #: lib/test.c:29
-#, fuzzy
 msgid "[R] Rate: "
-msgstr "[R] Taux: %.1f Mbit/s"
+msgstr "[R] Débit: "
 
 #: lib/test.c:30
-#, fuzzy
 msgid "[F] TxFiler: "
-msgstr "[F] TxFiler: %s"
+msgstr "[F] TxFiler: "
 
 #: lib/test.c:31
-#, fuzzy
 msgid "[O] Command: "
-msgstr "[O] Commande: %s"
+msgstr "[O] Commande: "
 
 #: lib/test.c:32
-#, fuzzy
 msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu"
 msgstr ""
-"T - TestMode On/Off; CASRFO - initialiser les options; Q - quitter vers le "
+"T - Mode test On/Off; CASRFO - initialiser les options; Q - quitter vers le "
 "menu"
 
 #: lib/test.c:70
@@ -1323,36 +1165,36 @@ msgstr "Gauche"
 msgid "Right"
 msgstr "Droite"
 
-#: lib/test.c:86
-#, fuzzy
+#: lib/test.c:79
+msgid "Devices with ATMEL12350 MIB not yet supported."
+msgstr ""
+
+#: lib/test.c:91
 msgid "Test mode"
 msgstr "Mode test"
 
-#: lib/test.c:89
-#, fuzzy
+#: lib/test.c:94
 msgid "Using the \"Test mode\" may cause loss of your current"
 msgstr ""
-"L'utilisation du nmode test peut causer la perte de la configuration "
-"courante."
+"L'utilisation du \"mode test\" peut causer la perte de la configuration"
 
-#: lib/test.c:90
-#, fuzzy
+#: lib/test.c:95
 msgid "configuration."
-msgstr "Configuration de chargement à distance"
+msgstr "courante."
 
-#: lib/test.c:102
+#: lib/test.c:107
 msgid "Options:"
 msgstr "Options"
 
-#: lib/test.c:128
+#: lib/test.c:133
 msgid "Statistics:"
 msgstr "Statistiques:"
 
-#: lib/test.c:129
+#: lib/test.c:134
 msgid "Success Frames: 0 Failed Frames: 0"
 msgstr "Trames transmises: 0 Trames non transmises: 0"
 
-#: lib/test.c:190
+#: lib/test.c:195
 #, c-format
 msgid "Success Frames: %lu Failed Frames: %lu"
 msgstr "Trames transmises: %lu Trames non transmises: %lu"
@@ -1362,24 +1204,20 @@ msgid "Privacy Settings"
 msgstr "Configuration privée"
 
 #: lib/wep.c:29
-#, fuzzy
 msgid "[E] Standard encryption mechanism: "
-msgstr "[E] mécanisme standard d'encryption: %s"
+msgstr "[E] mécanisme standard d'encryptage: "
 
 #: lib/wep.c:30
-#, fuzzy
 msgid "[A] Allow unencrypted: "
-msgstr "[A] Fonctionner sans encryptage: %s"
+msgstr "[A] permettre de fonctionner sans encryptage: "
 
 #: lib/wep.c:31
-#, fuzzy
 msgid "[K] Default WEP key: "
-msgstr "[K] Clé par défaut du WEP: %d"
+msgstr "[K] clé par défaut WEP: "
 
 #: lib/wep.c:32
-#, fuzzy
 msgid "[P] Public key: "
-msgstr "[P] Clé publique: %s"
+msgstr "[P] Clé publique: "
 
 #: lib/wep.c:85
 msgid "EK1234 - set; W - write conf; Q - quit to menu"
@@ -1388,7 +1226,7 @@ msgstr ""
 
 #: lib/wep.c:94 lib/wep.c:263
 msgid "Key  WEP"
-msgstr "Clé du WEP"
+msgstr "Clé  WEP"
 
 #: lib/wep.c:101
 msgid "Hint! Confused by WEP key values? See man ap-config for info..."
@@ -1404,93 +1242,80 @@ msgstr ""
 
 #: lib/wlan.c:27
 msgid "[E] ESSID: "
-msgstr ""
+msgstr "[E] ESSID: "
 
 #: lib/wlan.c:28
-#, fuzzy
 msgid "[N] AP name: "
-msgstr "[N] Nom du point d'accès:"
+msgstr "[N] nom du Point d'accès: "
 
 #: lib/wlan.c:30
-#, fuzzy
 msgid "[K] AP contact: "
-msgstr "[E] Contact du point d'accès:          %s"
+msgstr "[E] contact du Point d'accès: "
 
 #: lib/wlan.c:31
-#, fuzzy
 msgid "[L] AP location: "
-msgstr "[L] Localisation du point d'accès:     %s"
+msgstr "[L] localisation du Point d'accès: "
 
 #: lib/wlan.c:33
-#, fuzzy
 msgid "[R] RTS threshold: "
-msgstr "[R] Seuil RTS: %d"
+msgstr "[R] Seuil RTS: "
 
 #: lib/wlan.c:34
-#, fuzzy
 msgid "[F] Fragmentation threshold: "
-msgstr "[F] Seuil de fragmentation: %d"
+msgstr "[F] Seuil de fragmentation: "
 
 #: lib/wlan.c:35
-#, fuzzy
 msgid "[P] Preambule type: "
-msgstr "[P] type de préambule: %s"
+msgstr "[P] type de préambule: "
 
 #: lib/wlan.c:36
-#, fuzzy
 msgid "[A] Auth type: "
-msgstr "[A] Type autor.: %s"
+msgstr "[A] Type auth.: "
 
 #: lib/wlan.c:37
-#, fuzzy
 msgid "Open system"
 msgstr "Système ouvert"
 
 #: lib/wlan.c:38
-#, fuzzy
 msgid "Shared key"
 msgstr "Clé partagée"
 
 #: lib/wlan.c:39
-#, fuzzy
 msgid "Both types"
 msgstr "Les deux types"
 
 #: lib/wlan.c:40
-#, fuzzy
 msgid "[U] Auto rate fallback: "
-msgstr "[U] AutoRateFallBack: %s"
+msgstr "[U] Fallback en mode auto débit: "
 
 #: lib/wlan.c:41
-#, fuzzy
 msgid "[S] Insert ESSID in broadcast packets: "
-msgstr "[S] insérer ESSID dans les paquets de type broadcast: %s"
+msgstr "[S] insérer ESSID dans les paquets à diffuser: "
 
 #: lib/wlan.c:42
-#, fuzzy
 msgid "Basic and Supported rates:"
-msgstr "Taux de base et supportés:"
+msgstr "Débits de base et supportés:"
 
 #: lib/wlan.c:43
 msgid "Key   Rate  Status"
-msgstr "Clé   Taux   État"
+msgstr "Clé   Débit État"
 
 #: lib/wlan.c:45
-#, fuzzy
 msgid "[I] International roaming: "
-msgstr "[O] Mode opérationnel: %s"
+msgstr "[I] mode vagabongage international: "
 
 #: lib/wlan.c:46
 msgid "[B] Beacon period (msec): "
-msgstr ""
+msgstr "[B] période de la balise (msec): "
 
 #: lib/wlan.c:47
 msgid "[D] DTIM sending interval (beacons): "
-msgstr ""
+msgstr "[D] intervalle de transmission DTIM (balises): "
 
 #: lib/wlan.c:48
-msgid "[T] SIFS time (msec): "
-msgstr ""
+#, fuzzy
+msgid "[T] SIFS time (2nd+ interframe spacing, usec): "
+msgstr "[T] temps SIFS (msec): "
 
 #: lib/wlan.c:49
 msgid "[key] - set option; W - write conf; Q - quit to menu"
@@ -1506,194 +1331,704 @@ msgstr "Court"
 msgid "Long"
 msgstr "Long"
 
-#: lib/wlan.c:237
+#: lib/wlan.c:239
 msgid "Wireless Settings"
 msgstr "Paramétrage du sans fil"
 
-#: lib/wlan.c:731
+#: lib/wlan.c:735
 msgid "Antenna Configuration:"
 msgstr "Configuration de l'antenne:"
 
-#: lib/wlan.c:748
+#: lib/wlan.c:752
 msgid "General Options"
 msgstr "Options générales"
 
-#: lib/wlan.c:750
+#: lib/wlan.c:754
 msgid ""
 "UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu"
 msgstr ""
 "UIOPTY - antenne; SCANLEDFR1234 - options; W - sauvegarder la config.; Q - "
 "quitter vers le menu"
 
-#: src/ap-config.c:54
+#: src/ap-auth.c:32 src/auth.c:28
+msgid "AuthorizedMacTableString packet error"
+msgstr "Erreur de paquet AuthorizedMacTableString"
+
+#: src/ap-auth.c:33
+msgid "Invalid data in source file"
+msgstr ""
+
+#: src/ap-auth.c:34
+msgid "Can't open file"
+msgstr ""
+
+#: src/ap-auth.c:35
+msgid "Can't write to file"
+msgstr ""
+
+#: src/ap-auth.c:36
+msgid "Error closing file"
+msgstr ""
+
+#: src/ap-auth.c:44 src/ap-mrtg.c:41 src/ap-rrd.c:40
+msgid ""
+"\n"
+"Usage:\n"
+msgstr ""
+"\n"
+"Usage:\n"
+
+#: src/ap-auth.c:45
+msgid "\tap-auth -i ip -c community -d filename [-h]\n"
+msgstr ""
+
+#: src/ap-auth.c:46
+msgid ""
+"\tap-auth -i ip -c community -u filename [-h]\n"
+"\n"
+msgstr ""
+
+#: src/ap-auth.c:47
+msgid ""
+"Change accesspoint's list of authorised MAC addresses\n"
+"\n"
+msgstr ""
+
+#: src/ap-auth.c:48 src/ap-mrtg.c:45 src/ap-rrd.c:45
+msgid "-i ip        - AP ip address\n"
+msgstr "-i ip        - adresse ip AP\n"
+
+#: src/ap-auth.c:49 src/ap-mrtg.c:46 src/ap-rrd.c:46
+msgid "-c community - SNMP community string\n"
+msgstr "-c communauté   chaîne de la communauté SNMP\n"
+
+#: src/ap-auth.c:50
+msgid ""
+"-d filename  - download list of authorised MAC addresses from AP to a file\n"
+msgstr ""
+
+#: src/ap-auth.c:52
+msgid ""
+"-u filename  - upload list of authorised MAC addresses from a file to AP\n"
+msgstr ""
+
+#: src/ap-auth.c:54 src/ap-mrtg.c:55 src/ap-rrd.c:55
+msgid ""
+"-h           - print this help screen\n"
+"\n"
+msgstr ""
+"-h           afficher l'aide\n"
+"\n"
+
+#: src/ap-auth.c:55
+#, fuzzy, c-format
+msgid ""
+"ap-auth %s Copyright (c) 2004 Teemu Kiviniemi\n"
+"\n"
+msgstr ""
+"ap-mrtg %s Copyright © 2002-2003 Roman Festchook\n"
+"\n"
+
+#: src/ap-auth.c:138 src/ap-mrtg.c:132
+#, fuzzy
+msgid "Error: invalid IP-address.\n"
+msgstr "Adresse IP invalide\n"
+
+#: src/ap-auth.c:203 src/ap-mrtg.c:204
+#, fuzzy
+msgid "Unable to determine AP MIB type (no response from AP)."
+msgstr ""
+"Incapable de déterminer les propriétés MIB du Point d'accès (pas de "
+"réponse). Appuyez sur une touche pour continuer."
+
+#: src/ap-auth.c:211
+msgid "NWN devices are not yet supported."
+msgstr ""
+
+#: src/ap-config.c:43 src/bridge.c:201
+msgid "Bridging"
+msgstr "Établissement d'un pont"
+
+#: src/ap-config.c:43
+msgid "Set bridging and IP-related options"
+msgstr "Configuré les options relative au pont et à IP"
+
+#: src/ap-config.c:45 src/ap-config.c:114 src/ap-config.c:123 src/bridge.c:125
+msgid "Wireless"
+msgstr "Sans fil"
+
+#: src/ap-config.c:45
+msgid "Set wireless options"
+msgstr "Configurer les options sans fil"
+
+#: src/ap-config.c:46 src/ap-config.c:58
+msgid "Privacy"
+msgstr "Privée"
+
+#: src/ap-config.c:47
+#, fuzzy
+msgid "Auth"
+msgstr "À propos"
+
+#: src/ap-config.c:48 src/ap-config.c:60
+msgid "Community"
+msgstr "Communauté"
+
+#: src/ap-config.c:49
+msgid "Radio"
+msgstr "Radio"
+
+#: src/ap-config.c:49
+msgid "Set radio signal power and antenna options"
+msgstr ""
+"Sélectionner les options pour l'antenne et la puissance du signal radio"
+
+#: src/ap-config.c:56
 msgid "General"
 msgstr "Général"
 
-#: src/ap-config.c:54
+#: src/ap-config.c:56
 msgid "Set general options"
 msgstr "Initialiser les options générales"
 
-#: src/ap-config.c:55
+#: src/ap-config.c:57
 msgid "Advanced"
 msgstr "Avancé"
 
-#: src/ap-config.c:55
+#: src/ap-config.c:57
 msgid "Set advanced options"
 msgstr "Initialiser les options avancées"
 
-#: src/ap-config.c:89
-msgid "Reset AP."
-msgstr "Réinitialisation du point d'accès."
+#: src/ap-config.c:59
+msgid "MAC auth"
+msgstr "Authenfication MAC"
+
+#: src/ap-config.c:82
+msgid "Upload"
+msgstr "Téléchargement"
+
+#: src/ap-config.c:82
+msgid "Activate current configuration"
+msgstr "Activer la configuration courante"
+
+#: src/ap-config.c:83
+msgid "Defaults"
+msgstr "Défauts"
+
+#: src/ap-config.c:83
+msgid "Restore factory default settings"
+msgstr "Restaurer les paramètres par défaut du manufacturier"
+
+#: src/ap-config.c:84 src/ap-config.c:91
+msgid "Reset"
+msgstr "Réinitialisation"
+
+#: src/ap-config.c:85
+msgid "Reset AP. All not uploaded configuration will be lost"
+msgstr ""
+"Réinitialiser le point d'accès. Toutes les config. non préservées seront "
+"perdues."
+
+#: src/ap-config.c:86
+msgid "TestMode"
+msgstr "Mode test"
+
+#: src/ap-config.c:86
+msgid "Put Access Point in test mode"
+msgstr "Placer le point d'accès en mode test."
+
+#: src/ap-config.c:91
+msgid "Reset AP."
+msgstr "Réinitialisation du point d'accès."
+
+#: src/ap-config.c:112 src/ap-config.c:122
+msgid "SysInfo"
+msgstr "SysInfo"
+
+#: src/ap-config.c:113 src/bridge.c:124 src/bridge.c:127
+msgid "Ethernet"
+msgstr "Ethernet"
+
+#: src/ap-config.c:113
+msgid "Get ethernet port statistics"
+msgstr "Obtenir les statistiques des ports Ethernet"
+
+#: src/ap-config.c:115 src/ap-config.c:124
+msgid "Stations"
+msgstr "Stations"
+
+#: src/ap-config.c:116
+#, fuzzy
+msgid "AP link"
+msgstr "État du lien du Point d'accès"
+
+#: src/ap-config.c:117
+msgid "KnownAPs"
+msgstr "Point d'accès connus"
+
+#: src/ap-config.c:117
+msgid "Get info about known Access Points"
+msgstr "Obtenir les info des points d'accès connus"
+
+#: src/ap-config.c:125
+msgid "Latest"
+msgstr "Dernier"
+
+#: src/ap-config.c:125
+msgid "Get info about latest events"
+msgstr "Obtenir les infos à propos des derniers événements"
+
+#: src/ap-config.c:150
+msgid "Info"
+msgstr "Info"
+
+#: src/ap-config.c:151
+msgid "Config"
+msgstr "Config"
+
+#: src/ap-config.c:152
+msgid "Commands"
+msgstr "Commandes"
+
+#: src/ap-config.c:152
+msgid "Execute commands on Access Point"
+msgstr "Exécuter les commandes sur le point d'accès"
+
+#: src/ap-config.c:154
+msgid "Connect"
+msgstr "Connecter"
+
+#: src/ap-config.c:155
+msgid "Search"
+msgstr "Chercher"
+
+#: src/ap-config.c:156
+#, fuzzy
+msgid "Polling"
+msgstr "Polling: on"
+
+#: src/ap-config.c:157
+msgid "Shell"
+msgstr "Shell"
+
+#: src/ap-config.c:159
+msgid "Exit"
+msgstr "Quitter"
+
+#: src/ap-config.c:218
+#, c-format
+msgid "Wireless Access Point Configurator ver. %s"
+msgstr "Configurateur de point d'accès sans fil version %s"
+
+#: src/aplink.c:25
+msgid "RSSI:     ["
+msgstr ""
+
+#: src/aplink.c:26
+msgid "RSSI avg: ["
+msgstr ""
+
+#: src/aplink.c:27
+msgid "RSSI top: ["
+msgstr ""
+
+#: src/aplink.c:28
+msgid "RSSI rou: ["
+msgstr ""
+
+#: src/aplink.c:29
+#, fuzzy
+msgid ""
+"P - pause, T - toggle graph view, Q - quit to menu, Other key - force update."
+msgstr ""
+"Q - quitter vers le menu. T - basculer en mode polling, Autre clé - forcer "
+"la mise à jour."
+
+#: src/aplink.c:81
+msgid "RSSI [%]"
+msgstr ""
+
+#: src/aplink.c:82
+msgid "RSSI average [%]"
+msgstr ""
+
+#: src/aplink.c:83
+msgid "RSSI rounded [%]"
+msgstr ""
+
+#: src/aplink.c:84
+#, fuzzy
+msgid "Link Quality [%]"
+msgstr "; LQ: qualité du lien [%]"
+
+#: src/aplink.c:133
+msgid "Not available - device must have firmware with necessary "
+msgstr ""
+
+#: src/aplink.c:135
+msgid "vendor extensions and be in either 'Access Point client'"
+msgstr ""
+
+#: src/aplink.c:137
+msgid "or 'Repeater' mode."
+msgstr ""
+
+#: src/ap-mrtg.c:42
+#, fuzzy
+msgid ""
+"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-v] [-h] [-r]\n"
+"\n"
+msgstr ""
+"\tap-mrtg -i ip -c communauté -t type [-b bssid] [-n nom] [-a type_Pa] [-v] "
+"[-h] [-r]\n"
+"\n"
+
+#: src/ap-mrtg.c:44
+msgid ""
+"Get stats from AP and return it in MRTG parsable format\n"
+"\n"
+msgstr ""
+"Obtenir les statistiques de l'AP et les retourner dans un format MRTG\n"
+"\n"
+
+#: src/ap-mrtg.c:47
+#, fuzzy
+msgid ""
+"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
+"or <l>ink quality (last one will only "
+msgstr ""
+"-t type      type de statistiques <w> sans fil, <e>thernet, <s>tations "
+"associées ou qualité du <l>ien en mode client\n"
+
+#: src/ap-mrtg.c:49
+msgid "work with ATMEL410 MIB devices in AP Client mode)\n"
+msgstr ""
+
+#: src/ap-mrtg.c:50
+#, fuzzy
+msgid ""
+"-b bssid     - mac address of the AP from which get link quality, only if "
+"type=l\n"
+msgstr ""
+"-b bssid     adresse MAC de l'AP pour obtenir la qualité du lien, seulement "
+"si le type=l\n"
+
+#: src/ap-mrtg.c:52
+#, fuzzy
+msgid "-n name      - AP name - for check only\n"
+msgstr "-n nom      - nom du Point d'accès - pour vérification seulement\n"
+
+#: src/ap-mrtg.c:53
+msgid "-v           - report MRTG about problems connecting to AP\n"
+msgstr "-v           rapporter MRTG à propos de problème de connexion à l'AP\n"
+
+#: src/ap-mrtg.c:54 src/ap-rrd.c:54
+msgid "-r           - reset AP when getting LinkQuality stats\n"
+msgstr ""
+"-r           réinitialise l'AP lors de l'obtention des statistiques de "
+"LinkQuality\n"
+
+#: src/ap-mrtg.c:56
+#, c-format
+msgid ""
+"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n"
+"\n"
+msgstr ""
+"ap-mrtg %s Copyright © 2002-2003 Roman Festchook\n"
+"\n"
+
+#: src/ap-rrd.c:32
+#, c-format
+msgid "Error getting data from AP %s\n"
+msgstr ""
+
+#: src/ap-rrd.c:42
+#, fuzzy
+msgid ""
+"\tap-rrd -i ip -c community -t type -d db_file [-b bssid] [-n name] [-a "
+"aptype] [-h] [-r] \n"
+"\n"
+msgstr ""
+"\tap-mrtg -i ip -c communauté -t type [-b bssid] [-n nom] [-a type_Pa] [-v] "
+"[-h] [-r]\n"
+"\n"
+
+#: src/ap-rrd.c:44
+#, fuzzy
+msgid ""
+"Get stats from AP and put it in to specified RRDtool database\n"
+"\n"
+msgstr ""
+"Obtenir les statistiques de l'AP et les retourner dans un format MRTG\n"
+"\n"
+
+#: src/ap-rrd.c:48
+msgid ""
+"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
+"or <l>ink quality in client mode\n"
+msgstr ""
+"-t type      type de statistiques <w> sans fil, <e>thernet, <s>tations "
+"associées ou qualité du <l>ien en mode client\n"
+
+#: src/ap-rrd.c:49
+msgid "-d db_file   - RRD database file with full path\n"
+msgstr ""
+
+#: src/ap-rrd.c:51
+msgid ""
+"-b bssid     - mac address of the AP to which get link quality, only if "
+"type=l\n"
+msgstr ""
+"-b bssid     adresse MAC de l'AP pour obtenir la qualité du lien, seulement "
+"si le type=l\n"
+
+#: src/ap-rrd.c:52
+msgid "-n name     - AP name - for check only\n"
+msgstr "-n nom      - nom du Point d'accès - pour vérification seulement\n"
+
+#: src/ap-rrd.c:53
+#, fuzzy
+msgid ""
+"-a aptype    - AP type - 410 (default) or 510 for ATMEL12350's, like the ME-"
+"102\n"
+msgstr ""
+"-a type_Pa       - type de Point d'accès - 410 (par défaut) ou 510 pour "
+"ATMEL12350's, identique au ME-102\n"
+
+#: src/ap-rrd.c:56
+#, fuzzy, c-format
+msgid ""
+"ap-rrd %s Copyright (c) 2002-2004 Roman Festchook\n"
+"\n"
+msgstr ""
+"ap-mrtg %s Copyright © 2002-2003 Roman Festchook\n"
+"\n"
+
+#: src/ap-rrd.c:133
+msgid "Invalid IP-address\n"
+msgstr "Adresse IP invalide\n"
+
+#: src/ap-rrd.c:179
+#, c-format
+msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n"
+msgstr ""
+"Type de Point d'accès invalide '%s' - les types valides sont 510 ou 410\n"
+
+#: src/ap-tftp.c:84
+#, fuzzy
+msgid "yes"
+msgstr "Yes (Oui)"
+
+#: src/ap-tftp.c:85
+#, fuzzy
+msgid "no"
+msgstr "Info"
+
+#: src/ap-tftp.c:87
+msgid "Error while read()ing firmware file"
+msgstr ""
+
+#: src/ap-tftp.c:100
+msgid "Undefined error"
+msgstr ""
+
+#: src/ap-tftp.c:101
+msgid "File not found"
+msgstr ""
+
+#: src/ap-tftp.c:102
+#, fuzzy
+msgid "Access violation"
+msgstr "Point d'accès"
+
+#: src/ap-tftp.c:103
+msgid "Disk full or allocation error"
+msgstr ""
+
+#: src/ap-tftp.c:104
+msgid "Illegal TFTP operation"
+msgstr ""
+
+#: src/ap-tftp.c:105
+msgid "Unknown transfer ID"
+msgstr ""
+
+#: src/ap-tftp.c:106
+msgid "File already exists"
+msgstr ""
+
+#: src/ap-tftp.c:107
+msgid "No such user"
+msgstr ""
+
+#: src/ap-tftp.c:157
+msgid "Remote-filename too long.\n"
+msgstr ""
+
+#: src/ap-tftp.c:183
+#, c-format
+msgid "%sError in read()"
+msgstr ""
+
+#: src/ap-tftp.c:212
+#, c-format
+msgid "sending %u bytes\n"
+msgstr ""
+
+#: src/ap-tftp.c:221
+#, c-format
+msgid "%sError in sendto()"
+msgstr ""
+
+#: src/ap-tftp.c:244
+#, c-format
+msgid "%sError in recvfrom()"
+msgstr ""
+
+#: src/ap-tftp.c:256
+#, c-format
+msgid "\rProgress: uploaded %3i%%."
+msgstr ""
+
+#: src/ap-tftp.c:267
+#, c-format
+msgid "%sMalformed packet received. Aborting.\n"
+msgstr ""
 
-#: src/ap-config.c:122
-msgid "Latest"
-msgstr "Dernier"
+#: src/ap-tftp.c:276
+#, c-format
+msgid "%sTimed out waiting for response from server (%i/%i).\n"
+msgstr ""
 
-#: src/ap-config.c:122
-msgid "Get info about latest events"
-msgstr "Obtenir les infos à propos des derniers événements"
+#: src/ap-tftp.c:283
+#, c-format
+msgid "%sError in select()"
+msgstr ""
 
-#: src/ap-mrtg.c:42
-msgid ""
-"\n"
-"Usage:\n"
+#: src/ap-tftp.c:297
+#, c-format
+msgid "Received %d bytes: %04x %04x\n"
 msgstr ""
-"\n"
-"Usage:\n"
 
-#: src/ap-mrtg.c:44
-#, fuzzy
-msgid ""
-"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-"
-"h] [-r]\n"
-"\n"
+#: src/ap-tftp.c:308
+#, c-format
+msgid "%sError: server responded with %s. Aborting.\n"
 msgstr ""
-"\tap-mrtg -i ip -c communauté -t type [-b bssid] [-v] [-h] [-r]\n"
-"\n"
 
-#: src/ap-mrtg.c:46
-msgid ""
-"Get stats from AP and return it in MRTG parsable format\n"
-"\n"
+#: src/ap-tftp.c:315
+#, c-format
+msgid "%sFlash programming in progress...\n"
 msgstr ""
-"Obtenir les statistiques de l'AP et les retourner dans un format MRTG\n"
-"\n"
 
-#: src/ap-mrtg.c:47
-msgid "-i ip        - AP ip address\n"
-msgstr "-i ip        - adresse ip AP\n"
+#: src/ap-tftp.c:317
+msgid "Finished successfully.\n"
+msgstr ""
 
-#: src/ap-mrtg.c:48
-msgid "-c community - SNMP community string\n"
-msgstr "-c communauté   chaîne de la communauté SNMP\n"
+#: src/ap-tftp.c:335
+msgid "PLEASE BE _ABSOLUTELY_ SURE TO READ MANPAGE PRIOR USE!!!\n"
+msgstr ""
 
-#: src/ap-mrtg.c:50
+#: src/ap-tftp.c:337
+#, c-format
 msgid ""
-"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
-"or <l>ink quality in client mode\n"
+"\n"
+"Usage: %s -i IP -f firmware_file.rom [-c community] [-h]\n"
 msgstr ""
-"-t type      type de statistiques <w> sans fil, <e>thernet, <s>tations "
-"associées ou qualité du <l>ien en mode client\n"
 
-#: src/ap-mrtg.c:52
-msgid ""
-"-b bssid     - mac address of the AP to which get link quality, only if "
-"type=l\n"
+#: src/ap-tftp.c:361
+msgid "TFTP client for upgrading firmware in ATMEL AT76C510 WiSOC-based APs.\n"
 msgstr ""
-"-b bssid     adresse MAC de l'AP pour obtenir la qualité du lien, seulement "
-"si le type=l\n"
 
-#: src/ap-mrtg.c:53
-msgid "-n name     - AP name - for check only\n"
+#: src/ap-tftp.c:363
+msgid "(C) 2004-2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>\n"
 msgstr ""
 
-#: src/ap-mrtg.c:54
-msgid ""
-"-a aptype        - AP type - 410 (default) or 510 for ATMEL12350's, like the "
-"ME-102\n"
+#: src/ap-tftp.c:379
+msgid "Error: invalid IP address format given.\n"
 msgstr ""
 
-#: src/ap-mrtg.c:56
-msgid "-v           - report MRTG about problems connecting to AP\n"
-msgstr "-v           rapporter MRTG à propos de problème de connexion à l'AP\n"
+#: src/ap-tftp.c:405
+#, fuzzy
+msgid "Error: invalid argument combination.\n"
+msgstr "Adresse IP invalide\n"
 
-#: src/ap-mrtg.c:57
-msgid "-r           - reset AP when getting LinkQuality stats\n"
+#: src/ap-tftp.c:412
+msgid "Error while open()ing firmware file"
 msgstr ""
-"-r           réinitialise l'AP lors de l'obtention des statistiques de "
-"LinkQuality\n"
 
-#: src/ap-mrtg.c:58
-msgid ""
-"-h           - print this help screen\n"
-"\n"
+#: src/ap-tftp.c:419 src/ap-tftp.c:472
+msgid "Error: invalid firmware file given.\n"
 msgstr ""
-"-h           afficher l'aide\n"
-"\n"
 
-#: src/ap-mrtg.c:59
-#, fuzzy, c-format
+#: src/ap-tftp.c:461
+#, c-format
 msgid ""
-"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n"
-"\n"
+"Firmware file contains:\n"
+"- string \"ATMEL\": %s\n"
+"- string \"802.11 AP\": %s\n"
+"- string \"atbrfirm.bin\": %s\n"
+"- string \"atsingle.bin\": %s\n"
 msgstr ""
-"ap-mrtg %s Copyright © 2002 Roman Festchook\n"
-"\n"
 
-#: src/ap-mrtg.c:143
-msgid "Invalid IP-address\n"
-msgstr "Adresse IP invalide\n"
-
-#: src/ap-mrtg.c:188
+#: src/ap-tftp.c:485
 #, c-format
-msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n"
+msgid ""
+"Using:\n"
+"- server: %s\n"
+"- firmware file: \"%s\"\n"
+"- name used for upload: \"%s\"\n"
+msgstr ""
+
+#: src/ap-tftp.c:568
+msgid ""
+"Error: device with the given IP does not seem to run SmartBridges firmware.\n"
 msgstr ""
 
-#: src/ap-mrtg.c:207
-msgid "Create socket error"
-msgstr "Erreur de création de socket"
+#: src/ap-tftp.c:574
+msgid "Error: SNMP authorization error or device unavailable.\n"
+msgstr ""
 
-#: src/ap-mrtg.c:211
-msgid "Bind socket error"
-msgstr "Erreur de liaison (bind) du socket"
+#: src/ap-tftp.c:653
+msgid "Error while lseek()ing in firmware file\n"
+msgstr ""
 
-#: src/ap-trapd.c:148
+#: src/ap-trapd.c:150
 #, c-format
 msgid "ap-trapd %s started%s%s."
 msgstr "ap-trapd %s démarré%s%s"
 
-#: src/ap-trapd.c:149
+#: src/ap-trapd.c:151
 msgid " on "
 msgstr " on "
 
-#: src/ap-trapd.c:155
+#: src/ap-trapd.c:157
 msgid "Unable to fork. Exiting."
 msgstr "Incapable de fork(). Fin d'exécution."
 
-#: src/ap-trapd.c:159
+#: src/ap-trapd.c:161
 msgid "Can't create socket. Exiting."
 msgstr "Ne créer le socket. Fin d'exécution."
 
-#: src/ap-trapd.c:165
+#: src/ap-trapd.c:167
 msgid "Can't bind socket. Exiting."
 msgstr "Ne peut établir la liaison sur le socket. Fin d'exécution."
 
-#: src/ap-trapd.c:172
+#: src/ap-trapd.c:174
 #, c-format
 msgid "Can't bind to device %s. Exiting."
 msgstr "Ne peut établir la liaison (bind) %s. Fin d'exécution."
 
-#: src/ap-trapd.c:183
+#: src/ap-trapd.c:185
 #, c-format
 msgid "Unable to process username %s. Error: %m."
 msgstr "Incapable de traiter avec le nom d'usager %s. Erreur: %m."
 
-#: src/ap-trapd.c:188
+#: src/ap-trapd.c:190
 #, c-format
 msgid "Unable to change to uid %d."
 msgstr "Incapable de changer de UID %d"
 
-#: src/ap-trapd.c:235
+#: src/ap-trapd.c:239
 #, c-format
 msgid ""
 "Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s."
@@ -1701,32 +2036,204 @@ msgstr ""
 "Réception d'une trappe SNMP inconnu ver. %d. À partir de %s:%d. Agent: %s. "
 "Communauté: %s."
 
-#: src/ap-trapd.c:307
-#, c-format
-msgid "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d"
+#: src/ap-trapd.c:311
+#, fuzzy, c-format
+msgid "Agent:v%d %s (%s@%s:%d) Trap %i: %s%s%s. SysUptime %d:%02d:%02d.%02d"
 msgstr "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d"
 
-#: src/auth_mac.c:33
+#: src/auth.c:30
+msgid "APClient authorization credentials"
+msgstr ""
+
+#: src/auth.c:32
+msgid "[A] MAC authorization: "
+msgstr "[A] Autorisation Mac: "
+
+#: src/auth.c:33
+msgid "Enter MAC: "
+msgstr "Entrer MAC: "
+
+#: src/auth.c:34
+msgid "Delete Num: "
+msgstr "Détruire Num: "
+
+#: src/auth.c:35
 #, fuzzy
-msgid "NUM     MAC address"
+msgid " NUM     MAC address     "
 msgstr "NUM     MAC address"
 
+#: src/auth.c:36
+#, fuzzy
+msgid "A: auth; N: new; D: del; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A - autor.; N - nouveau; D - détruire; flèches - défiler; W - sauvegarder la "
+"config.; Q - quitter"
+
+#: src/auth.c:38
+msgid "[I] Radius server IP: "
+msgstr ""
+
+#: src/auth.c:39
+#, fuzzy
+msgid "[P] Radius server port: "
+msgstr "[P] Port primaire: "
+
+#: src/auth.c:40
+msgid "[S] Radius server secret: "
+msgstr ""
+
+#: src/auth.c:41
+#, fuzzy
+msgid "[T] Reauthorization time (minutes): "
+msgstr "[A] Autorisation Mac: "
+
+#: src/auth.c:42
+msgid "[F] Radius source port: "
+msgstr ""
+
+#: src/auth.c:43
+#, fuzzy
+msgid ""
+"A: auth; N: new; D: del; IPSTF: set; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A - autor.; N - nouveau; D - détruire; flèches - défiler; W - sauvegarder la "
+"config.; Q - quitter"
+
+#: src/auth.c:45
+#, fuzzy
+msgid "[M] 802.1x authorization: "
+msgstr "[A] Autorisation Mac: "
+
+#: src/auth.c:46
+#, fuzzy
+msgid "[T] key broadcasting time period (seconds): "
+msgstr "[B] période de la balise (msec): "
+
+#: src/auth.c:47
+msgid "[I] 802.1x auth. server IP: "
+msgstr ""
+
+#: src/auth.c:48
+msgid "[S] 802.1x auth. server secret: "
+msgstr ""
+
+#: src/auth.c:49
+#, fuzzy
+msgid ""
+"A: auth; N: new; D: del; MTIS: set; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A - autor.; N - nouveau; D - détruire; flèches - défiler; W - sauvegarder la "
+"config.; Q - quitter"
+
+#: src/auth.c:114
+msgid "Internal"
+msgstr "Interne"
+
+#: src/auth.c:116
+#, fuzzy
+msgid "Radius"
+msgstr "Radio"
+
+#: src/auth.c:121
+msgid "Allow listed MACs only"
+msgstr ""
+
+#: src/auth.c:123
+msgid "Deny listed MACs only"
+msgstr ""
+
+#: src/auth.c:129
+msgid "Mixed environment"
+msgstr ""
+
+#: src/auth.c:213
+msgid "(not shown)"
+msgstr ""
+
+#: src/auth.c:276
+#, fuzzy
+msgid "Authorized MAC addresses:"
+msgstr "MAC adresses autorisées"
+
+#: src/auth.c:345
+msgid "(insufficient community used)"
+msgstr ""
+
+#: src/auth.c:472
+#, c-format
+msgid "Given MAC already exists in MAC list at position %d. Press any key."
+msgstr ""
+
+#: src/bridge.c:27
+msgid "[I] IP: "
+msgstr "[I] IP: "
+
+#: src/bridge.c:28
+msgid "[N] Netmask: "
+msgstr "[N] Netmask: "
+
+#: src/bridge.c:29
+msgid "[G] Gateway: "
+msgstr "[G] Passerelle (gateway): "
+
+#: src/bridge.c:30
+msgid "[F] Filter non-IP traffic: "
+msgstr "[F] Filtrer le traffic non IP: "
+
+#: src/bridge.c:31
+msgid "[P] Primary port: "
+msgstr "[P] Port primaire: "
+
+#: src/bridge.c:32
+msgid "Attached station MAC: "
+msgstr "Station rattachée MAC: "
+
+#: src/bridge.c:33
+msgid "[D] DHCP client: "
+msgstr "[D] DHCP client: "
+
+#: src/bridge.c:34
+msgid "[O] Operational mode: "
+msgstr "[O] Mode opérationnel: "
+
 #: src/bridge.c:35
+msgid "[M] Preferred BSSID (remote MAC addr.): "
+msgstr "[M] BSSIS préféré (adresse MAC distante): "
+
+#: src/bridge.c:36
 msgid "[C] Configuration-enabled port(s): "
-msgstr ""
+msgstr "[C] ports autorisés de configuration): "
+
+#: src/bridge.c:37
+#, fuzzy
+msgid "[T] Trap-sending port: "
+msgstr "[T] ports trappe d'expédition: "
 
 #: src/bridge.c:38
-msgid "[B] Isolate wireless clients (broadcast traffic): "
-msgstr ""
+msgid "[R] Forward broadcast traffic: "
+msgstr "[R] trafic de diffusion relayé: "
 
 #: src/bridge.c:39
+msgid "[B] Isolate wireless clients (broadcast traffic): "
+msgstr "[B] isoler les clients sans fil (trafic de diffusion - broadcast): "
+
+#: src/bridge.c:40
 msgid "[U] Isolate wireless clients (unicast traffic): "
-msgstr ""
+msgstr "[U] isoler les clients sans fil (trafic unicast): "
+
+#: src/bridge.c:41
+#, fuzzy
+msgid "INGFPDOMSCRBUT - set; W - write conf; Q - quit to menu"
+msgstr "INGFPDOMSCTRBU - initialiser; W - sauvegarder la config.; Q - quitter"
 
-#: src/bridge.c:119
+#: src/bridge.c:128
 #, fuzzy
+msgid "Wireless (can be risky)"
+msgstr "Paramétrage du sans fil"
+
+#: src/bridge.c:129
 msgid "Both"
-msgstr "Les deux types"
+msgstr "Ensemble"
 
 #: src/nwn_advanced.c:60
 #, c-format
@@ -1765,7 +2272,6 @@ msgid "Deauthenticate:"
 msgstr "Désauthentifier:"
 
 #: src/nwn_latest.c:103
-#, fuzzy
 msgid "Authenticate Fail:"
 msgstr "Échec d'authentification:"
 
@@ -1777,85 +2283,100 @@ msgstr "Derni
 msgid "Error:"
 msgstr "Erreur:"
 
-#: src/stations.c:33
-msgid "AP link state"
+#: src/stations.c:82
+msgid "Not available (device not in AP mode)."
 msgstr ""
 
-#: src/stations.c:37
-msgid " #            MAC                                               "
-msgstr ""
+#: src/stations.c:92
+#, fuzzy
+msgid "  #     MAC       Parent MAC  RSSI   LQ Sts MACn      IP        "
+msgstr " #     MAC       Parent MAC    RSSI  État   MACn      IP        "
 
-#: src/stations.c:40
-msgid " #     MAC       Parent MAC    RSSI  Status MACn      IP        "
-msgstr ""
+#: src/stations.c:136
+msgid "AssociatedSTAsInfo packet error"
+msgstr "Erreur de paquet AssociatedSTAsInfo"
 
-#: src/stations.c:195 src/stations.c:367
-#, fuzzy
+#: src/stations.c:189 src/stations.c:363
 msgid ""
 "Arrows - scroll; S - save to file; Q - return; T - toggle view; Other - "
 "refresh"
 msgstr ""
-"Flècher - défiler; S - sauvegarder dans un fichier; Q - quitter vers le menu."
+"Flèches - défiler; S - sauvegarder dans un fichier; Q - quitter vers le "
+"menu; T - Basculer de vue; Autre touche - rafraîchir"
 
-#: src/stations.c:200
-#, fuzzy
+#: src/stations.c:193
 msgid "Arrows - scroll; S - save to file; Q - return; Other key - refresh"
 msgstr ""
-"Flècher - défiler; S - sauvegarder dans un fichier; Q - quitter vers le menu."
+"Flèches - défiler; S - sauvegarder dans un fichier; Q - quitter vers le "
+"menu; Autre touche - rafraîchir"
 
-#: src/stations.c:279
-#, fuzzy
+#: src/stations.c:275
 msgid "Id       MAC address     Quality  Age  RSSI"
-msgstr "Id      Adresse MAC     Qualité  Âge  RSSI"
+msgstr "Id       Adresse MAC     Qualité  Âge  RSSI"
 
-#~ msgid "Associated Stations"
-#~ msgstr "Stations associées"
-
-#, fuzzy
-#~ msgid ""
-#~ "(Y - Yes; N - No (it's safer to answer No, unless you really need this.)"
+#~ msgid "Please enter SNMP community name that will be used for AP detection."
 #~ msgstr ""
-#~ "(Y - Oui; N - Non (il est plus sûr de répondre Non, à moins d'avoir "
-#~ "vraiment besoin de cela.)"
+#~ "SVP fournir le nom de la communauté SNMP qui sera utilisé pour la "
+#~ "détection de Points d'accès"
 
-#, fuzzy
-#~ msgid "Determining AP type. Please wait..."
-#~ msgstr "Récupérationd des données du point d'accès. SVP patientez..."
+#~ msgid "Create socket error. Press any key."
+#~ msgstr "Erreur de création du socket. Appuyer sur n'importe quelle touche."
 
-#, fuzzy
-#~ msgid "Regulation domain: %s [%d]"
-#~ msgstr "Domaine régulateur: %s"
+#~ msgid "Bind socket error. Press any key."
+#~ msgstr "Erreur de liaison de socket (bind). Appuyer sur une touche."
 
-#, fuzzy
-#~ msgid "(Y - Yes; N - No (it's safer to answer No.)"
-#~ msgstr "(Y - Oui; N - Non (il est plus sûr de répondre Non)"
+#~ msgid "Create socket error"
+#~ msgstr "Erreur de création de socket"
 
-#~ msgid "Unable to get data from AP. Press Q to continue."
+#~ msgid "Bind socket error"
+#~ msgstr "Erreur de liaison (bind) du socket"
+
+#~ msgid "NUM       MAC address"
+#~ msgstr "NUM       adresse MAC"
+
+#~ msgid "A - auth; IPSTF - set; W - write conf; Q - quit"
 #~ msgstr ""
-#~ "Incapable d'obtenir des données du point d'accès. Appuyer Q pour "
-#~ "continuer."
+#~ "A - auth; IPSTF - initialiser; W - sauvegarder la config.; Q - quitter"
 
-#~ msgid "Q - quit to menu."
-#~ msgstr "Q - quitter vers le menu."
+#~ msgid "A - auth; W - write conf; Q - quit"
+#~ msgstr "A - auth; W - sauvegarder la configuration; Q - quitter"
 
-#~ msgid "pipe error. Press any key."
-#~ msgstr "erreur de pipe. Appuyer sur une touche."
+#~ msgid "[I] RADIUS SERVER IP: "
+#~ msgstr "[I] IP DU SERVEUR RADIUS: "
 
-#~ msgid "fork error. Press any key."
-#~ msgstr "erreur de fork(). Appuyer sur une touche."
+#~ msgid "[P] RADIUS SERVER PORT: "
+#~ msgstr "[P] PORT DU SERVEUR RADIUS: "
 
-#~ msgid "pipe error. Press any key"
-#~ msgstr "erreur du pipe. Appuyer sur une touche."
+#~ msgid "[S] RADIUS SERVER SECRET: "
+#~ msgstr "[S] SECRET DU SERVEUR RADIUS: "
 
-#~ msgid "fcntl error. Press any key"
-#~ msgstr "erreur fcntl(). Appuyer sur une touche."
+#~ msgid "[T] REAUTHORIZATION TIME: "
+#~ msgstr "[T] TEMPS DE RÉ-AUTORISATION: "
 
-#~ msgid "fork error. Press any key"
-#~ msgstr "erreur de fork(). Appuyer sur une touche."
+#~ msgid "[F] RADIUS SOURCE PORT: "
+#~ msgstr "[F] PORT DU RADIUS SOURCE: "
 
-#, fuzzy
-#~ msgid "Id       MAC address"
-#~ msgstr "Id      Adresse MAC"
+#~ msgid "<hidden>"
+#~ msgstr "<caché>"
+
+#~ msgid "[U] Isolate wireless clients: "
+#~ msgstr "[U] clients sans fil isolé: "
+
+#~ msgid "AP is currently in AP Client Mode => no associated STAtions."
+#~ msgstr ""
+#~ "Point d'accès est actuellement en mode client => pas de stations "
+#~ "associées."
+
+#~ msgid "#     MAC       LQ    RSSI   Status Port IP"
+#~ msgstr "#     MAC       LQ    RSSI   État   Port IP"
+
+#~ msgid "Arrows - scroll; S - save to file; Q - quit to menu."
+#~ msgstr ""
+#~ "Flècher - défiler; S - sauvegarder dans un fichier; Q - quitter vers le "
+#~ "menu."
+
+#~ msgid " #            MAC                                               "
+#~ msgstr " #            MAC                                               "
 
 #~ msgid "on"
 #~ msgstr "on"
@@ -1889,9 +2410,18 @@ msgstr "Id      Adresse MAC     Qualit
 #~ msgid "[R] Remote Mac addr: %02X%02X%02X%02X%02X%02X"
 #~ msgstr "[R] Adresse Mac distante: %02X%02X%02X%02X%02X%02X"
 
+#~ msgid "(Y - Yes; N - No (it's safer to ansver No.)"
+#~ msgstr "(Y - Oui; N - Non (il est plus sûr de répondre Non)"
+
 #~ msgid "[T] Test Mode: Off"
 #~ msgstr "[T] mode test: Off"
 
+#~ msgid ""
+#~ "(Y - Yes; N - No (it's safer to ansver No, unless you really need this.)"
+#~ msgstr ""
+#~ "(Y - Oui; N - Non (il est plus sûr de répondre Non, à moins d'avoir "
+#~ "vraiment besoin de cela.)"
+
 #~ msgid "Using this option may cause lost of current configuration."
 #~ msgstr ""
 #~ "L'utilisation de cette option peut provoquer la perte de configuration "
@@ -1911,6 +2441,32 @@ msgstr "Id      Adresse MAC     Qualit
 #~ msgid "CN: Channel; RSSI: Signal Strenght; LQ: Link Quality"
 #~ msgstr "CN: canal; RSSI: force du signal; LQ; qualité du lien"
 
+#~ msgid "Unable to get data from AP. Press Q to continue."
+#~ msgstr ""
+#~ "Incapable d'obtenir des données du point d'accès. Appuyer Q pour "
+#~ "continuer."
+
+#~ msgid "Q - quit to menu."
+#~ msgstr "Q - quitter vers le menu."
+
+#~ msgid "pipe error. Press any key."
+#~ msgstr "erreur de pipe. Appuyer sur une touche."
+
+#~ msgid "pipe error. Press any key"
+#~ msgstr "erreur du pipe. Appuyer sur une touche."
+
+#~ msgid "fcntl error. Press any key"
+#~ msgstr "erreur fcntl(). Appuyer sur une touche."
+
+#~ msgid "fork error. Press any key"
+#~ msgstr "erreur de fork(). Appuyer sur une touche."
+
+#~ msgid "Associated Stations"
+#~ msgstr "Stations associées"
+
+#~ msgid "Id      MAC address"
+#~ msgstr "Id      Adresse MAC"
+
 #~ msgid "SysInfo:"
 #~ msgstr "SysInfo:"
 
index 2617ed365c42751a6f0790b5cfeee94815abbec0..7d574902d90028ceb70562ba7d499c3c3c50c493 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: ap-utils 1.3.2-pre3\n"
-"POT-Creation-Date: 2004-11-28 00:59+0200\n"
+"POT-Creation-Date: 2005-03-07 01:13+0200\n"
 "PO-Revision-Date: 2003-07-31 19:03+0100\n"
 "Last-Translator: Elros Cyriatan <cyriatan@fastmail.fm>\n"
 "Language-Team: Dutch <vertaling@nl.linux.org>\n"
@@ -15,392 +15,81 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Report-Msgid-Bugs-To: \n"
 
-#: ap-gl/ap-gl.c:41 ap-gl/bridge.c:178 src/ap-config.c:41 src/bridge.c:182
-msgid "Bridging"
-msgstr ""
-
-#: ap-gl/ap-gl.c:41 src/ap-config.c:41
-#, fuzzy
-msgid "Set bridging and IP-related options"
-msgstr "Bridging en IP-gerelateerde opties instellen"
-
-#: ap-gl/ap-gl.c:43 ap-gl/ap-gl.c:81 ap-gl/bridge.c:132 src/ap-config.c:43
-#: src/ap-config.c:112 src/ap-config.c:120 src/bridge.c:117 src/bridge.c:121
-msgid "Wireless"
-msgstr "Draadloos"
-
-#: ap-gl/ap-gl.c:43 src/ap-config.c:43
-msgid "Set wireless options"
-msgstr "Draadloze opties instellen"
-
-#: ap-gl/ap-gl.c:44 src/ap-config.c:44 src/ap-config.c:56
-msgid "Privacy"
-msgstr "Privacy"
-
-#: ap-gl/ap-gl.c:45 src/ap-config.c:45 src/ap-config.c:57
-#, fuzzy
-msgid "MAC auth"
-msgstr "Mac toelating"
-
-#: ap-gl/ap-gl.c:46 src/ap-config.c:46 src/ap-config.c:58
-msgid "Community"
-msgstr "Gemeenschap"
-
-#: ap-gl/ap-gl.c:47 src/ap-config.c:47
-msgid "Radio"
-msgstr "Radio"
-
-#: ap-gl/ap-gl.c:47 src/ap-config.c:47
-msgid "Set radio signal power and antenna options"
-msgstr "Vermogen radio en antenne opties instellen"
-
-#: ap-gl/ap-gl.c:62 src/ap-config.c:80
-msgid "Upload"
-msgstr "Uploaden"
-
-#: ap-gl/ap-gl.c:62 src/ap-config.c:80
-#, fuzzy
-msgid "Activate current configuration"
-msgstr "Huidige configuratie actief maken"
-
-#: ap-gl/ap-gl.c:63 src/ap-config.c:81
-msgid "Defaults"
-msgstr "Standaardwaarden"
-
-#: ap-gl/ap-gl.c:63 src/ap-config.c:81
-msgid "Restore factory default settings"
-msgstr "Fabrieksinstellingen terugzetten"
-
-#: ap-gl/ap-gl.c:64 src/ap-config.c:82 src/ap-config.c:89
-msgid "Reset"
-msgstr "Opnieuw instellen"
-
-#: ap-gl/ap-gl.c:65 src/ap-config.c:83
-msgid "Reset AP. All not uploaded configuration will be lost"
-msgstr ""
-"AP opnieuw instellen. Alle niet verzonden instellingen zullen verloren gaan."
-
-#: ap-gl/ap-gl.c:66 src/ap-config.c:84
-msgid "TestMode"
-msgstr "Testmodus"
-
-#: ap-gl/ap-gl.c:66 src/ap-config.c:84
-msgid "Put Access Point in test mode"
-msgstr "Access Point in testmodus zetten"
-
-#: ap-gl/ap-gl.c:79 src/ap-config.c:110 src/ap-config.c:119
-msgid "SysInfo"
-msgstr "SysInfo"
-
-#: ap-gl/ap-gl.c:80 ap-gl/bridge.c:131 src/ap-config.c:111 src/bridge.c:116
-#: src/bridge.c:120
-msgid "Ethernet"
-msgstr "Ethernet"
-
-#: ap-gl/ap-gl.c:80 src/ap-config.c:111
-msgid "Get ethernet port statistics"
-msgstr "Ethernet poortstatistieken opvragen"
-
-#: ap-gl/ap-gl.c:82 src/ap-config.c:113 src/ap-config.c:121
-msgid "Stations"
-msgstr "Stations"
-
-#: ap-gl/ap-gl.c:83 src/ap-config.c:114
-msgid "KnownAPs"
-msgstr "BekendeAPs"
-
-#: ap-gl/ap-gl.c:83 src/ap-config.c:114
-msgid "Get info about known Access Points"
-msgstr "Info opvragen over bekende Access Points"
-
-#: ap-gl/ap-gl.c:100 src/ap-config.c:147
-msgid "Info"
-msgstr "Info"
-
-#: ap-gl/ap-gl.c:101 src/ap-config.c:148
-msgid "Config"
-msgstr "Config"
-
-#: ap-gl/ap-gl.c:102 src/ap-config.c:149
-msgid "Commands"
-msgstr "Opdrachten"
-
-#: ap-gl/ap-gl.c:102 src/ap-config.c:149
-msgid "Execute commands on Access Point"
-msgstr "Opdrachten uitvoeren op Access Point"
-
-#: ap-gl/ap-gl.c:104 src/ap-config.c:151
-msgid "Connect"
-msgstr "Verbinden"
-
-#: ap-gl/ap-gl.c:105 src/ap-config.c:152
-msgid "Search"
-msgstr "Zoeken"
-
-#: ap-gl/ap-gl.c:106 lib/common.c:83 src/ap-config.c:153
-msgid "About"
-msgstr "Info"
-
-#: ap-gl/ap-gl.c:107 src/ap-config.c:154
-msgid "Shell"
-msgstr "Shell"
-
-#: ap-gl/ap-gl.c:108 src/ap-config.c:155
-msgid "Exit"
-msgstr "Afsluiten"
-
-#: ap-gl/ap-gl.c:158 src/ap-config.c:204
-#, c-format
-msgid "Wireless Access Point Configurator ver. %s"
-msgstr "Draadloos Access Point configurator versie %s"
-
-#: ap-gl/auth_mac.c:27 src/auth_mac.c:27
-msgid "AuthorizedMacTableString packet error"
-msgstr "AuthorizedMacTableString pakketfout"
-
-#: ap-gl/auth_mac.c:29 src/auth_mac.c:29
-#, fuzzy
-msgid "[A] MAC authorization: "
-msgstr "[A] Mac toelating: %s"
-
-#: ap-gl/auth_mac.c:30 src/auth_mac.c:30
-#, fuzzy
-msgid "Enter MAC: "
-msgstr "Geef Mac:"
-
-#: ap-gl/auth_mac.c:31 src/auth_mac.c:31
-#, fuzzy
-msgid "Delete Num: "
-msgstr "Nummer verwijderen:"
-
-#: ap-gl/auth_mac.c:32 src/auth_mac.c:32
-#, fuzzy
-msgid "Authorized MAC addresses"
-msgstr "Toegelaten Mac adressen"
-
-#: ap-gl/auth_mac.c:33
-#, fuzzy
-msgid "NUM       MAC address"
-msgstr "NUM     MAC adres"
-
-#: ap-gl/auth_mac.c:34 src/auth_mac.c:34
-msgid "A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit"
-msgstr ""
-"A - toelaten; N - nieuw; D - verwijderen; pijltjes - schuiven; W - conf "
-"schrijven; Q - afsluiten"
-
-#: ap-gl/auth_mac.c:35
-#, fuzzy
-msgid "A - auth; IPSTF - set; W - write conf; Q - quit"
-msgstr "DA - opties; W - conf schrijven; Q - afsluiten naar menu"
-
-#: ap-gl/auth_mac.c:36
-#, fuzzy
-msgid "A - auth; W - write conf; Q - quit"
-msgstr "DA - opties; W - conf schrijven; Q - afsluiten naar menu"
-
-#: ap-gl/auth_mac.c:38
-msgid "[I] RADIUS SERVER IP: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:39
-msgid "[P] RADIUS SERVER PORT: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:40
-msgid "[S] RADIUS SERVER SECRET: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:41
-msgid "[T] REAUTHORIZATION TIME: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:42
-msgid "[F] RADIUS SOURCE PORT: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:87
-#, fuzzy
-msgid "Internal"
-msgstr "Algemeen"
-
-#: ap-gl/auth_mac.c:95
-msgid "<hidden>"
-msgstr ""
-
-#: ap-gl/bridge.c:26 src/bridge.c:26
-msgid "[I] IP: "
-msgstr ""
-
-#: ap-gl/bridge.c:27 src/bridge.c:27
-#, fuzzy
-msgid "[N] Netmask: "
-msgstr "[N] Netmask: %s"
-
-#: ap-gl/bridge.c:28 src/bridge.c:28
-#, fuzzy
-msgid "[G] Gateway: "
-msgstr "[G] Gateway %s"
-
-#: ap-gl/bridge.c:29 src/bridge.c:29
-#, fuzzy
-msgid "[F] Filter non-IP traffic: "
-msgstr "[F] Niet-IP verkeer filteren: %s"
-
-#: ap-gl/bridge.c:30 src/bridge.c:30
-#, fuzzy
-msgid "[P] Primary port: "
-msgstr "[P] Hoofdpoort: %s"
-
-#: ap-gl/bridge.c:31 src/bridge.c:31
-#, fuzzy
-msgid "Attached station MAC: "
-msgstr "Verbonden station MAC: %02X%02X%02X%02X%02X%02X"
-
-#: ap-gl/bridge.c:32 src/bridge.c:32
-#, fuzzy
-msgid "[D] DHCP client: "
-msgstr "[D] DHCP-protocol: %s"
-
-#: ap-gl/bridge.c:33 src/bridge.c:33
-#, fuzzy
-msgid "[O] Operational mode: "
-msgstr "[O] Operationele modus: %s"
-
-#: ap-gl/bridge.c:34 src/bridge.c:34
-#, fuzzy
-msgid "[M] Preferred BSSID (remote MAC addr.): "
-msgstr "[R] Mac adres op afstand: %02X%02X%02X%02X%02X%02X"
-
-#: ap-gl/bridge.c:36 src/bridge.c:36
-msgid "[T] Trap-sending port(s): "
-msgstr ""
-
-#: ap-gl/bridge.c:37 src/bridge.c:37
-msgid "[R] Forward broadcast traffic: "
-msgstr ""
-
-#: ap-gl/bridge.c:39
-msgid "[U] Isolate wireless clients: "
-msgstr ""
-
-#: ap-gl/bridge.c:40 src/bridge.c:40
-#, fuzzy
-msgid "INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu"
-msgstr "BPGINFDRT - instellen; W - conf schrijven; Q - afsluiten naar menu"
-
-#: ap-gl/bridge.c:124 src/bridge.c:109
-msgid "Wireless Bridge Point to MultiPoint"
-msgstr ""
-
-#: ap-gl/bridge.c:125 src/bridge.c:110
-msgid "Access Point"
-msgstr "Access Point"
-
-#: ap-gl/bridge.c:126 src/bridge.c:111
-msgid "Access Point client"
-msgstr "Access Point client"
-
-#: ap-gl/bridge.c:127 src/bridge.c:112
-msgid "Wireless Bridge Point to Point"
-msgstr ""
-
-#: ap-gl/bridge.c:128 src/bridge.c:113
-msgid "Repeater"
-msgstr "Repeater"
-
-#: ap-gl/stations.c:77 src/stations.c:100
-msgid "AP is currently in AP Client Mode => no associated STAtions."
-msgstr ""
-
-#: ap-gl/stations.c:102
-msgid "#     MAC       LQ    RSSI   Status Port IP"
-msgstr ""
-
-#: ap-gl/stations.c:128 src/stations.c:159
-msgid "AssociatedSTAsInfo packet error"
-msgstr "AssociatedSTAsInfo pakketfout"
-
-#: ap-gl/stations.c:160
-msgid "Arrows - scroll; S - save to file; Q - quit to menu."
-msgstr ""
-"Pijltjes - schuiven; S - opslaan naar bestand; Q - afsluiten naar menu."
-
-#: lib/aps.c:29
+#: lib/aps.c:30
 msgid "Known Access Points"
 msgstr "Bekende Access Points"
 
-#: lib/aps.c:129
+#: lib/aps.c:130
 msgid "Your Access Point is not in \"AP client\" mode => getting"
 msgstr ""
 
-#: lib/aps.c:132
+#: lib/aps.c:133
 msgid "up-to-date \"Known APs\" info requires your AP to be"
 msgstr ""
 
-#: lib/aps.c:135
+#: lib/aps.c:136
 msgid "temporarily configured into \"AP client\" mode and rebooted."
 msgstr ""
 
-#: lib/aps.c:138
+#: lib/aps.c:139
 msgid "Your AP will be reconfigured back to original mode by this"
 msgstr ""
 
-#: lib/aps.c:141
+#: lib/aps.c:142
 msgid "utility once you quit the \"KnownAP\" view. This, in turn, may"
 msgstr ""
 
-#: lib/aps.c:144
+#: lib/aps.c:145
 #, fuzzy
 msgid "cause loss of Access Point's current configuration."
 msgstr "Draadloos Access Point configurator"
 
-#: lib/aps.c:148
+#: lib/aps.c:149
 msgid "Do NOT answer \"Yes\" if you're connected to the Access Point"
 msgstr ""
 
-#: lib/aps.c:151
+#: lib/aps.c:152
 #, fuzzy
 msgid "via its wireless port."
 msgstr "Draadloze opties instellen"
 
-#: lib/aps.c:153 lib/cmd.c:45 lib/cmd.c:75 lib/test.c:91
+#: lib/aps.c:154 lib/cmd.c:45 lib/cmd.c:75 lib/test.c:96
 msgid "Do you want to continue? "
 msgstr "Wilt u doorgaan?"
 
-#: lib/aps.c:207
+#: lib/aps.c:208
 msgid "NetworkType"
 msgstr "Soort netwerk"
 
-#: lib/aps.c:283
+#: lib/aps.c:284
 msgid "Infrastructure"
 msgstr "Infrastructuur"
 
-#: lib/aps.c:343 lib/aps.c:351 lib/aps.c:359
+#: lib/aps.c:344 lib/aps.c:352 lib/aps.c:360
 msgid "CN: Channel Name; P: Preambule Type (S: Short; L: Long);"
 msgstr ""
 
-#: lib/aps.c:345
+#: lib/aps.c:346
 msgid "RSSI: Radio Signal Strength Indicator [%]"
 msgstr ""
 
-#: lib/aps.c:347 lib/aps.c:355
+#: lib/aps.c:348 lib/aps.c:356
 msgid "; LQ: Link Quality [%]"
 msgstr ""
 
-#: lib/aps.c:353
+#: lib/aps.c:354
 msgid "RSSI: Radio Signal Strength Indicator [dBm]"
 msgstr ""
 
-#: lib/aps.c:361
+#: lib/aps.c:362
 msgid "RSSI: Radio Signal Strength Indicator [raw]"
 msgstr ""
 
-#: lib/aps.c:363
+#: lib/aps.c:364
 msgid "; LQ: Link Q. [raw]"
 msgstr ""
 
-#: lib/aps.c:369
+#: lib/aps.c:370
 #, fuzzy
 msgid ""
 "# con. to AP #; R refresh with reset; T toggle; Q quit; Other = refr. w/o "
@@ -409,7 +98,7 @@ msgstr ""
 "# verbinden met deze AP; R verversen met opnieuw instellen; G verversen "
 "zonder opnieuw instellen; Q afsluiten"
 
-#: lib/aps.c:371
+#: lib/aps.c:372
 #, fuzzy
 msgid ""
 "# con. to AP #; R initiate AP scan; T toggle view; Q quit; Other = refresh "
@@ -418,44 +107,44 @@ msgstr ""
 "# verbinden met deze AP; R verversen met opnieuw instellen; G verversen "
 "zonder opnieuw instellen; Q afsluiten"
 
-#: lib/aps.c:500 lib/ap_search.c:167
+#: lib/aps.c:501 lib/ap_search.c:173
 #, fuzzy, c-format
 msgid "Failure in sendto(): %s. Press any key."
 msgstr "Onjuist sendto: %s. Druk op een toets."
 
-#: lib/aps.c:509
+#: lib/aps.c:510
 msgid "You have just initiated the AP scan. Be advised that it may"
 msgstr ""
 
-#: lib/aps.c:512
+#: lib/aps.c:513
 msgid "take a few seconds for your Access Point to find out some"
 msgstr ""
 
-#: lib/aps.c:515
+#: lib/aps.c:516
 msgid "values, so expect finishing the scan in about 5 seconds."
 msgstr ""
 
-#: lib/aps.c:518
+#: lib/aps.c:519
 msgid "Also note that your Access Point stops forwarding the network"
 msgstr ""
 
-#: lib/aps.c:521
+#: lib/aps.c:522
 msgid "traffic while the scan is in progress, but restores itself"
 msgstr ""
 
-#: lib/aps.c:524
+#: lib/aps.c:525
 msgid "to normal operation in time ranging up to 1 minute."
 msgstr ""
 
-#: lib/aps.c:527
+#: lib/aps.c:528
 msgid "Hence, if you are connected to target Access Point via its"
 msgstr ""
 
-#: lib/aps.c:530
+#: lib/aps.c:531
 msgid "wireless port, you need to wait a bit longer"
 msgstr ""
 
-#: lib/aps.c:533
+#: lib/aps.c:534
 msgid "after pressing 'S'."
 msgstr ""
 
@@ -466,284 +155,298 @@ msgstr "Gemeenschap"
 
 #: lib/ap_search.c:49
 #, fuzzy
-msgid "  NUM  IP ADDRESS       MIB TYPE    NAME"
+msgid "  NUM  IP ADDRESS       MIB TYPE    FW TYPE (VERSION) AP NAME"
 msgstr "NUMMER    IP ADRES     SOORT"
 
-#: lib/ap_search.c:100
+#: lib/ap_search.c:106
 msgid "Please wait while scanning, or press 'Q' to quit."
 msgstr ""
 
-#: lib/ap_search.c:116
+#: lib/ap_search.c:122
 #, fuzzy
 msgid "Can't set broadcast option on socket. Press any key."
 msgstr "Kan broadcast optie naar socket niet instellen. Druk op een toets."
 
-#: lib/ap_search.c:125
+#: lib/ap_search.c:131
 #, fuzzy
 msgid "Can't set multicast membership on socket. Press any key."
 msgstr "Kan multicast deelname naar socket niet instellen. Druk op een toets."
 
-#: lib/ap_search.c:132
+#: lib/ap_search.c:138
 msgid "Scanning via network interface:"
 msgstr ""
 
-#: lib/ap_search.c:133
+#: lib/ap_search.c:139
 #, c-format
 msgid "  Index: %i"
 msgstr ""
 
-#: lib/ap_search.c:135
+#: lib/ap_search.c:141
 #, fuzzy, c-format
 msgid "  Name: %s"
 msgstr "[N] AP naam:"
 
-#: lib/ap_search.c:137
+#: lib/ap_search.c:143
 #, c-format
 msgid "  IP: %s"
 msgstr ""
 
-#: lib/ap_search.c:146
+#: lib/ap_search.c:152
 #, c-format
 msgid "Scanning for AP with MIB type: %s"
 msgstr ""
 
-#: lib/ap_search.c:334
-msgid "Please enter SNMP community name that will be used for AP detection."
-msgstr ""
-
-#: lib/ap_search.c:345
+#: lib/ap_search.c:378
 msgid "Access Points Search"
 msgstr "Access Points zoeken"
 
-#: lib/ap_search.c:363
+#: lib/ap_search.c:396
 #, fuzzy
 msgid "realloc() error."
 msgstr "Fout bij maken socket"
 
-#: lib/ap_search.c:375
+#: lib/ap_search.c:408
 msgid "Network interface discovery error."
 msgstr ""
 
-#: lib/ap_search.c:450
+#: lib/ap_search.c:483
 #, fuzzy
 msgid "No local network interfaces found. Press any key."
 msgstr "fork() fout. Druk op een toets."
 
-#: lib/ap_search.c:452
+#: lib/ap_search.c:485
 msgid "No directly reachable Access Points found. Press any key."
 msgstr ""
 
-#: lib/ap_search.c:457
+#: lib/ap_search.c:490
 msgid "Single-screen maximum number of APs found."
 msgstr ""
 
-#: lib/ap_search.c:460
+#: lib/ap_search.c:493
 #, fuzzy
 msgid "# - connect to AP; Q - quit"
 msgstr "Verbinden met AP nummer:"
 
-#: lib/ap-utils.h:79
+#: lib/ap-utils.h:82
 #, fuzzy
 msgid "MAC address: "
 msgstr "IP-adres: %s"
 
-#: lib/ap-utils.h:80
+#: lib/ap-utils.h:83
 #, fuzzy
 msgid "[S] SNMP traps: "
 msgstr "[S] SNMP vallen: %s"
 
-#: lib/ap-utils.h:82
+#: lib/ap-utils.h:85
 #, fuzzy
 msgid "[C] Frequency channel: "
 msgstr "[C] Frequentiekanaal: %02u (%u MHz)"
 
-#: lib/ap-utils.h:84
+#: lib/ap-utils.h:87
 #, fuzzy
 msgid "Receive  antenna:"
 msgstr "Ontvangen:"
 
-#: lib/ap-utils.h:85
+#: lib/ap-utils.h:88
 #, fuzzy
 msgid "[U] Left"
 msgstr "Links"
 
-#: lib/ap-utils.h:86
+#: lib/ap-utils.h:89
 #, fuzzy
 msgid "[I] Right"
 msgstr "Rechts"
 
-#: lib/ap-utils.h:87
+#: lib/ap-utils.h:90
 #, fuzzy
 msgid "Transmit antenna:"
 msgstr "Verzonden:"
 
-#: lib/ap-utils.h:88
+#: lib/ap-utils.h:91
 #, fuzzy
 msgid "[O] Left"
 msgstr "Links"
 
-#: lib/ap-utils.h:89
+#: lib/ap-utils.h:92
 #, fuzzy
 msgid "[P] Right"
 msgstr "Rechts"
 
-#: lib/ap-utils.h:90
+#: lib/ap-utils.h:93
 #, fuzzy
 msgid "Diversity select:"
 msgstr "Diversiteit: %s"
 
-#: lib/ap-utils.h:91
+#: lib/ap-utils.h:94
 #, fuzzy
 msgid "[T] Left"
 msgstr "Links"
 
-#: lib/ap-utils.h:92
+#: lib/ap-utils.h:95
 #, fuzzy
 msgid "[Y] Right"
 msgstr "Rechts"
 
-#: lib/ap-utils.h:94
+#: lib/ap-utils.h:97
 msgid "Yes"
 msgstr ""
 
-#: lib/ap-utils.h:95
+#: lib/ap-utils.h:98
 msgid "No"
 msgstr ""
 
-#: lib/ap-utils.h:97
+#: lib/ap-utils.h:100
 msgid "On"
 msgstr ""
 
-#: lib/ap-utils.h:98
+#: lib/ap-utils.h:101
 #, fuzzy
 msgid "Off"
 msgstr "uit"
 
-#: lib/ap-utils.h:100
+#: lib/ap-utils.h:103
 #, fuzzy
 msgid "Basic"
 msgstr "basis"
 
-#: lib/ap-utils.h:102
+#: lib/ap-utils.h:105
 msgid "Press any key to continue."
 msgstr "Druk op een toets om door te gaan."
 
-#: lib/ap-utils.h:103
-msgid "Q - quit to menu. T - toggle polling mode, Other key - force update."
+#: lib/ap-utils.h:106
+msgid "Q - quit to menu. T - toggle polling mode, Other key - force update"
 msgstr ""
 
-#: lib/ap-utils.h:105
+#: lib/ap-utils.h:108
 msgid "Unable to write data to AP. Press any key to continue."
 msgstr ""
 "Kan geen gegevens schrijven naar AP. Druk op een toets om door te gaan."
 
-#: lib/ap-utils.h:106
+#: lib/ap-utils.h:109
 #, fuzzy
 msgid "Unable to retrieve (valid) data from AP. Press any key to continue."
 msgstr "Kan geen gegevens ontvangen van AP. Druk op een toets om door te gaan."
 
-#: lib/ap-utils.h:107
+#: lib/ap-utils.h:110
 #, fuzzy
-msgid "Trying to retrieve data from AP. Please wait..."
+msgid "Trying to retrieve data from AP - please wait (or press Q to quit)."
 msgstr "Bezig met ontvangen gegevens van AP. Even geduld a.u.b...."
 
-#: lib/ap-utils.h:108
+#: lib/ap-utils.h:111
 msgid "Writing data to AP. Please wait..."
 msgstr "Bezig met schrijven gegevens naar AP. Even geduld a.u.b...."
 
-#: lib/ap-utils.h:109
+#: lib/ap-utils.h:112
 #, fuzzy
 msgid "Configuration written to the AP. Press any key to continue."
 msgstr ""
 "Kan geen gegevens schrijven naar AP. Druk op een toets om door te gaan."
 
-#: lib/ap-utils.h:110
+#: lib/ap-utils.h:113
 #, fuzzy
 msgid "select() function error. Press any key."
 msgstr "fcntl() fout. Druk op een toets."
 
-#: lib/ap-utils.h:112
-msgid "Create socket error. Press any key."
-msgstr "Fout bij maken socket. Druk op een toets."
+#: lib/ap-utils.h:114
+#, fuzzy
+msgid "socket() or bind() function error. Press any key."
+msgstr "fcntl() fout. Druk op een toets."
 
-#: lib/ap-utils.h:113
-msgid "Bind socket error. Press any key."
-msgstr "Fout bij verbinden socket. Druk op een toets."
+#: lib/ap-utils.h:116
+#, fuzzy
+msgid "Unable to write AP list file ~/.ap-config. Press any key."
+msgstr "Kan geen gegevens ontvangen van AP. Druk op een toets om door te gaan."
+
+#: lib/ap-utils.h:117
+msgid "AP list file ~/.ap-config successfully written. Press any key."
+msgstr ""
 
-#: lib/ap-utils.h:115
+#: lib/ap-utils.h:119
 msgid "Back to main menu"
 msgstr "Terug naar hoofdmenu"
 
-#: lib/ap-utils.h:116
+#: lib/ap-utils.h:120
 msgid "Exit program"
 msgstr "Programma afsluiten"
 
-#: lib/ap-utils.h:117
+#: lib/ap-utils.h:121
 #, fuzzy
 msgid "Run subshell. To return type 'exit'."
 msgstr "Deelshell uitvoeren. Typ 'exit' om terug te keren"
 
-#: lib/ap-utils.h:118
+#: lib/ap-utils.h:122
+msgid "Change polling mode interval"
+msgstr ""
+
+#: lib/ap-utils.h:123
 msgid "Short info about program"
 msgstr "Korte informatie over programma"
 
-#: lib/ap-utils.h:119
+#: lib/ap-utils.h:124
 msgid "Find connected Access Points"
 msgstr "Verbonden Access Points zoeken"
 
-#: lib/ap-utils.h:120
+#: lib/ap-utils.h:125
 msgid "Set connection options: ip and community"
 msgstr "Verbindingsopties instellen: IP en gemeenschap"
 
-#: lib/ap-utils.h:121
+#: lib/ap-utils.h:126
 #, fuzzy
 msgid "Set encryption; edit WEP keys"
 msgstr "Codering instellen, WEP-sleutels bewerken"
 
-#: lib/ap-utils.h:122
+#: lib/ap-utils.h:127
 #, fuzzy
-msgid "Set MAC authorization; edit MAC authorization table"
+msgid "Set authorization; edit MAC authorization table"
 msgstr "Mac toelating instellen, mac toelatingstabel bewerken"
 
-#: lib/ap-utils.h:123
+#: lib/ap-utils.h:128
 #, fuzzy
 msgid "Set SNMP community/password for access to the AP"
 msgstr "SNMP gemeenschap/wachtwoord voor toegang AP instellen"
 
-#: lib/ap-utils.h:124
+#: lib/ap-utils.h:129
 #, fuzzy
 msgid "Get info about AP hardware and firmware"
 msgstr "Info opvragen over AP hardware en software"
 
-#: lib/ap-utils.h:125
+#: lib/ap-utils.h:130
 #, fuzzy
 msgid "Get wireless port statistics"
 msgstr "Statistieken opvragen over draadloze poorten"
 
-#: lib/ap-utils.h:126
+#: lib/ap-utils.h:131
 #, fuzzy
 msgid "Get list of currently associated stations (Access Point clients)"
 msgstr "Lijst opvragen met nu geassocieerde stations"
 
-#: lib/ap-utils.h:127
+#: lib/ap-utils.h:132
+msgid "Get link status in APclient mode"
+msgstr ""
+
+#: lib/ap-utils.h:133
 #, fuzzy
 msgid "Get info and statistics from AP"
 msgstr "Info en statistieken opvragen van AP"
 
-#: lib/ap-utils.h:128
+#: lib/ap-utils.h:134
 #, fuzzy
 msgid "Set various configuration options"
 msgstr "Verschillende configuratie-opties instellen"
 
-#: lib/ap-utils.h:130
+#: lib/ap-utils.h:136
 msgid "Associated stations"
 msgstr "Geassocieerde stations"
 
-#: lib/ap-utils.h:132
+#: lib/ap-utils.h:137
+msgid "AP Client link state"
+msgstr ""
+
+#: lib/ap-utils.h:139
 msgid "Polling: on"
 msgstr ""
 
-#: lib/ap-utils.h:133
+#: lib/ap-utils.h:140
 msgid "Polling: off"
 msgstr ""
 
@@ -808,169 +511,183 @@ msgstr ""
 "Het uploaden van de configuratie is voltooid. Druk op een toets om door te "
 "gaan."
 
-#: lib/common.c:30
+#: lib/common.c:32
 #, fuzzy
 msgid "Access Point IP-address: "
 msgstr "Access Point IP-adres:"
 
-#: lib/common.c:31
+#: lib/common.c:33
 #, fuzzy
 msgid "Password (community): "
 msgstr "Wachtwoord (gemeenschap):"
 
-#: lib/common.c:32
+#: lib/common.c:34
 msgid "Autodetect AP MIB properties? "
 msgstr ""
 
-#: lib/common.c:33
+#: lib/common.c:35
 #, fuzzy
 msgid "AP MIB type: "
 msgstr "AP soort:"
 
-#: lib/common.c:34
+#: lib/common.c:36
 msgid "AP MIB vendor extensions: "
 msgstr ""
 
-#: lib/common.c:35
+#: lib/common.c:37
 #, fuzzy
 msgid "Do you want to use AP's name as its label? "
 msgstr "Wilt u doorgaan?"
 
-#: lib/common.c:36
+#: lib/common.c:38
 #, fuzzy
 msgid "Access Point label: "
 msgstr "Access Point"
 
-#: lib/common.c:37
+#: lib/common.c:39
 #, fuzzy
 msgid "Save connect-settings: "
 msgstr "Verbindingsinstellingen opslaan:"
 
-#: lib/common.c:100
+#: lib/common.c:40
+msgid "[P] Polling mode interval (tenths of second): "
+msgstr ""
+
+#: lib/common.c:41
+#, fuzzy
+msgid "P - change polling mode interval; Q - quit to menu"
+msgstr "[toets] - optie instellen; W - conf schrijven; Q - afsluiten naar menu"
+
+#: lib/common.c:89 src/ap-config.c:158
+msgid "About"
+msgstr "Info"
+
+#: lib/common.c:106
 #, c-format
 msgid "From %s"
 msgstr "Van %s"
 
-#: lib/common.c:102
+#: lib/common.c:108
 #, c-format
 msgid "Version %s"
 msgstr "Versie %s"
 
-#: lib/common.c:105
+#: lib/common.c:111
 msgid "Written by Roman Festchook roma@polesye.net"
 msgstr "Geschreven door Roman Festchook roma@polesye.net"
 
-#: lib/common.c:107
-msgid "Portions by Jan Rafaj aputils@cedric.unob.cz"
+#: lib/common.c:113
+msgid "and Jan Rafaj jr-aputils@cedric.unob.cz"
 msgstr ""
 
-#: lib/common.c:109
+#: lib/common.c:115
 #, fuzzy
-msgid "Copyright (c) 2001-2004"
+msgid "Copyright (c) 2001-2005"
 msgstr "Copyright (c) Roman Festchook 2001-2002"
 
-#: lib/common.c:111
+#: lib/common.c:117
 msgid "Roman Festchook and Jan Rafaj"
 msgstr ""
 
-#: lib/common.c:114
+#: lib/common.c:120
 msgid "This program is distributed under the terms"
 msgstr "This program is distributed under the terms"
 
-#: lib/common.c:116
+#: lib/common.c:122
 msgid "of the GNU General Public License version 2."
 msgstr "of the GNU General Public License version 2."
 
-#: lib/common.c:118
+#: lib/common.c:124
 msgid "See the included COPYING file for details."
 msgstr "See the included COPYING file for details."
 
-#: lib/common.c:175
+#: lib/common.c:165
 msgid "Connect options"
 msgstr "Verbindingsopties"
 
-#: lib/common.c:183
+#: lib/common.c:173
 msgid "Enter IP address of your Access Point."
 msgstr "Geef het IP-adres van uw Access Point."
 
-#: lib/common.c:192
+#: lib/common.c:182
 msgid "Entered characters will not be displayed for security reason."
 msgstr "Ingevoerde tekens worden vanwege veiligheidsredenen niet weergegeven."
 
-#: lib/common.c:266
+#: lib/common.c:249
 msgid "This label will be stored on HDD (independently on AP name!)."
 msgstr ""
 
-#: lib/common.c:361
+#: lib/common.c:362
 #, fuzzy
 msgid "Trying to probe AP for MIB properties. Please wait..."
 msgstr "Bezig met schrijven gegevens naar AP. Even geduld a.u.b...."
 
-#: lib/common.c:390
+#: lib/common.c:391
 #, fuzzy
 msgid ""
 "Unable to determine AP MIB properties (no response from AP). Press any key."
 msgstr "Kan geen gegevens ontvangen van AP. Druk op een toets om door te gaan."
 
-#: lib/file.c:205
+#: lib/common.c:489 lib/set_oeminfo.c:221
+#, c-format
+msgid "%s%u"
+msgstr ""
+
+#: lib/common.c:491
+#, c-format
+msgid "(%0.1f seconds)"
+msgstr ""
+
+#: lib/file.c:199
 msgid "NUM  IP ADDRESS       MIB TYPE    MIB EXT.  LABEL"
 msgstr ""
 
-#: lib/file.c:206
+#: lib/file.c:200
 #, fuzzy
 msgid "Choose an AP to connect to"
 msgstr "Kies AP om mee te verbinden"
 
-#: lib/file.c:212
+#: lib/file.c:206
 msgid "1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll"
 msgstr ""
 "1-9,C: verbinden; N: nieuw; D: verwijderen; W: opslaan; Q: afsluiten; "
 "pijltjes: schuiven"
 
-#: lib/file.c:268
+#: lib/file.c:257
 msgid "Connect to AP num:"
 msgstr "Verbinden met AP nummer:"
 
-#: lib/file.c:304
+#: lib/file.c:288
 msgid "Delete num:"
 msgstr "Nummer verwijderen:"
 
-#: lib/file.c:372
-msgid "AP list file ~/.ap-config successfully written. Press any key."
-msgstr ""
-
-#: lib/file.c:376
-#, fuzzy
-msgid "Unable to write AP list file ~/.ap-config. Press any key."
-msgstr "Kan geen gegevens ontvangen van AP. Druk op een toets om door te gaan."
-
-#: lib/file.c:426
+#: lib/file.c:442
 #, fuzzy
 msgid "Unable to write stations file. Press any key."
 msgstr ""
 "Kan geen gegevens schrijven naar AP. Druk op een toets om door te gaan."
 
-#: lib/file.c:428
+#: lib/file.c:444
 msgid "Stations file succesfully written. Press any key."
 msgstr ""
 
-#: lib/input.c:33
+#: lib/input.c:32
 #, fuzzy
 msgid "Invalid value. Press any key to continue."
 msgstr "Onjuist IP-adres.  Druk op een toets om door te gaan."
 
-#: lib/input.c:34
+#: lib/input.c:33
 #, fuzzy, c-format
 msgid "Value must be in range %u - %u. Press any key to continue."
 msgstr ""
 "Kan geen gegevens schrijven naar AP. Druk op een toets om door te gaan."
 
-#: lib/input.c:412
+#: lib/input.c:460
 #, fuzzy
 msgid "Y - Yes; Any other key - No (it's safer to answer No)"
 msgstr "(J - Ja; N - Nee (het is veiliger om Nee te antwoorden)"
 
-#: lib/oui.c:6056
+#: lib/oui.c:6061
 msgid "Unknown or Private"
 msgstr "Onbekend of privé"
 
@@ -1018,7 +735,7 @@ msgstr ""
 "U kunt niet beide antennes uitzetten; kan antenne instellingen niet opslaan. "
 "Druk op een toets."
 
-#: lib/scr.c:168
+#: lib/scr.c:157
 #, fuzzy, c-format
 msgid "Current AP: %s Type: %s Ext: %s"
 msgstr "Huidige AP: %s Soort: %s"
@@ -1059,6 +776,147 @@ msgstr ""
 "KEY - gemeenschap/wachtwoord instellen; W - conf schrijven naar AP; Q - "
 "afsluiten"
 
+#: lib/set_oeminfo.c:28
+#, fuzzy
+msgid "Info structure version: "
+msgstr "StructVersie: %lu"
+
+#: lib/set_oeminfo.c:29
+#, fuzzy
+msgid "[M] Device MAC address: "
+msgstr "IP-adres: %s"
+
+#: lib/set_oeminfo.c:30
+#, fuzzy
+msgid "    Manufacturer with this OUI: "
+msgstr "Maker ID:"
+
+#: lib/set_oeminfo.c:31
+#, fuzzy
+msgid "[D] Regulatory domain: "
+msgstr "Reguleringsdomein: %s"
+
+#: lib/set_oeminfo.c:32
+#, fuzzy
+msgid "[T] Product type: "
+msgstr "Produktsoort: %lu"
+
+#: lib/set_oeminfo.c:33
+#, fuzzy
+msgid "[E] OEM name: "
+msgstr "OEM naam:"
+
+#: lib/set_oeminfo.c:34
+msgid "[I] OEM ID: "
+msgstr ""
+
+#: lib/set_oeminfo.c:35
+#, fuzzy
+msgid "[N] Product name: "
+msgstr "Produktnaam:"
+
+#: lib/set_oeminfo.c:36
+#, fuzzy
+msgid "[H] Hardware revision: "
+msgstr "Hardware revisie: %lu"
+
+#: lib/set_oeminfo.c:37
+#, fuzzy
+msgid "[O] Country code: "
+msgstr "[O] Opdracht: %s"
+
+#: lib/set_oeminfo.c:38
+#, fuzzy
+msgid "[C] Default channel: "
+msgstr "[C] Frequentiekanaal: %02u (%u MHz)"
+
+#: lib/set_oeminfo.c:39
+#, fuzzy
+msgid "[A] Calibrated channels: "
+msgstr "[C] Frequentiekanaal: %02u (%u MHz)"
+
+#: lib/set_oeminfo.c:40
+msgid "[P] Nominal Tx Power (CR31) value for calibrated channels: "
+msgstr ""
+
+#: lib/set_oeminfo.c:41
+#, fuzzy
+msgid ""
+"Keys in brackets - set corresponding option; W - write conf; Q - quit to menu"
+msgstr "[toets] - optie instellen; W - conf schrijven; Q - afsluiten naar menu"
+
+#: lib/set_oeminfo.c:101
+msgid "THIS IS A SECRET MENU LEADING TO VERY DANGEROUS OPTIONS."
+msgstr ""
+
+#: lib/set_oeminfo.c:103
+msgid "It is intended only for WISPs and repair shops."
+msgstr ""
+
+#: lib/set_oeminfo.c:107
+msgid "It allows to set OEM information stored in the AP (like its"
+msgstr ""
+
+#: lib/set_oeminfo.c:109
+msgid "MAC address, manuf. name, OEM ID, etc.). BE ABSOLUTELY SURE"
+msgstr ""
+
+#: lib/set_oeminfo.c:111
+msgid "THAT YOU KNOW WHAT YOU ARE DOING, AND THAT YOU HAVE THE"
+msgstr ""
+
+#: lib/set_oeminfo.c:113
+msgid "LEGAL RIGHT TO DO ANY MODIFICATION. Disobserving of these"
+msgstr ""
+
+#: lib/set_oeminfo.c:115
+msgid "rules may lead you into a conflict with your local"
+msgstr ""
+
+#: lib/set_oeminfo.c:117
+msgid "regulations and/or law."
+msgstr ""
+
+#: lib/set_oeminfo.c:119
+msgid "Also be warned that the setting of any from these options"
+msgstr ""
+
+#: lib/set_oeminfo.c:121
+msgid "may DAMAGE YOUR AP (other reason why this menu is hidden)."
+msgstr ""
+
+#: lib/set_oeminfo.c:123
+msgid "Values changed here will NOT be restored upon reset"
+msgstr ""
+
+#: lib/set_oeminfo.c:125
+msgid "of the device to factory defaults! It is advisable to"
+msgstr ""
+
+#: lib/set_oeminfo.c:127
+msgid "write them down somewhere prior their changing."
+msgstr ""
+
+#: lib/set_oeminfo.c:129
+msgid "Finally, note that you need to use MANUFACTURER community, "
+msgstr ""
+
+#: lib/set_oeminfo.c:131
+msgid "in order to be able to do any OEM info modification."
+msgstr ""
+
+#: lib/set_oeminfo.c:133
+msgid "Proceed further only at your full risk and responsibility. "
+msgstr ""
+
+#: lib/set_oeminfo.c:135
+msgid "You got the warnings."
+msgstr ""
+
+#: lib/set_oeminfo.c:141
+msgid "OEM Info settings"
+msgstr ""
+
 #: lib/stat.c:29
 msgid "Ethernet Statistics"
 msgstr "Ethernet statistieken"
@@ -1099,161 +957,186 @@ msgstr "Systeemomschrijving:"
 msgid "System Info"
 msgstr "Systeeminfo"
 
-#: lib/sysinfo.c:120
+#: lib/sysinfo.c:55 src/bridge.c:50
+msgid "Wireless Bridge Point to MultiPoint"
+msgstr ""
+
+#: lib/sysinfo.c:56 src/bridge.c:51
+msgid "Access Point"
+msgstr "Access Point"
+
+#: lib/sysinfo.c:57 src/bridge.c:52
+msgid "Access Point client"
+msgstr "Access Point client"
+
+#: lib/sysinfo.c:58 src/bridge.c:53
+msgid "Wireless Bridge Point to Point"
+msgstr ""
+
+#: lib/sysinfo.c:59 src/bridge.c:54
+msgid "Repeater"
+msgstr "Repeater"
+
+#: lib/sysinfo.c:60 lib/sysinfo.c:315 lib/sysinfo.c:424 src/bridge.c:55
+msgid "unknown"
+msgstr "onbekend"
+
+#: lib/sysinfo.c:144
 msgid "Device hardware/software/name info:"
 msgstr ""
 
-#: lib/sysinfo.c:154
+#: lib/sysinfo.c:172
+#, fuzzy, c-format
+msgid "Operational mode: %s"
+msgstr "[O] Operationele modus: %s"
+
+#: lib/sysinfo.c:182
 #, fuzzy
-msgid "Product name:"
+msgid "Product name: "
 msgstr "Produktnaam:"
 
-#: lib/sysinfo.c:158
+#: lib/sysinfo.c:186
 #, fuzzy, c-format
 msgid "Product type: %u"
 msgstr "Produktsoort: %lu"
 
-#: lib/sysinfo.c:161
+#: lib/sysinfo.c:189
 #, fuzzy
-msgid "OEM name:"
+msgid "OEM name: "
 msgstr "OEM naam:"
 
-#: lib/sysinfo.c:168
+#: lib/sysinfo.c:196
 #, fuzzy, c-format
 msgid "Hardware revision: %u"
 msgstr "Hardware revisie: %lu"
 
-#: lib/sysinfo.c:176
+#: lib/sysinfo.c:204
 #, fuzzy, c-format
 msgid "Info structure version: %u"
 msgstr "StructVersie: %lu"
 
-#: lib/sysinfo.c:179 lib/sysinfo.c:355
+#: lib/sysinfo.c:207 lib/sysinfo.c:383
 #, c-format
 msgid "Manufacturer OUI: %02X %02X %02X (%s)"
 msgstr "Maker OUI: %02X %02X %02X (%s)"
 
-#: lib/sysinfo.c:196
+#: lib/sysinfo.c:224
 #, fuzzy, c-format
 msgid "Uptime: %u days, %02u:%02u:%02u hours:mins:secs"
 msgstr "Uptime: %u:%02u:%02u.%02u"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "FHSS 2.4 GHz"
 msgstr "FHSS 2.4 GHz"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "DSSS 2.4 GHz"
 msgstr "DSSS 2.4 GHz"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "IR Baseband"
 msgstr "IR Baseband"
 
-#: lib/sysinfo.c:285
+#: lib/sysinfo.c:313
 msgid "Commercial range 0..40 C"
 msgstr "Commercieel bereik 0..40 C"
 
-#: lib/sysinfo.c:286
+#: lib/sysinfo.c:314
 msgid "Industrial range -30..70 C"
 msgstr "Industrieel bereik -30..70 C"
 
-#: lib/sysinfo.c:287 lib/sysinfo.c:396
-msgid "unknown"
-msgstr "onbekend"
-
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "manual"
 msgstr "handmatig"
 
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "notsupported"
 msgstr "niet ondersteund"
 
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "dynamic"
 msgstr "dynamisch"
 
-#: lib/sysinfo.c:345
+#: lib/sysinfo.c:373
 msgid "Manufacturer:"
 msgstr "Maker:"
 
-#: lib/sysinfo.c:350
+#: lib/sysinfo.c:378
 msgid "Manufacturer ID:"
 msgstr "Maker ID:"
 
-#: lib/sysinfo.c:361
+#: lib/sysinfo.c:389
 msgid "Product Name:"
 msgstr "Produktnaam:"
 
-#: lib/sysinfo.c:367
+#: lib/sysinfo.c:395
 msgid "Product ID:"
 msgstr "Produkt ID:"
 
-#: lib/sysinfo.c:373
+#: lib/sysinfo.c:401
 msgid "Product Version:"
 msgstr "Produktversie:"
 
-#: lib/sysinfo.c:379
+#: lib/sysinfo.c:407
 #, c-format
 msgid "PHYType: %s"
 msgstr "PHY soort: %s"
 
-#: lib/sysinfo.c:382
+#: lib/sysinfo.c:410
 #, c-format
 msgid "Temperature: %s"
 msgstr "Temperatuur: %s"
 
-#: lib/sysinfo.c:390
+#: lib/sysinfo.c:418
 #, fuzzy, c-format
 msgid "Regulatory Domain: %s"
 msgstr "Reguleringsdomein: %s"
 
-#: lib/sysinfo.c:391
+#: lib/sysinfo.c:419
 msgid "FCC (USA)"
 msgstr "FCC (USA)"
 
-#: lib/sysinfo.c:392
+#: lib/sysinfo.c:420
 msgid "DOC (Canada)"
 msgstr "DOC (Canada)"
 
-#: lib/sysinfo.c:393
+#: lib/sysinfo.c:421
 msgid "ETSI (Europe)"
 msgstr "ETSI (Europa)"
 
-#: lib/sysinfo.c:394
+#: lib/sysinfo.c:422
 msgid "Spain"
 msgstr "Spanje"
 
-#: lib/sysinfo.c:395
+#: lib/sysinfo.c:423
 msgid "France"
 msgstr "Frankrijk"
 
-#: lib/sysinfo.c:396
+#: lib/sysinfo.c:424
 msgid "MKK (Japan)"
 msgstr "MKK (Japan)"
 
-#: lib/sysinfo.c:399
+#: lib/sysinfo.c:427
 #, c-format
 msgid "Transmit Power: %u mW"
 msgstr "Zendvermogen: %u mW"
 
-#: lib/sysinfo.c:429
+#: lib/sysinfo.c:457
 #, fuzzy, c-format
 msgid "WEP implemented: %s"
 msgstr "WEP geïmplementeerd: %s"
 
-#: lib/sysinfo.c:432
+#: lib/sysinfo.c:460
 #, c-format
 msgid "Diversity: %s"
 msgstr "Diversiteit: %s"
 
-#: lib/sysinfo.c:460
+#: lib/sysinfo.c:488
 #, c-format
 msgid "Uptime: %u:%02u:%02u.%02u"
 msgstr "Uptime: %u:%02u:%02u.%02u"
 
-#: lib/sysinfo.c:480
+#: lib/sysinfo.c:508
 #, c-format
 msgid "IP  Address: %s"
 msgstr "IP-adres: %s"
@@ -1302,36 +1185,40 @@ msgstr "Links"
 msgid "Right"
 msgstr "Rechts"
 
-#: lib/test.c:86
+#: lib/test.c:79
+msgid "Devices with ATMEL12350 MIB not yet supported."
+msgstr ""
+
+#: lib/test.c:91
 #, fuzzy
 msgid "Test mode"
 msgstr "Testmodus"
 
-#: lib/test.c:89
+#: lib/test.c:94
 #, fuzzy
 msgid "Using the \"Test mode\" may cause loss of your current"
 msgstr ""
 "Gebruik van de testmodus kan ervoor zorgen dat de huidige configuratie "
 "verloren gaat."
 
-#: lib/test.c:90
+#: lib/test.c:95
 #, fuzzy
 msgid "configuration."
 msgstr "Configuratie uploaden"
 
-#: lib/test.c:102
+#: lib/test.c:107
 msgid "Options:"
 msgstr "Opties:"
 
-#: lib/test.c:128
+#: lib/test.c:133
 msgid "Statistics:"
 msgstr "Statistieken:"
 
-#: lib/test.c:129
+#: lib/test.c:134
 msgid "Success Frames: 0 Failed Frames: 0"
 msgstr "Succesvolle frames: 0 Mislukte frames: 0"
 
-#: lib/test.c:190
+#: lib/test.c:195
 #, c-format
 msgid "Success Frames: %lu Failed Frames: %lu"
 msgstr "Succesvolle frames: %lu Mislukte frames: %lu"
@@ -1465,7 +1352,7 @@ msgid "[D] DTIM sending interval (beacons): "
 msgstr ""
 
 #: lib/wlan.c:48
-msgid "[T] SIFS time (msec): "
+msgid "[T] SIFS time (2nd+ interframe spacing, usec): "
 msgstr ""
 
 #: lib/wlan.c:49
@@ -1480,54 +1367,46 @@ msgstr "Kort"
 msgid "Long"
 msgstr "Lang"
 
-#: lib/wlan.c:237
+#: lib/wlan.c:239
 msgid "Wireless Settings"
 msgstr "Draadloos instellingen"
 
-#: lib/wlan.c:731
+#: lib/wlan.c:735
 msgid "Antenna Configuration:"
 msgstr "Antenneconfiguratie:"
 
-#: lib/wlan.c:748
+#: lib/wlan.c:752
 msgid "General Options"
 msgstr "Algemene opties"
 
-#: lib/wlan.c:750
+#: lib/wlan.c:754
 msgid ""
 "UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu"
 msgstr ""
 "UIOPTY - antenne; SCANLEDFR1234 - opties; W - conf schrijven; Q - afsluiten "
 "naar menu"
 
-#: src/ap-config.c:54
-msgid "General"
-msgstr "Algemeen"
-
-#: src/ap-config.c:54
-msgid "Set general options"
-msgstr "Algemene opties instellen"
-
-#: src/ap-config.c:55
-msgid "Advanced"
-msgstr "Geavanceerd"
+#: src/ap-auth.c:32 src/auth.c:28
+msgid "AuthorizedMacTableString packet error"
+msgstr "AuthorizedMacTableString pakketfout"
 
-#: src/ap-config.c:55
-msgid "Set advanced options"
-msgstr "Geavanceerde opties instellen"
+#: src/ap-auth.c:33
+msgid "Invalid data in source file"
+msgstr ""
 
-#: src/ap-config.c:89
-msgid "Reset AP."
-msgstr "AP opnieuw instellen."
+#: src/ap-auth.c:34
+msgid "Can't open file"
+msgstr ""
 
-#: src/ap-config.c:122
-msgid "Latest"
-msgstr "Laatste"
+#: src/ap-auth.c:35
+msgid "Can't write to file"
+msgstr ""
 
-#: src/ap-config.c:122
-msgid "Get info about latest events"
-msgstr "Info opvragen over laatste gebeurtenissen"
+#: src/ap-auth.c:36
+msgid "Error closing file"
+msgstr ""
 
-#: src/ap-mrtg.c:42
+#: src/ap-auth.c:44 src/ap-mrtg.c:41 src/ap-rrd.c:40
 msgid ""
 "\n"
 "Usage:\n"
@@ -1535,168 +1414,855 @@ msgstr ""
 "\n"
 "Gebruik:\n"
 
-#: src/ap-mrtg.c:44
-#, fuzzy
+#: src/ap-auth.c:45
+msgid "\tap-auth -i ip -c community -d filename [-h]\n"
+msgstr ""
+
+#: src/ap-auth.c:46
 msgid ""
-"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-"
-"h] [-r]\n"
+"\tap-auth -i ip -c community -u filename [-h]\n"
 "\n"
 msgstr ""
-"\tap-mrtg -i ip -c gemeenschap -t soort [-b bssid] [-v] [-h] [-r]\n"
-"\n"
 
-#: src/ap-mrtg.c:46
+#: src/ap-auth.c:47
 msgid ""
-"Get stats from AP and return it in MRTG parsable format\n"
+"Change accesspoint's list of authorised MAC addresses\n"
 "\n"
 msgstr ""
-"Statistieken van AP opvragen en aanbieden in MRTG-verwerkbaar formaat\n"
-"\n"
 
-#: src/ap-mrtg.c:47
+#: src/ap-auth.c:48 src/ap-mrtg.c:45 src/ap-rrd.c:45
 msgid "-i ip        - AP ip address\n"
 msgstr "-i ip        - AP ip-adres\n"
 
-#: src/ap-mrtg.c:48
+#: src/ap-auth.c:49 src/ap-mrtg.c:46 src/ap-rrd.c:46
 msgid "-c community - SNMP community string\n"
 msgstr "-c gemeenschap - SNMP gemeenschap naam\n"
 
-#: src/ap-mrtg.c:50
+#: src/ap-auth.c:50
 msgid ""
-"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
-"or <l>ink quality in client mode\n"
+"-d filename  - download list of authorised MAC addresses from AP to a file\n"
 msgstr ""
-"-t type      - soort statistieken <w> draadloos, <e>thernet, geassocieerde "
-"<s>tations of <l> kwaliteit verbinding in client modus\n"
 
-#: src/ap-mrtg.c:52
+#: src/ap-auth.c:52
 msgid ""
-"-b bssid     - mac address of the AP to which get link quality, only if "
-"type=l\n"
+"-u filename  - upload list of authorised MAC addresses from a file to AP\n"
 msgstr ""
-"-b bssid     - mac adres van AP waarvan verbindingskwaliteit bepaald moet "
-"worden; alleen als soort=l\n"
 
-#: src/ap-mrtg.c:53
-msgid "-n name     - AP name - for check only\n"
+#: src/ap-auth.c:54 src/ap-mrtg.c:55 src/ap-rrd.c:55
+msgid ""
+"-h           - print this help screen\n"
+"\n"
 msgstr ""
+"-h           - deze hulp weergeven\n"
+"\n"
 
-#: src/ap-mrtg.c:54
+#: src/ap-auth.c:55
+#, fuzzy, c-format
 msgid ""
-"-a aptype        - AP type - 410 (default) or 510 for ATMEL12350's, like the "
-"ME-102\n"
+"ap-auth %s Copyright (c) 2004 Teemu Kiviniemi\n"
+"\n"
 msgstr ""
-
-#: src/ap-mrtg.c:56
+"ap-mrtg %s Copyright (c) 2002 Roman Festchook\n"
+"\n"
+
+#: src/ap-auth.c:138 src/ap-mrtg.c:132
+#, fuzzy
+msgid "Error: invalid IP-address.\n"
+msgstr "Onjuist IP-adres\n"
+
+#: src/ap-auth.c:203 src/ap-mrtg.c:204
+#, fuzzy
+msgid "Unable to determine AP MIB type (no response from AP)."
+msgstr "Kan geen gegevens ontvangen van AP. Druk op een toets om door te gaan."
+
+#: src/ap-auth.c:211
+msgid "NWN devices are not yet supported."
+msgstr ""
+
+#: src/ap-config.c:43 src/bridge.c:201
+msgid "Bridging"
+msgstr ""
+
+#: src/ap-config.c:43
+#, fuzzy
+msgid "Set bridging and IP-related options"
+msgstr "Bridging en IP-gerelateerde opties instellen"
+
+#: src/ap-config.c:45 src/ap-config.c:114 src/ap-config.c:123 src/bridge.c:125
+msgid "Wireless"
+msgstr "Draadloos"
+
+#: src/ap-config.c:45
+msgid "Set wireless options"
+msgstr "Draadloze opties instellen"
+
+#: src/ap-config.c:46 src/ap-config.c:58
+msgid "Privacy"
+msgstr "Privacy"
+
+#: src/ap-config.c:47
+#, fuzzy
+msgid "Auth"
+msgstr "Info"
+
+#: src/ap-config.c:48 src/ap-config.c:60
+msgid "Community"
+msgstr "Gemeenschap"
+
+#: src/ap-config.c:49
+msgid "Radio"
+msgstr "Radio"
+
+#: src/ap-config.c:49
+msgid "Set radio signal power and antenna options"
+msgstr "Vermogen radio en antenne opties instellen"
+
+#: src/ap-config.c:56
+msgid "General"
+msgstr "Algemeen"
+
+#: src/ap-config.c:56
+msgid "Set general options"
+msgstr "Algemene opties instellen"
+
+#: src/ap-config.c:57
+msgid "Advanced"
+msgstr "Geavanceerd"
+
+#: src/ap-config.c:57
+msgid "Set advanced options"
+msgstr "Geavanceerde opties instellen"
+
+#: src/ap-config.c:59
+#, fuzzy
+msgid "MAC auth"
+msgstr "Mac toelating"
+
+#: src/ap-config.c:82
+msgid "Upload"
+msgstr "Uploaden"
+
+#: src/ap-config.c:82
+#, fuzzy
+msgid "Activate current configuration"
+msgstr "Huidige configuratie actief maken"
+
+#: src/ap-config.c:83
+msgid "Defaults"
+msgstr "Standaardwaarden"
+
+#: src/ap-config.c:83
+msgid "Restore factory default settings"
+msgstr "Fabrieksinstellingen terugzetten"
+
+#: src/ap-config.c:84 src/ap-config.c:91
+msgid "Reset"
+msgstr "Opnieuw instellen"
+
+#: src/ap-config.c:85
+msgid "Reset AP. All not uploaded configuration will be lost"
+msgstr ""
+"AP opnieuw instellen. Alle niet verzonden instellingen zullen verloren gaan."
+
+#: src/ap-config.c:86
+msgid "TestMode"
+msgstr "Testmodus"
+
+#: src/ap-config.c:86
+msgid "Put Access Point in test mode"
+msgstr "Access Point in testmodus zetten"
+
+#: src/ap-config.c:91
+msgid "Reset AP."
+msgstr "AP opnieuw instellen."
+
+#: src/ap-config.c:112 src/ap-config.c:122
+msgid "SysInfo"
+msgstr "SysInfo"
+
+#: src/ap-config.c:113 src/bridge.c:124 src/bridge.c:127
+msgid "Ethernet"
+msgstr "Ethernet"
+
+#: src/ap-config.c:113
+msgid "Get ethernet port statistics"
+msgstr "Ethernet poortstatistieken opvragen"
+
+#: src/ap-config.c:115 src/ap-config.c:124
+msgid "Stations"
+msgstr "Stations"
+
+#: src/ap-config.c:116
+msgid "AP link"
+msgstr ""
+
+#: src/ap-config.c:117
+msgid "KnownAPs"
+msgstr "BekendeAPs"
+
+#: src/ap-config.c:117
+msgid "Get info about known Access Points"
+msgstr "Info opvragen over bekende Access Points"
+
+#: src/ap-config.c:125
+msgid "Latest"
+msgstr "Laatste"
+
+#: src/ap-config.c:125
+msgid "Get info about latest events"
+msgstr "Info opvragen over laatste gebeurtenissen"
+
+#: src/ap-config.c:150
+msgid "Info"
+msgstr "Info"
+
+#: src/ap-config.c:151
+msgid "Config"
+msgstr "Config"
+
+#: src/ap-config.c:152
+msgid "Commands"
+msgstr "Opdrachten"
+
+#: src/ap-config.c:152
+msgid "Execute commands on Access Point"
+msgstr "Opdrachten uitvoeren op Access Point"
+
+#: src/ap-config.c:154
+msgid "Connect"
+msgstr "Verbinden"
+
+#: src/ap-config.c:155
+msgid "Search"
+msgstr "Zoeken"
+
+#: src/ap-config.c:156
+msgid "Polling"
+msgstr ""
+
+#: src/ap-config.c:157
+msgid "Shell"
+msgstr "Shell"
+
+#: src/ap-config.c:159
+msgid "Exit"
+msgstr "Afsluiten"
+
+#: src/ap-config.c:218
+#, c-format
+msgid "Wireless Access Point Configurator ver. %s"
+msgstr "Draadloos Access Point configurator versie %s"
+
+#: src/aplink.c:25
+msgid "RSSI:     ["
+msgstr ""
+
+#: src/aplink.c:26
+msgid "RSSI avg: ["
+msgstr ""
+
+#: src/aplink.c:27
+msgid "RSSI top: ["
+msgstr ""
+
+#: src/aplink.c:28
+msgid "RSSI rou: ["
+msgstr ""
+
+#: src/aplink.c:29
+msgid ""
+"P - pause, T - toggle graph view, Q - quit to menu, Other key - force update."
+msgstr ""
+
+#: src/aplink.c:81
+msgid "RSSI [%]"
+msgstr ""
+
+#: src/aplink.c:82
+msgid "RSSI average [%]"
+msgstr ""
+
+#: src/aplink.c:83
+msgid "RSSI rounded [%]"
+msgstr ""
+
+#: src/aplink.c:84
+msgid "Link Quality [%]"
+msgstr ""
+
+#: src/aplink.c:133
+msgid "Not available - device must have firmware with necessary "
+msgstr ""
+
+#: src/aplink.c:135
+msgid "vendor extensions and be in either 'Access Point client'"
+msgstr ""
+
+#: src/aplink.c:137
+msgid "or 'Repeater' mode."
+msgstr ""
+
+#: src/ap-mrtg.c:42
+#, fuzzy
+msgid ""
+"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-v] [-h] [-r]\n"
+"\n"
+msgstr ""
+"\tap-mrtg -i ip -c gemeenschap -t soort [-b bssid] [-v] [-h] [-r]\n"
+"\n"
+
+#: src/ap-mrtg.c:44
+msgid ""
+"Get stats from AP and return it in MRTG parsable format\n"
+"\n"
+msgstr ""
+"Statistieken van AP opvragen en aanbieden in MRTG-verwerkbaar formaat\n"
+"\n"
+
+#: src/ap-mrtg.c:47
+#, fuzzy
+msgid ""
+"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
+"or <l>ink quality (last one will only "
+msgstr ""
+"-t type      - soort statistieken <w> draadloos, <e>thernet, geassocieerde "
+"<s>tations of <l> kwaliteit verbinding in client modus\n"
+
+#: src/ap-mrtg.c:49
+msgid "work with ATMEL410 MIB devices in AP Client mode)\n"
+msgstr ""
+
+#: src/ap-mrtg.c:50
+#, fuzzy
+msgid ""
+"-b bssid     - mac address of the AP from which get link quality, only if "
+"type=l\n"
+msgstr ""
+"-b bssid     - mac adres van AP waarvan verbindingskwaliteit bepaald moet "
+"worden; alleen als soort=l\n"
+
+#: src/ap-mrtg.c:52
+msgid "-n name      - AP name - for check only\n"
+msgstr ""
+
+#: src/ap-mrtg.c:53
 msgid "-v           - report MRTG about problems connecting to AP\n"
 msgstr "-v           - MRTG aangeven over problemen met verbinden met AP\n"
 
-#: src/ap-mrtg.c:57
+#: src/ap-mrtg.c:54 src/ap-rrd.c:54
 msgid "-r           - reset AP when getting LinkQuality stats\n"
 msgstr ""
 "-r           - AP opnieuw instellen bij opvragen statistieken "
 "verbindingskwaliteit\n"
 
-#: src/ap-mrtg.c:58
+#: src/ap-mrtg.c:56
+#, fuzzy, c-format
 msgid ""
-"-h           - print this help screen\n"
+"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n"
 "\n"
 msgstr ""
-"-h           - deze hulp weergeven\n"
+"ap-mrtg %s Copyright (c) 2002 Roman Festchook\n"
+"\n"
+
+#: src/ap-rrd.c:32
+#, c-format
+msgid "Error getting data from AP %s\n"
+msgstr ""
+
+#: src/ap-rrd.c:42
+#, fuzzy
+msgid ""
+"\tap-rrd -i ip -c community -t type -d db_file [-b bssid] [-n name] [-a "
+"aptype] [-h] [-r] \n"
 "\n"
+msgstr ""
+"\tap-mrtg -i ip -c gemeenschap -t soort [-b bssid] [-v] [-h] [-r]\n"
+"\n"
+
+#: src/ap-rrd.c:44
+#, fuzzy
+msgid ""
+"Get stats from AP and put it in to specified RRDtool database\n"
+"\n"
+msgstr ""
+"Statistieken van AP opvragen en aanbieden in MRTG-verwerkbaar formaat\n"
+"\n"
+
+#: src/ap-rrd.c:48
+msgid ""
+"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
+"or <l>ink quality in client mode\n"
+msgstr ""
+"-t type      - soort statistieken <w> draadloos, <e>thernet, geassocieerde "
+"<s>tations of <l> kwaliteit verbinding in client modus\n"
+
+#: src/ap-rrd.c:49
+msgid "-d db_file   - RRD database file with full path\n"
+msgstr ""
+
+#: src/ap-rrd.c:51
+msgid ""
+"-b bssid     - mac address of the AP to which get link quality, only if "
+"type=l\n"
+msgstr ""
+"-b bssid     - mac adres van AP waarvan verbindingskwaliteit bepaald moet "
+"worden; alleen als soort=l\n"
 
-#: src/ap-mrtg.c:59
+#: src/ap-rrd.c:52
+msgid "-n name     - AP name - for check only\n"
+msgstr ""
+
+#: src/ap-rrd.c:53
+msgid ""
+"-a aptype    - AP type - 410 (default) or 510 for ATMEL12350's, like the ME-"
+"102\n"
+msgstr ""
+
+#: src/ap-rrd.c:56
 #, fuzzy, c-format
 msgid ""
-"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n"
+"ap-rrd %s Copyright (c) 2002-2004 Roman Festchook\n"
 "\n"
 msgstr ""
 "ap-mrtg %s Copyright (c) 2002 Roman Festchook\n"
 "\n"
 
-#: src/ap-mrtg.c:143
+#: src/ap-rrd.c:133
 msgid "Invalid IP-address\n"
 msgstr "Onjuist IP-adres\n"
 
-#: src/ap-mrtg.c:188
+#: src/ap-rrd.c:179
 #, c-format
 msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n"
 msgstr ""
 
-#: src/ap-mrtg.c:207
-msgid "Create socket error"
-msgstr "Fout bij maken socket"
+#: src/ap-tftp.c:84
+msgid "yes"
+msgstr ""
+
+#: src/ap-tftp.c:85
+#, fuzzy
+msgid "no"
+msgstr "Info"
+
+#: src/ap-tftp.c:87
+msgid "Error while read()ing firmware file"
+msgstr ""
+
+#: src/ap-tftp.c:100
+msgid "Undefined error"
+msgstr ""
+
+#: src/ap-tftp.c:101
+msgid "File not found"
+msgstr ""
+
+#: src/ap-tftp.c:102
+#, fuzzy
+msgid "Access violation"
+msgstr "Access Point"
+
+#: src/ap-tftp.c:103
+msgid "Disk full or allocation error"
+msgstr ""
+
+#: src/ap-tftp.c:104
+msgid "Illegal TFTP operation"
+msgstr ""
+
+#: src/ap-tftp.c:105
+msgid "Unknown transfer ID"
+msgstr ""
+
+#: src/ap-tftp.c:106
+msgid "File already exists"
+msgstr ""
+
+#: src/ap-tftp.c:107
+msgid "No such user"
+msgstr ""
+
+#: src/ap-tftp.c:157
+msgid "Remote-filename too long.\n"
+msgstr ""
+
+#: src/ap-tftp.c:183
+#, c-format
+msgid "%sError in read()"
+msgstr ""
+
+#: src/ap-tftp.c:212
+#, c-format
+msgid "sending %u bytes\n"
+msgstr ""
+
+#: src/ap-tftp.c:221
+#, c-format
+msgid "%sError in sendto()"
+msgstr ""
+
+#: src/ap-tftp.c:244
+#, c-format
+msgid "%sError in recvfrom()"
+msgstr ""
+
+#: src/ap-tftp.c:256
+#, c-format
+msgid "\rProgress: uploaded %3i%%."
+msgstr ""
+
+#: src/ap-tftp.c:267
+#, c-format
+msgid "%sMalformed packet received. Aborting.\n"
+msgstr ""
+
+#: src/ap-tftp.c:276
+#, c-format
+msgid "%sTimed out waiting for response from server (%i/%i).\n"
+msgstr ""
+
+#: src/ap-tftp.c:283
+#, c-format
+msgid "%sError in select()"
+msgstr ""
+
+#: src/ap-tftp.c:297
+#, c-format
+msgid "Received %d bytes: %04x %04x\n"
+msgstr ""
+
+#: src/ap-tftp.c:308
+#, c-format
+msgid "%sError: server responded with %s. Aborting.\n"
+msgstr ""
+
+#: src/ap-tftp.c:315
+#, c-format
+msgid "%sFlash programming in progress...\n"
+msgstr ""
+
+#: src/ap-tftp.c:317
+msgid "Finished successfully.\n"
+msgstr ""
 
-#: src/ap-mrtg.c:211
-msgid "Bind socket error"
-msgstr "Fout bij verbinden socket"
+#: src/ap-tftp.c:335
+msgid "PLEASE BE _ABSOLUTELY_ SURE TO READ MANPAGE PRIOR USE!!!\n"
+msgstr ""
 
-#: src/ap-trapd.c:148
+#: src/ap-tftp.c:337
+#, c-format
+msgid ""
+"\n"
+"Usage: %s -i IP -f firmware_file.rom [-c community] [-h]\n"
+msgstr ""
+
+#: src/ap-tftp.c:361
+msgid "TFTP client for upgrading firmware in ATMEL AT76C510 WiSOC-based APs.\n"
+msgstr ""
+
+#: src/ap-tftp.c:363
+msgid "(C) 2004-2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>\n"
+msgstr ""
+
+#: src/ap-tftp.c:379
+msgid "Error: invalid IP address format given.\n"
+msgstr ""
+
+#: src/ap-tftp.c:405
+#, fuzzy
+msgid "Error: invalid argument combination.\n"
+msgstr "Onjuist IP-adres\n"
+
+#: src/ap-tftp.c:412
+msgid "Error while open()ing firmware file"
+msgstr ""
+
+#: src/ap-tftp.c:419 src/ap-tftp.c:472
+msgid "Error: invalid firmware file given.\n"
+msgstr ""
+
+#: src/ap-tftp.c:461
+#, c-format
+msgid ""
+"Firmware file contains:\n"
+"- string \"ATMEL\": %s\n"
+"- string \"802.11 AP\": %s\n"
+"- string \"atbrfirm.bin\": %s\n"
+"- string \"atsingle.bin\": %s\n"
+msgstr ""
+
+#: src/ap-tftp.c:485
+#, c-format
+msgid ""
+"Using:\n"
+"- server: %s\n"
+"- firmware file: \"%s\"\n"
+"- name used for upload: \"%s\"\n"
+msgstr ""
+
+#: src/ap-tftp.c:568
+msgid ""
+"Error: device with the given IP does not seem to run SmartBridges firmware.\n"
+msgstr ""
+
+#: src/ap-tftp.c:574
+msgid "Error: SNMP authorization error or device unavailable.\n"
+msgstr ""
+
+#: src/ap-tftp.c:653
+msgid "Error while lseek()ing in firmware file\n"
+msgstr ""
+
+#: src/ap-trapd.c:150
 #, c-format
 msgid "ap-trapd %s started%s%s."
 msgstr "ap-trapd %s gestart%s%s."
 
-#: src/ap-trapd.c:149
+#: src/ap-trapd.c:151
 msgid " on "
 msgstr " aan "
 
-#: src/ap-trapd.c:155
+#: src/ap-trapd.c:157
 msgid "Unable to fork. Exiting."
 msgstr "fork() mislukt. Afsluiten."
 
-#: src/ap-trapd.c:159
+#: src/ap-trapd.c:161
 msgid "Can't create socket. Exiting."
 msgstr "Kan socket niet maken. Afsluiten."
 
-#: src/ap-trapd.c:165
+#: src/ap-trapd.c:167
 msgid "Can't bind socket. Exiting."
 msgstr "Kan socket niet verbinden. Afsluiten."
 
-#: src/ap-trapd.c:172
+#: src/ap-trapd.c:174
 #, c-format
 msgid "Can't bind to device %s. Exiting."
 msgstr "Kan niet aan apparaat %s binden. Afsluiten."
 
-#: src/ap-trapd.c:183
+#: src/ap-trapd.c:185
 #, c-format
 msgid "Unable to process username %s. Error: %m."
 msgstr "Kan gebruikersnaam %s niet verwerken. Fout: %m."
 
-#: src/ap-trapd.c:188
+#: src/ap-trapd.c:190
 #, c-format
 msgid "Unable to change to uid %d."
 msgstr "Kan niet overgaan op uid %d."
 
-#: src/ap-trapd.c:235
+#: src/ap-trapd.c:239
 #, c-format
 msgid ""
 "Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s."
 msgstr ""
 "Onbekende SNMP ver %d val ontvangen. Van %s:%d. Agent: %s. Gemeenschap: %s."
 
-#: src/ap-trapd.c:307
-#, c-format
-msgid "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d"
+#: src/ap-trapd.c:311
+#, fuzzy, c-format
+msgid "Agent:v%d %s (%s@%s:%d) Trap %i: %s%s%s. SysUptime %d:%02d:%02d.%02d"
 msgstr "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d"
 
-#: src/auth_mac.c:33
+#: src/auth.c:30
+msgid "APClient authorization credentials"
+msgstr ""
+
+#: src/auth.c:32
+#, fuzzy
+msgid "[A] MAC authorization: "
+msgstr "[A] Mac toelating: %s"
+
+#: src/auth.c:33
+#, fuzzy
+msgid "Enter MAC: "
+msgstr "Geef Mac:"
+
+#: src/auth.c:34
 #, fuzzy
-msgid "NUM     MAC address"
+msgid "Delete Num: "
+msgstr "Nummer verwijderen:"
+
+#: src/auth.c:35
+#, fuzzy
+msgid " NUM     MAC address     "
 msgstr "NUM     MAC adres"
 
+#: src/auth.c:36
+#, fuzzy
+msgid "A: auth; N: new; D: del; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A - toelaten; N - nieuw; D - verwijderen; pijltjes - schuiven; W - conf "
+"schrijven; Q - afsluiten"
+
+#: src/auth.c:38
+msgid "[I] Radius server IP: "
+msgstr ""
+
+#: src/auth.c:39
+#, fuzzy
+msgid "[P] Radius server port: "
+msgstr "[P] Hoofdpoort: %s"
+
+#: src/auth.c:40
+msgid "[S] Radius server secret: "
+msgstr ""
+
+#: src/auth.c:41
+#, fuzzy
+msgid "[T] Reauthorization time (minutes): "
+msgstr "[A] Mac toelating: %s"
+
+#: src/auth.c:42
+msgid "[F] Radius source port: "
+msgstr ""
+
+#: src/auth.c:43
+#, fuzzy
+msgid ""
+"A: auth; N: new; D: del; IPSTF: set; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A - toelaten; N - nieuw; D - verwijderen; pijltjes - schuiven; W - conf "
+"schrijven; Q - afsluiten"
+
+#: src/auth.c:45
+#, fuzzy
+msgid "[M] 802.1x authorization: "
+msgstr "[A] Mac toelating: %s"
+
+#: src/auth.c:46
+#, fuzzy
+msgid "[T] key broadcasting time period (seconds): "
+msgstr "[A] Mac toelating: %s"
+
+#: src/auth.c:47
+msgid "[I] 802.1x auth. server IP: "
+msgstr ""
+
+#: src/auth.c:48
+msgid "[S] 802.1x auth. server secret: "
+msgstr ""
+
+#: src/auth.c:49
+#, fuzzy
+msgid ""
+"A: auth; N: new; D: del; MTIS: set; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A - toelaten; N - nieuw; D - verwijderen; pijltjes - schuiven; W - conf "
+"schrijven; Q - afsluiten"
+
+#: src/auth.c:114
+#, fuzzy
+msgid "Internal"
+msgstr "Algemeen"
+
+#: src/auth.c:116
+#, fuzzy
+msgid "Radius"
+msgstr "Radio"
+
+#: src/auth.c:121
+msgid "Allow listed MACs only"
+msgstr ""
+
+#: src/auth.c:123
+msgid "Deny listed MACs only"
+msgstr ""
+
+#: src/auth.c:129
+msgid "Mixed environment"
+msgstr ""
+
+#: src/auth.c:213
+msgid "(not shown)"
+msgstr ""
+
+#: src/auth.c:276
+#, fuzzy
+msgid "Authorized MAC addresses:"
+msgstr "Toegelaten Mac adressen"
+
+#: src/auth.c:345
+msgid "(insufficient community used)"
+msgstr ""
+
+#: src/auth.c:472
+#, c-format
+msgid "Given MAC already exists in MAC list at position %d. Press any key."
+msgstr ""
+
+#: src/bridge.c:27
+msgid "[I] IP: "
+msgstr ""
+
+#: src/bridge.c:28
+#, fuzzy
+msgid "[N] Netmask: "
+msgstr "[N] Netmask: %s"
+
+#: src/bridge.c:29
+#, fuzzy
+msgid "[G] Gateway: "
+msgstr "[G] Gateway %s"
+
+#: src/bridge.c:30
+#, fuzzy
+msgid "[F] Filter non-IP traffic: "
+msgstr "[F] Niet-IP verkeer filteren: %s"
+
+#: src/bridge.c:31
+#, fuzzy
+msgid "[P] Primary port: "
+msgstr "[P] Hoofdpoort: %s"
+
+#: src/bridge.c:32
+#, fuzzy
+msgid "Attached station MAC: "
+msgstr "Verbonden station MAC: %02X%02X%02X%02X%02X%02X"
+
+#: src/bridge.c:33
+#, fuzzy
+msgid "[D] DHCP client: "
+msgstr "[D] DHCP-protocol: %s"
+
+#: src/bridge.c:34
+#, fuzzy
+msgid "[O] Operational mode: "
+msgstr "[O] Operationele modus: %s"
+
 #: src/bridge.c:35
+#, fuzzy
+msgid "[M] Preferred BSSID (remote MAC addr.): "
+msgstr "[R] Mac adres op afstand: %02X%02X%02X%02X%02X%02X"
+
+#: src/bridge.c:36
 msgid "[C] Configuration-enabled port(s): "
 msgstr ""
 
+#: src/bridge.c:37
+msgid "[T] Trap-sending port: "
+msgstr ""
+
 #: src/bridge.c:38
-msgid "[B] Isolate wireless clients (broadcast traffic): "
+msgid "[R] Forward broadcast traffic: "
 msgstr ""
 
 #: src/bridge.c:39
+msgid "[B] Isolate wireless clients (broadcast traffic): "
+msgstr ""
+
+#: src/bridge.c:40
 msgid "[U] Isolate wireless clients (unicast traffic): "
 msgstr ""
 
-#: src/bridge.c:119
+#: src/bridge.c:41
+#, fuzzy
+msgid "INGFPDOMSCRBUT - set; W - write conf; Q - quit to menu"
+msgstr "BPGINFDRT - instellen; W - conf schrijven; Q - afsluiten naar menu"
+
+#: src/bridge.c:128
+#, fuzzy
+msgid "Wireless (can be risky)"
+msgstr "Draadloos instellingen"
+
+#: src/bridge.c:129
 #, fuzzy
 msgid "Both"
 msgstr "Beide soorten"
@@ -1749,19 +2315,19 @@ msgstr "Laatste fout:"
 msgid "Error:"
 msgstr "Fout:"
 
-#: src/stations.c:33
-msgid "AP link state"
+#: src/stations.c:82
+msgid "Not available (device not in AP mode)."
 msgstr ""
 
-#: src/stations.c:37
-msgid " #            MAC                                               "
+#: src/stations.c:92
+msgid "  #     MAC       Parent MAC  RSSI   LQ Sts MACn      IP        "
 msgstr ""
 
-#: src/stations.c:40
-msgid " #     MAC       Parent MAC    RSSI  Status MACn      IP        "
-msgstr ""
+#: src/stations.c:136
+msgid "AssociatedSTAsInfo packet error"
+msgstr "AssociatedSTAsInfo pakketfout"
 
-#: src/stations.c:195 src/stations.c:367
+#: src/stations.c:189 src/stations.c:363
 #, fuzzy
 msgid ""
 "Arrows - scroll; S - save to file; Q - return; T - toggle view; Other - "
@@ -1769,17 +2335,45 @@ msgid ""
 msgstr ""
 "Pijltjes - schuiven; S - opslaan naar bestand; Q - afsluiten naar menu."
 
-#: src/stations.c:200
+#: src/stations.c:193
 #, fuzzy
 msgid "Arrows - scroll; S - save to file; Q - return; Other key - refresh"
 msgstr ""
 "Pijltjes - schuiven; S - opslaan naar bestand; Q - afsluiten naar menu."
 
-#: src/stations.c:279
+#: src/stations.c:275
 #, fuzzy
 msgid "Id       MAC address     Quality  Age  RSSI"
 msgstr "Id      MAC adres       Kwaliteit Ouderdom RSSI"
 
+#~ msgid "Create socket error. Press any key."
+#~ msgstr "Fout bij maken socket. Druk op een toets."
+
+#~ msgid "Bind socket error. Press any key."
+#~ msgstr "Fout bij verbinden socket. Druk op een toets."
+
+#~ msgid "Create socket error"
+#~ msgstr "Fout bij maken socket"
+
+#~ msgid "Bind socket error"
+#~ msgstr "Fout bij verbinden socket"
+
+#, fuzzy
+#~ msgid "NUM       MAC address"
+#~ msgstr "NUM     MAC adres"
+
+#, fuzzy
+#~ msgid "A - auth; IPSTF - set; W - write conf; Q - quit"
+#~ msgstr "DA - opties; W - conf schrijven; Q - afsluiten naar menu"
+
+#, fuzzy
+#~ msgid "A - auth; W - write conf; Q - quit"
+#~ msgstr "DA - opties; W - conf schrijven; Q - afsluiten naar menu"
+
+#~ msgid "Arrows - scroll; S - save to file; Q - quit to menu."
+#~ msgstr ""
+#~ "Pijltjes - schuiven; S - opslaan naar bestand; Q - afsluiten naar menu."
+
 #~ msgid "Associated Stations"
 #~ msgstr "Geassocieerde stations"
 
index fd4df19bf569d4664744608a514df3d5d7f62a6e..f1cc5ad2e24283d77c4f00180d946c465fc59513 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: GNU ap-utils 1.1.1\n"
-"POT-Creation-Date: 2004-11-28 00:59+0200\n"
+"POT-Creation-Date: 2005-03-07 01:13+0200\n"
 "PO-Revision-Date: 2002-10-16 08:00-0500\n"
 "Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
 "Language-Team: French <traduc@traduc.org>\n"
@@ -14,436 +14,87 @@ msgstr ""
 "Content-Transfer-Encoding: 8-bit\n"
 "Report-Msgid-Bugs-To: \n"
 
-# src/ap-config.c:42 src/bridge.c:166
-#: ap-gl/ap-gl.c:41 ap-gl/bridge.c:178 src/ap-config.c:41 src/bridge.c:182
-msgid "Bridging"
-msgstr "Podstawowe"
-
-# src/ap-config.c:42
-#: ap-gl/ap-gl.c:41 src/ap-config.c:41
-msgid "Set bridging and IP-related options"
-msgstr "Ustawianie opcji mostu i IP"
-
-# src/ap-config.c:44 src/ap-config.c:112 src/ap-config.c:121 src/bridge.c:90
-#: ap-gl/ap-gl.c:43 ap-gl/ap-gl.c:81 ap-gl/bridge.c:132 src/ap-config.c:43
-#: src/ap-config.c:112 src/ap-config.c:120 src/bridge.c:117 src/bridge.c:121
-msgid "Wireless"
-msgstr "Radiowe"
-
-# src/ap-config.c:44
-#: ap-gl/ap-gl.c:43 src/ap-config.c:43
-msgid "Set wireless options"
-msgstr "Opcje radiowe"
-
-# src/ap-config.c:45 src/ap-config.c:57
-#: ap-gl/ap-gl.c:44 src/ap-config.c:44 src/ap-config.c:56
-msgid "Privacy"
-msgstr "Klucze"
-
-# src/ap-config.c:46 src/ap-config.c:58
-#: ap-gl/ap-gl.c:45 src/ap-config.c:45 src/ap-config.c:57
-msgid "MAC auth"
-msgstr "Blokuj MAC"
-
-# src/ap-config.c:47 src/ap-config.c:59
-#: ap-gl/ap-gl.c:46 src/ap-config.c:46 src/ap-config.c:58
-msgid "Community"
-msgstr "Dostêp"
-
-# src/ap-config.c:48
-#: ap-gl/ap-gl.c:47 src/ap-config.c:47
-msgid "Radio"
-msgstr "Radio"
-
-# src/ap-config.c:48
-#: ap-gl/ap-gl.c:47 src/ap-config.c:47
-msgid "Set radio signal power and antenna options"
-msgstr "Ustawianie mocy sygna³u i opcji antenowych"
-
-# src/ap-config.c:78
-#: ap-gl/ap-gl.c:62 src/ap-config.c:80
-msgid "Upload"
-msgstr "Wy¶lij"
-
-# src/ap-config.c:78
-#: ap-gl/ap-gl.c:62 src/ap-config.c:80
-#, fuzzy
-msgid "Activate current configuration"
-msgstr "Uczyñ konfiguracjê aktywn±"
-
-# src/ap-config.c:79
-#: ap-gl/ap-gl.c:63 src/ap-config.c:81
-msgid "Defaults"
-msgstr "Domy¶lne"
-
-# src/ap-config.c:79
-#: ap-gl/ap-gl.c:63 src/ap-config.c:81
-msgid "Restore factory default settings"
-msgstr "Przywróæ ustawienia producenta"
-
-# src/ap-config.c:81 src/ap-config.c:89
-#: ap-gl/ap-gl.c:64 src/ap-config.c:82 src/ap-config.c:89
-msgid "Reset"
-msgstr "Reset"
-
-# src/ap-config.c:82
-#: ap-gl/ap-gl.c:65 src/ap-config.c:83
-msgid "Reset AP. All not uploaded configuration will be lost"
-msgstr "Reset. Wszystkie nie za³adowane opcje bêd± utracone"
-
-# src/ap-config.c:84
-#: ap-gl/ap-gl.c:66 src/ap-config.c:84
-msgid "TestMode"
-msgstr "TrybTest"
-
-# src/ap-config.c:84
-#: ap-gl/ap-gl.c:66 src/ap-config.c:84
-msgid "Put Access Point in test mode"
-msgstr "W³±cza tryb testowy AP"
-
-# src/ap-config.c:110 src/ap-config.c:120
-#: ap-gl/ap-gl.c:79 src/ap-config.c:110 src/ap-config.c:119
-msgid "SysInfo"
-msgstr "Ogólne"
-
-# src/ap-config.c:111 src/bridge.c:90
-#: ap-gl/ap-gl.c:80 ap-gl/bridge.c:131 src/ap-config.c:111 src/bridge.c:116
-#: src/bridge.c:120
-msgid "Ethernet"
-msgstr "Ethernet"
-
-# src/ap-config.c:111
-#: ap-gl/ap-gl.c:80 src/ap-config.c:111
-msgid "Get ethernet port statistics"
-msgstr "Pobierz statystyki ethernetu"
-
-# src/ap-config.c:113 src/ap-config.c:122
-#: ap-gl/ap-gl.c:82 src/ap-config.c:113 src/ap-config.c:121
-msgid "Stations"
-msgstr "Stacje"
-
-# src/ap-config.c:115
-#: ap-gl/ap-gl.c:83 src/ap-config.c:114
-msgid "KnownAPs"
-msgstr "Znane AP"
-
-# src/ap-config.c:115
-#: ap-gl/ap-gl.c:83 src/ap-config.c:114
-msgid "Get info about known Access Points"
-msgstr "Podaj informacje o Access Pointach"
-
-# src/ap-config.c:141
-#: ap-gl/ap-gl.c:100 src/ap-config.c:147
-msgid "Info"
-msgstr "Info"
-
-# src/ap-config.c:142
-#: ap-gl/ap-gl.c:101 src/ap-config.c:148
-msgid "Config"
-msgstr "Konfig"
-
-# src/ap-config.c:143
-#: ap-gl/ap-gl.c:102 src/ap-config.c:149
-msgid "Commands"
-msgstr "Komendy"
-
-# src/ap-config.c:143
-#: ap-gl/ap-gl.c:102 src/ap-config.c:149
-msgid "Execute commands on Access Point"
-msgstr "Wykonaj operacje w AP"
-
-# src/ap-config.c:145
-#: ap-gl/ap-gl.c:104 src/ap-config.c:151
-msgid "Connect"
-msgstr "Po³±cz"
-
-# src/ap-config.c:146
-#: ap-gl/ap-gl.c:105 src/ap-config.c:152
-msgid "Search"
-msgstr "Znajd¼"
-
-# lib/common.c:50 src/ap-config.c:147
-#: ap-gl/ap-gl.c:106 lib/common.c:83 src/ap-config.c:153
-msgid "About"
-msgstr "O..."
-
-# src/ap-config.c:148
-#: ap-gl/ap-gl.c:107 src/ap-config.c:154
-msgid "Shell"
-msgstr "Shell"
-
-# src/ap-config.c:149
-#: ap-gl/ap-gl.c:108 src/ap-config.c:155
-msgid "Exit"
-msgstr "Wyjd¼"
-
-# src/ap-config.c:194
-#: ap-gl/ap-gl.c:158 src/ap-config.c:204
-#, c-format
-msgid "Wireless Access Point Configurator ver. %s"
-msgstr "Konfigurator bezprzewodowych access-pointów wersja %s"
-
-# src/auth_mac.c:35
-#: ap-gl/auth_mac.c:27 src/auth_mac.c:27
-msgid "AuthorizedMacTableString packet error"
-msgstr "B³êdny pakiet AuthorizedMacTableString"
-
-# lib/ap-utils.h:117
-#: ap-gl/auth_mac.c:29 src/auth_mac.c:29
-msgid "[A] MAC authorization: "
-msgstr "[A] Ograniczenie dostêpu dla wybranych adresów MAC: "
-
-# lib/ap-utils.h:122
-#: ap-gl/auth_mac.c:30 src/auth_mac.c:30
-msgid "Enter MAC: "
-msgstr "Adres fizyczny: "
-
-# lib/ap-utils.h:121
-#: ap-gl/auth_mac.c:31 src/auth_mac.c:31
-msgid "Delete Num: "
-msgstr "Skasuj pozycjê: "
-
-# lib/ap-utils.h:118
-#: ap-gl/auth_mac.c:32 src/auth_mac.c:32
-msgid "Authorized MAC addresses"
-msgstr "Dostêp w/g MAC"
-
-# lib/ap-utils.h:119
-#: ap-gl/auth_mac.c:33
-msgid "NUM       MAC address"
-msgstr "Numer adres fizyczny (MAC)"
-
-# lib/ap-utils.h:120
-#: ap-gl/auth_mac.c:34 src/auth_mac.c:34
-msgid "A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit"
-msgstr ""
-"A W³/Wy³; N - nowe; D - kasuj; strza³ki - przewijanie; W - zapis; Q - Wyjd¼"
-
-# src/nwn_advanced.c:70
-#: ap-gl/auth_mac.c:35
-msgid "A - auth; IPSTF - set; W - write conf; Q - quit"
-msgstr "DA - opcje; W - zapis; Q - powrót"
-
-# src/nwn_advanced.c:70
-#: ap-gl/auth_mac.c:36
-msgid "A - auth; W - write conf; Q - quit"
-msgstr "DA - opcje; W - zapis; Q - powrót"
-
-#: ap-gl/auth_mac.c:38
-msgid "[I] RADIUS SERVER IP: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:39
-msgid "[P] RADIUS SERVER PORT: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:40
-msgid "[S] RADIUS SERVER SECRET: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:41
-msgid "[T] REAUTHORIZATION TIME: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:42
-msgid "[F] RADIUS SOURCE PORT: "
-msgstr ""
-
-# src/ap-config.c:55
-#: ap-gl/auth_mac.c:87
-msgid "Internal"
-msgstr "Ogólnie"
-
-#: ap-gl/auth_mac.c:95
-msgid "<hidden>"
-msgstr "<ukryto>"
-
-#: ap-gl/bridge.c:26 src/bridge.c:26
-msgid "[I] IP: "
-msgstr ""
-
-# src/bridge.c:169
-#: ap-gl/bridge.c:27 src/bridge.c:27
-msgid "[N] Netmask: "
-msgstr "[N] Maska:  "
-
-# src/bridge.c:171
-#: ap-gl/bridge.c:28 src/bridge.c:28
-msgid "[G] Gateway: "
-msgstr "[G] Brama: "
-
-# src/bridge.c:32
-#: ap-gl/bridge.c:29 src/bridge.c:29
-msgid "[F] Filter non-IP traffic: "
-msgstr "[F] Wycinaj ruch nie-IP: "
-
-# src/bridge.c:33
-#: ap-gl/bridge.c:30 src/bridge.c:30
-msgid "[P] Primary port: "
-msgstr "[P] Port podstawowy: "
-
-# src/bridge.c:144
-#: ap-gl/bridge.c:31 src/bridge.c:31
-msgid "Attached station MAC: "
-msgstr "MAC do³±czonej stacji:"
-
-# src/bridge.c:34
-#: ap-gl/bridge.c:32 src/bridge.c:32
-msgid "[D] DHCP client: "
-msgstr "[D] Klient DHCP: "
-
-# src/bridge.c:35
-#: ap-gl/bridge.c:33 src/bridge.c:33
-msgid "[O] Operational mode: "
-msgstr "[O] Tryb pracy: "
-
-# src/bridge.c:36
-#: ap-gl/bridge.c:34 src/bridge.c:34
-msgid "[M] Preferred BSSID (remote MAC addr.): "
-msgstr "[M] Zdalny adres fizyczny: "
-
-#: ap-gl/bridge.c:36 src/bridge.c:36
-msgid "[T] Trap-sending port(s): "
-msgstr "[T] SNMP-Trap na porty: "
-
-#: ap-gl/bridge.c:37 src/bridge.c:37
-msgid "[R] Forward broadcast traffic: "
-msgstr "[R] Przesy³aj ruch rozg³oszeniowy: "
-
-#: ap-gl/bridge.c:39
-msgid "[U] Isolate wireless clients: "
-msgstr "[U] Izoluj klientów radiowych: "
-
-# src/bridge.c:30
-#: ap-gl/bridge.c:40 src/bridge.c:40
-msgid "INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu"
-msgstr "BPGINFDRT - ustaw; W - Zapisz; Q - powrót"
-
-# src/bridge.c:85
-#: ap-gl/bridge.c:124 src/bridge.c:109
-msgid "Wireless Bridge Point to MultiPoint"
-msgstr "Bridge punkt-wielopunkt"
-
-# src/bridge.c:86
-#: ap-gl/bridge.c:125 src/bridge.c:110
-msgid "Access Point"
-msgstr "Access Point"
-
-# src/bridge.c:87
-#: ap-gl/bridge.c:126 src/bridge.c:111
-msgid "Access Point client"
-msgstr "Klient Access pointa"
-
-# src/bridge.c:88
-#: ap-gl/bridge.c:127 src/bridge.c:112
-msgid "Wireless Bridge Point to Point"
-msgstr "Bridge punkt-punkt"
-
-# src/bridge.c:88
-#: ap-gl/bridge.c:128 src/bridge.c:113
-msgid "Repeater"
-msgstr "Repeater"
-
-#: ap-gl/stations.c:77 src/stations.c:100
-#, fuzzy
-msgid "AP is currently in AP Client Mode => no associated STAtions."
-msgstr "AP jest teraz w trybie klienta i nie ma stacji pod³±czonych"
-
-#: ap-gl/stations.c:102
-msgid "#     MAC       LQ    RSSI   Status Port IP"
-msgstr ""
-
-# src/stations.c:110
-#: ap-gl/stations.c:128 src/stations.c:159
-msgid "AssociatedSTAsInfo packet error"
-msgstr "B³êdny pakiet AssociatedSTAsInfo"
-
-# src/stations.c:132 src/stations.c:284
-#: ap-gl/stations.c:160
-msgid "Arrows - scroll; S - save to file; Q - quit to menu."
-msgstr "Strza³ki - przewijanie; S - zapis do zbioru; Q - powrót."
-
 # src/aps.c:138
-#: lib/aps.c:29
+#: lib/aps.c:30
 msgid "Known Access Points"
 msgstr "Znane Access pointy"
 
-#: lib/aps.c:129
+#: lib/aps.c:130
 msgid "Your Access Point is not in \"AP client\" mode => getting"
 msgstr "Twój AP nie jest w trybie \"klient AP\""
 
-#: lib/aps.c:132
+#: lib/aps.c:133
 msgid "up-to-date \"Known APs\" info requires your AP to be"
 msgstr ""
 
-#: lib/aps.c:135
+#: lib/aps.c:136
 msgid "temporarily configured into \"AP client\" mode and rebooted."
 msgstr "tymczasowo skonfigurowano w tryb klienta AP i zrestartowano."
 
-#: lib/aps.c:138
+#: lib/aps.c:139
 msgid "Your AP will be reconfigured back to original mode by this"
 msgstr ""
 
-#: lib/aps.c:141
+#: lib/aps.c:142
 msgid "utility once you quit the \"KnownAP\" view. This, in turn, may"
 msgstr ""
 
 # src/ap-config.c:78
-#: lib/aps.c:144
+#: lib/aps.c:145
 msgid "cause loss of Access Point's current configuration."
 msgstr "Zapisuje aktualn± konfiguracje na sta³e"
 
-#: lib/aps.c:148
+#: lib/aps.c:149
 msgid "Do NOT answer \"Yes\" if you're connected to the Access Point"
 msgstr ""
 
 # src/ap-config.c:44
-#: lib/aps.c:151
+#: lib/aps.c:152
 msgid "via its wireless port."
 msgstr "poprzez port radiowy"
 
 # src/aps.c:91 src/cmd.c:41 src/cmd.c:85 src/cmd.c:141 src/test.c:82
-#: lib/aps.c:153 lib/cmd.c:45 lib/cmd.c:75 lib/test.c:91
+#: lib/aps.c:154 lib/cmd.c:45 lib/cmd.c:75 lib/test.c:96
 msgid "Do you want to continue? "
 msgstr "Czesz kontynuowaæ?"
 
 # src/aps.c:143
-#: lib/aps.c:207
+#: lib/aps.c:208
 msgid "NetworkType"
 msgstr "Typ sieci"
 
 # src/aps.c:176
-#: lib/aps.c:283
+#: lib/aps.c:284
 msgid "Infrastructure"
 msgstr "Infrastruktura"
 
 # src/aps.c:191
-#: lib/aps.c:343 lib/aps.c:351 lib/aps.c:359
+#: lib/aps.c:344 lib/aps.c:352 lib/aps.c:360
 msgid "CN: Channel Name; P: Preambule Type (S: Short; L: Long);"
 msgstr "P: Typ nag³ówka; P: Preambu³a (S: Krótki; L: D³ugi)"
 
-#: lib/aps.c:345
+#: lib/aps.c:346
 msgid "RSSI: Radio Signal Strength Indicator [%]"
 msgstr ""
 
-#: lib/aps.c:347 lib/aps.c:355
+#: lib/aps.c:348 lib/aps.c:356
 msgid "; LQ: Link Quality [%]"
 msgstr ""
 
-#: lib/aps.c:353
+#: lib/aps.c:354
 msgid "RSSI: Radio Signal Strength Indicator [dBm]"
 msgstr ""
 
-#: lib/aps.c:361
+#: lib/aps.c:362
 msgid "RSSI: Radio Signal Strength Indicator [raw]"
 msgstr ""
 
-#: lib/aps.c:363
+#: lib/aps.c:364
 msgid "; LQ: Link Q. [raw]"
 msgstr ""
 
 # src/aps.c:194
-#: lib/aps.c:369
+#: lib/aps.c:370
 #, fuzzy
 msgid ""
 "# con. to AP #; R refresh with reset; T toggle; Q quit; Other = refr. w/o "
@@ -452,7 +103,7 @@ msgstr ""
 "# po³±cz z tym AP; R od¶wie¿ przez reset; G od¶wie¿ bez resetu; Q wyj¶cie"
 
 # src/aps.c:194
-#: lib/aps.c:371
+#: lib/aps.c:372
 #, fuzzy
 msgid ""
 "# con. to AP #; R initiate AP scan; T toggle view; Q quit; Other = refresh "
@@ -461,44 +112,44 @@ msgstr ""
 "# po³±cz z tym AP; R od¶wie¿ przez reset; G od¶wie¿ bez resetu; Q wyj¶cie"
 
 # lib/ap_search.c:134
-#: lib/aps.c:500 lib/ap_search.c:167
+#: lib/aps.c:501 lib/ap_search.c:173
 #, c-format
 msgid "Failure in sendto(): %s. Press any key."
 msgstr "B³±d sendto() : %s. Wci¶nij dowolny klawisz."
 
-#: lib/aps.c:509
+#: lib/aps.c:510
 msgid "You have just initiated the AP scan. Be advised that it may"
 msgstr "W³a¶nie zainicjalizowa³e¶ skanowanie sieci. Musisz wiedzieæ,"
 
-#: lib/aps.c:512
+#: lib/aps.c:513
 msgid "take a few seconds for your Access Point to find out some"
 msgstr "¿e potrwa chwilkê, zanim twój AP znajdzie cokolwiek"
 
-#: lib/aps.c:515
+#: lib/aps.c:516
 msgid "values, so expect finishing the scan in about 5 seconds."
 msgstr "i mo¿esz oczekiwaæ zakoñczenia skanowania do 5 sekund."
 
-#: lib/aps.c:518
+#: lib/aps.c:519
 msgid "Also note that your Access Point stops forwarding the network"
 msgstr "Musisz wiedzieæ równie¿. ¿e AP przestanie przesy³aæ ruch"
 
-#: lib/aps.c:521
+#: lib/aps.c:522
 msgid "traffic while the scan is in progress, but restores itself"
 msgstr "sieciowy podczas skanowania, ale przywróci swój stan"
 
-#: lib/aps.c:524
+#: lib/aps.c:525
 msgid "to normal operation in time ranging up to 1 minute."
 msgstr "do normalnej pracy po oko³o 1 minucie."
 
-#: lib/aps.c:527
+#: lib/aps.c:528
 msgid "Hence, if you are connected to target Access Point via its"
 msgstr "Uwa¿aj! Je¶li jeste¶ pod³±czony do tego AP przez jego"
 
-#: lib/aps.c:530
+#: lib/aps.c:531
 msgid "wireless port, you need to wait a bit longer"
 msgstr "port radiowy, bêdziesz musia³ poczekaæ trochê d³u¿ej"
 
-#: lib/aps.c:533
+#: lib/aps.c:534
 msgid "after pressing 'S'."
 msgstr "po naci¶niêciu klawisza 'S'."
 
@@ -509,299 +160,314 @@ msgid "Community name: "
 msgstr "Dostêp"
 
 #: lib/ap_search.c:49
-msgid "  NUM  IP ADDRESS       MIB TYPE    NAME"
+msgid "  NUM  IP ADDRESS       MIB TYPE    FW TYPE (VERSION) AP NAME"
 msgstr ""
 
-#: lib/ap_search.c:100
+#: lib/ap_search.c:106
 msgid "Please wait while scanning, or press 'Q' to quit."
 msgstr "Trwa skanowanie, poczekaj chwilê, by przerwaæ wci¶nij 'Q'"
 
 # lib/ap_search.c:110
-#: lib/ap_search.c:116
+#: lib/ap_search.c:122
 msgid "Can't set broadcast option on socket. Press any key."
 msgstr "Nie moge ustawiæ trybu BROADCAST. Wci¶nij dowolny klawisz."
 
 # lib/ap_search.c:117
-#: lib/ap_search.c:125
+#: lib/ap_search.c:131
 msgid "Can't set multicast membership on socket. Press any key."
 msgstr "Nie moge ustawiæ przynale¿no¶ci multicast. Wci¶nij dowolny klawisz."
 
-#: lib/ap_search.c:132
+#: lib/ap_search.c:138
 msgid "Scanning via network interface:"
 msgstr "Szukam poprzez interfejs sieciowy: "
 
-#: lib/ap_search.c:133
+#: lib/ap_search.c:139
 #, c-format
 msgid "  Index: %i"
 msgstr " Indeks: %i"
 
 # lib/ap-utils.h:78
-#: lib/ap_search.c:135
+#: lib/ap_search.c:141
 #, c-format
 msgid "  Name: %s"
 msgstr " Nazwa: %s"
 
-#: lib/ap_search.c:137
+#: lib/ap_search.c:143
 #, c-format
 msgid "  IP: %s"
 msgstr ""
 
-#: lib/ap_search.c:146
+#: lib/ap_search.c:152
 #, fuzzy, c-format
 msgid "Scanning for AP with MIB type: %s"
 msgstr "Szukam typu AP: %s"
 
-#: lib/ap_search.c:334
-msgid "Please enter SNMP community name that will be used for AP detection."
-msgstr ""
-
 # lib/ap_search.c:128
-#: lib/ap_search.c:345
+#: lib/ap_search.c:378
 msgid "Access Points Search"
 msgstr "Szukanie Access-pointów"
 
 # src/ap-mrtg.c:178
-#: lib/ap_search.c:363
+#: lib/ap_search.c:396
 msgid "realloc() error."
 msgstr "B³±d otwarcia gniazdka"
 
-#: lib/ap_search.c:375
+#: lib/ap_search.c:408
 msgid "Network interface discovery error."
 msgstr "B³±d interfejsu sieciowego."
 
 # src/stat.c:41
-#: lib/ap_search.c:450
+#: lib/ap_search.c:483
 msgid "No local network interfaces found. Press any key."
 msgstr "Nie znaleziono interfejsu sieci lokalnej. Wci¶nij dowolny klawisz."
 
-#: lib/ap_search.c:452
+#: lib/ap_search.c:485
 msgid "No directly reachable Access Points found. Press any key."
 msgstr "Nie znaleziono ¿adnego osi±galnego AP. Naci¶nij dowolny klawisz."
 
-#: lib/ap_search.c:457
+#: lib/ap_search.c:490
 #, fuzzy
 msgid "Single-screen maximum number of APs found."
 msgstr "Program osi±gn±³ maksymaln± liczê Access Pointów znalezionych."
 
 # lib/common.c:118
-#: lib/ap_search.c:460
+#: lib/ap_search.c:493
 msgid "# - connect to AP; Q - quit"
 msgstr "# - pod³±cz do AP; Q - wyjd¼"
 
 # src/sysinfo.c:402
-#: lib/ap-utils.h:79
+#: lib/ap-utils.h:82
 msgid "MAC address: "
 msgstr "Adres MAC: "
 
 # lib/ap-utils.h:80
-#: lib/ap-utils.h:80
+#: lib/ap-utils.h:83
 msgid "[S] SNMP traps: "
 msgstr "[S] Sygnalizacja SNMP: "
 
 # lib/ap-utils.h:68
-#: lib/ap-utils.h:82
+#: lib/ap-utils.h:85
 msgid "[C] Frequency channel: "
 msgstr "[C] Czêstotliwo¶æ fali: "
 
 # src/stat.c:123
-#: lib/ap-utils.h:84
+#: lib/ap-utils.h:87
 msgid "Receive  antenna:"
 msgstr "Odebrane:"
 
 # src/test.c:70
-#: lib/ap-utils.h:85
+#: lib/ap-utils.h:88
 msgid "[U] Left"
 msgstr "[U] Lewa"
 
 # src/test.c:70
-#: lib/ap-utils.h:86
+#: lib/ap-utils.h:89
 msgid "[I] Right"
 msgstr "[I] Prawa"
 
 # src/stat.c:124
-#: lib/ap-utils.h:87
+#: lib/ap-utils.h:90
 msgid "Transmit antenna:"
 msgstr "Antena nadawcza:"
 
 # src/test.c:70
-#: lib/ap-utils.h:88
+#: lib/ap-utils.h:91
 msgid "[O] Left"
 msgstr "[O] Lewa"
 
 # src/test.c:70
-#: lib/ap-utils.h:89
+#: lib/ap-utils.h:92
 msgid "[P] Right"
 msgstr "[P] Prawa"
 
 # src/sysinfo.c:358
-#: lib/ap-utils.h:90
+#: lib/ap-utils.h:93
 msgid "Diversity select:"
 msgstr "Naprzemienno¶æ:"
 
 # src/test.c:70
-#: lib/ap-utils.h:91
+#: lib/ap-utils.h:94
 msgid "[T] Left"
 msgstr "[T] Lewa"
 
 # src/test.c:70
-#: lib/ap-utils.h:92
+#: lib/ap-utils.h:95
 msgid "[Y] Right"
 msgstr "[Y] Prawa"
 
-#: lib/ap-utils.h:94
+#: lib/ap-utils.h:97
 msgid "Yes"
 msgstr "Tak"
 
-#: lib/ap-utils.h:95
+#: lib/ap-utils.h:98
 msgid "No"
 msgstr "Nie"
 
-#: lib/ap-utils.h:97
+#: lib/ap-utils.h:100
 msgid "On"
 msgstr "w³±"
 
 # lib/ap-utils.h:55
-#: lib/ap-utils.h:98
+#: lib/ap-utils.h:101
 msgid "Off"
 msgstr "wy³"
 
 # lib/ap-utils.h:56
-#: lib/ap-utils.h:100
+#: lib/ap-utils.h:103
 msgid "Basic"
 msgstr "Podstawowy"
 
 # lib/ap-utils.h:58
-#: lib/ap-utils.h:102
+#: lib/ap-utils.h:105
 msgid "Press any key to continue."
 msgstr "Wci¶nij dowolny klawisz aby kontynuowaæ."
 
-#: lib/ap-utils.h:103
-msgid "Q - quit to menu. T - toggle polling mode, Other key - force update."
+#: lib/ap-utils.h:106
+msgid "Q - quit to menu. T - toggle polling mode, Other key - force update"
 msgstr ""
 
 # lib/ap-utils.h:86
-#: lib/ap-utils.h:105
+#: lib/ap-utils.h:108
 msgid "Unable to write data to AP. Press any key to continue."
 msgstr "Nie moge wys³aæ danych do AP. Wci¶nij dowolny klawisz."
 
 # lib/ap-utils.h:87
-#: lib/ap-utils.h:106
+#: lib/ap-utils.h:109
 #, fuzzy
 msgid "Unable to retrieve (valid) data from AP. Press any key to continue."
 msgstr "Nie moge pobraæ danych z AP. Wci¶nij dowolny klawisz."
 
 # lib/ap-utils.h:88
-#: lib/ap-utils.h:107
+#: lib/ap-utils.h:110
 #, fuzzy
-msgid "Trying to retrieve data from AP. Please wait..."
+msgid "Trying to retrieve data from AP - please wait (or press Q to quit)."
 msgstr "Pobieram dane z AP. Proszê czekaæ..."
 
 # lib/ap-utils.h:89
-#: lib/ap-utils.h:108
+#: lib/ap-utils.h:111
 msgid "Writing data to AP. Please wait..."
 msgstr "Zapisuje dane do AP. Proszê czekaæ..."
 
 # lib/ap-utils.h:86
-#: lib/ap-utils.h:109
+#: lib/ap-utils.h:112
 msgid "Configuration written to the AP. Press any key to continue."
 msgstr "Konfiguracja zapisana do AP. Wci¶nij dowolny klawisz."
 
 # src/stat.c:40
-#: lib/ap-utils.h:110
+#: lib/ap-utils.h:113
 #, fuzzy
 msgid "select() function error. Press any key."
 msgstr "B³±d fcntl(). Wci¶nij dowolny klawisz."
 
-# lib/ap-utils.h:92
-#: lib/ap-utils.h:112
-msgid "Create socket error. Press any key."
-msgstr "Nie moge utworzyæ gniazdka. Wci¶nij dowolny klawisz."
+# src/stat.c:40
+#: lib/ap-utils.h:114
+#, fuzzy
+msgid "socket() or bind() function error. Press any key."
+msgstr "B³±d fcntl(). Wci¶nij dowolny klawisz."
 
-# lib/ap-utils.h:93
-#: lib/ap-utils.h:113
-msgid "Bind socket error. Press any key."
-msgstr "Bl±d gniazdka. Wci¶nij dowolny klawisz."
+# lib/ap-utils.h:87
+#: lib/ap-utils.h:116
+#, fuzzy
+msgid "Unable to write AP list file ~/.ap-config. Press any key."
+msgstr "Nie moge pobraæ danych z AP. Wci¶nij dowolny klawisz."
+
+#: lib/ap-utils.h:117
+msgid "AP list file ~/.ap-config successfully written. Press any key."
+msgstr ""
 
 # lib/ap-utils.h:102
-#: lib/ap-utils.h:115
+#: lib/ap-utils.h:119
 msgid "Back to main menu"
 msgstr "Powrót do menu g³ównego"
 
 # lib/ap-utils.h:103
-#: lib/ap-utils.h:116
+#: lib/ap-utils.h:120
 msgid "Exit program"
 msgstr "Wyj¶cie z programu"
 
 # lib/ap-utils.h:104
-#: lib/ap-utils.h:117
+#: lib/ap-utils.h:121
 msgid "Run subshell. To return type 'exit'."
 msgstr "Uruchomienie podpow³oki. By wróciæ wpisz 'exit'."
 
+#: lib/ap-utils.h:122
+msgid "Change polling mode interval"
+msgstr ""
+
 # lib/ap-utils.h:105
-#: lib/ap-utils.h:118
+#: lib/ap-utils.h:123
 msgid "Short info about program"
 msgstr "O programie"
 
 # lib/ap-utils.h:106
-#: lib/ap-utils.h:119
+#: lib/ap-utils.h:124
 msgid "Find connected Access Points"
 msgstr "Znajd¼ pod³±czone Access-pointy"
 
 # lib/ap-utils.h:107
-#: lib/ap-utils.h:120
+#: lib/ap-utils.h:125
 msgid "Set connection options: ip and community"
 msgstr "Ustawianie opcji po³±czeñ: ip i grupa"
 
 # lib/ap-utils.h:108
-#: lib/ap-utils.h:121
+#: lib/ap-utils.h:126
 msgid "Set encryption; edit WEP keys"
 msgstr "Ustawianie szyfracji, zmiana kluczy"
 
 # lib/ap-utils.h:109
-#: lib/ap-utils.h:122
-msgid "Set MAC authorization; edit MAC authorization table"
+#: lib/ap-utils.h:127
+#, fuzzy
+msgid "Set authorization; edit MAC authorization table"
 msgstr "Ustawianie praw dostêpu w/g MAC i listy MAC"
 
 # lib/ap-utils.h:110
-#: lib/ap-utils.h:123
+#: lib/ap-utils.h:128
 msgid "Set SNMP community/password for access to the AP"
 msgstr "Ustawianie hase³/praw SNMP dla AP"
 
 # lib/ap-utils.h:111
-#: lib/ap-utils.h:124
+#: lib/ap-utils.h:129
 msgid "Get info about AP hardware and firmware"
 msgstr "Informacja o sprzêcie i oprogramowaniu AP"
 
 # lib/ap-utils.h:112
-#: lib/ap-utils.h:125
+#: lib/ap-utils.h:130
 msgid "Get wireless port statistics"
 msgstr "Statystyki portu radiowego"
 
 # lib/ap-utils.h:113
-#: lib/ap-utils.h:126
+#: lib/ap-utils.h:131
 msgid "Get list of currently associated stations (Access Point clients)"
 msgstr "Lista aktualnie przy³±czonych stacji"
 
+#: lib/ap-utils.h:132
+msgid "Get link status in APclient mode"
+msgstr ""
+
 # lib/ap-utils.h:114
-#: lib/ap-utils.h:127
+#: lib/ap-utils.h:133
 msgid "Get info and statistics from AP"
 msgstr "Pobieram informacje i statystyki z AP"
 
 # lib/ap-utils.h:115
-#: lib/ap-utils.h:128
+#: lib/ap-utils.h:134
 msgid "Set various configuration options"
 msgstr "Ustawianie ró¿nych opcji"
 
 # src/stations.c:194 src/stations.c:278
-#: lib/ap-utils.h:130
+#: lib/ap-utils.h:136
 msgid "Associated stations"
 msgstr "Pod³±czone stacje"
 
-#: lib/ap-utils.h:132
+#: lib/ap-utils.h:137
+msgid "AP Client link state"
+msgstr ""
+
+#: lib/ap-utils.h:139
 msgid "Polling: on"
 msgstr ""
 
-#: lib/ap-utils.h:133
+#: lib/ap-utils.h:140
 msgid "Polling: off"
 msgstr ""
 
@@ -868,187 +534,202 @@ msgid "Configuration uploaded. Press any key to continue."
 msgstr "Konfiguracja za³adowana. Wci¶nij dowolny klawisz."
 
 # lib/common.c:120
-#: lib/common.c:30
+#: lib/common.c:32
 msgid "Access Point IP-address: "
 msgstr "Adres IP Access Pointa: "
 
 # lib/common.c:121
-#: lib/common.c:31
+#: lib/common.c:33
 msgid "Password (community): "
 msgstr "Has³o (community): "
 
-#: lib/common.c:32
+#: lib/common.c:34
 #, fuzzy
 msgid "Autodetect AP MIB properties? "
 msgstr "Wykryæ typ AP? "
 
 # lib/common.c:122
-#: lib/common.c:33
+#: lib/common.c:35
 #, fuzzy
 msgid "AP MIB type: "
 msgstr "Typ AP: "
 
-#: lib/common.c:34
+#: lib/common.c:36
 msgid "AP MIB vendor extensions: "
 msgstr ""
 
 # src/aps.c:91 src/cmd.c:41 src/cmd.c:85 src/cmd.c:141 src/test.c:82
-#: lib/common.c:35
+#: lib/common.c:37
 #, fuzzy
 msgid "Do you want to use AP's name as its label? "
 msgstr "Czesz kontynuowaæ?"
 
 # src/bridge.c:86
-#: lib/common.c:36
+#: lib/common.c:38
 #, fuzzy
 msgid "Access Point label: "
 msgstr "Access Point"
 
 # lib/common.c:159
-#: lib/common.c:37
+#: lib/common.c:39
 msgid "Save connect-settings: "
 msgstr "Zapisz na sta³e: "
 
+#: lib/common.c:40
+msgid "[P] Polling mode interval (tenths of second): "
+msgstr ""
+
+# src/wlan.c:185
+#: lib/common.c:41
+#, fuzzy
+msgid "P - change polling mode interval; Q - quit to menu"
+msgstr "[kl] - ustaw opcje; W - zapis; Q - wyj¶cie do menu"
+
+# lib/common.c:50 src/ap-config.c:147
+#: lib/common.c:89 src/ap-config.c:158
+msgid "About"
+msgstr "O..."
+
 # lib/common.c:67
-#: lib/common.c:100
+#: lib/common.c:106
 #, c-format
 msgid "From %s"
 msgstr "Od %s"
 
 # lib/common.c:69
-#: lib/common.c:102
+#: lib/common.c:108
 #, c-format
 msgid "Version %s"
 msgstr "Wersja %s"
 
 # lib/common.c:72
-#: lib/common.c:105
+#: lib/common.c:111
 msgid "Written by Roman Festchook roma@polesye.net"
 msgstr "Napisa³ Roman Festchook (roma@polesye.net)"
 
-#: lib/common.c:107
-msgid "Portions by Jan Rafaj aputils@cedric.unob.cz"
+#: lib/common.c:113
+msgid "and Jan Rafaj jr-aputils@cedric.unob.cz"
 msgstr ""
 
 # lib/common.c:74
-#: lib/common.c:109
+#: lib/common.c:115
 #, fuzzy
-msgid "Copyright (c) 2001-2004"
+msgid "Copyright (c) 2001-2005"
 msgstr "Prawa autorskie - Roman Festchook 2001-2004"
 
-#: lib/common.c:111
+#: lib/common.c:117
 msgid "Roman Festchook and Jan Rafaj"
 msgstr ""
 
 # lib/common.c:77
-#: lib/common.c:114
+#: lib/common.c:120
 msgid "This program is distributed under the terms"
 msgstr "Program dostêpnu wed³ug zasad"
 
 # lib/common.c:79
-#: lib/common.c:116
+#: lib/common.c:122
 msgid "of the GNU General Public License version 2."
 msgstr "Publicznej Licencji GNU w wersji 2."
 
 # lib/common.c:81
-#: lib/common.c:118
+#: lib/common.c:124
 msgid "See the included COPYING file for details."
 msgstr "Szczegó³y - przeczytaj plik COPYING."
 
 # lib/common.c:118
-#: lib/common.c:175
+#: lib/common.c:165
 msgid "Connect options"
 msgstr "Opcje pod³±czenia"
 
 # lib/common.c:124
-#: lib/common.c:183
+#: lib/common.c:173
 msgid "Enter IP address of your Access Point."
 msgstr "Wpisz adres IP swojego Access Pointa."
 
 # lib/common.c:133
-#: lib/common.c:192
+#: lib/common.c:182
 msgid "Entered characters will not be displayed for security reason."
 msgstr "Wpisywane litery nie bêd± wy¶wietlane z powodów bezpieczeñstwa."
 
-#: lib/common.c:266
+#: lib/common.c:249
 msgid "This label will be stored on HDD (independently on AP name!)."
 msgstr ""
 
 # lib/ap-utils.h:89
-#: lib/common.c:361
+#: lib/common.c:362
 #, fuzzy
 msgid "Trying to probe AP for MIB properties. Please wait..."
 msgstr "Zapisuje dane do AP. Proszê czekaæ..."
 
 # lib/ap-utils.h:87
-#: lib/common.c:390
+#: lib/common.c:391
 #, fuzzy
 msgid ""
 "Unable to determine AP MIB properties (no response from AP). Press any key."
 msgstr "Nie moge pobraæ danych z AP. Wci¶nij dowolny klawisz."
 
-#: lib/file.c:205
+#: lib/common.c:489 lib/set_oeminfo.c:221
+#, c-format
+msgid "%s%u"
+msgstr ""
+
+#: lib/common.c:491
+#, c-format
+msgid "(%0.1f seconds)"
+msgstr ""
+
+#: lib/file.c:199
 msgid "NUM  IP ADDRESS       MIB TYPE    MIB EXT.  LABEL"
 msgstr ""
 
-#: lib/file.c:206
+#: lib/file.c:200
 msgid "Choose an AP to connect to"
 msgstr "Wybierz AP do którego chcesz siê pod³±czyæ"
 
-#: lib/file.c:212
+#: lib/file.c:206
 msgid "1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll"
 msgstr ""
 "1-9,C: pod³±cz; N: nowy; D: kasuj; W: zapisz; Q: wyjd¼; kursor: przewiñ"
 
 # lib/common.c:118
-#: lib/file.c:268
+#: lib/file.c:257
 msgid "Connect to AP num:"
 msgstr "Nr AP do pod³. :"
 
 # lib/ap-utils.h:121
-#: lib/file.c:304
+#: lib/file.c:288
 msgid "Delete num:"
 msgstr "Skasuj pozycje:"
 
-#: lib/file.c:372
-msgid "AP list file ~/.ap-config successfully written. Press any key."
-msgstr ""
-
-# lib/ap-utils.h:87
-#: lib/file.c:376
-#, fuzzy
-msgid "Unable to write AP list file ~/.ap-config. Press any key."
-msgstr "Nie moge pobraæ danych z AP. Wci¶nij dowolny klawisz."
-
 # lib/ap-utils.h:86
-#: lib/file.c:426
+#: lib/file.c:442
 #, fuzzy
 msgid "Unable to write stations file. Press any key."
 msgstr "Nie moge wys³aæ danych do AP. Wci¶nij dowolny klawisz."
 
-#: lib/file.c:428
+#: lib/file.c:444
 msgid "Stations file succesfully written. Press any key."
 msgstr ""
 
 # src/bridge.c:31
-#: lib/input.c:33
+#: lib/input.c:32
 msgid "Invalid value. Press any key to continue."
 msgstr "B³êdny adres IP. Wci¶nij dowolny klawisz."
 
 # lib/ap-utils.h:86
-#: lib/input.c:34
+#: lib/input.c:33
 #, fuzzy, c-format
 msgid "Value must be in range %u - %u. Press any key to continue."
 msgstr "Warto¶æ musi byæ od %i do %i. Wci¶nij dowolny klawisz."
 
 # src/aps.c:93
-#: lib/input.c:412
+#: lib/input.c:460
 #, fuzzy
 msgid "Y - Yes; Any other key - No (it's safer to answer No)"
 msgstr "(Y - Tak; N - Nie (lepiej nie)"
 
 # lib/oui.c:6048
-#: lib/oui.c:6056
+#: lib/oui.c:6061
 msgid "Unknown or Private"
 msgstr "Nieznany lub Prywatny"
 
@@ -1095,7 +776,7 @@ msgid ""
 msgstr "Nie wy³±cza siê wszystkich anten!!! Wci¶nij dowolny klawisz"
 
 # lib/scr.c:112
-#: lib/scr.c:168
+#: lib/scr.c:157
 #, fuzzy, c-format
 msgid "Current AP: %s Type: %s Ext: %s"
 msgstr "Aktualny AP: %s Typ: %s"
@@ -1139,6 +820,159 @@ msgid ""
 "[key] - set community/password; W - write config to AP; Q - quit to menu"
 msgstr "Kl. - ustaw has³o; W - zapisz konfiguracje; Q - wyj¶cie"
 
+# src/sysinfo.c:134
+#: lib/set_oeminfo.c:28
+#, fuzzy
+msgid "Info structure version: "
+msgstr "StructVersion: %u"
+
+# src/sysinfo.c:402
+#: lib/set_oeminfo.c:29
+#, fuzzy
+msgid "[M] Device MAC address: "
+msgstr "Adres MAC: "
+
+# src/sysinfo.c:273
+#: lib/set_oeminfo.c:30
+#, fuzzy
+msgid "    Manufacturer with this OUI: "
+msgstr "ID producenta:"
+
+# src/sysinfo.c:316
+#: lib/set_oeminfo.c:31
+#, fuzzy
+msgid "[D] Regulatory domain: "
+msgstr "Regulacje dot. kana³ów: %s"
+
+# src/sysinfo.c:108
+#: lib/set_oeminfo.c:32
+#, fuzzy
+msgid "[T] Product type: "
+msgstr "Typ produktu: %u"
+
+# src/sysinfo.c:116
+#: lib/set_oeminfo.c:33
+#, fuzzy
+msgid "[E] OEM name: "
+msgstr "Nazwa OEM:"
+
+#: lib/set_oeminfo.c:34
+msgid "[I] OEM ID: "
+msgstr ""
+
+# src/sysinfo.c:103 src/sysinfo.c:285
+#: lib/set_oeminfo.c:35
+#, fuzzy
+msgid "[N] Product name: "
+msgstr "Produkt:"
+
+# src/sysinfo.c:111
+#: lib/set_oeminfo.c:36
+#, fuzzy
+msgid "[H] Hardware revision: "
+msgstr "Wersja sprzêtu: %u"
+
+# src/test.c:30
+#: lib/set_oeminfo.c:37
+#, fuzzy
+msgid "[O] Country code: "
+msgstr "[O] Komenda: "
+
+# lib/ap-utils.h:68
+#: lib/set_oeminfo.c:38
+#, fuzzy
+msgid "[C] Default channel: "
+msgstr "[C] Czêstotliwo¶æ fali: "
+
+# lib/ap-utils.h:68
+#: lib/set_oeminfo.c:39
+#, fuzzy
+msgid "[A] Calibrated channels: "
+msgstr "[C] Czêstotliwo¶æ fali: "
+
+#: lib/set_oeminfo.c:40
+msgid "[P] Nominal Tx Power (CR31) value for calibrated channels: "
+msgstr ""
+
+# src/wlan.c:185
+#: lib/set_oeminfo.c:41
+#, fuzzy
+msgid ""
+"Keys in brackets - set corresponding option; W - write conf; Q - quit to menu"
+msgstr "[kl] - ustaw opcje; W - zapis; Q - wyj¶cie do menu"
+
+#: lib/set_oeminfo.c:101
+msgid "THIS IS A SECRET MENU LEADING TO VERY DANGEROUS OPTIONS."
+msgstr ""
+
+#: lib/set_oeminfo.c:103
+msgid "It is intended only for WISPs and repair shops."
+msgstr ""
+
+#: lib/set_oeminfo.c:107
+msgid "It allows to set OEM information stored in the AP (like its"
+msgstr ""
+
+#: lib/set_oeminfo.c:109
+msgid "MAC address, manuf. name, OEM ID, etc.). BE ABSOLUTELY SURE"
+msgstr ""
+
+#: lib/set_oeminfo.c:111
+msgid "THAT YOU KNOW WHAT YOU ARE DOING, AND THAT YOU HAVE THE"
+msgstr ""
+
+#: lib/set_oeminfo.c:113
+msgid "LEGAL RIGHT TO DO ANY MODIFICATION. Disobserving of these"
+msgstr ""
+
+#: lib/set_oeminfo.c:115
+msgid "rules may lead you into a conflict with your local"
+msgstr ""
+
+#: lib/set_oeminfo.c:117
+msgid "regulations and/or law."
+msgstr ""
+
+#: lib/set_oeminfo.c:119
+msgid "Also be warned that the setting of any from these options"
+msgstr ""
+
+#: lib/set_oeminfo.c:121
+msgid "may DAMAGE YOUR AP (other reason why this menu is hidden)."
+msgstr ""
+
+#: lib/set_oeminfo.c:123
+msgid "Values changed here will NOT be restored upon reset"
+msgstr ""
+
+#: lib/set_oeminfo.c:125
+msgid "of the device to factory defaults! It is advisable to"
+msgstr ""
+
+#: lib/set_oeminfo.c:127
+msgid "write them down somewhere prior their changing."
+msgstr ""
+
+#: lib/set_oeminfo.c:129
+msgid "Finally, note that you need to use MANUFACTURER community, "
+msgstr ""
+
+#: lib/set_oeminfo.c:131
+msgid "in order to be able to do any OEM info modification."
+msgstr ""
+
+#: lib/set_oeminfo.c:133
+msgid "Proceed further only at your full risk and responsibility. "
+msgstr ""
+
+#: lib/set_oeminfo.c:135
+msgid "You got the warnings."
+msgstr ""
+
+#: lib/set_oeminfo.c:141
+msgid "OEM Info settings"
+msgstr ""
+
 # src/stat.c:72
 #: lib/stat.c:29
 msgid "Ethernet Statistics"
@@ -1187,194 +1021,227 @@ msgstr "Opis systemu: "
 msgid "System Info"
 msgstr "Informacja o systemie"
 
-#: lib/sysinfo.c:120
+# src/bridge.c:85
+#: lib/sysinfo.c:55 src/bridge.c:50
+msgid "Wireless Bridge Point to MultiPoint"
+msgstr "Bridge punkt-wielopunkt"
+
+# src/bridge.c:86
+#: lib/sysinfo.c:56 src/bridge.c:51
+msgid "Access Point"
+msgstr "Access Point"
+
+# src/bridge.c:87
+#: lib/sysinfo.c:57 src/bridge.c:52
+msgid "Access Point client"
+msgstr "Klient Access pointa"
+
+# src/bridge.c:88
+#: lib/sysinfo.c:58 src/bridge.c:53
+msgid "Wireless Bridge Point to Point"
+msgstr "Bridge punkt-punkt"
+
+# src/bridge.c:88
+#: lib/sysinfo.c:59 src/bridge.c:54
+msgid "Repeater"
+msgstr "Repeater"
+
+# src/sysinfo.c:131 src/sysinfo.c:216 src/sysinfo.c:322
+#: lib/sysinfo.c:60 lib/sysinfo.c:315 lib/sysinfo.c:424 src/bridge.c:55
+msgid "unknown"
+msgstr "nieznany"
+
+#: lib/sysinfo.c:144
 msgid "Device hardware/software/name info:"
 msgstr "Wersja urz±dzenia sprzêtowa/programowa/nazwa:"
 
+# src/bridge.c:35
+#: lib/sysinfo.c:172
+#, fuzzy, c-format
+msgid "Operational mode: %s"
+msgstr "[O] Tryb pracy: "
+
 # src/sysinfo.c:103 src/sysinfo.c:285
-#: lib/sysinfo.c:154
-msgid "Product name:"
+#: lib/sysinfo.c:182
+#, fuzzy
+msgid "Product name: "
 msgstr "Produkt:"
 
 # src/sysinfo.c:108
-#: lib/sysinfo.c:158
+#: lib/sysinfo.c:186
 #, c-format
 msgid "Product type: %u"
 msgstr "Typ produktu: %u"
 
 # src/sysinfo.c:116
-#: lib/sysinfo.c:161
-msgid "OEM name:"
+#: lib/sysinfo.c:189
+#, fuzzy
+msgid "OEM name: "
 msgstr "Nazwa OEM:"
 
 # src/sysinfo.c:111
-#: lib/sysinfo.c:168
+#: lib/sysinfo.c:196
 #, c-format
 msgid "Hardware revision: %u"
 msgstr "Wersja sprzêtu: %u"
 
 # src/sysinfo.c:134
-#: lib/sysinfo.c:176
+#: lib/sysinfo.c:204
 #, c-format
 msgid "Info structure version: %u"
 msgstr "StructVersion: %u"
 
 # src/sysinfo.c:138 src/sysinfo.c:279
-#: lib/sysinfo.c:179 lib/sysinfo.c:355
+#: lib/sysinfo.c:207 lib/sysinfo.c:383
 #, c-format
 msgid "Manufacturer OUI: %02X %02X %02X (%s)"
 msgstr "OUI producenta: %02X %02X %02X (%s)"
 
 # src/sysinfo.c:386
-#: lib/sysinfo.c:196
+#: lib/sysinfo.c:224
 #, fuzzy, c-format
 msgid "Uptime: %u days, %02u:%02u:%02u hours:mins:secs"
 msgstr "Dzia³a ju¿: %u:%02u:%02u.%02u"
 
 # src/sysinfo.c:213
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "FHSS 2.4 GHz"
 msgstr "FHSS 2.4 GHz"
 
 # src/sysinfo.c:213
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "DSSS 2.4 GHz"
 msgstr "DSSS 2.4 GHz"
 
 # src/sysinfo.c:213
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "IR Baseband"
 msgstr "IR Baseband"
 
 # src/sysinfo.c:214
-#: lib/sysinfo.c:285
+#: lib/sysinfo.c:313
 msgid "Commercial range 0..40 C"
 msgstr "Temp. standardowe: 0..40 C"
 
 # src/sysinfo.c:215
-#: lib/sysinfo.c:286
+#: lib/sysinfo.c:314
 msgid "Industrial range -30..70 C"
 msgstr "Temp przemys³owe: -30..70 C"
 
-# src/sysinfo.c:131 src/sysinfo.c:216 src/sysinfo.c:322
-#: lib/sysinfo.c:287 lib/sysinfo.c:396
-msgid "unknown"
-msgstr "nieznany"
-
 # src/sysinfo.c:218
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "manual"
 msgstr "rêczne"
 
 # src/sysinfo.c:218
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "notsupported"
 msgstr "nie obs³ugiwane"
 
 # src/sysinfo.c:218
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "dynamic"
 msgstr "dynamiczne"
 
 # src/sysinfo.c:267
-#: lib/sysinfo.c:345
+#: lib/sysinfo.c:373
 msgid "Manufacturer:"
 msgstr "Producent:"
 
 # src/sysinfo.c:273
-#: lib/sysinfo.c:350
+#: lib/sysinfo.c:378
 msgid "Manufacturer ID:"
 msgstr "ID producenta:"
 
 # src/sysinfo.c:103 src/sysinfo.c:285
-#: lib/sysinfo.c:361
+#: lib/sysinfo.c:389
 msgid "Product Name:"
 msgstr "Nazwa produktu:"
 
 # src/sysinfo.c:292
-#: lib/sysinfo.c:367
+#: lib/sysinfo.c:395
 msgid "Product ID:"
 msgstr "ID produktu:"
 
 # src/sysinfo.c:298
-#: lib/sysinfo.c:373
+#: lib/sysinfo.c:401
 msgid "Product Version:"
 msgstr "Wersja produktu:"
 
 # src/sysinfo.c:306
-#: lib/sysinfo.c:379
+#: lib/sysinfo.c:407
 #, c-format
 msgid "PHYType: %s"
 msgstr "Typ PHY: %s"
 
 # src/sysinfo.c:309
-#: lib/sysinfo.c:382
+#: lib/sysinfo.c:410
 #, c-format
 msgid "Temperature: %s"
 msgstr "Temperatura: %s"
 
 # src/sysinfo.c:316
-#: lib/sysinfo.c:390
+#: lib/sysinfo.c:418
 #, fuzzy, c-format
 msgid "Regulatory Domain: %s"
 msgstr "Regulacje dot. kana³ów: %s"
 
 # src/sysinfo.c:126 src/sysinfo.c:317
-#: lib/sysinfo.c:391
+#: lib/sysinfo.c:419
 msgid "FCC (USA)"
 msgstr "FCC (USA)"
 
 # src/sysinfo.c:127 src/sysinfo.c:318
-#: lib/sysinfo.c:392
+#: lib/sysinfo.c:420
 msgid "DOC (Canada)"
 msgstr "DOC (Kanada)"
 
 # src/sysinfo.c:128 src/sysinfo.c:319
-#: lib/sysinfo.c:393
+#: lib/sysinfo.c:421
 msgid "ETSI (Europe)"
 msgstr "ETSI (Europa)"
 
 # src/sysinfo.c:129 src/sysinfo.c:320
-#: lib/sysinfo.c:394
+#: lib/sysinfo.c:422
 msgid "Spain"
 msgstr "Hiszpania"
 
 # src/sysinfo.c:130 src/sysinfo.c:321
-#: lib/sysinfo.c:395
+#: lib/sysinfo.c:423
 msgid "France"
 msgstr "Francja"
 
 # src/sysinfo.c:131 src/sysinfo.c:322
-#: lib/sysinfo.c:396
+#: lib/sysinfo.c:424
 msgid "MKK (Japan)"
 msgstr "MKK (Japonia)"
 
 # src/sysinfo.c:325
-#: lib/sysinfo.c:399
+#: lib/sysinfo.c:427
 #, c-format
 msgid "Transmit Power: %u mW"
 msgstr "Moc wyj¶ciowa: %u mW"
 
 # src/sysinfo.c:355
-#: lib/sysinfo.c:429
+#: lib/sysinfo.c:457
 #, fuzzy, c-format
 msgid "WEP implemented: %s"
 msgstr "Obs³uga WEP: %s"
 
 # src/sysinfo.c:358
-#: lib/sysinfo.c:432
+#: lib/sysinfo.c:460
 #, c-format
 msgid "Diversity: %s"
 msgstr "Naprzemienno¶æ: %s"
 
 # src/sysinfo.c:386
-#: lib/sysinfo.c:460
+#: lib/sysinfo.c:488
 #, c-format
 msgid "Uptime: %u:%02u:%02u.%02u"
 msgstr "Dzia³a ju¿: %u:%02u:%02u.%02u"
 
 # src/sysinfo.c:402
-#: lib/sysinfo.c:480
+#: lib/sysinfo.c:508
 #, c-format
 msgid "IP  Address: %s"
 msgstr "Adres IP: %s"
@@ -1424,38 +1291,42 @@ msgstr "Lewa"
 msgid "Right"
 msgstr "Prawa"
 
+#: lib/test.c:79
+msgid "Devices with ATMEL12350 MIB not yet supported."
+msgstr ""
+
 # src/test.c:78
-#: lib/test.c:86
+#: lib/test.c:91
 msgid "Test mode"
 msgstr "Tryb testowy"
 
 # src/test.c:81
-#: lib/test.c:89
+#: lib/test.c:94
 msgid "Using the \"Test mode\" may cause loss of your current"
 msgstr "U¿ycie trybu testowego mo¿e spowodowaæ utratê obecnej"
 
 # src/cmd.c:134
-#: lib/test.c:90
+#: lib/test.c:95
 msgid "configuration."
 msgstr "konfiguracji."
 
 # src/test.c:106
-#: lib/test.c:102
+#: lib/test.c:107
 msgid "Options:"
 msgstr "Opcje:"
 
 # src/test.c:132
-#: lib/test.c:128
+#: lib/test.c:133
 msgid "Statistics:"
 msgstr "Statystyki:"
 
 # src/test.c:133
-#: lib/test.c:129
+#: lib/test.c:134
 msgid "Success Frames: 0 Failed Frames: 0"
 msgstr "Ramki OK: 0 Ramki z³e: 0"
 
 # src/test.c:197
-#: lib/test.c:190
+#: lib/test.c:195
 #, c-format
 msgid "Success Frames: %lu Failed Frames: %lu"
 msgstr "Ramki OK: %lu Ramki z³e: %lu"
@@ -1592,7 +1463,7 @@ msgid "[D] DTIM sending interval (beacons): "
 msgstr ""
 
 #: lib/wlan.c:48
-msgid "[T] SIFS time (msec): "
+msgid "[T] SIFS time (2nd+ interframe spacing, usec): "
 msgstr ""
 
 # src/wlan.c:185
@@ -1611,254 +1482,985 @@ msgid "Long"
 msgstr "D³uga"
 
 # src/wlan.c:104
-#: lib/wlan.c:237
+#: lib/wlan.c:239
 msgid "Wireless Settings"
 msgstr "Parametry radia"
 
 # src/wlan.c:584
-#: lib/wlan.c:731
+#: lib/wlan.c:735
 msgid "Antenna Configuration:"
 msgstr "Konfiguracja anten:"
 
 # src/wlan.c:596
-#: lib/wlan.c:748
+#: lib/wlan.c:752
 msgid "General Options"
 msgstr "Opcje ogólne"
 
 # src/wlan.c:598
-#: lib/wlan.c:750
+#: lib/wlan.c:754
 msgid ""
 "UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu"
 msgstr "UIOPTY - antena; SCANLEDFR1234 - opcje; W - zapis; Q - powrót"
 
+# src/auth_mac.c:35
+#: src/ap-auth.c:32 src/auth.c:28
+msgid "AuthorizedMacTableString packet error"
+msgstr "B³êdny pakiet AuthorizedMacTableString"
+
+#: src/ap-auth.c:33
+msgid "Invalid data in source file"
+msgstr ""
+
+#: src/ap-auth.c:34
+msgid "Can't open file"
+msgstr ""
+
+#: src/ap-auth.c:35
+msgid "Can't write to file"
+msgstr ""
+
+#: src/ap-auth.c:36
+msgid "Error closing file"
+msgstr ""
+
+# src/ap-mrtg.c:45
+#: src/ap-auth.c:44 src/ap-mrtg.c:41 src/ap-rrd.c:40
+msgid ""
+"\n"
+"Usage:\n"
+msgstr ""
+"\n"
+"U¿ycie:\n"
+
+#: src/ap-auth.c:45
+msgid "\tap-auth -i ip -c community -d filename [-h]\n"
+msgstr ""
+
+#: src/ap-auth.c:46
+msgid ""
+"\tap-auth -i ip -c community -u filename [-h]\n"
+"\n"
+msgstr ""
+
+#: src/ap-auth.c:47
+msgid ""
+"Change accesspoint's list of authorised MAC addresses\n"
+"\n"
+msgstr ""
+
+# src/ap-mrtg.c:50
+#: src/ap-auth.c:48 src/ap-mrtg.c:45 src/ap-rrd.c:45
+msgid "-i ip        - AP ip address\n"
+msgstr "-i ip        - adres IP\n"
+
+# src/ap-mrtg.c:51
+#: src/ap-auth.c:49 src/ap-mrtg.c:46 src/ap-rrd.c:46
+msgid "-c community - SNMP community string\n"
+msgstr "-c communauté   has³o SNMP\n"
+
+#: src/ap-auth.c:50
+msgid ""
+"-d filename  - download list of authorised MAC addresses from AP to a file\n"
+msgstr ""
+
+#: src/ap-auth.c:52
+msgid ""
+"-u filename  - upload list of authorised MAC addresses from a file to AP\n"
+msgstr ""
+
+# src/ap-mrtg.c:59
+#: src/ap-auth.c:54 src/ap-mrtg.c:55 src/ap-rrd.c:55
+msgid ""
+"-h           - print this help screen\n"
+"\n"
+msgstr ""
+"-h           - ten tekst\n"
+"\n"
+
+# src/ap-mrtg.c:60
+#: src/ap-auth.c:55
+#, fuzzy, c-format
+msgid ""
+"ap-auth %s Copyright (c) 2004 Teemu Kiviniemi\n"
+"\n"
+msgstr ""
+"ap-mrtg %s Prawa autorskie © 2002-2003 Roman Festchook\n"
+"\n"
+
+# src/ap-mrtg.c:142
+#: src/ap-auth.c:138 src/ap-mrtg.c:132
+#, fuzzy
+msgid "Error: invalid IP-address.\n"
+msgstr "B³êdny adres IP\n"
+
+# lib/ap-utils.h:87
+#: src/ap-auth.c:203 src/ap-mrtg.c:204
+#, fuzzy
+msgid "Unable to determine AP MIB type (no response from AP)."
+msgstr "Nie moge pobraæ danych z AP. Wci¶nij dowolny klawisz."
+
+#: src/ap-auth.c:211
+msgid "NWN devices are not yet supported."
+msgstr ""
+
+# src/ap-config.c:42 src/bridge.c:166
+#: src/ap-config.c:43 src/bridge.c:201
+msgid "Bridging"
+msgstr "Podstawowe"
+
+# src/ap-config.c:42
+#: src/ap-config.c:43
+msgid "Set bridging and IP-related options"
+msgstr "Ustawianie opcji mostu i IP"
+
+# src/ap-config.c:44 src/ap-config.c:112 src/ap-config.c:121 src/bridge.c:90
+#: src/ap-config.c:45 src/ap-config.c:114 src/ap-config.c:123 src/bridge.c:125
+msgid "Wireless"
+msgstr "Radiowe"
+
+# src/ap-config.c:44
+#: src/ap-config.c:45
+msgid "Set wireless options"
+msgstr "Opcje radiowe"
+
+# src/ap-config.c:45 src/ap-config.c:57
+#: src/ap-config.c:46 src/ap-config.c:58
+msgid "Privacy"
+msgstr "Klucze"
+
+# lib/common.c:50 src/ap-config.c:147
+#: src/ap-config.c:47
+#, fuzzy
+msgid "Auth"
+msgstr "O..."
+
+# src/ap-config.c:47 src/ap-config.c:59
+#: src/ap-config.c:48 src/ap-config.c:60
+msgid "Community"
+msgstr "Dostêp"
+
+# src/ap-config.c:48
+#: src/ap-config.c:49
+msgid "Radio"
+msgstr "Radio"
+
+# src/ap-config.c:48
+#: src/ap-config.c:49
+msgid "Set radio signal power and antenna options"
+msgstr "Ustawianie mocy sygna³u i opcji antenowych"
+
 # src/ap-config.c:55
-#: src/ap-config.c:54
+#: src/ap-config.c:56
 msgid "General"
 msgstr "Ogólne"
 
 # src/ap-config.c:55
-#: src/ap-config.c:54
+#: src/ap-config.c:56
 msgid "Set general options"
 msgstr "Opcje ogólne"
 
 # src/ap-config.c:56
-#: src/ap-config.c:55
+#: src/ap-config.c:57
 msgid "Advanced"
 msgstr "Zaawansowane"
 
 # src/ap-config.c:56
-#: src/ap-config.c:55
+#: src/ap-config.c:57
 msgid "Set advanced options"
 msgstr "Opcje zaawansowane"
 
+# src/ap-config.c:46 src/ap-config.c:58
+#: src/ap-config.c:59
+msgid "MAC auth"
+msgstr "Blokuj MAC"
+
+# src/ap-config.c:78
+#: src/ap-config.c:82
+msgid "Upload"
+msgstr "Wy¶lij"
+
+# src/ap-config.c:78
+#: src/ap-config.c:82
+#, fuzzy
+msgid "Activate current configuration"
+msgstr "Uczyñ konfiguracjê aktywn±"
+
+# src/ap-config.c:79
+#: src/ap-config.c:83
+msgid "Defaults"
+msgstr "Domy¶lne"
+
+# src/ap-config.c:79
+#: src/ap-config.c:83
+msgid "Restore factory default settings"
+msgstr "Przywróæ ustawienia producenta"
+
+# src/ap-config.c:81 src/ap-config.c:89
+#: src/ap-config.c:84 src/ap-config.c:91
+msgid "Reset"
+msgstr "Reset"
+
+# src/ap-config.c:82
+#: src/ap-config.c:85
+msgid "Reset AP. All not uploaded configuration will be lost"
+msgstr "Reset. Wszystkie nie za³adowane opcje bêd± utracone"
+
+# src/ap-config.c:84
+#: src/ap-config.c:86
+msgid "TestMode"
+msgstr "TrybTest"
+
+# src/ap-config.c:84
+#: src/ap-config.c:86
+msgid "Put Access Point in test mode"
+msgstr "W³±cza tryb testowy AP"
+
 # 
 # src/ap-config.c:89
-#: src/ap-config.c:89
+#: src/ap-config.c:91
 msgid "Reset AP."
 msgstr "Reset AP."
 
+# src/ap-config.c:110 src/ap-config.c:120
+#: src/ap-config.c:112 src/ap-config.c:122
+msgid "SysInfo"
+msgstr "Ogólne"
+
+# src/ap-config.c:111 src/bridge.c:90
+#: src/ap-config.c:113 src/bridge.c:124 src/bridge.c:127
+msgid "Ethernet"
+msgstr "Ethernet"
+
+# src/ap-config.c:111
+#: src/ap-config.c:113
+msgid "Get ethernet port statistics"
+msgstr "Pobierz statystyki ethernetu"
+
+# src/ap-config.c:113 src/ap-config.c:122
+#: src/ap-config.c:115 src/ap-config.c:124
+msgid "Stations"
+msgstr "Stacje"
+
+#: src/ap-config.c:116
+msgid "AP link"
+msgstr ""
+
+# src/ap-config.c:115
+#: src/ap-config.c:117
+msgid "KnownAPs"
+msgstr "Znane AP"
+
+# src/ap-config.c:115
+#: src/ap-config.c:117
+msgid "Get info about known Access Points"
+msgstr "Podaj informacje o Access Pointach"
+
 # src/ap-config.c:123
-#: src/ap-config.c:122
+#: src/ap-config.c:125
 msgid "Latest"
 msgstr "Ostatnie"
 
 # src/ap-config.c:123
-#: src/ap-config.c:122
+#: src/ap-config.c:125
 msgid "Get info about latest events"
 msgstr "Pobiera info o ostatnich zdarzeniach"
 
-# src/ap-mrtg.c:45
+# src/ap-config.c:141
+#: src/ap-config.c:150
+msgid "Info"
+msgstr "Info"
+
+# src/ap-config.c:142
+#: src/ap-config.c:151
+msgid "Config"
+msgstr "Konfig"
+
+# src/ap-config.c:143
+#: src/ap-config.c:152
+msgid "Commands"
+msgstr "Komendy"
+
+# src/ap-config.c:143
+#: src/ap-config.c:152
+msgid "Execute commands on Access Point"
+msgstr "Wykonaj operacje w AP"
+
+# src/ap-config.c:145
+#: src/ap-config.c:154
+msgid "Connect"
+msgstr "Po³±cz"
+
+# src/ap-config.c:146
+#: src/ap-config.c:155
+msgid "Search"
+msgstr "Znajd¼"
+
+#: src/ap-config.c:156
+msgid "Polling"
+msgstr ""
+
+# src/ap-config.c:148
+#: src/ap-config.c:157
+msgid "Shell"
+msgstr "Shell"
+
+# src/ap-config.c:149
+#: src/ap-config.c:159
+msgid "Exit"
+msgstr "Wyjd¼"
+
+# src/ap-config.c:194
+#: src/ap-config.c:218
+#, c-format
+msgid "Wireless Access Point Configurator ver. %s"
+msgstr "Konfigurator bezprzewodowych access-pointów wersja %s"
+
+#: src/aplink.c:25
+msgid "RSSI:     ["
+msgstr ""
+
+#: src/aplink.c:26
+msgid "RSSI avg: ["
+msgstr ""
+
+#: src/aplink.c:27
+msgid "RSSI top: ["
+msgstr ""
+
+#: src/aplink.c:28
+msgid "RSSI rou: ["
+msgstr ""
+
+#: src/aplink.c:29
+msgid ""
+"P - pause, T - toggle graph view, Q - quit to menu, Other key - force update."
+msgstr ""
+
+#: src/aplink.c:81
+msgid "RSSI [%]"
+msgstr ""
+
+#: src/aplink.c:82
+msgid "RSSI average [%]"
+msgstr ""
+
+#: src/aplink.c:83
+msgid "RSSI rounded [%]"
+msgstr ""
+
+#: src/aplink.c:84
+msgid "Link Quality [%]"
+msgstr ""
+
+#: src/aplink.c:133
+msgid "Not available - device must have firmware with necessary "
+msgstr ""
+
+#: src/aplink.c:135
+msgid "vendor extensions and be in either 'Access Point client'"
+msgstr ""
+
+#: src/aplink.c:137
+msgid "or 'Repeater' mode."
+msgstr ""
+
+# src/ap-mrtg.c:47
 #: src/ap-mrtg.c:42
+#, fuzzy
 msgid ""
+"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-v] [-h] [-r]\n"
 "\n"
-"Usage:\n"
 msgstr ""
-"\n"
-"U¿ycie:\n"
+"\tap-mrtg -i ip -c has³o -t typ [-b bssid] [-v] [-h] [-r]\n"
+"\n"
+
+# src/ap-mrtg.c:49
+#: src/ap-mrtg.c:44
+msgid ""
+"Get stats from AP and return it in MRTG parsable format\n"
+"\n"
+msgstr ""
+"Pobierz statystyki z AP i wypisz w formacie strawnym dla MRTG\n"
+"\n"
+
+# src/ap-mrtg.c:53
+#: src/ap-mrtg.c:47
+#, fuzzy
+msgid ""
+"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
+"or <l>ink quality (last one will only "
+msgstr ""
+"-t type      typ statystyk <w> radio, <e>thernet, <s>tacje lub <l> jako¶æ "
+"po³±czenia w trybie klienta\n"
+
+#: src/ap-mrtg.c:49
+msgid "work with ATMEL410 MIB devices in AP Client mode)\n"
+msgstr ""
+
+# src/ap-mrtg.c:55
+#: src/ap-mrtg.c:50
+#, fuzzy
+msgid ""
+"-b bssid     - mac address of the AP from which get link quality, only if "
+"type=l\n"
+msgstr ""
+"-b bssid     - adres fizyczny AP z którego braæ dane dot jako¶ci ³±cza "
+"(tylko typ=l)\n"
+
+#: src/ap-mrtg.c:52
+#, fuzzy
+msgid "-n name      - AP name - for check only\n"
+msgstr "-n nazwa    - Nazwa AP - tylko do kontroli\n"
+
+# src/ap-mrtg.c:57
+#: src/ap-mrtg.c:53
+msgid "-v           - report MRTG about problems connecting to AP\n"
+msgstr "-v           - zg³aszaj MRTG o problemach z po³±czeniem do AP\n"
+
+# src/ap-mrtg.c:58
+#: src/ap-mrtg.c:54 src/ap-rrd.c:54
+msgid "-r           - reset AP when getting LinkQuality stats\n"
+msgstr "-r           - resetuj AP po wziêciu statystyk jako¶ci ³±cza\n"
+
+# src/ap-mrtg.c:60
+#: src/ap-mrtg.c:56
+#, c-format
+msgid ""
+"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n"
+"\n"
+msgstr ""
+"ap-mrtg %s Prawa autorskie © 2002-2003 Roman Festchook\n"
+"\n"
+
+#: src/ap-rrd.c:32
+#, c-format
+msgid "Error getting data from AP %s\n"
+msgstr ""
+
+# src/ap-mrtg.c:47
+#: src/ap-rrd.c:42
+#, fuzzy
+msgid ""
+"\tap-rrd -i ip -c community -t type -d db_file [-b bssid] [-n name] [-a "
+"aptype] [-h] [-r] \n"
+"\n"
+msgstr ""
+"\tap-mrtg -i ip -c has³o -t typ [-b bssid] [-v] [-h] [-r]\n"
+"\n"
+
+# src/ap-mrtg.c:49
+#: src/ap-rrd.c:44
+#, fuzzy
+msgid ""
+"Get stats from AP and put it in to specified RRDtool database\n"
+"\n"
+msgstr ""
+"Pobierz statystyki z AP i wypisz w formacie strawnym dla MRTG\n"
+"\n"
+
+# src/ap-mrtg.c:53
+#: src/ap-rrd.c:48
+msgid ""
+"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
+"or <l>ink quality in client mode\n"
+msgstr ""
+"-t type      typ statystyk <w> radio, <e>thernet, <s>tacje lub <l> jako¶æ "
+"po³±czenia w trybie klienta\n"
+
+#: src/ap-rrd.c:49
+msgid "-d db_file   - RRD database file with full path\n"
+msgstr ""
+
+# src/ap-mrtg.c:55
+#: src/ap-rrd.c:51
+msgid ""
+"-b bssid     - mac address of the AP to which get link quality, only if "
+"type=l\n"
+msgstr ""
+"-b bssid     - adres fizyczny AP z którego braæ dane dot jako¶ci ³±cza "
+"(tylko typ=l)\n"
+
+#: src/ap-rrd.c:52
+msgid "-n name     - AP name - for check only\n"
+msgstr "-n nazwa    - Nazwa AP - tylko do kontroli\n"
+
+#: src/ap-rrd.c:53
+msgid ""
+"-a aptype    - AP type - 410 (default) or 510 for ATMEL12350's, like the ME-"
+"102\n"
+msgstr ""
+
+# src/ap-mrtg.c:60
+#: src/ap-rrd.c:56
+#, fuzzy, c-format
+msgid ""
+"ap-rrd %s Copyright (c) 2002-2004 Roman Festchook\n"
+"\n"
+msgstr ""
+"ap-mrtg %s Prawa autorskie © 2002-2003 Roman Festchook\n"
+"\n"
+
+# src/ap-mrtg.c:142
+#: src/ap-rrd.c:133
+msgid "Invalid IP-address\n"
+msgstr "B³êdny adres IP\n"
+
+#: src/ap-rrd.c:179
+#, c-format
+msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n"
+msgstr "B³êdny typ AP '%s' - mo¿esz wpisaæ tylko 410 lub 510\n"
+
+#: src/ap-tftp.c:84
+#, fuzzy
+msgid "yes"
+msgstr "Tak"
+
+# src/ap-config.c:141
+#: src/ap-tftp.c:85
+#, fuzzy
+msgid "no"
+msgstr "Info"
+
+#: src/ap-tftp.c:87
+msgid "Error while read()ing firmware file"
+msgstr ""
+
+#: src/ap-tftp.c:100
+msgid "Undefined error"
+msgstr ""
+
+#: src/ap-tftp.c:101
+msgid "File not found"
+msgstr ""
+
+# src/bridge.c:86
+#: src/ap-tftp.c:102
+#, fuzzy
+msgid "Access violation"
+msgstr "Access Point"
+
+#: src/ap-tftp.c:103
+msgid "Disk full or allocation error"
+msgstr ""
+
+#: src/ap-tftp.c:104
+msgid "Illegal TFTP operation"
+msgstr ""
+
+#: src/ap-tftp.c:105
+msgid "Unknown transfer ID"
+msgstr ""
+
+#: src/ap-tftp.c:106
+msgid "File already exists"
+msgstr ""
+
+#: src/ap-tftp.c:107
+msgid "No such user"
+msgstr ""
+
+#: src/ap-tftp.c:157
+msgid "Remote-filename too long.\n"
+msgstr ""
+
+#: src/ap-tftp.c:183
+#, c-format
+msgid "%sError in read()"
+msgstr ""
+
+#: src/ap-tftp.c:212
+#, c-format
+msgid "sending %u bytes\n"
+msgstr ""
 
-# src/ap-mrtg.c:47
-#: src/ap-mrtg.c:44
-msgid ""
-"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-"
-"h] [-r]\n"
-"\n"
+#: src/ap-tftp.c:221
+#, c-format
+msgid "%sError in sendto()"
 msgstr ""
-"\tap-mrtg -i ip -c has³o -t typ [-b bssid] [-v] [-h] [-r]\n"
-"\n"
 
-# src/ap-mrtg.c:49
-#: src/ap-mrtg.c:46
-msgid ""
-"Get stats from AP and return it in MRTG parsable format\n"
-"\n"
+#: src/ap-tftp.c:244
+#, c-format
+msgid "%sError in recvfrom()"
 msgstr ""
-"Pobierz statystyki z AP i wypisz w formacie strawnym dla MRTG\n"
-"\n"
 
-# src/ap-mrtg.c:50
-#: src/ap-mrtg.c:47
-msgid "-i ip        - AP ip address\n"
-msgstr "-i ip        - adres IP\n"
+#: src/ap-tftp.c:256
+#, c-format
+msgid "\rProgress: uploaded %3i%%."
+msgstr ""
 
-# src/ap-mrtg.c:51
-#: src/ap-mrtg.c:48
-msgid "-c community - SNMP community string\n"
-msgstr "-c communauté   has³o SNMP\n"
+#: src/ap-tftp.c:267
+#, c-format
+msgid "%sMalformed packet received. Aborting.\n"
+msgstr ""
 
-# src/ap-mrtg.c:53
-#: src/ap-mrtg.c:50
-msgid ""
-"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
-"or <l>ink quality in client mode\n"
+#: src/ap-tftp.c:276
+#, c-format
+msgid "%sTimed out waiting for response from server (%i/%i).\n"
 msgstr ""
-"-t type      typ statystyk <w> radio, <e>thernet, <s>tacje lub <l> jako¶æ "
-"po³±czenia w trybie klienta\n"
 
-# src/ap-mrtg.c:55
-#: src/ap-mrtg.c:52
-msgid ""
-"-b bssid     - mac address of the AP to which get link quality, only if "
-"type=l\n"
+#: src/ap-tftp.c:283
+#, c-format
+msgid "%sError in select()"
 msgstr ""
-"-b bssid     - adres fizyczny AP z którego braæ dane dot jako¶ci ³±cza "
-"(tylko typ=l)\n"
 
-#: src/ap-mrtg.c:53
-msgid "-n name     - AP name - for check only\n"
-msgstr "-n nazwa    - Nazwa AP - tylko do kontroli\n"
+#: src/ap-tftp.c:297
+#, c-format
+msgid "Received %d bytes: %04x %04x\n"
+msgstr ""
 
-#: src/ap-mrtg.c:54
-msgid ""
-"-a aptype        - AP type - 410 (default) or 510 for ATMEL12350's, like the "
-"ME-102\n"
+#: src/ap-tftp.c:308
+#, c-format
+msgid "%sError: server responded with %s. Aborting.\n"
 msgstr ""
 
-# src/ap-mrtg.c:57
-#: src/ap-mrtg.c:56
-msgid "-v           - report MRTG about problems connecting to AP\n"
-msgstr "-v           - zg³aszaj MRTG o problemach z po³±czeniem do AP\n"
+#: src/ap-tftp.c:315
+#, c-format
+msgid "%sFlash programming in progress...\n"
+msgstr ""
 
-# src/ap-mrtg.c:58
-#: src/ap-mrtg.c:57
-msgid "-r           - reset AP when getting LinkQuality stats\n"
-msgstr "-r           - resetuj AP po wziêciu statystyk jako¶ci ³±cza\n"
+#: src/ap-tftp.c:317
+msgid "Finished successfully.\n"
+msgstr ""
 
-# src/ap-mrtg.c:59
-#: src/ap-mrtg.c:58
-msgid ""
-"-h           - print this help screen\n"
-"\n"
+#: src/ap-tftp.c:335
+msgid "PLEASE BE _ABSOLUTELY_ SURE TO READ MANPAGE PRIOR USE!!!\n"
 msgstr ""
-"-h           - ten tekst\n"
-"\n"
 
-# src/ap-mrtg.c:60
-#: src/ap-mrtg.c:59
+#: src/ap-tftp.c:337
 #, c-format
 msgid ""
-"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n"
 "\n"
+"Usage: %s -i IP -f firmware_file.rom [-c community] [-h]\n"
+msgstr ""
+
+#: src/ap-tftp.c:361
+msgid "TFTP client for upgrading firmware in ATMEL AT76C510 WiSOC-based APs.\n"
+msgstr ""
+
+#: src/ap-tftp.c:363
+msgid "(C) 2004-2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>\n"
+msgstr ""
+
+#: src/ap-tftp.c:379
+msgid "Error: invalid IP address format given.\n"
 msgstr ""
-"ap-mrtg %s Prawa autorskie © 2002-2003 Roman Festchook\n"
-"\n"
 
 # src/ap-mrtg.c:142
-#: src/ap-mrtg.c:143
-msgid "Invalid IP-address\n"
+#: src/ap-tftp.c:405
+#, fuzzy
+msgid "Error: invalid argument combination.\n"
 msgstr "B³êdny adres IP\n"
 
-#: src/ap-mrtg.c:188
+#: src/ap-tftp.c:412
+msgid "Error while open()ing firmware file"
+msgstr ""
+
+#: src/ap-tftp.c:419 src/ap-tftp.c:472
+msgid "Error: invalid firmware file given.\n"
+msgstr ""
+
+#: src/ap-tftp.c:461
 #, c-format
-msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n"
-msgstr "B³êdny typ AP '%s' - mo¿esz wpisaæ tylko 410 lub 510\n"
+msgid ""
+"Firmware file contains:\n"
+"- string \"ATMEL\": %s\n"
+"- string \"802.11 AP\": %s\n"
+"- string \"atbrfirm.bin\": %s\n"
+"- string \"atsingle.bin\": %s\n"
+msgstr ""
 
-# src/ap-mrtg.c:178
-#: src/ap-mrtg.c:207
-msgid "Create socket error"
-msgstr "B³±d tworzenia gniazda"
+#: src/ap-tftp.c:485
+#, c-format
+msgid ""
+"Using:\n"
+"- server: %s\n"
+"- firmware file: \"%s\"\n"
+"- name used for upload: \"%s\"\n"
+msgstr ""
 
-# src/ap-mrtg.c:182
-#: src/ap-mrtg.c:211
-msgid "Bind socket error"
-msgstr "B³±d bind()"
+#: src/ap-tftp.c:568
+msgid ""
+"Error: device with the given IP does not seem to run SmartBridges firmware.\n"
+msgstr ""
+
+#: src/ap-tftp.c:574
+msgid "Error: SNMP authorization error or device unavailable.\n"
+msgstr ""
+
+#: src/ap-tftp.c:653
+msgid "Error while lseek()ing in firmware file\n"
+msgstr ""
 
 # src/ap-trapd.c:150
-#: src/ap-trapd.c:148
+#: src/ap-trapd.c:150
 #, c-format
 msgid "ap-trapd %s started%s%s."
 msgstr "ap-trapd %s uruchomiony%s%s."
 
 # src/ap-trapd.c:151
-#: src/ap-trapd.c:149
+#: src/ap-trapd.c:151
 msgid " on "
 msgstr " w³ "
 
 # src/ap-trapd.c:157
-#: src/ap-trapd.c:155
+#: src/ap-trapd.c:157
 msgid "Unable to fork. Exiting."
 msgstr "Nie moge utworzyæ procesu. Wychodzê."
 
 # src/ap-trapd.c:161
-#: src/ap-trapd.c:159
+#: src/ap-trapd.c:161
 msgid "Can't create socket. Exiting."
 msgstr "Nie moge utworzyæ gniazda. Wychodzê."
 
 # src/ap-trapd.c:167
-#: src/ap-trapd.c:165
+#: src/ap-trapd.c:167
 msgid "Can't bind socket. Exiting."
 msgstr "Nie zaj±æ gniazda. Wychodzê."
 
 # src/ap-trapd.c:174
-#: src/ap-trapd.c:172
+#: src/ap-trapd.c:174
 #, c-format
 msgid "Can't bind to device %s. Exiting."
 msgstr "Nie moge pod³±czyæ siê do urz±dzenia %s. Wychodzê."
 
 # src/ap-trapd.c:185
-#: src/ap-trapd.c:183
+#: src/ap-trapd.c:185
 #, c-format
 msgid "Unable to process username %s. Error: %m."
 msgstr "Nie moge skumaæ u¿ytkownika %s. B³±d: %m."
 
 # src/ap-trapd.c:190
-#: src/ap-trapd.c:188
+#: src/ap-trapd.c:190
 #, c-format
 msgid "Unable to change to uid %d."
 msgstr "Nie moge przej¶æ na UID %d"
 
 # src/ap-trapd.c:237
-#: src/ap-trapd.c:235
+#: src/ap-trapd.c:239
 #, c-format
 msgid ""
 "Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s."
 msgstr "Odebra³em nieznany pakiet SNMP %d z %s:%d agent: %s grupa: %s."
 
 # src/ap-trapd.c:309
-#: src/ap-trapd.c:307
-#, c-format
-msgid "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d"
+#: src/ap-trapd.c:311
+#, fuzzy, c-format
+msgid "Agent:v%d %s (%s@%s:%d) Trap %i: %s%s%s. SysUptime %d:%02d:%02d.%02d"
 msgstr "Agent:v%d %s (%s@%s:%d) %s%s%s. Dzia³a ju¿ %d:%02d:%02d.%02d"
 
+#: src/auth.c:30
+msgid "APClient authorization credentials"
+msgstr ""
+
+# lib/ap-utils.h:117
+#: src/auth.c:32
+msgid "[A] MAC authorization: "
+msgstr "[A] Ograniczenie dostêpu dla wybranych adresów MAC: "
+
+# lib/ap-utils.h:122
+#: src/auth.c:33
+msgid "Enter MAC: "
+msgstr "Adres fizyczny: "
+
+# lib/ap-utils.h:121
+#: src/auth.c:34
+msgid "Delete Num: "
+msgstr "Skasuj pozycjê: "
+
 # lib/ap-utils.h:119
-#: src/auth_mac.c:33
+#: src/auth.c:35
 #, fuzzy
-msgid "NUM     MAC address"
+msgid " NUM     MAC address     "
 msgstr "Numer adres fizyczny (MAC)"
 
+# lib/ap-utils.h:120
+#: src/auth.c:36
+#, fuzzy
+msgid "A: auth; N: new; D: del; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A W³/Wy³; N - nowe; D - kasuj; strza³ki - przewijanie; W - zapis; Q - Wyjd¼"
+
+#: src/auth.c:38
+msgid "[I] Radius server IP: "
+msgstr ""
+
+# src/bridge.c:33
+#: src/auth.c:39
+#, fuzzy
+msgid "[P] Radius server port: "
+msgstr "[P] Port podstawowy: "
+
+#: src/auth.c:40
+msgid "[S] Radius server secret: "
+msgstr ""
+
+# lib/ap-utils.h:117
+#: src/auth.c:41
+#, fuzzy
+msgid "[T] Reauthorization time (minutes): "
+msgstr "[A] Ograniczenie dostêpu dla wybranych adresów MAC: "
+
+#: src/auth.c:42
+msgid "[F] Radius source port: "
+msgstr ""
+
+# lib/ap-utils.h:120
+#: src/auth.c:43
+#, fuzzy
+msgid ""
+"A: auth; N: new; D: del; IPSTF: set; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A W³/Wy³; N - nowe; D - kasuj; strza³ki - przewijanie; W - zapis; Q - Wyjd¼"
+
+# lib/ap-utils.h:117
+#: src/auth.c:45
+#, fuzzy
+msgid "[M] 802.1x authorization: "
+msgstr "[A] Ograniczenie dostêpu dla wybranych adresów MAC: "
+
+# lib/ap-utils.h:117
+#: src/auth.c:46
+#, fuzzy
+msgid "[T] key broadcasting time period (seconds): "
+msgstr "[A] Ograniczenie dostêpu dla wybranych adresów MAC: "
+
+#: src/auth.c:47
+msgid "[I] 802.1x auth. server IP: "
+msgstr ""
+
+#: src/auth.c:48
+msgid "[S] 802.1x auth. server secret: "
+msgstr ""
+
+# lib/ap-utils.h:120
+#: src/auth.c:49
+#, fuzzy
+msgid ""
+"A: auth; N: new; D: del; MTIS: set; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A W³/Wy³; N - nowe; D - kasuj; strza³ki - przewijanie; W - zapis; Q - Wyjd¼"
+
+# src/ap-config.c:55
+#: src/auth.c:114
+msgid "Internal"
+msgstr "Ogólnie"
+
+# src/ap-config.c:48
+#: src/auth.c:116
+#, fuzzy
+msgid "Radius"
+msgstr "Radio"
+
+#: src/auth.c:121
+msgid "Allow listed MACs only"
+msgstr ""
+
+#: src/auth.c:123
+msgid "Deny listed MACs only"
+msgstr ""
+
+#: src/auth.c:129
+msgid "Mixed environment"
+msgstr ""
+
+#: src/auth.c:213
+msgid "(not shown)"
+msgstr ""
+
+# lib/ap-utils.h:118
+#: src/auth.c:276
+#, fuzzy
+msgid "Authorized MAC addresses:"
+msgstr "Dostêp w/g MAC"
+
+#: src/auth.c:345
+msgid "(insufficient community used)"
+msgstr ""
+
+#: src/auth.c:472
+#, c-format
+msgid "Given MAC already exists in MAC list at position %d. Press any key."
+msgstr ""
+
+#: src/bridge.c:27
+msgid "[I] IP: "
+msgstr ""
+
+# src/bridge.c:169
+#: src/bridge.c:28
+msgid "[N] Netmask: "
+msgstr "[N] Maska:  "
+
+# src/bridge.c:171
+#: src/bridge.c:29
+msgid "[G] Gateway: "
+msgstr "[G] Brama: "
+
+# src/bridge.c:32
+#: src/bridge.c:30
+msgid "[F] Filter non-IP traffic: "
+msgstr "[F] Wycinaj ruch nie-IP: "
+
+# src/bridge.c:33
+#: src/bridge.c:31
+msgid "[P] Primary port: "
+msgstr "[P] Port podstawowy: "
+
+# src/bridge.c:144
+#: src/bridge.c:32
+msgid "Attached station MAC: "
+msgstr "MAC do³±czonej stacji:"
+
+# src/bridge.c:34
+#: src/bridge.c:33
+msgid "[D] DHCP client: "
+msgstr "[D] Klient DHCP: "
+
+# src/bridge.c:35
+#: src/bridge.c:34
+msgid "[O] Operational mode: "
+msgstr "[O] Tryb pracy: "
+
+# src/bridge.c:36
 #: src/bridge.c:35
+msgid "[M] Preferred BSSID (remote MAC addr.): "
+msgstr "[M] Zdalny adres fizyczny: "
+
+#: src/bridge.c:36
 msgid "[C] Configuration-enabled port(s): "
 msgstr "[C] Dostêp do konfiguracji porzez port: "
 
+#: src/bridge.c:37
+#, fuzzy
+msgid "[T] Trap-sending port: "
+msgstr "[T] SNMP-Trap na porty: "
+
 #: src/bridge.c:38
+msgid "[R] Forward broadcast traffic: "
+msgstr "[R] Przesy³aj ruch rozg³oszeniowy: "
+
+#: src/bridge.c:39
 msgid "[B] Isolate wireless clients (broadcast traffic): "
 msgstr "[B] Izolacja klientów radiowych (ruch broadcast): "
 
-#: src/bridge.c:39
+#: src/bridge.c:40
 msgid "[U] Isolate wireless clients (unicast traffic): "
 msgstr "[U] Izolacja klientów radiowych (ruch unicast): "
 
+# src/bridge.c:30
+#: src/bridge.c:41
+#, fuzzy
+msgid "INGFPDOMSCRBUT - set; W - write conf; Q - quit to menu"
+msgstr "BPGINFDRT - ustaw; W - Zapisz; Q - powrót"
+
+# src/wlan.c:104
+#: src/bridge.c:128
+#, fuzzy
+msgid "Wireless (can be risky)"
+msgstr "Parametry radia"
+
 # lib/ap-utils.h:66
-#: src/bridge.c:119
+#: src/bridge.c:129
 msgid "Both"
 msgstr "Oba"
 
@@ -1920,20 +2522,21 @@ msgstr "Ostatni b
 msgid "Error:"
 msgstr "B³±d:"
 
-#: src/stations.c:33
-msgid "AP link state"
+#: src/stations.c:82
+msgid "Not available (device not in AP mode)."
 msgstr ""
 
-#: src/stations.c:37
-msgid " #            MAC                                               "
+#: src/stations.c:92
+msgid "  #     MAC       Parent MAC  RSSI   LQ Sts MACn      IP        "
 msgstr ""
 
-#: src/stations.c:40
-msgid " #     MAC       Parent MAC    RSSI  Status MACn      IP        "
-msgstr ""
+# src/stations.c:110
+#: src/stations.c:136
+msgid "AssociatedSTAsInfo packet error"
+msgstr "B³êdny pakiet AssociatedSTAsInfo"
 
 # src/stations.c:132 src/stations.c:284
-#: src/stations.c:195 src/stations.c:367
+#: src/stations.c:189 src/stations.c:363
 #, fuzzy
 msgid ""
 "Arrows - scroll; S - save to file; Q - return; T - toggle view; Other - "
@@ -1941,16 +2544,58 @@ msgid ""
 msgstr "Strza³ki - przewijanie; S - zapis do zbioru; Q - powrót."
 
 # src/stations.c:132 src/stations.c:284
-#: src/stations.c:200
+#: src/stations.c:193
 #, fuzzy
 msgid "Arrows - scroll; S - save to file; Q - return; Other key - refresh"
 msgstr "Strza³ki - przewijanie; S - zapis do zbioru; Q - powrót."
 
 # src/stations.c:196
-#: src/stations.c:279
+#: src/stations.c:275
 msgid "Id       MAC address     Quality  Age  RSSI"
 msgstr "Id       Adres fizyczny  Jako¶æ   Wiek RSSI"
 
+# lib/ap-utils.h:92
+#~ msgid "Create socket error. Press any key."
+#~ msgstr "Nie moge utworzyæ gniazdka. Wci¶nij dowolny klawisz."
+
+# lib/ap-utils.h:93
+#~ msgid "Bind socket error. Press any key."
+#~ msgstr "Bl±d gniazdka. Wci¶nij dowolny klawisz."
+
+# src/ap-mrtg.c:178
+#~ msgid "Create socket error"
+#~ msgstr "B³±d tworzenia gniazda"
+
+# src/ap-mrtg.c:182
+#~ msgid "Bind socket error"
+#~ msgstr "B³±d bind()"
+
+# lib/ap-utils.h:119
+#~ msgid "NUM       MAC address"
+#~ msgstr "Numer adres fizyczny (MAC)"
+
+# src/nwn_advanced.c:70
+#~ msgid "A - auth; IPSTF - set; W - write conf; Q - quit"
+#~ msgstr "DA - opcje; W - zapis; Q - powrót"
+
+# src/nwn_advanced.c:70
+#~ msgid "A - auth; W - write conf; Q - quit"
+#~ msgstr "DA - opcje; W - zapis; Q - powrót"
+
+#~ msgid "<hidden>"
+#~ msgstr "<ukryto>"
+
+#~ msgid "[U] Isolate wireless clients: "
+#~ msgstr "[U] Izoluj klientów radiowych: "
+
+#, fuzzy
+#~ msgid "AP is currently in AP Client Mode => no associated STAtions."
+#~ msgstr "AP jest teraz w trybie klienta i nie ma stacji pod³±czonych"
+
+# src/stations.c:132 src/stations.c:284
+#~ msgid "Arrows - scroll; S - save to file; Q - quit to menu."
+#~ msgstr "Strza³ki - przewijanie; S - zapis do zbioru; Q - powrót."
+
 # src/stations.c:29
 #~ msgid "Associated Stations"
 #~ msgstr "Pod³±czonych stacji"
index c445f211fde9ebe337eddb8238b83e4167818b3a..3da49a063783a740cd86effd950a918c840a5488 100644 (file)
--- a/po/ro.po
+++ b/po/ro.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: ap-utils-1.3.2-pre3\n"
-"POT-Creation-Date: 2004-11-28 00:59+0200\n"
+"POT-Creation-Date: 2005-03-07 01:13+0200\n"
 "PO-Revision-Date: 2003-05-19 12:51+0300\n"
 "Last-Translator: Eugen Hoanca <eugenh@urban-grafx.ro>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -15,390 +15,82 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Report-Msgid-Bugs-To: \n"
 
-#: ap-gl/ap-gl.c:41 ap-gl/bridge.c:178 src/ap-config.c:41 src/bridge.c:182
-msgid "Bridging"
-msgstr "Conexiune(Bridging)"
-
-#: ap-gl/ap-gl.c:41 src/ap-config.c:41
-msgid "Set bridging and IP-related options"
-msgstr "Setare opþiuni legate de bridging ºi IP"
-
-#: ap-gl/ap-gl.c:43 ap-gl/ap-gl.c:81 ap-gl/bridge.c:132 src/ap-config.c:43
-#: src/ap-config.c:112 src/ap-config.c:120 src/bridge.c:117 src/bridge.c:121
-msgid "Wireless"
-msgstr "Wireless"
-
-#: ap-gl/ap-gl.c:43 src/ap-config.c:43
-msgid "Set wireless options"
-msgstr "Setare opþiuni wireless"
-
-#: ap-gl/ap-gl.c:44 src/ap-config.c:44 src/ap-config.c:56
-msgid "Privacy"
-msgstr "Secret(Privacy)"
-
-#: ap-gl/ap-gl.c:45 src/ap-config.c:45 src/ap-config.c:57
-#, fuzzy
-msgid "MAC auth"
-msgstr "Autorizare Mac"
-
-#: ap-gl/ap-gl.c:46 src/ap-config.c:46 src/ap-config.c:58
-msgid "Community"
-msgstr "Comunitate"
-
-#: ap-gl/ap-gl.c:47 src/ap-config.c:47
-msgid "Radio"
-msgstr "Radio"
-
-#: ap-gl/ap-gl.c:47 src/ap-config.c:47
-msgid "Set radio signal power and antenna options"
-msgstr "Setãri putere semnal radio ºi opþiuni antenã"
-
-#: ap-gl/ap-gl.c:62 src/ap-config.c:80
-msgid "Upload"
-msgstr "Upload"
-
-#: ap-gl/ap-gl.c:62 src/ap-config.c:80
-#, fuzzy
-msgid "Activate current configuration"
-msgstr "Seteazã configuraþia curentã ca activã"
-
-#: ap-gl/ap-gl.c:63 src/ap-config.c:81
-msgid "Defaults"
-msgstr "Implicite"
-
-#: ap-gl/ap-gl.c:63 src/ap-config.c:81
-msgid "Restore factory default settings"
-msgstr "Restaureazã setãrile implicite din fabricã"
-
-#: ap-gl/ap-gl.c:64 src/ap-config.c:82 src/ap-config.c:89
-msgid "Reset"
-msgstr "Reset"
-
-#: ap-gl/ap-gl.c:65 src/ap-config.c:83
-msgid "Reset AP. All not uploaded configuration will be lost"
-msgstr "Resetare AP. Toate configuraþiile ne-uploadate vor fi pierdute"
-
-#: ap-gl/ap-gl.c:66 src/ap-config.c:84
-msgid "TestMode"
-msgstr "ModTestare"
-
-#: ap-gl/ap-gl.c:66 src/ap-config.c:84
-msgid "Put Access Point in test mode"
-msgstr "Aducere Access Point în mod testare"
-
-#: ap-gl/ap-gl.c:79 src/ap-config.c:110 src/ap-config.c:119
-msgid "SysInfo"
-msgstr "SysInfo"
-
-#: ap-gl/ap-gl.c:80 ap-gl/bridge.c:131 src/ap-config.c:111 src/bridge.c:116
-#: src/bridge.c:120
-msgid "Ethernet"
-msgstr "Ethernet"
-
-#: ap-gl/ap-gl.c:80 src/ap-config.c:111
-msgid "Get ethernet port statistics"
-msgstr "Procurare statistici port ethernet"
-
-#: ap-gl/ap-gl.c:82 src/ap-config.c:113 src/ap-config.c:121
-msgid "Stations"
-msgstr "Staþii"
-
-#: ap-gl/ap-gl.c:83 src/ap-config.c:114
-msgid "KnownAPs"
-msgstr "AP-uri cunoscute"
-
-#: ap-gl/ap-gl.c:83 src/ap-config.c:114
-msgid "Get info about known Access Points"
-msgstr "Procurare informaþii despre Access Point-urile cunoscute"
-
-#: ap-gl/ap-gl.c:100 src/ap-config.c:147
-msgid "Info"
-msgstr "Informaþii"
-
-#: ap-gl/ap-gl.c:101 src/ap-config.c:148
-msgid "Config"
-msgstr "Configuraþie"
-
-#: ap-gl/ap-gl.c:102 src/ap-config.c:149
-msgid "Commands"
-msgstr "Comenzi"
-
-#: ap-gl/ap-gl.c:102 src/ap-config.c:149
-msgid "Execute commands on Access Point"
-msgstr "Executare comenzi pe Access Point"
-
-#: ap-gl/ap-gl.c:104 src/ap-config.c:151
-msgid "Connect"
-msgstr "Conectare "
-
-#: ap-gl/ap-gl.c:105 src/ap-config.c:152
-msgid "Search"
-msgstr "Cãutare"
-
-#: ap-gl/ap-gl.c:106 lib/common.c:83 src/ap-config.c:153
-msgid "About"
-msgstr "Despre"
-
-#: ap-gl/ap-gl.c:107 src/ap-config.c:154
-msgid "Shell"
-msgstr "Shell"
-
-#: ap-gl/ap-gl.c:108 src/ap-config.c:155
-msgid "Exit"
-msgstr "Ieºire"
-
-#: ap-gl/ap-gl.c:158 src/ap-config.c:204
-#, c-format
-msgid "Wireless Access Point Configurator ver. %s"
-msgstr "Wireless Access Point Configurator ver. %s"
-
-#: ap-gl/auth_mac.c:27 src/auth_mac.c:27
-msgid "AuthorizedMacTableString packet error"
-msgstr "Eroare pachet AuthorizedMacTableString"
-
-#: ap-gl/auth_mac.c:29 src/auth_mac.c:29
-#, fuzzy
-msgid "[A] MAC authorization: "
-msgstr "[A] Autorizare prin MAC: %s"
-
-#: ap-gl/auth_mac.c:30 src/auth_mac.c:30
-#, fuzzy
-msgid "Enter MAC: "
-msgstr "Introducere Mac:"
-
-#: ap-gl/auth_mac.c:31 src/auth_mac.c:31
-#, fuzzy
-msgid "Delete Num: "
-msgstr "ªterge Num:"
-
-#: ap-gl/auth_mac.c:32 src/auth_mac.c:32
-#, fuzzy
-msgid "Authorized MAC addresses"
-msgstr "Adrese MAC Autorizate"
-
-#: ap-gl/auth_mac.c:33
-#, fuzzy
-msgid "NUM       MAC address"
-msgstr "NUM     adresã MAC"
-
-#: ap-gl/auth_mac.c:34 src/auth_mac.c:34
-msgid "A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit"
-msgstr ""
-"A - autentificare; N - nou; D - ºtergere; sãgeþi -scroll; W- scriere conf; Q "
-"- ieºire"
-
-#: ap-gl/auth_mac.c:35
-#, fuzzy
-msgid "A - auth; IPSTF - set; W - write conf; Q - quit"
-msgstr "DA - opþiuni; W - scriere configuraþie; Q - ieºire în meniu"
-
-#: ap-gl/auth_mac.c:36
-#, fuzzy
-msgid "A - auth; W - write conf; Q - quit"
-msgstr "DA - opþiuni; W - scriere configuraþie; Q - ieºire în meniu"
-
-#: ap-gl/auth_mac.c:38
-msgid "[I] RADIUS SERVER IP: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:39
-msgid "[P] RADIUS SERVER PORT: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:40
-msgid "[S] RADIUS SERVER SECRET: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:41
-msgid "[T] REAUTHORIZATION TIME: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:42
-msgid "[F] RADIUS SOURCE PORT: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:87
-#, fuzzy
-msgid "Internal"
-msgstr "General"
-
-#: ap-gl/auth_mac.c:95
-msgid "<hidden>"
-msgstr ""
-
-#: ap-gl/bridge.c:26 src/bridge.c:26
-msgid "[I] IP: "
-msgstr ""
-
-#: ap-gl/bridge.c:27 src/bridge.c:27
-#, fuzzy
-msgid "[N] Netmask: "
-msgstr "[N] Netmask: %s"
-
-#: ap-gl/bridge.c:28 src/bridge.c:28
-#, fuzzy
-msgid "[G] Gateway: "
-msgstr "[G] Gateway %s"
-
-#: ap-gl/bridge.c:29 src/bridge.c:29
-#, fuzzy
-msgid "[F] Filter non-IP traffic: "
-msgstr "[F] Filtrare traficul non IP: %s"
-
-#: ap-gl/bridge.c:30 src/bridge.c:30
-#, fuzzy
-msgid "[P] Primary port: "
-msgstr "[P] Port primar: %s"
-
-#: ap-gl/bridge.c:31 src/bridge.c:31
-#, fuzzy
-msgid "Attached station MAC: "
-msgstr "MAC ataºat staþiei: %02X%02X%02X%02X%02X%02X"
-
-#: ap-gl/bridge.c:32 src/bridge.c:32
-#, fuzzy
-msgid "[D] DHCP client: "
-msgstr "[D] Protocol DHCP: %s"
-
-#: ap-gl/bridge.c:33 src/bridge.c:33
-#, fuzzy
-msgid "[O] Operational mode: "
-msgstr "[O] Mod Operaþional: %s"
-
-#: ap-gl/bridge.c:34 src/bridge.c:34
-#, fuzzy
-msgid "[M] Preferred BSSID (remote MAC addr.): "
-msgstr "[R] Adresã Mac remote: %02X:%02X:%02X:%02X:%02X:%02X"
-
-#: ap-gl/bridge.c:36 src/bridge.c:36
-msgid "[T] Trap-sending port(s): "
-msgstr ""
-
-#: ap-gl/bridge.c:37 src/bridge.c:37
-msgid "[R] Forward broadcast traffic: "
-msgstr ""
-
-#: ap-gl/bridge.c:39
-msgid "[U] Isolate wireless clients: "
-msgstr ""
-
-#: ap-gl/bridge.c:40 src/bridge.c:40
-#, fuzzy
-msgid "INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu"
-msgstr "BPGINFDRT - setãri; W - scriere configuraþie; Q - ieºire în meniu"
-
-#: ap-gl/bridge.c:124 src/bridge.c:109
-msgid "Wireless Bridge Point to MultiPoint"
-msgstr "Conexiune(bridge) Wireless Point to MultiPoint"
-
-#: ap-gl/bridge.c:125 src/bridge.c:110
-msgid "Access Point"
-msgstr "Access Point"
-
-#: ap-gl/bridge.c:126 src/bridge.c:111
-msgid "Access Point client"
-msgstr "Client Access Point"
-
-#: ap-gl/bridge.c:127 src/bridge.c:112
-msgid "Wireless Bridge Point to Point"
-msgstr "Conexiune(bridge) Wireless Point to Point"
-
-#: ap-gl/bridge.c:128 src/bridge.c:113
-msgid "Repeater"
-msgstr "Repetor"
-
-#: ap-gl/stations.c:77 src/stations.c:100
-msgid "AP is currently in AP Client Mode => no associated STAtions."
-msgstr ""
-
-#: ap-gl/stations.c:102
-msgid "#     MAC       LQ    RSSI   Status Port IP"
-msgstr ""
-
-#: ap-gl/stations.c:128 src/stations.c:159
-msgid "AssociatedSTAsInfo packet error"
-msgstr "Eroare pachet AssociatedSTAsInfo"
-
-#: ap-gl/stations.c:160
-msgid "Arrows - scroll; S - save to file; Q - quit to menu."
-msgstr "Sãgeþi - scroll; S - salvare în fiºier; Q - ieºire în meniu."
-
-#: lib/aps.c:29
+#: lib/aps.c:30
 msgid "Known Access Points"
 msgstr "Access Point-uri Cunoscute"
 
-#: lib/aps.c:129
+#: lib/aps.c:130
 msgid "Your Access Point is not in \"AP client\" mode => getting"
 msgstr ""
 
-#: lib/aps.c:132
+#: lib/aps.c:133
 msgid "up-to-date \"Known APs\" info requires your AP to be"
 msgstr ""
 
-#: lib/aps.c:135
+#: lib/aps.c:136
 msgid "temporarily configured into \"AP client\" mode and rebooted."
 msgstr ""
 
-#: lib/aps.c:138
+#: lib/aps.c:139
 msgid "Your AP will be reconfigured back to original mode by this"
 msgstr ""
 
-#: lib/aps.c:141
+#: lib/aps.c:142
 msgid "utility once you quit the \"KnownAP\" view. This, in turn, may"
 msgstr ""
 
-#: lib/aps.c:144
+#: lib/aps.c:145
 #, fuzzy
 msgid "cause loss of Access Point's current configuration."
 msgstr "Seteazã configuraþia curentã ca activã"
 
-#: lib/aps.c:148
+#: lib/aps.c:149
 msgid "Do NOT answer \"Yes\" if you're connected to the Access Point"
 msgstr ""
 
-#: lib/aps.c:151
+#: lib/aps.c:152
 #, fuzzy
 msgid "via its wireless port."
 msgstr "Setare opþiuni wireless"
 
-#: lib/aps.c:153 lib/cmd.c:45 lib/cmd.c:75 lib/test.c:91
+#: lib/aps.c:154 lib/cmd.c:45 lib/cmd.c:75 lib/test.c:96
 msgid "Do you want to continue? "
 msgstr "Doriþi sã continuaþi? "
 
-#: lib/aps.c:207
+#: lib/aps.c:208
 msgid "NetworkType"
 msgstr "TipReþea"
 
-#: lib/aps.c:283
+#: lib/aps.c:284
 msgid "Infrastructure"
 msgstr "Infrastructurã"
 
-#: lib/aps.c:343 lib/aps.c:351 lib/aps.c:359
+#: lib/aps.c:344 lib/aps.c:352 lib/aps.c:360
 #, fuzzy
 msgid "CN: Channel Name; P: Preambule Type (S: Short; L: Long);"
 msgstr "P: Tip Preambul; S: Scurt; L: Lung"
 
-#: lib/aps.c:345
+#: lib/aps.c:346
 msgid "RSSI: Radio Signal Strength Indicator [%]"
 msgstr ""
 
-#: lib/aps.c:347 lib/aps.c:355
+#: lib/aps.c:348 lib/aps.c:356
 msgid "; LQ: Link Quality [%]"
 msgstr ""
 
-#: lib/aps.c:353
+#: lib/aps.c:354
 msgid "RSSI: Radio Signal Strength Indicator [dBm]"
 msgstr ""
 
-#: lib/aps.c:361
+#: lib/aps.c:362
 msgid "RSSI: Radio Signal Strength Indicator [raw]"
 msgstr ""
 
-#: lib/aps.c:363
+#: lib/aps.c:364
 msgid "; LQ: Link Q. [raw]"
 msgstr ""
 
-#: lib/aps.c:369
+#: lib/aps.c:370
 #, fuzzy
 msgid ""
 "# con. to AP #; R refresh with reset; T toggle; Q quit; Other = refr. w/o "
@@ -407,7 +99,7 @@ msgstr ""
 "# conectare la acest AP; R împrospãtare cu reset; G împrospãtare fãrã reset; "
 "Q ieºire"
 
-#: lib/aps.c:371
+#: lib/aps.c:372
 #, fuzzy
 msgid ""
 "# con. to AP #; R initiate AP scan; T toggle view; Q quit; Other = refresh "
@@ -416,44 +108,44 @@ msgstr ""
 "# conectare la acest AP; R împrospãtare cu reset; G împrospãtare fãrã reset; "
 "Q ieºire"
 
-#: lib/aps.c:500 lib/ap_search.c:167
+#: lib/aps.c:501 lib/ap_search.c:173
 #, fuzzy, c-format
 msgid "Failure in sendto(): %s. Press any key."
 msgstr "Sendto invalid: %s. Apãsaþi o tastã."
 
-#: lib/aps.c:509
+#: lib/aps.c:510
 msgid "You have just initiated the AP scan. Be advised that it may"
 msgstr ""
 
-#: lib/aps.c:512
+#: lib/aps.c:513
 msgid "take a few seconds for your Access Point to find out some"
 msgstr ""
 
-#: lib/aps.c:515
+#: lib/aps.c:516
 msgid "values, so expect finishing the scan in about 5 seconds."
 msgstr ""
 
-#: lib/aps.c:518
+#: lib/aps.c:519
 msgid "Also note that your Access Point stops forwarding the network"
 msgstr ""
 
-#: lib/aps.c:521
+#: lib/aps.c:522
 msgid "traffic while the scan is in progress, but restores itself"
 msgstr ""
 
-#: lib/aps.c:524
+#: lib/aps.c:525
 msgid "to normal operation in time ranging up to 1 minute."
 msgstr ""
 
-#: lib/aps.c:527
+#: lib/aps.c:528
 msgid "Hence, if you are connected to target Access Point via its"
 msgstr ""
 
-#: lib/aps.c:530
+#: lib/aps.c:531
 msgid "wireless port, you need to wait a bit longer"
 msgstr ""
 
-#: lib/aps.c:533
+#: lib/aps.c:534
 msgid "after pressing 'S'."
 msgstr ""
 
@@ -464,284 +156,298 @@ msgstr "Comunitate"
 
 #: lib/ap_search.c:49
 #, fuzzy
-msgid "  NUM  IP ADDRESS       MIB TYPE    NAME"
+msgid "  NUM  IP ADDRESS       MIB TYPE    FW TYPE (VERSION) AP NAME"
 msgstr "NUM       ADRES? IP   TIP"
 
-#: lib/ap_search.c:100
+#: lib/ap_search.c:106
 msgid "Please wait while scanning, or press 'Q' to quit."
 msgstr ""
 
-#: lib/ap_search.c:116
+#: lib/ap_search.c:122
 #, fuzzy
 msgid "Can't set broadcast option on socket. Press any key."
 msgstr "Nu se poate seta opþiunea de broadcast spre socket. Apãsaþi o tastã."
 
-#: lib/ap_search.c:125
+#: lib/ap_search.c:131
 #, fuzzy
 msgid "Can't set multicast membership on socket. Press any key."
 msgstr ""
 "Nu se poate seta apartenenþa(membership) multicast la socket. Apãsaþi o "
 "tastã."
 
-#: lib/ap_search.c:132
+#: lib/ap_search.c:138
 msgid "Scanning via network interface:"
 msgstr ""
 
-#: lib/ap_search.c:133
+#: lib/ap_search.c:139
 #, c-format
 msgid "  Index: %i"
 msgstr ""
 
-#: lib/ap_search.c:135
+#: lib/ap_search.c:141
 #, fuzzy, c-format
 msgid "  Name: %s"
 msgstr "[N] Nume AP:"
 
-#: lib/ap_search.c:137
+#: lib/ap_search.c:143
 #, c-format
 msgid "  IP: %s"
 msgstr ""
 
-#: lib/ap_search.c:146
+#: lib/ap_search.c:152
 #, c-format
 msgid "Scanning for AP with MIB type: %s"
 msgstr ""
 
-#: lib/ap_search.c:334
-msgid "Please enter SNMP community name that will be used for AP detection."
-msgstr ""
-
-#: lib/ap_search.c:345
+#: lib/ap_search.c:378
 msgid "Access Points Search"
 msgstr "Cãutare de Access Points."
 
-#: lib/ap_search.c:363
+#: lib/ap_search.c:396
 #, fuzzy
 msgid "realloc() error."
 msgstr "Eroare în crearea socketului"
 
-#: lib/ap_search.c:375
+#: lib/ap_search.c:408
 msgid "Network interface discovery error."
 msgstr ""
 
-#: lib/ap_search.c:450
+#: lib/ap_search.c:483
 #, fuzzy
 msgid "No local network interfaces found. Press any key."
 msgstr "Eroare la fork. Apãsaþi o tastã."
 
-#: lib/ap_search.c:452
+#: lib/ap_search.c:485
 msgid "No directly reachable Access Points found. Press any key."
 msgstr ""
 
-#: lib/ap_search.c:457
+#: lib/ap_search.c:490
 msgid "Single-screen maximum number of APs found."
 msgstr ""
 
-#: lib/ap_search.c:460
+#: lib/ap_search.c:493
 #, fuzzy
 msgid "# - connect to AP; Q - quit"
 msgstr "Conectare la AP num:"
 
-#: lib/ap-utils.h:79
+#: lib/ap-utils.h:82
 #, fuzzy
 msgid "MAC address: "
 msgstr "Adresã IP: %s"
 
-#: lib/ap-utils.h:80
+#: lib/ap-utils.h:83
 #, fuzzy
 msgid "[S] SNMP traps: "
 msgstr "[S] Referinþe(traps) SNMP: %s"
 
-#: lib/ap-utils.h:82
+#: lib/ap-utils.h:85
 #, fuzzy
 msgid "[C] Frequency channel: "
 msgstr "[C] Frecvenþã Canal: %02u (%u MHz)"
 
-#: lib/ap-utils.h:84
+#: lib/ap-utils.h:87
 #, fuzzy
 msgid "Receive  antenna:"
 msgstr "Primite:"
 
-#: lib/ap-utils.h:85
+#: lib/ap-utils.h:88
 #, fuzzy
 msgid "[U] Left"
 msgstr "Stânga"
 
-#: lib/ap-utils.h:86
+#: lib/ap-utils.h:89
 #, fuzzy
 msgid "[I] Right"
 msgstr "Dreapta"
 
-#: lib/ap-utils.h:87
+#: lib/ap-utils.h:90
 #, fuzzy
 msgid "Transmit antenna:"
 msgstr "Transmise:"
 
-#: lib/ap-utils.h:88
+#: lib/ap-utils.h:91
 #, fuzzy
 msgid "[O] Left"
 msgstr "Stânga"
 
-#: lib/ap-utils.h:89
+#: lib/ap-utils.h:92
 #, fuzzy
 msgid "[P] Right"
 msgstr "Dreapta"
 
-#: lib/ap-utils.h:90
+#: lib/ap-utils.h:93
 #, fuzzy
 msgid "Diversity select:"
 msgstr "Variaþie: %s"
 
-#: lib/ap-utils.h:91
+#: lib/ap-utils.h:94
 #, fuzzy
 msgid "[T] Left"
 msgstr "Stânga"
 
-#: lib/ap-utils.h:92
+#: lib/ap-utils.h:95
 #, fuzzy
 msgid "[Y] Right"
 msgstr "Dreapta"
 
-#: lib/ap-utils.h:94
+#: lib/ap-utils.h:97
 msgid "Yes"
 msgstr ""
 
-#: lib/ap-utils.h:95
+#: lib/ap-utils.h:98
 msgid "No"
 msgstr ""
 
-#: lib/ap-utils.h:97
+#: lib/ap-utils.h:100
 msgid "On"
 msgstr ""
 
-#: lib/ap-utils.h:98
+#: lib/ap-utils.h:101
 #, fuzzy
 msgid "Off"
 msgstr "oprit(off)"
 
-#: lib/ap-utils.h:100
+#: lib/ap-utils.h:103
 #, fuzzy
 msgid "Basic"
 msgstr "de bazã"
 
-#: lib/ap-utils.h:102
+#: lib/ap-utils.h:105
 msgid "Press any key to continue."
 msgstr "Apãsaþi o tastã pentru continuare."
 
-#: lib/ap-utils.h:103
-msgid "Q - quit to menu. T - toggle polling mode, Other key - force update."
+#: lib/ap-utils.h:106
+msgid "Q - quit to menu. T - toggle polling mode, Other key - force update"
 msgstr ""
 
-#: lib/ap-utils.h:105
+#: lib/ap-utils.h:108
 msgid "Unable to write data to AP. Press any key to continue."
 msgstr "Nu se pot scrie date în AP. Apãsaþi o tastã pentru continuare."
 
-#: lib/ap-utils.h:106
+#: lib/ap-utils.h:109
 #, fuzzy
 msgid "Unable to retrieve (valid) data from AP. Press any key to continue."
 msgstr "Nu se pot recupera date din AP. Apãsaþi o tastã pentru continuare."
 
-#: lib/ap-utils.h:107
+#: lib/ap-utils.h:110
 #, fuzzy
-msgid "Trying to retrieve data from AP. Please wait..."
+msgid "Trying to retrieve data from AP - please wait (or press Q to quit)."
 msgstr "Recuperare date din AP. Vã rugãm aºteptaþi..."
 
-#: lib/ap-utils.h:108
+#: lib/ap-utils.h:111
 msgid "Writing data to AP. Please wait..."
 msgstr "Scriere date în AP. Vã rugãm aºteptaþi..."
 
-#: lib/ap-utils.h:109
+#: lib/ap-utils.h:112
 #, fuzzy
 msgid "Configuration written to the AP. Press any key to continue."
 msgstr "Nu se pot scrie date în AP. Apãsaþi o tastã pentru continuare."
 
-#: lib/ap-utils.h:110
+#: lib/ap-utils.h:113
 #, fuzzy
 msgid "select() function error. Press any key."
 msgstr "Eroare fcntl. Apãsaþi o tastã."
 
-#: lib/ap-utils.h:112
-msgid "Create socket error. Press any key."
-msgstr "Eroare în creare socket. Apãsaþi o tastã."
+#: lib/ap-utils.h:114
+#, fuzzy
+msgid "socket() or bind() function error. Press any key."
+msgstr "Eroare fcntl. Apãsaþi o tastã."
 
-#: lib/ap-utils.h:113
-msgid "Bind socket error. Press any key."
-msgstr "Eroare de legãturã. Apãsaþi o tastã."
+#: lib/ap-utils.h:116
+#, fuzzy
+msgid "Unable to write AP list file ~/.ap-config. Press any key."
+msgstr "Nu se pot recupera date din AP. Apãsaþi o tastã pentru continuare."
+
+#: lib/ap-utils.h:117
+msgid "AP list file ~/.ap-config successfully written. Press any key."
+msgstr ""
 
-#: lib/ap-utils.h:115
+#: lib/ap-utils.h:119
 msgid "Back to main menu"
 msgstr "Înapoi în meniul principal"
 
-#: lib/ap-utils.h:116
+#: lib/ap-utils.h:120
 msgid "Exit program"
 msgstr "Ieºire din program"
 
-#: lib/ap-utils.h:117
+#: lib/ap-utils.h:121
 #, fuzzy
 msgid "Run subshell. To return type 'exit'."
 msgstr "Rulare subshell. Pentru întoarcere scrieþi 'exit'"
 
-#: lib/ap-utils.h:118
+#: lib/ap-utils.h:122
+msgid "Change polling mode interval"
+msgstr ""
+
+#: lib/ap-utils.h:123
 msgid "Short info about program"
 msgstr "Scurte informaþii despre program"
 
-#: lib/ap-utils.h:119
+#: lib/ap-utils.h:124
 msgid "Find connected Access Points"
 msgstr "Cautã Access Pointurile conectate"
 
-#: lib/ap-utils.h:120
+#: lib/ap-utils.h:125
 msgid "Set connection options: ip and community"
 msgstr "Setare opþiuni conexiune: ip ºi comunitate"
 
-#: lib/ap-utils.h:121
+#: lib/ap-utils.h:126
 #, fuzzy
 msgid "Set encryption; edit WEP keys"
 msgstr "Setare encripþie, editare chei WEP"
 
-#: lib/ap-utils.h:122
+#: lib/ap-utils.h:127
 #, fuzzy
-msgid "Set MAC authorization; edit MAC authorization table"
+msgid "Set authorization; edit MAC authorization table"
 msgstr "Setare autorizare prin mac, editare tabel autorizare prin mac"
 
-#: lib/ap-utils.h:123
+#: lib/ap-utils.h:128
 #, fuzzy
 msgid "Set SNMP community/password for access to the AP"
 msgstr "Setare comunitate/parolã SNMP pentru accesare AP"
 
-#: lib/ap-utils.h:124
+#: lib/ap-utils.h:129
 #, fuzzy
 msgid "Get info about AP hardware and firmware"
 msgstr "Procurare informaþii despre hardware ºi software AP"
 
-#: lib/ap-utils.h:125
+#: lib/ap-utils.h:130
 #, fuzzy
 msgid "Get wireless port statistics"
 msgstr "Procurare statistici porturi wireless"
 
-#: lib/ap-utils.h:126
+#: lib/ap-utils.h:131
 #, fuzzy
 msgid "Get list of currently associated stations (Access Point clients)"
 msgstr "Procurare listã staþii asociate în acest moment"
 
-#: lib/ap-utils.h:127
+#: lib/ap-utils.h:132
+msgid "Get link status in APclient mode"
+msgstr ""
+
+#: lib/ap-utils.h:133
 #, fuzzy
 msgid "Get info and statistics from AP"
 msgstr "Procurare informaþii ºi statistici din AP"
 
-#: lib/ap-utils.h:128
+#: lib/ap-utils.h:134
 #, fuzzy
 msgid "Set various configuration options"
 msgstr "Setare diverse opþiuni de configurare"
 
-#: lib/ap-utils.h:130
+#: lib/ap-utils.h:136
 msgid "Associated stations"
 msgstr "Staþii asociate"
 
-#: lib/ap-utils.h:132
+#: lib/ap-utils.h:137
+msgid "AP Client link state"
+msgstr ""
+
+#: lib/ap-utils.h:139
 msgid "Polling: on"
 msgstr ""
 
-#: lib/ap-utils.h:133
+#: lib/ap-utils.h:140
 msgid "Polling: off"
 msgstr ""
 
@@ -802,166 +508,181 @@ msgstr "Seteaz
 msgid "Configuration uploaded. Press any key to continue."
 msgstr "Upload-ul de configuraþie efectuat. Apãsaþi o tastã pentru continuare."
 
-#: lib/common.c:30
+#: lib/common.c:32
 #, fuzzy
 msgid "Access Point IP-address: "
 msgstr "Adresã IP Access Point:"
 
-#: lib/common.c:31
+#: lib/common.c:33
 #, fuzzy
 msgid "Password (community): "
 msgstr "Parolã (comunitate):"
 
-#: lib/common.c:32
+#: lib/common.c:34
 msgid "Autodetect AP MIB properties? "
 msgstr ""
 
-#: lib/common.c:33
+#: lib/common.c:35
 #, fuzzy
 msgid "AP MIB type: "
 msgstr "Tip AP:"
 
-#: lib/common.c:34
+#: lib/common.c:36
 msgid "AP MIB vendor extensions: "
 msgstr ""
 
-#: lib/common.c:35
+#: lib/common.c:37
 #, fuzzy
 msgid "Do you want to use AP's name as its label? "
 msgstr "Doriþi sã continuaþi? "
 
-#: lib/common.c:36
+#: lib/common.c:38
 #, fuzzy
 msgid "Access Point label: "
 msgstr "Access Point"
 
-#: lib/common.c:37
+#: lib/common.c:39
 #, fuzzy
 msgid "Save connect-settings: "
 msgstr "Salvare setãri conectare:"
 
-#: lib/common.c:100
+#: lib/common.c:40
+msgid "[P] Polling mode interval (tenths of second): "
+msgstr ""
+
+#: lib/common.c:41
+#, fuzzy
+msgid "P - change polling mode interval; Q - quit to menu"
+msgstr ""
+"[tastã] - setãri opþiuni; W - scriere configuraþie; Q - ieºire în meniu"
+
+#: lib/common.c:89 src/ap-config.c:158
+msgid "About"
+msgstr "Despre"
+
+#: lib/common.c:106
 #, c-format
 msgid "From %s"
 msgstr "De la %s"
 
-#: lib/common.c:102
+#: lib/common.c:108
 #, c-format
 msgid "Version %s"
 msgstr "Versiunea %s"
 
-#: lib/common.c:105
+#: lib/common.c:111
 msgid "Written by Roman Festchook roma@polesye.net"
 msgstr "Scris de Roman Festchook roma@polesye.net"
 
-#: lib/common.c:107
-msgid "Portions by Jan Rafaj aputils@cedric.unob.cz"
+#: lib/common.c:113
+msgid "and Jan Rafaj jr-aputils@cedric.unob.cz"
 msgstr ""
 
-#: lib/common.c:109
+#: lib/common.c:115
 #, fuzzy
-msgid "Copyright (c) 2001-2004"
+msgid "Copyright (c) 2001-2005"
 msgstr "Copyright (c) Roman Festchook 2001-2002"
 
-#: lib/common.c:111
+#: lib/common.c:117
 msgid "Roman Festchook and Jan Rafaj"
 msgstr ""
 
-#: lib/common.c:114
+#: lib/common.c:120
 msgid "This program is distributed under the terms"
 msgstr "Acest program este distribuit sub termenii "
 
-#: lib/common.c:116
+#: lib/common.c:122
 msgid "of the GNU General Public License version 2."
 msgstr "Licenþei Publice Generale GNU versiunea 2"
 
-#: lib/common.c:118
+#: lib/common.c:124
 msgid "See the included COPYING file for details."
 msgstr "Citiþi fiºierul COPYING inclus pentru detalii."
 
-#: lib/common.c:175
+#: lib/common.c:165
 msgid "Connect options"
 msgstr "Opþiuni conectare"
 
-#: lib/common.c:183
+#: lib/common.c:173
 msgid "Enter IP address of your Access Point."
 msgstr "Scrieþi adresa IP a Access Point-ului vostru:"
 
-#: lib/common.c:192
+#: lib/common.c:182
 msgid "Entered characters will not be displayed for security reason."
 msgstr "Caracterele introduse nu vor fi afiºate din motive de securitate."
 
-#: lib/common.c:266
+#: lib/common.c:249
 msgid "This label will be stored on HDD (independently on AP name!)."
 msgstr ""
 
-#: lib/common.c:361
+#: lib/common.c:362
 #, fuzzy
 msgid "Trying to probe AP for MIB properties. Please wait..."
 msgstr "Scriere date în AP. Vã rugãm aºteptaþi..."
 
-#: lib/common.c:390
+#: lib/common.c:391
 #, fuzzy
 msgid ""
 "Unable to determine AP MIB properties (no response from AP). Press any key."
 msgstr "Nu se pot recupera date din AP. Apãsaþi o tastã pentru continuare."
 
-#: lib/file.c:205
+#: lib/common.c:489 lib/set_oeminfo.c:221
+#, c-format
+msgid "%s%u"
+msgstr ""
+
+#: lib/common.c:491
+#, c-format
+msgid "(%0.1f seconds)"
+msgstr ""
+
+#: lib/file.c:199
 msgid "NUM  IP ADDRESS       MIB TYPE    MIB EXT.  LABEL"
 msgstr ""
 
-#: lib/file.c:206
+#: lib/file.c:200
 #, fuzzy
 msgid "Choose an AP to connect to"
 msgstr "Alege?i AP-ul la care se efectueaz? conexiunea"
 
-#: lib/file.c:212
+#: lib/file.c:206
 msgid "1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll"
 msgstr ""
 "1-9,C: conectare; N: nou; D: ?tergere; W: salvare; Q: ie?ire; s?ge?i: scroll"
 
-#: lib/file.c:268
+#: lib/file.c:257
 msgid "Connect to AP num:"
 msgstr "Conectare la AP num:"
 
-#: lib/file.c:304
+#: lib/file.c:288
 msgid "Delete num:"
 msgstr "ªterge Num:"
 
-#: lib/file.c:372
-msgid "AP list file ~/.ap-config successfully written. Press any key."
-msgstr ""
-
-#: lib/file.c:376
-#, fuzzy
-msgid "Unable to write AP list file ~/.ap-config. Press any key."
-msgstr "Nu se pot recupera date din AP. Apãsaþi o tastã pentru continuare."
-
-#: lib/file.c:426
+#: lib/file.c:442
 #, fuzzy
 msgid "Unable to write stations file. Press any key."
 msgstr "Nu se pot scrie date în AP. Apãsaþi o tastã pentru continuare."
 
-#: lib/file.c:428
+#: lib/file.c:444
 msgid "Stations file succesfully written. Press any key."
 msgstr ""
 
-#: lib/input.c:33
+#: lib/input.c:32
 #, fuzzy
 msgid "Invalid value. Press any key to continue."
 msgstr "Adresã IP invalidã.  Apãsaþi o tastã pentru continuare."
 
-#: lib/input.c:34
+#: lib/input.c:33
 #, fuzzy, c-format
 msgid "Value must be in range %u - %u. Press any key to continue."
 msgstr "Nu se pot scrie date în AP. Apãsaþi o tastã pentru continuare."
 
-#: lib/input.c:412
+#: lib/input.c:460
 #, fuzzy
 msgid "Y - Yes; Any other key - No (it's safer to answer No)"
 msgstr "(Y - Da; N - Nu (e mai sigur sã rãspundeþi Nu)"
 
-#: lib/oui.c:6056
+#: lib/oui.c:6061
 msgid "Unknown or Private"
 msgstr "Necunoscut sau Privat"
 
@@ -1009,7 +730,7 @@ msgstr ""
 "Nu puteþi dezactiva ambele antene, nu se poate salva configuraþia antenei. "
 "Apãsaþi o tastã."
 
-#: lib/scr.c:168
+#: lib/scr.c:157
 #, fuzzy, c-format
 msgid "Current AP: %s Type: %s Ext: %s"
 msgstr "AP Current: %s Tip: %s"
@@ -1049,6 +770,148 @@ msgid ""
 msgstr ""
 "CHEIE - setare comunitate/parolã; W - scriere configurare în AP;Q - ieºire"
 
+#: lib/set_oeminfo.c:28
+#, fuzzy
+msgid "Info structure version: "
+msgstr "VersiuneStruct: %u"
+
+#: lib/set_oeminfo.c:29
+#, fuzzy
+msgid "[M] Device MAC address: "
+msgstr "Adresã IP: %s"
+
+#: lib/set_oeminfo.c:30
+#, fuzzy
+msgid "    Manufacturer with this OUI: "
+msgstr "ID Producãtor:"
+
+#: lib/set_oeminfo.c:31
+#, fuzzy
+msgid "[D] Regulatory domain: "
+msgstr "Domeniu Regularizare: %s"
+
+#: lib/set_oeminfo.c:32
+#, fuzzy
+msgid "[T] Product type: "
+msgstr "TipProdus: %u"
+
+#: lib/set_oeminfo.c:33
+#, fuzzy
+msgid "[E] OEM name: "
+msgstr "NumeOEM:"
+
+#: lib/set_oeminfo.c:34
+msgid "[I] OEM ID: "
+msgstr ""
+
+#: lib/set_oeminfo.c:35
+#, fuzzy
+msgid "[N] Product name: "
+msgstr "Nume Produs:"
+
+#: lib/set_oeminfo.c:36
+#, fuzzy
+msgid "[H] Hardware revision: "
+msgstr "RevizieHardware: %u"
+
+#: lib/set_oeminfo.c:37
+#, fuzzy
+msgid "[O] Country code: "
+msgstr "[O] Comandã: %s"
+
+#: lib/set_oeminfo.c:38
+#, fuzzy
+msgid "[C] Default channel: "
+msgstr "[C] Frecvenþã Canal: %02u (%u MHz)"
+
+#: lib/set_oeminfo.c:39
+#, fuzzy
+msgid "[A] Calibrated channels: "
+msgstr "[C] Frecvenþã Canal: %02u (%u MHz)"
+
+#: lib/set_oeminfo.c:40
+msgid "[P] Nominal Tx Power (CR31) value for calibrated channels: "
+msgstr ""
+
+#: lib/set_oeminfo.c:41
+#, fuzzy
+msgid ""
+"Keys in brackets - set corresponding option; W - write conf; Q - quit to menu"
+msgstr ""
+"[tastã] - setãri opþiuni; W - scriere configuraþie; Q - ieºire în meniu"
+
+#: lib/set_oeminfo.c:101
+msgid "THIS IS A SECRET MENU LEADING TO VERY DANGEROUS OPTIONS."
+msgstr ""
+
+#: lib/set_oeminfo.c:103
+msgid "It is intended only for WISPs and repair shops."
+msgstr ""
+
+#: lib/set_oeminfo.c:107
+msgid "It allows to set OEM information stored in the AP (like its"
+msgstr ""
+
+#: lib/set_oeminfo.c:109
+msgid "MAC address, manuf. name, OEM ID, etc.). BE ABSOLUTELY SURE"
+msgstr ""
+
+#: lib/set_oeminfo.c:111
+msgid "THAT YOU KNOW WHAT YOU ARE DOING, AND THAT YOU HAVE THE"
+msgstr ""
+
+#: lib/set_oeminfo.c:113
+msgid "LEGAL RIGHT TO DO ANY MODIFICATION. Disobserving of these"
+msgstr ""
+
+#: lib/set_oeminfo.c:115
+msgid "rules may lead you into a conflict with your local"
+msgstr ""
+
+#: lib/set_oeminfo.c:117
+msgid "regulations and/or law."
+msgstr ""
+
+#: lib/set_oeminfo.c:119
+msgid "Also be warned that the setting of any from these options"
+msgstr ""
+
+#: lib/set_oeminfo.c:121
+msgid "may DAMAGE YOUR AP (other reason why this menu is hidden)."
+msgstr ""
+
+#: lib/set_oeminfo.c:123
+msgid "Values changed here will NOT be restored upon reset"
+msgstr ""
+
+#: lib/set_oeminfo.c:125
+msgid "of the device to factory defaults! It is advisable to"
+msgstr ""
+
+#: lib/set_oeminfo.c:127
+msgid "write them down somewhere prior their changing."
+msgstr ""
+
+#: lib/set_oeminfo.c:129
+msgid "Finally, note that you need to use MANUFACTURER community, "
+msgstr ""
+
+#: lib/set_oeminfo.c:131
+msgid "in order to be able to do any OEM info modification."
+msgstr ""
+
+#: lib/set_oeminfo.c:133
+msgid "Proceed further only at your full risk and responsibility. "
+msgstr ""
+
+#: lib/set_oeminfo.c:135
+msgid "You got the warnings."
+msgstr ""
+
+#: lib/set_oeminfo.c:141
+msgid "OEM Info settings"
+msgstr ""
+
 #: lib/stat.c:29
 msgid "Ethernet Statistics"
 msgstr "Statistici Ethernet"
@@ -1089,161 +952,186 @@ msgstr "Descriere sistem: "
 msgid "System Info"
 msgstr "Informaþii Sistem"
 
-#: lib/sysinfo.c:120
+#: lib/sysinfo.c:55 src/bridge.c:50
+msgid "Wireless Bridge Point to MultiPoint"
+msgstr "Conexiune(bridge) Wireless Point to MultiPoint"
+
+#: lib/sysinfo.c:56 src/bridge.c:51
+msgid "Access Point"
+msgstr "Access Point"
+
+#: lib/sysinfo.c:57 src/bridge.c:52
+msgid "Access Point client"
+msgstr "Client Access Point"
+
+#: lib/sysinfo.c:58 src/bridge.c:53
+msgid "Wireless Bridge Point to Point"
+msgstr "Conexiune(bridge) Wireless Point to Point"
+
+#: lib/sysinfo.c:59 src/bridge.c:54
+msgid "Repeater"
+msgstr "Repetor"
+
+#: lib/sysinfo.c:60 lib/sysinfo.c:315 lib/sysinfo.c:424 src/bridge.c:55
+msgid "unknown"
+msgstr "necunoscut"
+
+#: lib/sysinfo.c:144
 msgid "Device hardware/software/name info:"
 msgstr ""
 
-#: lib/sysinfo.c:154
+#: lib/sysinfo.c:172
+#, fuzzy, c-format
+msgid "Operational mode: %s"
+msgstr "[O] Mod Operaþional: %s"
+
+#: lib/sysinfo.c:182
 #, fuzzy
-msgid "Product name:"
+msgid "Product name: "
 msgstr "Nume Produs:"
 
-#: lib/sysinfo.c:158
+#: lib/sysinfo.c:186
 #, fuzzy, c-format
 msgid "Product type: %u"
 msgstr "TipProdus: %u"
 
-#: lib/sysinfo.c:161
+#: lib/sysinfo.c:189
 #, fuzzy
-msgid "OEM name:"
+msgid "OEM name: "
 msgstr "NumeOEM:"
 
-#: lib/sysinfo.c:168
+#: lib/sysinfo.c:196
 #, fuzzy, c-format
 msgid "Hardware revision: %u"
 msgstr "RevizieHardware: %u"
 
-#: lib/sysinfo.c:176
+#: lib/sysinfo.c:204
 #, fuzzy, c-format
 msgid "Info structure version: %u"
 msgstr "VersiuneStruct: %u"
 
-#: lib/sysinfo.c:179 lib/sysinfo.c:355
+#: lib/sysinfo.c:207 lib/sysinfo.c:383
 #, c-format
 msgid "Manufacturer OUI: %02X %02X %02X (%s)"
 msgstr "OUI Producãtor: %02X %02X %02X (%s)"
 
-#: lib/sysinfo.c:196
+#: lib/sysinfo.c:224
 #, fuzzy, c-format
 msgid "Uptime: %u days, %02u:%02u:%02u hours:mins:secs"
 msgstr "Uptime: %u:%02u:%02u.%02u"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "FHSS 2.4 GHz"
 msgstr "FHSS 2.4 GHz"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "DSSS 2.4 GHz"
 msgstr "DSSS 2.4 GHz"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "IR Baseband"
 msgstr "Bandã de bazã IR"
 
-#: lib/sysinfo.c:285
+#: lib/sysinfo.c:313
 msgid "Commercial range 0..40 C"
 msgstr "Interval comercial 0..40 C"
 
-#: lib/sysinfo.c:286
+#: lib/sysinfo.c:314
 msgid "Industrial range -30..70 C"
 msgstr "Interval industrial -30..70 C"
 
-#: lib/sysinfo.c:287 lib/sysinfo.c:396
-msgid "unknown"
-msgstr "necunoscut"
-
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "manual"
 msgstr "manual"
 
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "notsupported"
 msgstr "nesuportat"
 
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "dynamic"
 msgstr "dinamic"
 
-#: lib/sysinfo.c:345
+#: lib/sysinfo.c:373
 msgid "Manufacturer:"
 msgstr "Producãtor:"
 
-#: lib/sysinfo.c:350
+#: lib/sysinfo.c:378
 msgid "Manufacturer ID:"
 msgstr "ID Producãtor:"
 
-#: lib/sysinfo.c:361
+#: lib/sysinfo.c:389
 msgid "Product Name:"
 msgstr "Nume Produs:"
 
-#: lib/sysinfo.c:367
+#: lib/sysinfo.c:395
 msgid "Product ID:"
 msgstr "ID Produs:"
 
-#: lib/sysinfo.c:373
+#: lib/sysinfo.c:401
 msgid "Product Version:"
 msgstr "Versiune Produs:"
 
-#: lib/sysinfo.c:379
+#: lib/sysinfo.c:407
 #, c-format
 msgid "PHYType: %s"
 msgstr "TipPHY: %s"
 
-#: lib/sysinfo.c:382
+#: lib/sysinfo.c:410
 #, c-format
 msgid "Temperature: %s"
 msgstr "Temperaturã: %s"
 
-#: lib/sysinfo.c:390
+#: lib/sysinfo.c:418
 #, fuzzy, c-format
 msgid "Regulatory Domain: %s"
 msgstr "Domeniu Regularizare: %s"
 
-#: lib/sysinfo.c:391
+#: lib/sysinfo.c:419
 msgid "FCC (USA)"
 msgstr "FCC (USA)"
 
-#: lib/sysinfo.c:392
+#: lib/sysinfo.c:420
 msgid "DOC (Canada)"
 msgstr "DOC (Canada)"
 
-#: lib/sysinfo.c:393
+#: lib/sysinfo.c:421
 msgid "ETSI (Europe)"
 msgstr "ETSI (Europa)"
 
-#: lib/sysinfo.c:394
+#: lib/sysinfo.c:422
 msgid "Spain"
 msgstr "Spania"
 
-#: lib/sysinfo.c:395
+#: lib/sysinfo.c:423
 msgid "France"
 msgstr "Franþa"
 
-#: lib/sysinfo.c:396
+#: lib/sysinfo.c:424
 msgid "MKK (Japan)"
 msgstr "MKK (Japonia)"
 
-#: lib/sysinfo.c:399
+#: lib/sysinfo.c:427
 #, c-format
 msgid "Transmit Power: %u mW"
 msgstr "Putere Transmisie: %u mW"
 
-#: lib/sysinfo.c:429
+#: lib/sysinfo.c:457
 #, fuzzy, c-format
 msgid "WEP implemented: %s"
 msgstr "WEP inplementat: %s"
 
-#: lib/sysinfo.c:432
+#: lib/sysinfo.c:460
 #, c-format
 msgid "Diversity: %s"
 msgstr "Variaþie: %s"
 
-#: lib/sysinfo.c:460
+#: lib/sysinfo.c:488
 #, c-format
 msgid "Uptime: %u:%02u:%02u.%02u"
 msgstr "Uptime: %u:%02u:%02u.%02u"
 
-#: lib/sysinfo.c:480
+#: lib/sysinfo.c:508
 #, c-format
 msgid "IP  Address: %s"
 msgstr "Adresã IP: %s"
@@ -1292,35 +1180,39 @@ msgstr "St
 msgid "Right"
 msgstr "Dreapta"
 
-#: lib/test.c:86
+#: lib/test.c:79
+msgid "Devices with ATMEL12350 MIB not yet supported."
+msgstr ""
+
+#: lib/test.c:91
 #, fuzzy
 msgid "Test mode"
 msgstr "Mod Testare"
 
-#: lib/test.c:89
+#: lib/test.c:94
 #, fuzzy
 msgid "Using the \"Test mode\" may cause loss of your current"
 msgstr ""
 "Folosirea modului de testare poate cauza pierderea configuraþiei curente."
 
-#: lib/test.c:90
+#: lib/test.c:95
 #, fuzzy
 msgid "configuration."
 msgstr "Upload de configuraþie"
 
-#: lib/test.c:102
+#: lib/test.c:107
 msgid "Options:"
 msgstr "Opþiuni:"
 
-#: lib/test.c:128
+#: lib/test.c:133
 msgid "Statistics:"
 msgstr "Statistici:"
 
-#: lib/test.c:129
+#: lib/test.c:134
 msgid "Success Frames: 0 Failed Frames: 0"
 msgstr "Frame-uri cu succes: 0 Frame-uri eºuate: 0"
 
-#: lib/test.c:190
+#: lib/test.c:195
 #, c-format
 msgid "Success Frames: %lu Failed Frames: %lu"
 msgstr "Frame-uri cu succes: %lu Frame-uri eºuate: %lu"
@@ -1455,7 +1347,7 @@ msgid "[D] DTIM sending interval (beacons): "
 msgstr ""
 
 #: lib/wlan.c:48
-msgid "[T] SIFS time (msec): "
+msgid "[T] SIFS time (2nd+ interframe spacing, usec): "
 msgstr ""
 
 #: lib/wlan.c:49
@@ -1471,54 +1363,46 @@ msgstr "Scurt"
 msgid "Long"
 msgstr "Lung"
 
-#: lib/wlan.c:237
+#: lib/wlan.c:239
 msgid "Wireless Settings"
 msgstr "Setãri Wireless"
 
-#: lib/wlan.c:731
+#: lib/wlan.c:735
 msgid "Antenna Configuration:"
 msgstr "Configuraþie Antenã:"
 
-#: lib/wlan.c:748
+#: lib/wlan.c:752
 msgid "General Options"
 msgstr "Opþiuni Generale"
 
-#: lib/wlan.c:750
+#: lib/wlan.c:754
 msgid ""
 "UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu"
 msgstr ""
 "UIOPTY - antenã; SCANLEDFR1234 - opþiuni; W - scriere configuraþie; Q - "
 "ieºire în meniu"
 
-#: src/ap-config.c:54
-msgid "General"
-msgstr "General"
-
-#: src/ap-config.c:54
-msgid "Set general options"
-msgstr "Setare opþiuni generale"
-
-#: src/ap-config.c:55
-msgid "Advanced"
-msgstr "Avansat"
+#: src/ap-auth.c:32 src/auth.c:28
+msgid "AuthorizedMacTableString packet error"
+msgstr "Eroare pachet AuthorizedMacTableString"
 
-#: src/ap-config.c:55
-msgid "Set advanced options"
-msgstr "Setare opþiuni avansate"
+#: src/ap-auth.c:33
+msgid "Invalid data in source file"
+msgstr ""
 
-#: src/ap-config.c:89
-msgid "Reset AP."
-msgstr "Resetare AP."
+#: src/ap-auth.c:34
+msgid "Can't open file"
+msgstr ""
 
-#: src/ap-config.c:122
-msgid "Latest"
-msgstr "Ultimul"
+#: src/ap-auth.c:35
+msgid "Can't write to file"
+msgstr ""
 
-#: src/ap-config.c:122
-msgid "Get info about latest events"
-msgstr "Procurare informaþii despre ultimele evenimente"
+#: src/ap-auth.c:36
+msgid "Error closing file"
+msgstr ""
 
-#: src/ap-mrtg.c:42
+#: src/ap-auth.c:44 src/ap-mrtg.c:41 src/ap-rrd.c:40
 msgid ""
 "\n"
 "Usage:\n"
@@ -1526,139 +1410,640 @@ msgstr ""
 "\n"
 "Folosire:\n"
 
-#: src/ap-mrtg.c:44
-#, fuzzy
+#: src/ap-auth.c:45
+msgid "\tap-auth -i ip -c community -d filename [-h]\n"
+msgstr ""
+
+#: src/ap-auth.c:46
 msgid ""
-"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-"
-"h] [-r]\n"
+"\tap-auth -i ip -c community -u filename [-h]\n"
 "\n"
 msgstr ""
-"\tap-mrtg -i ip -c comunitate -t tip [-b bssid] [-v] [-h] [-r]\n"
-"\n"
 
-#: src/ap-mrtg.c:46
+#: src/ap-auth.c:47
 msgid ""
-"Get stats from AP and return it in MRTG parsable format\n"
+"Change accesspoint's list of authorised MAC addresses\n"
 "\n"
 msgstr ""
-"Procurã statistici din AP ºi le returneazã în format MRTG\n"
-"\n"
 
-#: src/ap-mrtg.c:47
+#: src/ap-auth.c:48 src/ap-mrtg.c:45 src/ap-rrd.c:45
 msgid "-i ip        - AP ip address\n"
 msgstr "-i ip        - Adresã de ip AP \n"
 
-#: src/ap-mrtg.c:48
+#: src/ap-auth.c:49 src/ap-mrtg.c:46 src/ap-rrd.c:46
 msgid "-c community - SNMP community string\n"
 msgstr "-c comunitate - SNMP ºir de caractere comunitate\n"
 
-#: src/ap-mrtg.c:50
+#: src/ap-auth.c:50
 msgid ""
-"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
-"or <l>ink quality in client mode\n"
+"-d filename  - download list of authorised MAC addresses from AP to a file\n"
 msgstr ""
-"-t tip      - tip statistici <w>ireless, <e>thernet,  <s>taþii asociate sau "
-"calitate  <l>egãturã(link) în mod client\n"
 
-#: src/ap-mrtg.c:52
+#: src/ap-auth.c:52
 msgid ""
-"-b bssid     - mac address of the AP to which get link quality, only if "
-"type=l\n"
+"-u filename  - upload list of authorised MAC addresses from a file to AP\n"
 msgstr ""
-"-b bssid     - adresã mac a AP-ului de la care se procurã calitatea "
-"conexiunii(link), numai dacã tip=l\n"
 
-#: src/ap-mrtg.c:53
-msgid "-n name     - AP name - for check only\n"
+#: src/ap-auth.c:54 src/ap-mrtg.c:55 src/ap-rrd.c:55
+msgid ""
+"-h           - print this help screen\n"
+"\n"
 msgstr ""
+"-h           - afiºeazã acest ecran de ajutor\n"
+"\n"
 
-#: src/ap-mrtg.c:54
+#: src/ap-auth.c:55
+#, fuzzy, c-format
 msgid ""
-"-a aptype        - AP type - 410 (default) or 510 for ATMEL12350's, like the "
-"ME-102\n"
+"ap-auth %s Copyright (c) 2004 Teemu Kiviniemi\n"
+"\n"
 msgstr ""
+"ap-mrtg %s Copyright (c) 2002 Roman Festchook\n"
+"\n"
 
-#: src/ap-mrtg.c:56
+#: src/ap-auth.c:138 src/ap-mrtg.c:132
+#, fuzzy
+msgid "Error: invalid IP-address.\n"
+msgstr "Adresã de IP invalidã\n"
+
+#: src/ap-auth.c:203 src/ap-mrtg.c:204
+#, fuzzy
+msgid "Unable to determine AP MIB type (no response from AP)."
+msgstr "Nu se pot recupera date din AP. Apãsaþi o tastã pentru continuare."
+
+#: src/ap-auth.c:211
+msgid "NWN devices are not yet supported."
+msgstr ""
+
+#: src/ap-config.c:43 src/bridge.c:201
+msgid "Bridging"
+msgstr "Conexiune(Bridging)"
+
+#: src/ap-config.c:43
+msgid "Set bridging and IP-related options"
+msgstr "Setare opþiuni legate de bridging ºi IP"
+
+#: src/ap-config.c:45 src/ap-config.c:114 src/ap-config.c:123 src/bridge.c:125
+msgid "Wireless"
+msgstr "Wireless"
+
+#: src/ap-config.c:45
+msgid "Set wireless options"
+msgstr "Setare opþiuni wireless"
+
+#: src/ap-config.c:46 src/ap-config.c:58
+msgid "Privacy"
+msgstr "Secret(Privacy)"
+
+#: src/ap-config.c:47
+#, fuzzy
+msgid "Auth"
+msgstr "Despre"
+
+#: src/ap-config.c:48 src/ap-config.c:60
+msgid "Community"
+msgstr "Comunitate"
+
+#: src/ap-config.c:49
+msgid "Radio"
+msgstr "Radio"
+
+#: src/ap-config.c:49
+msgid "Set radio signal power and antenna options"
+msgstr "Setãri putere semnal radio ºi opþiuni antenã"
+
+#: src/ap-config.c:56
+msgid "General"
+msgstr "General"
+
+#: src/ap-config.c:56
+msgid "Set general options"
+msgstr "Setare opþiuni generale"
+
+#: src/ap-config.c:57
+msgid "Advanced"
+msgstr "Avansat"
+
+#: src/ap-config.c:57
+msgid "Set advanced options"
+msgstr "Setare opþiuni avansate"
+
+#: src/ap-config.c:59
+#, fuzzy
+msgid "MAC auth"
+msgstr "Autorizare Mac"
+
+#: src/ap-config.c:82
+msgid "Upload"
+msgstr "Upload"
+
+#: src/ap-config.c:82
+#, fuzzy
+msgid "Activate current configuration"
+msgstr "Seteazã configuraþia curentã ca activã"
+
+#: src/ap-config.c:83
+msgid "Defaults"
+msgstr "Implicite"
+
+#: src/ap-config.c:83
+msgid "Restore factory default settings"
+msgstr "Restaureazã setãrile implicite din fabricã"
+
+#: src/ap-config.c:84 src/ap-config.c:91
+msgid "Reset"
+msgstr "Reset"
+
+#: src/ap-config.c:85
+msgid "Reset AP. All not uploaded configuration will be lost"
+msgstr "Resetare AP. Toate configuraþiile ne-uploadate vor fi pierdute"
+
+#: src/ap-config.c:86
+msgid "TestMode"
+msgstr "ModTestare"
+
+#: src/ap-config.c:86
+msgid "Put Access Point in test mode"
+msgstr "Aducere Access Point în mod testare"
+
+#: src/ap-config.c:91
+msgid "Reset AP."
+msgstr "Resetare AP."
+
+#: src/ap-config.c:112 src/ap-config.c:122
+msgid "SysInfo"
+msgstr "SysInfo"
+
+#: src/ap-config.c:113 src/bridge.c:124 src/bridge.c:127
+msgid "Ethernet"
+msgstr "Ethernet"
+
+#: src/ap-config.c:113
+msgid "Get ethernet port statistics"
+msgstr "Procurare statistici port ethernet"
+
+#: src/ap-config.c:115 src/ap-config.c:124
+msgid "Stations"
+msgstr "Staþii"
+
+#: src/ap-config.c:116
+msgid "AP link"
+msgstr ""
+
+#: src/ap-config.c:117
+msgid "KnownAPs"
+msgstr "AP-uri cunoscute"
+
+#: src/ap-config.c:117
+msgid "Get info about known Access Points"
+msgstr "Procurare informaþii despre Access Point-urile cunoscute"
+
+#: src/ap-config.c:125
+msgid "Latest"
+msgstr "Ultimul"
+
+#: src/ap-config.c:125
+msgid "Get info about latest events"
+msgstr "Procurare informaþii despre ultimele evenimente"
+
+#: src/ap-config.c:150
+msgid "Info"
+msgstr "Informaþii"
+
+#: src/ap-config.c:151
+msgid "Config"
+msgstr "Configuraþie"
+
+#: src/ap-config.c:152
+msgid "Commands"
+msgstr "Comenzi"
+
+#: src/ap-config.c:152
+msgid "Execute commands on Access Point"
+msgstr "Executare comenzi pe Access Point"
+
+#: src/ap-config.c:154
+msgid "Connect"
+msgstr "Conectare "
+
+#: src/ap-config.c:155
+msgid "Search"
+msgstr "Cãutare"
+
+#: src/ap-config.c:156
+msgid "Polling"
+msgstr ""
+
+#: src/ap-config.c:157
+msgid "Shell"
+msgstr "Shell"
+
+#: src/ap-config.c:159
+msgid "Exit"
+msgstr "Ieºire"
+
+#: src/ap-config.c:218
+#, c-format
+msgid "Wireless Access Point Configurator ver. %s"
+msgstr "Wireless Access Point Configurator ver. %s"
+
+#: src/aplink.c:25
+msgid "RSSI:     ["
+msgstr ""
+
+#: src/aplink.c:26
+msgid "RSSI avg: ["
+msgstr ""
+
+#: src/aplink.c:27
+msgid "RSSI top: ["
+msgstr ""
+
+#: src/aplink.c:28
+msgid "RSSI rou: ["
+msgstr ""
+
+#: src/aplink.c:29
+msgid ""
+"P - pause, T - toggle graph view, Q - quit to menu, Other key - force update."
+msgstr ""
+
+#: src/aplink.c:81
+msgid "RSSI [%]"
+msgstr ""
+
+#: src/aplink.c:82
+msgid "RSSI average [%]"
+msgstr ""
+
+#: src/aplink.c:83
+msgid "RSSI rounded [%]"
+msgstr ""
+
+#: src/aplink.c:84
+msgid "Link Quality [%]"
+msgstr ""
+
+#: src/aplink.c:133
+msgid "Not available - device must have firmware with necessary "
+msgstr ""
+
+#: src/aplink.c:135
+msgid "vendor extensions and be in either 'Access Point client'"
+msgstr ""
+
+#: src/aplink.c:137
+msgid "or 'Repeater' mode."
+msgstr ""
+
+#: src/ap-mrtg.c:42
+#, fuzzy
+msgid ""
+"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-v] [-h] [-r]\n"
+"\n"
+msgstr ""
+"\tap-mrtg -i ip -c comunitate -t tip [-b bssid] [-v] [-h] [-r]\n"
+"\n"
+
+#: src/ap-mrtg.c:44
+msgid ""
+"Get stats from AP and return it in MRTG parsable format\n"
+"\n"
+msgstr ""
+"Procurã statistici din AP ºi le returneazã în format MRTG\n"
+"\n"
+
+#: src/ap-mrtg.c:47
+#, fuzzy
+msgid ""
+"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
+"or <l>ink quality (last one will only "
+msgstr ""
+"-t tip      - tip statistici <w>ireless, <e>thernet,  <s>taþii asociate sau "
+"calitate  <l>egãturã(link) în mod client\n"
+
+#: src/ap-mrtg.c:49
+msgid "work with ATMEL410 MIB devices in AP Client mode)\n"
+msgstr ""
+
+#: src/ap-mrtg.c:50
+#, fuzzy
+msgid ""
+"-b bssid     - mac address of the AP from which get link quality, only if "
+"type=l\n"
+msgstr ""
+"-b bssid     - adresã mac a AP-ului de la care se procurã calitatea "
+"conexiunii(link), numai dacã tip=l\n"
+
+#: src/ap-mrtg.c:52
+msgid "-n name      - AP name - for check only\n"
+msgstr ""
+
+#: src/ap-mrtg.c:53
 msgid "-v           - report MRTG about problems connecting to AP\n"
 msgstr ""
 "-v           - raporteazã MRTG-ului problemele apãrute la conectarea la AP\n"
 
-#: src/ap-mrtg.c:57
+#: src/ap-mrtg.c:54 src/ap-rrd.c:54
 msgid "-r           - reset AP when getting LinkQuality stats\n"
 msgstr ""
 "-r           - reseteazã AP-ul când se procurã statisticile LinkQuality\n"
 
-#: src/ap-mrtg.c:58
+#: src/ap-mrtg.c:56
+#, fuzzy, c-format
 msgid ""
-"-h           - print this help screen\n"
+"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n"
 "\n"
 msgstr ""
-"-h           - afiºeazã acest ecran de ajutor\n"
+"ap-mrtg %s Copyright (c) 2002 Roman Festchook\n"
+"\n"
+
+#: src/ap-rrd.c:32
+#, c-format
+msgid "Error getting data from AP %s\n"
+msgstr ""
+
+#: src/ap-rrd.c:42
+#, fuzzy
+msgid ""
+"\tap-rrd -i ip -c community -t type -d db_file [-b bssid] [-n name] [-a "
+"aptype] [-h] [-r] \n"
+"\n"
+msgstr ""
+"\tap-mrtg -i ip -c comunitate -t tip [-b bssid] [-v] [-h] [-r]\n"
 "\n"
 
-#: src/ap-mrtg.c:59
+#: src/ap-rrd.c:44
+#, fuzzy
+msgid ""
+"Get stats from AP and put it in to specified RRDtool database\n"
+"\n"
+msgstr ""
+"Procurã statistici din AP ºi le returneazã în format MRTG\n"
+"\n"
+
+#: src/ap-rrd.c:48
+msgid ""
+"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
+"or <l>ink quality in client mode\n"
+msgstr ""
+"-t tip      - tip statistici <w>ireless, <e>thernet,  <s>taþii asociate sau "
+"calitate  <l>egãturã(link) în mod client\n"
+
+#: src/ap-rrd.c:49
+msgid "-d db_file   - RRD database file with full path\n"
+msgstr ""
+
+#: src/ap-rrd.c:51
+msgid ""
+"-b bssid     - mac address of the AP to which get link quality, only if "
+"type=l\n"
+msgstr ""
+"-b bssid     - adresã mac a AP-ului de la care se procurã calitatea "
+"conexiunii(link), numai dacã tip=l\n"
+
+#: src/ap-rrd.c:52
+msgid "-n name     - AP name - for check only\n"
+msgstr ""
+
+#: src/ap-rrd.c:53
+msgid ""
+"-a aptype    - AP type - 410 (default) or 510 for ATMEL12350's, like the ME-"
+"102\n"
+msgstr ""
+
+#: src/ap-rrd.c:56
 #, fuzzy, c-format
 msgid ""
-"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n"
+"ap-rrd %s Copyright (c) 2002-2004 Roman Festchook\n"
 "\n"
 msgstr ""
 "ap-mrtg %s Copyright (c) 2002 Roman Festchook\n"
 "\n"
 
-#: src/ap-mrtg.c:143
+#: src/ap-rrd.c:133
 msgid "Invalid IP-address\n"
 msgstr "Adresã de IP invalidã\n"
 
-#: src/ap-mrtg.c:188
+#: src/ap-rrd.c:179
 #, c-format
 msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n"
 msgstr ""
 
-#: src/ap-mrtg.c:207
-msgid "Create socket error"
-msgstr "Eroare în crearea socketului"
+#: src/ap-tftp.c:84
+msgid "yes"
+msgstr ""
+
+#: src/ap-tftp.c:85
+#, fuzzy
+msgid "no"
+msgstr "Informaþii"
+
+#: src/ap-tftp.c:87
+msgid "Error while read()ing firmware file"
+msgstr ""
+
+#: src/ap-tftp.c:100
+msgid "Undefined error"
+msgstr ""
+
+#: src/ap-tftp.c:101
+msgid "File not found"
+msgstr ""
+
+#: src/ap-tftp.c:102
+#, fuzzy
+msgid "Access violation"
+msgstr "Access Point"
+
+#: src/ap-tftp.c:103
+msgid "Disk full or allocation error"
+msgstr ""
+
+#: src/ap-tftp.c:104
+msgid "Illegal TFTP operation"
+msgstr ""
+
+#: src/ap-tftp.c:105
+msgid "Unknown transfer ID"
+msgstr ""
+
+#: src/ap-tftp.c:106
+msgid "File already exists"
+msgstr ""
+
+#: src/ap-tftp.c:107
+msgid "No such user"
+msgstr ""
+
+#: src/ap-tftp.c:157
+msgid "Remote-filename too long.\n"
+msgstr ""
+
+#: src/ap-tftp.c:183
+#, c-format
+msgid "%sError in read()"
+msgstr ""
+
+#: src/ap-tftp.c:212
+#, c-format
+msgid "sending %u bytes\n"
+msgstr ""
+
+#: src/ap-tftp.c:221
+#, c-format
+msgid "%sError in sendto()"
+msgstr ""
+
+#: src/ap-tftp.c:244
+#, c-format
+msgid "%sError in recvfrom()"
+msgstr ""
+
+#: src/ap-tftp.c:256
+#, c-format
+msgid "\rProgress: uploaded %3i%%."
+msgstr ""
+
+#: src/ap-tftp.c:267
+#, c-format
+msgid "%sMalformed packet received. Aborting.\n"
+msgstr ""
+
+#: src/ap-tftp.c:276
+#, c-format
+msgid "%sTimed out waiting for response from server (%i/%i).\n"
+msgstr ""
+
+#: src/ap-tftp.c:283
+#, c-format
+msgid "%sError in select()"
+msgstr ""
+
+#: src/ap-tftp.c:297
+#, c-format
+msgid "Received %d bytes: %04x %04x\n"
+msgstr ""
+
+#: src/ap-tftp.c:308
+#, c-format
+msgid "%sError: server responded with %s. Aborting.\n"
+msgstr ""
+
+#: src/ap-tftp.c:315
+#, c-format
+msgid "%sFlash programming in progress...\n"
+msgstr ""
+
+#: src/ap-tftp.c:317
+msgid "Finished successfully.\n"
+msgstr ""
+
+#: src/ap-tftp.c:335
+msgid "PLEASE BE _ABSOLUTELY_ SURE TO READ MANPAGE PRIOR USE!!!\n"
+msgstr ""
+
+#: src/ap-tftp.c:337
+#, c-format
+msgid ""
+"\n"
+"Usage: %s -i IP -f firmware_file.rom [-c community] [-h]\n"
+msgstr ""
+
+#: src/ap-tftp.c:361
+msgid "TFTP client for upgrading firmware in ATMEL AT76C510 WiSOC-based APs.\n"
+msgstr ""
+
+#: src/ap-tftp.c:363
+msgid "(C) 2004-2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>\n"
+msgstr ""
+
+#: src/ap-tftp.c:379
+msgid "Error: invalid IP address format given.\n"
+msgstr ""
+
+#: src/ap-tftp.c:405
+#, fuzzy
+msgid "Error: invalid argument combination.\n"
+msgstr "Adresã de IP invalidã\n"
+
+#: src/ap-tftp.c:412
+msgid "Error while open()ing firmware file"
+msgstr ""
+
+#: src/ap-tftp.c:419 src/ap-tftp.c:472
+msgid "Error: invalid firmware file given.\n"
+msgstr ""
+
+#: src/ap-tftp.c:461
+#, c-format
+msgid ""
+"Firmware file contains:\n"
+"- string \"ATMEL\": %s\n"
+"- string \"802.11 AP\": %s\n"
+"- string \"atbrfirm.bin\": %s\n"
+"- string \"atsingle.bin\": %s\n"
+msgstr ""
 
-#: src/ap-mrtg.c:211
-msgid "Bind socket error"
-msgstr "Eroare în legãtura(bind) la socket"
+#: src/ap-tftp.c:485
+#, c-format
+msgid ""
+"Using:\n"
+"- server: %s\n"
+"- firmware file: \"%s\"\n"
+"- name used for upload: \"%s\"\n"
+msgstr ""
+
+#: src/ap-tftp.c:568
+msgid ""
+"Error: device with the given IP does not seem to run SmartBridges firmware.\n"
+msgstr ""
+
+#: src/ap-tftp.c:574
+msgid "Error: SNMP authorization error or device unavailable.\n"
+msgstr ""
 
-#: src/ap-trapd.c:148
+#: src/ap-tftp.c:653
+msgid "Error while lseek()ing in firmware file\n"
+msgstr ""
+
+#: src/ap-trapd.c:150
 #, c-format
 msgid "ap-trapd %s started%s%s."
 msgstr "ap-trapd %s startat%s%s."
 
-#: src/ap-trapd.c:149
+#: src/ap-trapd.c:151
 msgid " on "
 msgstr " activat "
 
-#: src/ap-trapd.c:155
+#: src/ap-trapd.c:157
 msgid "Unable to fork. Exiting."
 msgstr "Nu se poate face fork. Ieºire."
 
-#: src/ap-trapd.c:159
+#: src/ap-trapd.c:161
 msgid "Can't create socket. Exiting."
 msgstr "Nu se poate crea socketul. Ieºire."
 
-#: src/ap-trapd.c:165
+#: src/ap-trapd.c:167
 msgid "Can't bind socket. Exiting."
 msgstr "Nu se poate face legãtura(bind) la socket. Ieºire."
 
-#: src/ap-trapd.c:172
+#: src/ap-trapd.c:174
 #, c-format
 msgid "Can't bind to device %s. Exiting."
 msgstr "Nu se poate face legãtura(bind) la device-ul %s. Ieºire."
 
-#: src/ap-trapd.c:183
+#: src/ap-trapd.c:185
 #, c-format
 msgid "Unable to process username %s. Error: %m."
 msgstr "Nu pot procesa username-ul %s. Eroare: %m."
 
-#: src/ap-trapd.c:188
+#: src/ap-trapd.c:190
 #, c-format
 msgid "Unable to change to uid %d."
 msgstr "Nu pot schimba în uid %d."
 
-#: src/ap-trapd.c:235
+#: src/ap-trapd.c:239
 #, c-format
 msgid ""
 "Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s."
@@ -1666,29 +2051,213 @@ msgstr ""
 "S-a primit trap necunoscut SNMP ver %d. De la %s:%d. Agent: %s. Comunitate: %"
 "s."
 
-#: src/ap-trapd.c:307
-#, c-format
-msgid "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d"
+#: src/ap-trapd.c:311
+#, fuzzy, c-format
+msgid "Agent:v%d %s (%s@%s:%d) Trap %i: %s%s%s. SysUptime %d:%02d:%02d.%02d"
 msgstr "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d"
 
-#: src/auth_mac.c:33
+#: src/auth.c:30
+msgid "APClient authorization credentials"
+msgstr ""
+
+#: src/auth.c:32
+#, fuzzy
+msgid "[A] MAC authorization: "
+msgstr "[A] Autorizare prin MAC: %s"
+
+#: src/auth.c:33
+#, fuzzy
+msgid "Enter MAC: "
+msgstr "Introducere Mac:"
+
+#: src/auth.c:34
 #, fuzzy
-msgid "NUM     MAC address"
+msgid "Delete Num: "
+msgstr "ªterge Num:"
+
+#: src/auth.c:35
+#, fuzzy
+msgid " NUM     MAC address     "
 msgstr "NUM     adresã MAC"
 
+#: src/auth.c:36
+#, fuzzy
+msgid "A: auth; N: new; D: del; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A - autentificare; N - nou; D - ºtergere; sãgeþi -scroll; W- scriere conf; Q "
+"- ieºire"
+
+#: src/auth.c:38
+msgid "[I] Radius server IP: "
+msgstr ""
+
+#: src/auth.c:39
+#, fuzzy
+msgid "[P] Radius server port: "
+msgstr "[P] Port primar: %s"
+
+#: src/auth.c:40
+msgid "[S] Radius server secret: "
+msgstr ""
+
+#: src/auth.c:41
+#, fuzzy
+msgid "[T] Reauthorization time (minutes): "
+msgstr "[A] Autorizare prin MAC: %s"
+
+#: src/auth.c:42
+msgid "[F] Radius source port: "
+msgstr ""
+
+#: src/auth.c:43
+#, fuzzy
+msgid ""
+"A: auth; N: new; D: del; IPSTF: set; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A - autentificare; N - nou; D - ºtergere; sãgeþi -scroll; W- scriere conf; Q "
+"- ieºire"
+
+#: src/auth.c:45
+#, fuzzy
+msgid "[M] 802.1x authorization: "
+msgstr "[A] Autorizare prin MAC: %s"
+
+#: src/auth.c:46
+#, fuzzy
+msgid "[T] key broadcasting time period (seconds): "
+msgstr "[A] Autorizare prin MAC: %s"
+
+#: src/auth.c:47
+msgid "[I] 802.1x auth. server IP: "
+msgstr ""
+
+#: src/auth.c:48
+msgid "[S] 802.1x auth. server secret: "
+msgstr ""
+
+#: src/auth.c:49
+#, fuzzy
+msgid ""
+"A: auth; N: new; D: del; MTIS: set; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A - autentificare; N - nou; D - ºtergere; sãgeþi -scroll; W- scriere conf; Q "
+"- ieºire"
+
+#: src/auth.c:114
+#, fuzzy
+msgid "Internal"
+msgstr "General"
+
+#: src/auth.c:116
+#, fuzzy
+msgid "Radius"
+msgstr "Radio"
+
+#: src/auth.c:121
+msgid "Allow listed MACs only"
+msgstr ""
+
+#: src/auth.c:123
+msgid "Deny listed MACs only"
+msgstr ""
+
+#: src/auth.c:129
+msgid "Mixed environment"
+msgstr ""
+
+#: src/auth.c:213
+msgid "(not shown)"
+msgstr ""
+
+#: src/auth.c:276
+#, fuzzy
+msgid "Authorized MAC addresses:"
+msgstr "Adrese MAC Autorizate"
+
+#: src/auth.c:345
+msgid "(insufficient community used)"
+msgstr ""
+
+#: src/auth.c:472
+#, c-format
+msgid "Given MAC already exists in MAC list at position %d. Press any key."
+msgstr ""
+
+#: src/bridge.c:27
+msgid "[I] IP: "
+msgstr ""
+
+#: src/bridge.c:28
+#, fuzzy
+msgid "[N] Netmask: "
+msgstr "[N] Netmask: %s"
+
+#: src/bridge.c:29
+#, fuzzy
+msgid "[G] Gateway: "
+msgstr "[G] Gateway %s"
+
+#: src/bridge.c:30
+#, fuzzy
+msgid "[F] Filter non-IP traffic: "
+msgstr "[F] Filtrare traficul non IP: %s"
+
+#: src/bridge.c:31
+#, fuzzy
+msgid "[P] Primary port: "
+msgstr "[P] Port primar: %s"
+
+#: src/bridge.c:32
+#, fuzzy
+msgid "Attached station MAC: "
+msgstr "MAC ataºat staþiei: %02X%02X%02X%02X%02X%02X"
+
+#: src/bridge.c:33
+#, fuzzy
+msgid "[D] DHCP client: "
+msgstr "[D] Protocol DHCP: %s"
+
+#: src/bridge.c:34
+#, fuzzy
+msgid "[O] Operational mode: "
+msgstr "[O] Mod Operaþional: %s"
+
 #: src/bridge.c:35
+#, fuzzy
+msgid "[M] Preferred BSSID (remote MAC addr.): "
+msgstr "[R] Adresã Mac remote: %02X:%02X:%02X:%02X:%02X:%02X"
+
+#: src/bridge.c:36
 msgid "[C] Configuration-enabled port(s): "
 msgstr ""
 
+#: src/bridge.c:37
+msgid "[T] Trap-sending port: "
+msgstr ""
+
 #: src/bridge.c:38
-msgid "[B] Isolate wireless clients (broadcast traffic): "
+msgid "[R] Forward broadcast traffic: "
 msgstr ""
 
 #: src/bridge.c:39
+msgid "[B] Isolate wireless clients (broadcast traffic): "
+msgstr ""
+
+#: src/bridge.c:40
 msgid "[U] Isolate wireless clients (unicast traffic): "
 msgstr ""
 
-#: src/bridge.c:119
+#: src/bridge.c:41
+#, fuzzy
+msgid "INGFPDOMSCRBUT - set; W - write conf; Q - quit to menu"
+msgstr "BPGINFDRT - setãri; W - scriere configuraþie; Q - ieºire în meniu"
+
+#: src/bridge.c:128
+#, fuzzy
+msgid "Wireless (can be risky)"
+msgstr "Setãri Wireless"
+
+#: src/bridge.c:129
 #, fuzzy
 msgid "Both"
 msgstr "Ambele Tipuri"
@@ -1741,35 +2310,62 @@ msgstr "Ultima eroare:"
 msgid "Error:"
 msgstr "Eroare:"
 
-#: src/stations.c:33
-msgid "AP link state"
+#: src/stations.c:82
+msgid "Not available (device not in AP mode)."
 msgstr ""
 
-#: src/stations.c:37
-msgid " #            MAC                                               "
+#: src/stations.c:92
+msgid "  #     MAC       Parent MAC  RSSI   LQ Sts MACn      IP        "
 msgstr ""
 
-#: src/stations.c:40
-msgid " #     MAC       Parent MAC    RSSI  Status MACn      IP        "
-msgstr ""
+#: src/stations.c:136
+msgid "AssociatedSTAsInfo packet error"
+msgstr "Eroare pachet AssociatedSTAsInfo"
 
-#: src/stations.c:195 src/stations.c:367
+#: src/stations.c:189 src/stations.c:363
 #, fuzzy
 msgid ""
 "Arrows - scroll; S - save to file; Q - return; T - toggle view; Other - "
 "refresh"
 msgstr "Sãgeþi - scroll; S - salvare în fiºier; Q - ieºire în meniu."
 
-#: src/stations.c:200
+#: src/stations.c:193
 #, fuzzy
 msgid "Arrows - scroll; S - save to file; Q - return; Other key - refresh"
 msgstr "Sãgeþi - scroll; S - salvare în fiºier; Q - ieºire în meniu."
 
-#: src/stations.c:279
+#: src/stations.c:275
 #, fuzzy
 msgid "Id       MAC address     Quality  Age  RSSI"
 msgstr "Id      Adresã MAC     Calitate  Vechime  RSSI"
 
+#~ msgid "Create socket error. Press any key."
+#~ msgstr "Eroare în creare socket. Apãsaþi o tastã."
+
+#~ msgid "Bind socket error. Press any key."
+#~ msgstr "Eroare de legãturã. Apãsaþi o tastã."
+
+#~ msgid "Create socket error"
+#~ msgstr "Eroare în crearea socketului"
+
+#~ msgid "Bind socket error"
+#~ msgstr "Eroare în legãtura(bind) la socket"
+
+#, fuzzy
+#~ msgid "NUM       MAC address"
+#~ msgstr "NUM     adresã MAC"
+
+#, fuzzy
+#~ msgid "A - auth; IPSTF - set; W - write conf; Q - quit"
+#~ msgstr "DA - opþiuni; W - scriere configuraþie; Q - ieºire în meniu"
+
+#, fuzzy
+#~ msgid "A - auth; W - write conf; Q - quit"
+#~ msgstr "DA - opþiuni; W - scriere configuraþie; Q - ieºire în meniu"
+
+#~ msgid "Arrows - scroll; S - save to file; Q - quit to menu."
+#~ msgstr "Sãgeþi - scroll; S - salvare în fiºier; Q - ieºire în meniu."
+
 #~ msgid "Associated Stations"
 #~ msgstr "Staþii Asociate"
 
index 4697a96b2f7122b9db8cc58c341df0a4843bed94..3fb5f82fb7373c5c0cc8e4dd59456c6c9ad2373f 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: ap-utils 1.3.2-pre3\n"
-"POT-Creation-Date: 2004-11-28 00:59+0200\n"
+"POT-Creation-Date: 2005-03-07 01:13+0200\n"
 "PO-Revision-Date: 2004-06-14 14:03+0200\n"
 "Last-Translator: Elif Bilge Maden <bilgemaden_1@yahoo.com>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
@@ -15,389 +15,82 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Report-Msgid-Bugs-To: \n"
 
-#: ap-gl/ap-gl.c:41 ap-gl/bridge.c:178 src/ap-config.c:41 src/bridge.c:182
-msgid "Bridging"
-msgstr "Bağlanıyor"
-
-#: ap-gl/ap-gl.c:41 src/ap-config.c:41
-msgid "Set bridging and IP-related options"
-msgstr "Bağlantı kurma ve IP bağlantılı seçenekler"
-
-#: ap-gl/ap-gl.c:43 ap-gl/ap-gl.c:81 ap-gl/bridge.c:132 src/ap-config.c:43
-#: src/ap-config.c:112 src/ap-config.c:120 src/bridge.c:117 src/bridge.c:121
-msgid "Wireless"
-msgstr "Kablosuz"
-
-#: ap-gl/ap-gl.c:43 src/ap-config.c:43
-msgid "Set wireless options"
-msgstr "Kablosuz seçenekleri kur"
-
-#: ap-gl/ap-gl.c:44 src/ap-config.c:44 src/ap-config.c:56
-msgid "Privacy"
-msgstr "Gizlilik"
-
-#: ap-gl/ap-gl.c:45 src/ap-config.c:45 src/ap-config.c:57
-#, fuzzy
-msgid "MAC auth"
-msgstr "Mac adresini gir"
-
-#: ap-gl/ap-gl.c:46 src/ap-config.c:46 src/ap-config.c:58
-msgid "Community"
-msgstr "Topluluk"
-
-#: ap-gl/ap-gl.c:47 src/ap-config.c:47
-msgid "Radio"
-msgstr "Radyo"
-
-#: ap-gl/ap-gl.c:47 src/ap-config.c:47
-msgid "Set radio signal power and antenna options"
-msgstr "Radyo sinyal gücünü ve anten seçeneklerini ayarlayınız."
-
-#: ap-gl/ap-gl.c:62 src/ap-config.c:80
-msgid "Upload"
-msgstr "Yükleme"
-
-#: ap-gl/ap-gl.c:62 src/ap-config.c:80
-#, fuzzy
-msgid "Activate current configuration"
-msgstr "Geçerli yapılandırmaları aktif hale getir."
-
-#: ap-gl/ap-gl.c:63 src/ap-config.c:81
-msgid "Defaults"
-msgstr "Varsayılanlar"
-
-#: ap-gl/ap-gl.c:63 src/ap-config.c:81
-msgid "Restore factory default settings"
-msgstr "Fabrika varsayılan ayarlarını geri yükle "
-
-#: ap-gl/ap-gl.c:64 src/ap-config.c:82 src/ap-config.c:89
-msgid "Reset"
-msgstr "Sıfırla"
-
-#: ap-gl/ap-gl.c:65 src/ap-config.c:83
-msgid "Reset AP. All not uploaded configuration will be lost"
-msgstr "AP' yi sıfırla. Yüklenmemiş yapılandırmalar kaybolacaktır"
-
-#: ap-gl/ap-gl.c:66 src/ap-config.c:84
-msgid "TestMode"
-msgstr "TestKipi"
-
-#: ap-gl/ap-gl.c:66 src/ap-config.c:84
-msgid "Put Access Point in test mode"
-msgstr "Test kipine Erişim Noktası koy"
-
-#: ap-gl/ap-gl.c:79 src/ap-config.c:110 src/ap-config.c:119
-msgid "SysInfo"
-msgstr "Sistembilgisi"
-
-#: ap-gl/ap-gl.c:80 ap-gl/bridge.c:131 src/ap-config.c:111 src/bridge.c:116
-#: src/bridge.c:120
-msgid "Ethernet"
-msgstr "Eternet"
-
-#: ap-gl/ap-gl.c:80 src/ap-config.c:111
-msgid "Get ethernet port statistics"
-msgstr "Eternet bağlantı noktaları istatistiklerini bul"
-
-#: ap-gl/ap-gl.c:82 src/ap-config.c:113 src/ap-config.c:121
-msgid "Stations"
-msgstr "İstasyonlar"
-
-#: ap-gl/ap-gl.c:83 src/ap-config.c:114
-msgid "KnownAPs"
-msgstr "Bilinen AP' ler"
-
-#: ap-gl/ap-gl.c:83 src/ap-config.c:114
-msgid "Get info about known Access Points"
-msgstr "Bilinen Erişim Noktaları hakkında bilgi edinin."
-
-#: ap-gl/ap-gl.c:100 src/ap-config.c:147
-msgid "Info"
-msgstr "Bilgi"
-
-#: ap-gl/ap-gl.c:101 src/ap-config.c:148
-msgid "Config"
-msgstr "Yapılandırma"
-
-#: ap-gl/ap-gl.c:102 src/ap-config.c:149
-msgid "Commands"
-msgstr "Komutlar"
-
-#: ap-gl/ap-gl.c:102 src/ap-config.c:149
-msgid "Execute commands on Access Point"
-msgstr "Erişim Noktasında komut gönder"
-
-#: ap-gl/ap-gl.c:104 src/ap-config.c:151
-msgid "Connect"
-msgstr "Bağlan"
-
-#: ap-gl/ap-gl.c:105 src/ap-config.c:152
-msgid "Search"
-msgstr "Ara"
-
-#: ap-gl/ap-gl.c:106 lib/common.c:83 src/ap-config.c:153
-msgid "About"
-msgstr "Hakkında"
-
-#: ap-gl/ap-gl.c:107 src/ap-config.c:154
-msgid "Shell"
-msgstr "Kabuk"
-
-#: ap-gl/ap-gl.c:108 src/ap-config.c:155
-msgid "Exit"
-msgstr "Çıkış"
-
-#: ap-gl/ap-gl.c:158 src/ap-config.c:204
-#, c-format
-msgid "Wireless Access Point Configurator ver. %s"
-msgstr "Kablosuz Erişim Noktası Konfigürasyon Tanımlayıcısı Sürümü %s"
-
-#: ap-gl/auth_mac.c:27 src/auth_mac.c:27
-msgid "AuthorizedMacTableString packet error"
-msgstr "YetkiliMacTablosuDizgi paketi hatası"
-
-#: ap-gl/auth_mac.c:29 src/auth_mac.c:29
-#, fuzzy
-msgid "[A] MAC authorization: "
-msgstr "(A) Makro yetki: %s"
-
-#: ap-gl/auth_mac.c:30 src/auth_mac.c:30
-#, fuzzy
-msgid "Enter MAC: "
-msgstr "Makro gir"
-
-#: ap-gl/auth_mac.c:31 src/auth_mac.c:31
-#, fuzzy
-msgid "Delete Num: "
-msgstr "Numarayı sil:"
-
-#: ap-gl/auth_mac.c:32 src/auth_mac.c:32
-#, fuzzy
-msgid "Authorized MAC addresses"
-msgstr "Yetkili makro adresler"
-
-#: ap-gl/auth_mac.c:33
-#, fuzzy
-msgid "NUM       MAC address"
-msgstr "NUM MAKRO adres"
-
-#: ap-gl/auth_mac.c:34 src/auth_mac.c:34
-msgid "A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit"
-msgstr ""
-"A - yetki; N - yeni; D - sil; oklar - kaydırma; W - yapılandırmayı yaz; Q - "
-"durdur "
-
-#: ap-gl/auth_mac.c:35
-#, fuzzy
-msgid "A - auth; IPSTF - set; W - write conf; Q - quit"
-msgstr "BPGINFDRT - kur;W - yapılandırmayı yaz; Q - menüye dön"
-
-#: ap-gl/auth_mac.c:36
-#, fuzzy
-msgid "A - auth; W - write conf; Q - quit"
-msgstr "DA -seçenekler; W - yapılandırmayı yaz; Q - menüye geri dön"
-
-#: ap-gl/auth_mac.c:38
-msgid "[I] RADIUS SERVER IP: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:39
-msgid "[P] RADIUS SERVER PORT: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:40
-msgid "[S] RADIUS SERVER SECRET: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:41
-msgid "[T] REAUTHORIZATION TIME: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:42
-msgid "[F] RADIUS SOURCE PORT: "
-msgstr ""
-
-#: ap-gl/auth_mac.c:87
-#, fuzzy
-msgid "Internal"
-msgstr "Genel"
-
-#: ap-gl/auth_mac.c:95
-msgid "<hidden>"
-msgstr ""
-
-#: ap-gl/bridge.c:26 src/bridge.c:26
-msgid "[I] IP: "
-msgstr ""
-
-#: ap-gl/bridge.c:27 src/bridge.c:27
-#, fuzzy
-msgid "[N] Netmask: "
-msgstr "[N] Ağ Maskesi: %s"
-
-#: ap-gl/bridge.c:28 src/bridge.c:28
-#, fuzzy
-msgid "[G] Gateway: "
-msgstr "(G) Ağ Geçidi %s"
-
-#: ap-gl/bridge.c:29 src/bridge.c:29
-#, fuzzy
-msgid "[F] Filter non-IP traffic: "
-msgstr "(F) IP- dışı trafik süzgeci: %s"
-
-#: ap-gl/bridge.c:30 src/bridge.c:30
-#, fuzzy
-msgid "[P] Primary port: "
-msgstr "(P) Gizli bağlantı noktaları: %s"
-
-#: ap-gl/bridge.c:31 src/bridge.c:31
-#, fuzzy
-msgid "Attached station MAC: "
-msgstr "İliştirilmiş MAC İstasyonu: %02X%02X%02X%02X%02X%02X"
-
-#: ap-gl/bridge.c:32 src/bridge.c:32
-#, fuzzy
-msgid "[D] DHCP client: "
-msgstr "(D) DHCP protokolü: %s"
-
-#: ap-gl/bridge.c:33 src/bridge.c:33
-#, fuzzy
-msgid "[O] Operational mode: "
-msgstr "(O) İşlemsel Kip: %s"
-
-#: ap-gl/bridge.c:34 src/bridge.c:34
-msgid "[M] Preferred BSSID (remote MAC addr.): "
-msgstr ""
-
-#: ap-gl/bridge.c:36 src/bridge.c:36
-msgid "[T] Trap-sending port(s): "
-msgstr ""
-
-#: ap-gl/bridge.c:37 src/bridge.c:37
-msgid "[R] Forward broadcast traffic: "
-msgstr ""
-
-#: ap-gl/bridge.c:39
-msgid "[U] Isolate wireless clients: "
-msgstr ""
-
-#: ap-gl/bridge.c:40 src/bridge.c:40
-#, fuzzy
-msgid "INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu"
-msgstr "BPGINFDRT - kur;W - yapılandırmayı yaz; Q - menüye dön"
-
-#: ap-gl/bridge.c:124 src/bridge.c:109
-msgid "Wireless Bridge Point to MultiPoint"
-msgstr "Noktadan Çok Bağlantı Noktasına Kablosuz Köprü"
-
-#: ap-gl/bridge.c:125 src/bridge.c:110
-msgid "Access Point"
-msgstr "Erişim Noktası"
-
-#: ap-gl/bridge.c:126 src/bridge.c:111
-msgid "Access Point client"
-msgstr "Erşim Noktası Kullanıcısı"
-
-#: ap-gl/bridge.c:127 src/bridge.c:112
-msgid "Wireless Bridge Point to Point"
-msgstr "noktadan noktaya kablosuz köprü"
-
-#: ap-gl/bridge.c:128 src/bridge.c:113
-msgid "Repeater"
-msgstr "Yineleyici"
-
-#: ap-gl/stations.c:77 src/stations.c:100
-msgid "AP is currently in AP Client Mode => no associated STAtions."
-msgstr ""
-
-#: ap-gl/stations.c:102
-msgid "#     MAC       LQ    RSSI   Status Port IP"
-msgstr ""
-
-#: ap-gl/stations.c:128 src/stations.c:159
-msgid "AssociatedSTAsInfo packet error"
-msgstr "İlişkiliSTAbilgi paketi hatası"
-
-#: ap-gl/stations.c:160
-msgid "Arrows - scroll; S - save to file; Q - quit to menu."
-msgstr "Oklar - kaydırma; S - dosyaya kaydet; Q - menüye geri dön"
-
-#: lib/aps.c:29
+#: lib/aps.c:30
 msgid "Known Access Points"
 msgstr "Tanımlana Erişim Noktaları"
 
-#: lib/aps.c:129
+#: lib/aps.c:130
 msgid "Your Access Point is not in \"AP client\" mode => getting"
 msgstr ""
 
-#: lib/aps.c:132
+#: lib/aps.c:133
 msgid "up-to-date \"Known APs\" info requires your AP to be"
 msgstr ""
 
-#: lib/aps.c:135
+#: lib/aps.c:136
 msgid "temporarily configured into \"AP client\" mode and rebooted."
 msgstr ""
 
-#: lib/aps.c:138
+#: lib/aps.c:139
 msgid "Your AP will be reconfigured back to original mode by this"
 msgstr ""
 
-#: lib/aps.c:141
+#: lib/aps.c:142
 msgid "utility once you quit the \"KnownAP\" view. This, in turn, may"
 msgstr ""
 
-#: lib/aps.c:144
+#: lib/aps.c:145
 #, fuzzy
 msgid "cause loss of Access Point's current configuration."
 msgstr "Kablosuz Erişim Noktası Konfigürasyon Tanımlayıcısı"
 
-#: lib/aps.c:148
+#: lib/aps.c:149
 msgid "Do NOT answer \"Yes\" if you're connected to the Access Point"
 msgstr ""
 
-#: lib/aps.c:151
+#: lib/aps.c:152
 #, fuzzy
 msgid "via its wireless port."
 msgstr "Kablosuz seçenekleri kur"
 
-#: lib/aps.c:153 lib/cmd.c:45 lib/cmd.c:75 lib/test.c:91
+#: lib/aps.c:154 lib/cmd.c:45 lib/cmd.c:75 lib/test.c:96
 msgid "Do you want to continue? "
 msgstr "Devam etmek istiyor musunuz?"
 
-#: lib/aps.c:207
+#: lib/aps.c:208
 msgid "NetworkType"
 msgstr "Ağ Türü"
 
-#: lib/aps.c:283
+#: lib/aps.c:284
 msgid "Infrastructure"
 msgstr "Altyapı"
 
-#: lib/aps.c:343 lib/aps.c:351 lib/aps.c:359
+#: lib/aps.c:344 lib/aps.c:352 lib/aps.c:360
 #, fuzzy
 msgid "CN: Channel Name; P: Preambule Type (S: Short; L: Long);"
 msgstr "P: Başlangıç Türü, S: Kısa; L: Uzun"
 
-#: lib/aps.c:345
+#: lib/aps.c:346
 msgid "RSSI: Radio Signal Strength Indicator [%]"
 msgstr ""
 
-#: lib/aps.c:347 lib/aps.c:355
+#: lib/aps.c:348 lib/aps.c:356
 msgid "; LQ: Link Quality [%]"
 msgstr ""
 
-#: lib/aps.c:353
+#: lib/aps.c:354
 msgid "RSSI: Radio Signal Strength Indicator [dBm]"
 msgstr ""
 
-#: lib/aps.c:361
+#: lib/aps.c:362
 msgid "RSSI: Radio Signal Strength Indicator [raw]"
 msgstr ""
 
-#: lib/aps.c:363
+#: lib/aps.c:364
 msgid "; LQ: Link Q. [raw]"
 msgstr ""
 
-#: lib/aps.c:369
+#: lib/aps.c:370
 #, fuzzy
 msgid ""
 "# con. to AP #; R refresh with reset; T toggle; Q quit; Other = refr. w/o "
@@ -406,7 +99,7 @@ msgstr ""
 "# bu AP'ye bağlan; R yeniden başlatarak yenile; G yeniden başlatmadan "
 "yenile; Q geri dön"
 
-#: lib/aps.c:371
+#: lib/aps.c:372
 #, fuzzy
 msgid ""
 "# con. to AP #; R initiate AP scan; T toggle view; Q quit; Other = refresh "
@@ -415,44 +108,44 @@ msgstr ""
 "# bu AP'ye bağlan; R yeniden başlatarak yenile; G yeniden başlatmadan "
 "yenile; Q geri dön"
 
-#: lib/aps.c:500 lib/ap_search.c:167
+#: lib/aps.c:501 lib/ap_search.c:173
 #, fuzzy, c-format
 msgid "Failure in sendto(): %s. Press any key."
 msgstr "Geçersiz gönderim: %s. Bir tuşa basınız."
 
-#: lib/aps.c:509
+#: lib/aps.c:510
 msgid "You have just initiated the AP scan. Be advised that it may"
 msgstr ""
 
-#: lib/aps.c:512
+#: lib/aps.c:513
 msgid "take a few seconds for your Access Point to find out some"
 msgstr ""
 
-#: lib/aps.c:515
+#: lib/aps.c:516
 msgid "values, so expect finishing the scan in about 5 seconds."
 msgstr ""
 
-#: lib/aps.c:518
+#: lib/aps.c:519
 msgid "Also note that your Access Point stops forwarding the network"
 msgstr ""
 
-#: lib/aps.c:521
+#: lib/aps.c:522
 msgid "traffic while the scan is in progress, but restores itself"
 msgstr ""
 
-#: lib/aps.c:524
+#: lib/aps.c:525
 msgid "to normal operation in time ranging up to 1 minute."
 msgstr ""
 
-#: lib/aps.c:527
+#: lib/aps.c:528
 msgid "Hence, if you are connected to target Access Point via its"
 msgstr ""
 
-#: lib/aps.c:530
+#: lib/aps.c:531
 msgid "wireless port, you need to wait a bit longer"
 msgstr ""
 
-#: lib/aps.c:533
+#: lib/aps.c:534
 msgid "after pressing 'S'."
 msgstr ""
 
@@ -463,282 +156,296 @@ msgstr "Topluluk"
 
 #: lib/ap_search.c:49
 #, fuzzy
-msgid "  NUM  IP ADDRESS       MIB TYPE    NAME"
+msgid "  NUM  IP ADDRESS       MIB TYPE    FW TYPE (VERSION) AP NAME"
 msgstr "NO        IP ADRESİ       TÜR"
 
-#: lib/ap_search.c:100
+#: lib/ap_search.c:106
 msgid "Please wait while scanning, or press 'Q' to quit."
 msgstr ""
 
-#: lib/ap_search.c:116
+#: lib/ap_search.c:122
 #, fuzzy
 msgid "Can't set broadcast option on socket. Press any key."
 msgstr "Yuvaya yayın seçeneği kurulamıyor. Bir tuşa basınız."
 
-#: lib/ap_search.c:125
+#: lib/ap_search.c:131
 #, fuzzy
 msgid "Can't set multicast membership on socket. Press any key."
 msgstr "yuvaya çoğa gönderim üyeliği kurulamıyor. Bir tuşa basınız."
 
-#: lib/ap_search.c:132
+#: lib/ap_search.c:138
 msgid "Scanning via network interface:"
 msgstr ""
 
-#: lib/ap_search.c:133
+#: lib/ap_search.c:139
 #, c-format
 msgid "  Index: %i"
 msgstr ""
 
-#: lib/ap_search.c:135
+#: lib/ap_search.c:141
 #, fuzzy, c-format
 msgid "  Name: %s"
 msgstr "(N) AP Adı:"
 
-#: lib/ap_search.c:137
+#: lib/ap_search.c:143
 #, c-format
 msgid "  IP: %s"
 msgstr ""
 
-#: lib/ap_search.c:146
+#: lib/ap_search.c:152
 #, c-format
 msgid "Scanning for AP with MIB type: %s"
 msgstr ""
 
-#: lib/ap_search.c:334
-msgid "Please enter SNMP community name that will be used for AP detection."
-msgstr ""
-
-#: lib/ap_search.c:345
+#: lib/ap_search.c:378
 msgid "Access Points Search"
 msgstr "Erişim Noktaları Araştırması"
 
-#: lib/ap_search.c:363
+#: lib/ap_search.c:396
 #, fuzzy
 msgid "realloc() error."
 msgstr "Soket hatası oluştur"
 
-#: lib/ap_search.c:375
+#: lib/ap_search.c:408
 msgid "Network interface discovery error."
 msgstr ""
 
-#: lib/ap_search.c:450
+#: lib/ap_search.c:483
 #, fuzzy
 msgid "No local network interfaces found. Press any key."
 msgstr "çatal hata. Bir tuşa basınız."
 
-#: lib/ap_search.c:452
+#: lib/ap_search.c:485
 msgid "No directly reachable Access Points found. Press any key."
 msgstr ""
 
-#: lib/ap_search.c:457
+#: lib/ap_search.c:490
 msgid "Single-screen maximum number of APs found."
 msgstr ""
 
-#: lib/ap_search.c:460
+#: lib/ap_search.c:493
 #, fuzzy
 msgid "# - connect to AP; Q - quit"
 msgstr "AP numarasına bağlan:"
 
-#: lib/ap-utils.h:79
+#: lib/ap-utils.h:82
 #, fuzzy
 msgid "MAC address: "
 msgstr "NUM MAKRO adres"
 
-#: lib/ap-utils.h:80
+#: lib/ap-utils.h:83
 #, fuzzy
 msgid "[S] SNMP traps: "
 msgstr "(S) SNMP Tuzakları: %s"
 
-#: lib/ap-utils.h:82
+#: lib/ap-utils.h:85
 #, fuzzy
 msgid "[C] Frequency channel: "
 msgstr "[C] Sıklık Kanalı: %02u (%u MHz)"
 
-#: lib/ap-utils.h:84
+#: lib/ap-utils.h:87
 #, fuzzy
 msgid "Receive  antenna:"
 msgstr "Alındı:"
 
-#: lib/ap-utils.h:85
+#: lib/ap-utils.h:88
 #, fuzzy
 msgid "[U] Left"
 msgstr "Sol"
 
-#: lib/ap-utils.h:86
+#: lib/ap-utils.h:89
 #, fuzzy
 msgid "[I] Right"
 msgstr "Sağ"
 
-#: lib/ap-utils.h:87
+#: lib/ap-utils.h:90
 #, fuzzy
 msgid "Transmit antenna:"
 msgstr "İletildi:"
 
-#: lib/ap-utils.h:88
+#: lib/ap-utils.h:91
 #, fuzzy
 msgid "[O] Left"
 msgstr "Sol"
 
-#: lib/ap-utils.h:89
+#: lib/ap-utils.h:92
 #, fuzzy
 msgid "[P] Right"
 msgstr "Sağ"
 
-#: lib/ap-utils.h:90
+#: lib/ap-utils.h:93
 #, fuzzy
 msgid "Diversity select:"
 msgstr "Çeşitleme: %s"
 
-#: lib/ap-utils.h:91
+#: lib/ap-utils.h:94
 #, fuzzy
 msgid "[T] Left"
 msgstr "Sol"
 
-#: lib/ap-utils.h:92
+#: lib/ap-utils.h:95
 #, fuzzy
 msgid "[Y] Right"
 msgstr "Sağ"
 
-#: lib/ap-utils.h:94
+#: lib/ap-utils.h:97
 msgid "Yes"
 msgstr ""
 
-#: lib/ap-utils.h:95
+#: lib/ap-utils.h:98
 msgid "No"
 msgstr ""
 
-#: lib/ap-utils.h:97
+#: lib/ap-utils.h:100
 msgid "On"
 msgstr ""
 
-#: lib/ap-utils.h:98
+#: lib/ap-utils.h:101
 #, fuzzy
 msgid "Off"
 msgstr "kapama"
 
-#: lib/ap-utils.h:100
+#: lib/ap-utils.h:103
 #, fuzzy
 msgid "Basic"
 msgstr "temel"
 
-#: lib/ap-utils.h:102
+#: lib/ap-utils.h:105
 msgid "Press any key to continue."
 msgstr "devam etmek için bir tuşa basınız"
 
-#: lib/ap-utils.h:103
-msgid "Q - quit to menu. T - toggle polling mode, Other key - force update."
+#: lib/ap-utils.h:106
+msgid "Q - quit to menu. T - toggle polling mode, Other key - force update"
 msgstr ""
 
-#: lib/ap-utils.h:105
+#: lib/ap-utils.h:108
 msgid "Unable to write data to AP. Press any key to continue."
 msgstr "AP' ye veri yazılamıyor. Devam etmek için bir tuşa basınız."
 
-#: lib/ap-utils.h:106
+#: lib/ap-utils.h:109
 #, fuzzy
 msgid "Unable to retrieve (valid) data from AP. Press any key to continue."
 msgstr "AP' den veri alınamıyor. Devam etmek için bir tuşa basınız."
 
-#: lib/ap-utils.h:107
+#: lib/ap-utils.h:110
 #, fuzzy
-msgid "Trying to retrieve data from AP. Please wait..."
+msgid "Trying to retrieve data from AP - please wait (or press Q to quit)."
 msgstr "AP' den veri alınıyor. Lütfen bekleyin."
 
-#: lib/ap-utils.h:108
+#: lib/ap-utils.h:111
 msgid "Writing data to AP. Please wait..."
 msgstr "AP' ye veri yazılıyor. Lütfen bekleyin."
 
-#: lib/ap-utils.h:109
+#: lib/ap-utils.h:112
 #, fuzzy
 msgid "Configuration written to the AP. Press any key to continue."
 msgstr "AP' ye veri yazılamıyor. Devam etmek için bir tuşa basınız."
 
-#: lib/ap-utils.h:110
+#: lib/ap-utils.h:113
 #, fuzzy
 msgid "select() function error. Press any key."
 msgstr "fcntl hatası: Bir tuşa basınız."
 
-#: lib/ap-utils.h:112
-msgid "Create socket error. Press any key."
-msgstr "Yuva hatası oluştur.. Bir tuşa basınız."
+#: lib/ap-utils.h:114
+#, fuzzy
+msgid "socket() or bind() function error. Press any key."
+msgstr "fcntl hatası: Bir tuşa basınız."
 
-#: lib/ap-utils.h:113
-msgid "Bind socket error. Press any key."
-msgstr "Yuva hatasını bağlayınız. Bir tuşa basınız."
+#: lib/ap-utils.h:116
+#, fuzzy
+msgid "Unable to write AP list file ~/.ap-config. Press any key."
+msgstr "AP' den veri alınamıyor. Devam etmek için bir tuşa basınız."
+
+#: lib/ap-utils.h:117
+msgid "AP list file ~/.ap-config successfully written. Press any key."
+msgstr ""
 
-#: lib/ap-utils.h:115
+#: lib/ap-utils.h:119
 msgid "Back to main menu"
 msgstr "Ana menüye geri dön."
 
-#: lib/ap-utils.h:116
+#: lib/ap-utils.h:120
 msgid "Exit program"
 msgstr "Programdan çık."
 
-#: lib/ap-utils.h:117
+#: lib/ap-utils.h:121
 #, fuzzy
 msgid "Run subshell. To return type 'exit'."
 msgstr "Alt kabuğu çalıştır. Çıkış tipine geri dönüş için"
 
-#: lib/ap-utils.h:118
+#: lib/ap-utils.h:122
+msgid "Change polling mode interval"
+msgstr ""
+
+#: lib/ap-utils.h:123
 msgid "Short info about program"
 msgstr "Program hakkında kısa bilgi"
 
-#: lib/ap-utils.h:119
+#: lib/ap-utils.h:124
 msgid "Find connected Access Points"
 msgstr "Bağlantılı Erişim Noktalarını bul."
 
-#: lib/ap-utils.h:120
+#: lib/ap-utils.h:125
 msgid "Set connection options: ip and community"
 msgstr "Bağlantı seçeneklerini ayarla: ip ve topluluk "
 
-#: lib/ap-utils.h:121
+#: lib/ap-utils.h:126
 #, fuzzy
 msgid "Set encryption; edit WEP keys"
 msgstr "Kriptolamayı ayarla, WEP tuşlarını düzenle."
 
-#: lib/ap-utils.h:122
+#: lib/ap-utils.h:127
 #, fuzzy
-msgid "Set MAC authorization; edit MAC authorization table"
+msgid "Set authorization; edit MAC authorization table"
 msgstr "Makro yetkiyi ayarla, makro yetki tablosunu düzelt."
 
-#: lib/ap-utils.h:123
+#: lib/ap-utils.h:128
 #, fuzzy
 msgid "Set SNMP community/password for access to the AP"
 msgstr "AP' ye erişim için SNMP topluluk/ şifre ayarını kur. "
 
-#: lib/ap-utils.h:124
+#: lib/ap-utils.h:129
 #, fuzzy
 msgid "Get info about AP hardware and firmware"
 msgstr "AP donanımı ve yazılımı hakkında bilgi al."
 
-#: lib/ap-utils.h:125
+#: lib/ap-utils.h:130
 #, fuzzy
 msgid "Get wireless port statistics"
 msgstr "kablosuz bağlantı noktaları istatistiklerine ulaş."
 
-#: lib/ap-utils.h:126
+#: lib/ap-utils.h:131
 #, fuzzy
 msgid "Get list of currently associated stations (Access Point clients)"
 msgstr "Geçerli ilişkilendirilmiş istasyonlar listesine ulaş"
 
-#: lib/ap-utils.h:127
+#: lib/ap-utils.h:132
+msgid "Get link status in APclient mode"
+msgstr ""
+
+#: lib/ap-utils.h:133
 #, fuzzy
 msgid "Get info and statistics from AP"
 msgstr "AP bilgi ve istatistiklerine ulaş"
 
-#: lib/ap-utils.h:128
+#: lib/ap-utils.h:134
 #, fuzzy
 msgid "Set various configuration options"
 msgstr "Çeşitli yapılandırma seçenekleri kurma "
 
-#: lib/ap-utils.h:130
+#: lib/ap-utils.h:136
 msgid "Associated stations"
 msgstr "İlişkili istasyonlar"
 
-#: lib/ap-utils.h:132
+#: lib/ap-utils.h:137
+msgid "AP Client link state"
+msgstr ""
+
+#: lib/ap-utils.h:139
 msgid "Polling: on"
 msgstr ""
 
-#: lib/ap-utils.h:133
+#: lib/ap-utils.h:140
 msgid "Polling: off"
 msgstr ""
 
@@ -801,165 +508,179 @@ msgstr "Geçerli yapılandırmaları aktif hale getir."
 msgid "Configuration uploaded. Press any key to continue."
 msgstr "Tamamlanmış yapılandırmayı yükle. Devam etmek için bir tuşa basınız."
 
-#: lib/common.c:30
+#: lib/common.c:32
 #, fuzzy
 msgid "Access Point IP-address: "
 msgstr "Erişim Noktası IP-adresi:"
 
-#: lib/common.c:31
+#: lib/common.c:33
 #, fuzzy
 msgid "Password (community): "
 msgstr "Şifre  ( topluluk):"
 
-#: lib/common.c:32
+#: lib/common.c:34
 msgid "Autodetect AP MIB properties? "
 msgstr ""
 
-#: lib/common.c:33
+#: lib/common.c:35
 #, fuzzy
 msgid "AP MIB type: "
 msgstr "AP türü:"
 
-#: lib/common.c:34
+#: lib/common.c:36
 msgid "AP MIB vendor extensions: "
 msgstr ""
 
-#: lib/common.c:35
+#: lib/common.c:37
 #, fuzzy
 msgid "Do you want to use AP's name as its label? "
 msgstr "Devam etmek istiyor musunuz?"
 
-#: lib/common.c:36
+#: lib/common.c:38
 #, fuzzy
 msgid "Access Point label: "
 msgstr "Erişim Noktası"
 
-#: lib/common.c:37
+#: lib/common.c:39
 #, fuzzy
 msgid "Save connect-settings: "
 msgstr "Bağlantı ayarlarını kaydediniz."
 
-#: lib/common.c:100
+#: lib/common.c:40
+msgid "[P] Polling mode interval (tenths of second): "
+msgstr ""
+
+#: lib/common.c:41
+#, fuzzy
+msgid "P - change polling mode interval; Q - quit to menu"
+msgstr "(tuş) - seçenek kur; W - yapılandırmayı yaz; Q - menüye geri dön"
+
+#: lib/common.c:89 src/ap-config.c:158
+msgid "About"
+msgstr "Hakkında"
+
+#: lib/common.c:106
 #, c-format
 msgid "From %s"
 msgstr "%s' ten"
 
-#: lib/common.c:102
+#: lib/common.c:108
 #, c-format
 msgid "Version %s"
 msgstr "Sürüm %s"
 
-#: lib/common.c:105
+#: lib/common.c:111
 msgid "Written by Roman Festchook roma@polesye.net"
 msgstr "Roman Festchook tarafından yazılmıştır roma@polesye.net"
 
-#: lib/common.c:107
-msgid "Portions by Jan Rafaj aputils@cedric.unob.cz"
+#: lib/common.c:113
+msgid "and Jan Rafaj jr-aputils@cedric.unob.cz"
 msgstr ""
 
-#: lib/common.c:109
+#: lib/common.c:115
 #, fuzzy
-msgid "Copyright (c) 2001-2004"
+msgid "Copyright (c) 2001-2005"
 msgstr "Telif Hakkı (c) Roman Festchoo 2001-2002"
 
-#: lib/common.c:111
+#: lib/common.c:117
 msgid "Roman Festchook and Jan Rafaj"
 msgstr ""
 
-#: lib/common.c:114
+#: lib/common.c:120
 msgid "This program is distributed under the terms"
 msgstr "Bu program GNU Toplu Kamu Lisansı Sürüm 2"
 
-#: lib/common.c:116
+#: lib/common.c:122
 msgid "of the GNU General Public License version 2."
 msgstr "denetiminde dağıtılmaktadır. "
 
-#: lib/common.c:118
+#: lib/common.c:124
 msgid "See the included COPYING file for details."
 msgstr "Ayrıntılar için mevcuti KOPYALAMA dosyasına bakınız."
 
-#: lib/common.c:175
+#: lib/common.c:165
 msgid "Connect options"
 msgstr "Seçeneklere bağlan"
 
-#: lib/common.c:183
+#: lib/common.c:173
 msgid "Enter IP address of your Access Point."
 msgstr "Erişim Noktanızın IP adresini giriniz."
 
-#: lib/common.c:192
+#: lib/common.c:182
 msgid "Entered characters will not be displayed for security reason."
 msgstr "Girdiğiniz karakterler güvenlik nedeniyle gösterilmeyecektir."
 
-#: lib/common.c:266
+#: lib/common.c:249
 msgid "This label will be stored on HDD (independently on AP name!)."
 msgstr ""
 
-#: lib/common.c:361
+#: lib/common.c:362
 #, fuzzy
 msgid "Trying to probe AP for MIB properties. Please wait..."
 msgstr "AP' ye veri yazılıyor. Lütfen bekleyin."
 
-#: lib/common.c:390
+#: lib/common.c:391
 #, fuzzy
 msgid ""
 "Unable to determine AP MIB properties (no response from AP). Press any key."
 msgstr "AP' den veri alınamıyor. Devam etmek için bir tuşa basınız."
 
-#: lib/file.c:205
+#: lib/common.c:489 lib/set_oeminfo.c:221
+#, c-format
+msgid "%s%u"
+msgstr ""
+
+#: lib/common.c:491
+#, c-format
+msgid "(%0.1f seconds)"
+msgstr ""
+
+#: lib/file.c:199
 msgid "NUM  IP ADDRESS       MIB TYPE    MIB EXT.  LABEL"
 msgstr ""
 
-#: lib/file.c:206
+#: lib/file.c:200
 #, fuzzy
 msgid "Choose an AP to connect to"
 msgstr "Bağlanmak için AP'yi seç"
 
-#: lib/file.c:212
+#: lib/file.c:206
 msgid "1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll"
 msgstr "1-9,C: bağlan; N: yeni; D: sil; W: kaydet; Q: çıkış; oklar: kaydırma"
 
-#: lib/file.c:268
+#: lib/file.c:257
 msgid "Connect to AP num:"
 msgstr "AP numarasına bağlan:"
 
-#: lib/file.c:304
+#: lib/file.c:288
 msgid "Delete num:"
 msgstr "numarayı sil"
 
-#: lib/file.c:372
-msgid "AP list file ~/.ap-config successfully written. Press any key."
-msgstr ""
-
-#: lib/file.c:376
-#, fuzzy
-msgid "Unable to write AP list file ~/.ap-config. Press any key."
-msgstr "AP' den veri alınamıyor. Devam etmek için bir tuşa basınız."
-
-#: lib/file.c:426
+#: lib/file.c:442
 #, fuzzy
 msgid "Unable to write stations file. Press any key."
 msgstr "AP' ye veri yazılamıyor. Devam etmek için bir tuşa basınız."
 
-#: lib/file.c:428
+#: lib/file.c:444
 msgid "Stations file succesfully written. Press any key."
 msgstr ""
 
-#: lib/input.c:33
+#: lib/input.c:32
 #, fuzzy
 msgid "Invalid value. Press any key to continue."
 msgstr "Geçersiz IP- adresi"
 
-#: lib/input.c:34
+#: lib/input.c:33
 #, fuzzy, c-format
 msgid "Value must be in range %u - %u. Press any key to continue."
 msgstr "AP' ye veri yazılamıyor. Devam etmek için bir tuşa basınız."
 
-#: lib/input.c:412
+#: lib/input.c:460
 #, fuzzy
 msgid "Y - Yes; Any other key - No (it's safer to answer No)"
 msgstr "(Y - Evet; N - Hayır (Hayır yanıtı daha güvenlidir)"
 
-#: lib/oui.c:6056
+#: lib/oui.c:6061
 msgid "Unknown or Private"
 msgstr "Bilinmiyor ya da gizli"
 
@@ -1006,7 +727,7 @@ msgstr ""
 "İki anten birden geçersiz kılınamaz, anten yapılandırması kaydedilemiyor. "
 "Bir tuşa basınız."
 
-#: lib/scr.c:168
+#: lib/scr.c:157
 #, fuzzy, c-format
 msgid "Current AP: %s Type: %s Ext: %s"
 msgstr "Geçerli AP: %s Çeşit: %s"
@@ -1047,6 +768,147 @@ msgstr ""
 "TUŞ - topluluk/ şifre ayarını yapınız; W - tamamlanmış AP'ye yapılandırma "
 "yapınız."
 
+#: lib/set_oeminfo.c:28
+#, fuzzy
+msgid "Info structure version: "
+msgstr "YapıSürüm: %lu"
+
+#: lib/set_oeminfo.c:29
+#, fuzzy
+msgid "[M] Device MAC address: "
+msgstr "NUM MAKRO adres"
+
+#: lib/set_oeminfo.c:30
+#, fuzzy
+msgid "    Manufacturer with this OUI: "
+msgstr "Üretici ID:"
+
+#: lib/set_oeminfo.c:31
+#, fuzzy
+msgid "[D] Regulatory domain: "
+msgstr "Düzenleme Alanı: %s"
+
+#: lib/set_oeminfo.c:32
+#, fuzzy
+msgid "[T] Product type: "
+msgstr "ÜrünTürü: %lu"
+
+#: lib/set_oeminfo.c:33
+#, fuzzy
+msgid "[E] OEM name: "
+msgstr "OEMAdı:"
+
+#: lib/set_oeminfo.c:34
+msgid "[I] OEM ID: "
+msgstr ""
+
+#: lib/set_oeminfo.c:35
+#, fuzzy
+msgid "[N] Product name: "
+msgstr "Ürün Adı"
+
+#: lib/set_oeminfo.c:36
+#, fuzzy
+msgid "[H] Hardware revision: "
+msgstr "DonanımDeğişiklikleri: %lu"
+
+#: lib/set_oeminfo.c:37
+#, fuzzy
+msgid "[O] Country code: "
+msgstr "[O] Komut: %s"
+
+#: lib/set_oeminfo.c:38
+#, fuzzy
+msgid "[C] Default channel: "
+msgstr "[C] Sıklık Kanalı: %02u (%u MHz)"
+
+#: lib/set_oeminfo.c:39
+#, fuzzy
+msgid "[A] Calibrated channels: "
+msgstr "[C] Sıklık Kanalı: %02u (%u MHz)"
+
+#: lib/set_oeminfo.c:40
+msgid "[P] Nominal Tx Power (CR31) value for calibrated channels: "
+msgstr ""
+
+#: lib/set_oeminfo.c:41
+#, fuzzy
+msgid ""
+"Keys in brackets - set corresponding option; W - write conf; Q - quit to menu"
+msgstr "(tuş) - seçenek kur; W - yapılandırmayı yaz; Q - menüye geri dön"
+
+#: lib/set_oeminfo.c:101
+msgid "THIS IS A SECRET MENU LEADING TO VERY DANGEROUS OPTIONS."
+msgstr ""
+
+#: lib/set_oeminfo.c:103
+msgid "It is intended only for WISPs and repair shops."
+msgstr ""
+
+#: lib/set_oeminfo.c:107
+msgid "It allows to set OEM information stored in the AP (like its"
+msgstr ""
+
+#: lib/set_oeminfo.c:109
+msgid "MAC address, manuf. name, OEM ID, etc.). BE ABSOLUTELY SURE"
+msgstr ""
+
+#: lib/set_oeminfo.c:111
+msgid "THAT YOU KNOW WHAT YOU ARE DOING, AND THAT YOU HAVE THE"
+msgstr ""
+
+#: lib/set_oeminfo.c:113
+msgid "LEGAL RIGHT TO DO ANY MODIFICATION. Disobserving of these"
+msgstr ""
+
+#: lib/set_oeminfo.c:115
+msgid "rules may lead you into a conflict with your local"
+msgstr ""
+
+#: lib/set_oeminfo.c:117
+msgid "regulations and/or law."
+msgstr ""
+
+#: lib/set_oeminfo.c:119
+msgid "Also be warned that the setting of any from these options"
+msgstr ""
+
+#: lib/set_oeminfo.c:121
+msgid "may DAMAGE YOUR AP (other reason why this menu is hidden)."
+msgstr ""
+
+#: lib/set_oeminfo.c:123
+msgid "Values changed here will NOT be restored upon reset"
+msgstr ""
+
+#: lib/set_oeminfo.c:125
+msgid "of the device to factory defaults! It is advisable to"
+msgstr ""
+
+#: lib/set_oeminfo.c:127
+msgid "write them down somewhere prior their changing."
+msgstr ""
+
+#: lib/set_oeminfo.c:129
+msgid "Finally, note that you need to use MANUFACTURER community, "
+msgstr ""
+
+#: lib/set_oeminfo.c:131
+msgid "in order to be able to do any OEM info modification."
+msgstr ""
+
+#: lib/set_oeminfo.c:133
+msgid "Proceed further only at your full risk and responsibility. "
+msgstr ""
+
+#: lib/set_oeminfo.c:135
+msgid "You got the warnings."
+msgstr ""
+
+#: lib/set_oeminfo.c:141
+msgid "OEM Info settings"
+msgstr ""
+
 #: lib/stat.c:29
 msgid "Ethernet Statistics"
 msgstr "Eternet İstatistikleri"
@@ -1087,161 +949,186 @@ msgstr "Sistem Tanımı:"
 msgid "System Info"
 msgstr "Sistem Bilgisi"
 
-#: lib/sysinfo.c:120
+#: lib/sysinfo.c:55 src/bridge.c:50
+msgid "Wireless Bridge Point to MultiPoint"
+msgstr "Noktadan Çok Bağlantı Noktasına Kablosuz Köprü"
+
+#: lib/sysinfo.c:56 src/bridge.c:51
+msgid "Access Point"
+msgstr "Erişim Noktası"
+
+#: lib/sysinfo.c:57 src/bridge.c:52
+msgid "Access Point client"
+msgstr "Erşim Noktası Kullanıcısı"
+
+#: lib/sysinfo.c:58 src/bridge.c:53
+msgid "Wireless Bridge Point to Point"
+msgstr "noktadan noktaya kablosuz köprü"
+
+#: lib/sysinfo.c:59 src/bridge.c:54
+msgid "Repeater"
+msgstr "Yineleyici"
+
+#: lib/sysinfo.c:60 lib/sysinfo.c:315 lib/sysinfo.c:424 src/bridge.c:55
+msgid "unknown"
+msgstr "tanımlanamayan"
+
+#: lib/sysinfo.c:144
 msgid "Device hardware/software/name info:"
 msgstr ""
 
-#: lib/sysinfo.c:154
+#: lib/sysinfo.c:172
+#, fuzzy, c-format
+msgid "Operational mode: %s"
+msgstr "(O) İşlemsel Kip: %s"
+
+#: lib/sysinfo.c:182
 #, fuzzy
-msgid "Product name:"
+msgid "Product name: "
 msgstr "Ürün Adı"
 
-#: lib/sysinfo.c:158
+#: lib/sysinfo.c:186
 #, fuzzy, c-format
 msgid "Product type: %u"
 msgstr "ÜrünTürü: %lu"
 
-#: lib/sysinfo.c:161
+#: lib/sysinfo.c:189
 #, fuzzy
-msgid "OEM name:"
+msgid "OEM name: "
 msgstr "OEMAdı:"
 
-#: lib/sysinfo.c:168
+#: lib/sysinfo.c:196
 #, fuzzy, c-format
 msgid "Hardware revision: %u"
 msgstr "DonanımDeğişiklikleri: %lu"
 
-#: lib/sysinfo.c:176
+#: lib/sysinfo.c:204
 #, fuzzy, c-format
 msgid "Info structure version: %u"
 msgstr "YapıSürüm: %lu"
 
-#: lib/sysinfo.c:179 lib/sysinfo.c:355
+#: lib/sysinfo.c:207 lib/sysinfo.c:383
 #, c-format
 msgid "Manufacturer OUI: %02X %02X %02X (%s)"
 msgstr "Üretici OUI: %02X %02X %02X (%s)"
 
-#: lib/sysinfo.c:196
+#: lib/sysinfo.c:224
 #, fuzzy, c-format
 msgid "Uptime: %u days, %02u:%02u:%02u hours:mins:secs"
 msgstr "işlem süresi: %u:%02u:%02u.%02u"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "FHSS 2.4 GHz"
 msgstr "FHSS 2.4 GHz"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "DSSS 2.4 GHz"
 msgstr "DSSS 2.4 GHz"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "IR Baseband"
 msgstr "IR Tabanbant"
 
-#: lib/sysinfo.c:285
+#: lib/sysinfo.c:313
 msgid "Commercial range 0..40 C"
 msgstr "Ticari Aralık 0..40 C"
 
-#: lib/sysinfo.c:286
+#: lib/sysinfo.c:314
 msgid "Industrial range -30..70 C"
 msgstr "Endüstriyel aralık -30..70 C"
 
-#: lib/sysinfo.c:287 lib/sysinfo.c:396
-msgid "unknown"
-msgstr "tanımlanamayan"
-
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "manual"
 msgstr "kılavuz"
 
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "notsupported"
 msgstr "desteklenmiyor"
 
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "dynamic"
 msgstr "dinamik"
 
-#: lib/sysinfo.c:345
+#: lib/sysinfo.c:373
 msgid "Manufacturer:"
 msgstr "Üretici:"
 
-#: lib/sysinfo.c:350
+#: lib/sysinfo.c:378
 msgid "Manufacturer ID:"
 msgstr "Üretici ID:"
 
-#: lib/sysinfo.c:361
+#: lib/sysinfo.c:389
 msgid "Product Name:"
 msgstr "Ürün Adı"
 
-#: lib/sysinfo.c:367
+#: lib/sysinfo.c:395
 msgid "Product ID:"
 msgstr "Ürün ID:"
 
-#: lib/sysinfo.c:373
+#: lib/sysinfo.c:401
 msgid "Product Version:"
 msgstr "Ürün Sürümü:"
 
-#: lib/sysinfo.c:379
+#: lib/sysinfo.c:407
 #, c-format
 msgid "PHYType: %s"
 msgstr "PHYTürü: %s"
 
-#: lib/sysinfo.c:382
+#: lib/sysinfo.c:410
 #, c-format
 msgid "Temperature: %s"
 msgstr "Sıcaklık: %s"
 
-#: lib/sysinfo.c:390
+#: lib/sysinfo.c:418
 #, fuzzy, c-format
 msgid "Regulatory Domain: %s"
 msgstr "Düzenleme Alanı: %s"
 
-#: lib/sysinfo.c:391
+#: lib/sysinfo.c:419
 msgid "FCC (USA)"
 msgstr "FCC ( Amerika)"
 
-#: lib/sysinfo.c:392
+#: lib/sysinfo.c:420
 msgid "DOC (Canada)"
 msgstr "DOC (Kanada)"
 
-#: lib/sysinfo.c:393
+#: lib/sysinfo.c:421
 msgid "ETSI (Europe)"
 msgstr "ETSI (Avrupa)"
 
-#: lib/sysinfo.c:394
+#: lib/sysinfo.c:422
 msgid "Spain"
 msgstr "İspanya"
 
-#: lib/sysinfo.c:395
+#: lib/sysinfo.c:423
 msgid "France"
 msgstr "Fransa"
 
-#: lib/sysinfo.c:396
+#: lib/sysinfo.c:424
 msgid "MKK (Japan)"
 msgstr "MKK ( Japonya)"
 
-#: lib/sysinfo.c:399
+#: lib/sysinfo.c:427
 #, c-format
 msgid "Transmit Power: %u mW"
 msgstr "Geçiş süresi: %u mW"
 
-#: lib/sysinfo.c:429
+#: lib/sysinfo.c:457
 #, fuzzy, c-format
 msgid "WEP implemented: %s"
 msgstr "WEP girildi: %s"
 
-#: lib/sysinfo.c:432
+#: lib/sysinfo.c:460
 #, c-format
 msgid "Diversity: %s"
 msgstr "Çeşitleme: %s"
 
-#: lib/sysinfo.c:460
+#: lib/sysinfo.c:488
 #, c-format
 msgid "Uptime: %u:%02u:%02u.%02u"
 msgstr "işlem süresi: %u:%02u:%02u.%02u"
 
-#: lib/sysinfo.c:480
+#: lib/sysinfo.c:508
 #, c-format
 msgid "IP  Address: %s"
 msgstr "IP Adresi: %s"
@@ -1289,34 +1176,38 @@ msgstr "Sol"
 msgid "Right"
 msgstr "Sağ"
 
-#: lib/test.c:86
+#: lib/test.c:79
+msgid "Devices with ATMEL12350 MIB not yet supported."
+msgstr ""
+
+#: lib/test.c:91
 #, fuzzy
 msgid "Test mode"
 msgstr "Test Kipi"
 
-#: lib/test.c:89
+#: lib/test.c:94
 #, fuzzy
 msgid "Using the \"Test mode\" may cause loss of your current"
 msgstr "Test kipi kullanımı mevcut yapılandırmada kayıplara yol açabilir."
 
-#: lib/test.c:90
+#: lib/test.c:95
 #, fuzzy
 msgid "configuration."
 msgstr "Yapılandırmayı yükle"
 
-#: lib/test.c:102
+#: lib/test.c:107
 msgid "Options:"
 msgstr "Seçenekler:"
 
-#: lib/test.c:128
+#: lib/test.c:133
 msgid "Statistics:"
 msgstr "İstatistikler:"
 
-#: lib/test.c:129
+#: lib/test.c:134
 msgid "Success Frames: 0 Failed Frames: 0"
 msgstr "Başarı Profili: 0 Başarısızlık Profili: 0"
 
-#: lib/test.c:190
+#: lib/test.c:195
 #, c-format
 msgid "Success Frames: %lu Failed Frames: %lu"
 msgstr "Başarı Profili: %lu  Başarısızlık Profili: %lu"
@@ -1451,7 +1342,7 @@ msgid "[D] DTIM sending interval (beacons): "
 msgstr ""
 
 #: lib/wlan.c:48
-msgid "[T] SIFS time (msec): "
+msgid "[T] SIFS time (2nd+ interframe spacing, usec): "
 msgstr ""
 
 #: lib/wlan.c:49
@@ -1466,54 +1357,46 @@ msgstr "Kısa"
 msgid "Long"
 msgstr "Uzun"
 
-#: lib/wlan.c:237
+#: lib/wlan.c:239
 msgid "Wireless Settings"
 msgstr "Kablosuz Ayarlar"
 
-#: lib/wlan.c:731
+#: lib/wlan.c:735
 msgid "Antenna Configuration:"
 msgstr "Anten Yapılandırması"
 
-#: lib/wlan.c:748
+#: lib/wlan.c:752
 msgid "General Options"
 msgstr "Genel Seçenekler"
 
-#: lib/wlan.c:750
+#: lib/wlan.c:754
 msgid ""
 "UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu"
 msgstr ""
 "UIOPTY - anten; SCANLEDFR1234 - seçenekler; W - yapılandırmayı yaz; Q - "
 "menüye geri dön"
 
-#: src/ap-config.c:54
-msgid "General"
-msgstr "Genel"
-
-#: src/ap-config.c:54
-msgid "Set general options"
-msgstr "Genel seçenekleri kurunuz"
-
-#: src/ap-config.c:55
-msgid "Advanced"
-msgstr "Gelişmiş"
+#: src/ap-auth.c:32 src/auth.c:28
+msgid "AuthorizedMacTableString packet error"
+msgstr "YetkiliMacTablosuDizgi paketi hatası"
 
-#: src/ap-config.c:55
-msgid "Set advanced options"
-msgstr "Gelişmiş seçenekleri kurunuz"
+#: src/ap-auth.c:33
+msgid "Invalid data in source file"
+msgstr ""
 
-#: src/ap-config.c:89
-msgid "Reset AP."
-msgstr "AP'yi sıfırla"
+#: src/ap-auth.c:34
+msgid "Can't open file"
+msgstr ""
 
-#: src/ap-config.c:122
-msgid "Latest"
-msgstr "Son haberler"
+#: src/ap-auth.c:35
+msgid "Can't write to file"
+msgstr ""
 
-#: src/ap-config.c:122
-msgid "Get info about latest events"
-msgstr "son gelişmeler hakkında bilgi edinin."
+#: src/ap-auth.c:36
+msgid "Error closing file"
+msgstr ""
 
-#: src/ap-mrtg.c:42
+#: src/ap-auth.c:44 src/ap-mrtg.c:41 src/ap-rrd.c:40
 msgid ""
 "\n"
 "Usage:\n"
@@ -1521,165 +1404,849 @@ msgstr ""
 "\n"
 "Kullanım:\n"
 
-#: src/ap-mrtg.c:44
-#, fuzzy
+#: src/ap-auth.c:45
+msgid "\tap-auth -i ip -c community -d filename [-h]\n"
+msgstr ""
+
+#: src/ap-auth.c:46
 msgid ""
-"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-"
-"h] [-r]\n"
+"\tap-auth -i ip -c community -u filename [-h]\n"
 "\n"
 msgstr ""
-"\tap-mrtg -i ip -c topluluk -t türü [-b bssid] [-v] [-h] [-r]\n"
-"\n"
 
-#: src/ap-mrtg.c:46
+#: src/ap-auth.c:47
 msgid ""
-"Get stats from AP and return it in MRTG parsable format\n"
+"Change accesspoint's list of authorised MAC addresses\n"
 "\n"
 msgstr ""
-"AP'den istatistik al ve çözümlenebilir formatta MRTG'ye aktar\n"
-"\n"
 
-#: src/ap-mrtg.c:47
+#: src/ap-auth.c:48 src/ap-mrtg.c:45 src/ap-rrd.c:45
 msgid "-i ip        - AP ip address\n"
 msgstr "-i ip        - AP ip adresi\n"
 
-#: src/ap-mrtg.c:48
+#: src/ap-auth.c:49 src/ap-mrtg.c:46 src/ap-rrd.c:46
 msgid "-c community - SNMP community string\n"
 msgstr "-c topluluk - SNMP topluluk dizgisi\n"
 
-#: src/ap-mrtg.c:50
+#: src/ap-auth.c:50
 msgid ""
-"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
-"or <l>ink quality in client mode\n"
+"-d filename  - download list of authorised MAC addresses from AP to a file\n"
 msgstr ""
-"-t türü       - kablosuz türden istatistikler, eternet, ilişkilendirilmiş "
-"istasyonlar ya da kullanıcı kipinde bağlantı kalitesi\n"
 
-#: src/ap-mrtg.c:52
+#: src/ap-auth.c:52
 msgid ""
-"-b bssid     - mac address of the AP to which get link quality, only if "
-"type=l\n"
+"-u filename  - upload list of authorised MAC addresses from a file to AP\n"
 msgstr ""
-"-b bssid       -bağlantı kalitesinin ulaştığı AP mac adresi, ancak tür =l "
-"ise kullanılır\n"
 
-#: src/ap-mrtg.c:53
-msgid "-n name     - AP name - for check only\n"
-msgstr ""
+#: src/ap-auth.c:54 src/ap-mrtg.c:55 src/ap-rrd.c:55
+msgid ""
+"-h           - print this help screen\n"
+"\n"
+msgstr "-h            - bu yardım ekranını yazdır\n"
 
-#: src/ap-mrtg.c:54
+#: src/ap-auth.c:55
+#, fuzzy, c-format
 msgid ""
-"-a aptype        - AP type - 410 (default) or 510 for ATMEL12350's, like the "
-"ME-102\n"
+"ap-auth %s Copyright (c) 2004 Teemu Kiviniemi\n"
+"\n"
 msgstr ""
+"ap-mrtg %s Telifhakkı (c) 2002 Roman Festchook\n"
+"\n"
 
-#: src/ap-mrtg.c:56
-msgid "-v           - report MRTG about problems connecting to AP\n"
-msgstr "-v           - r AP ilişkili problemleri MRTG'ye aktar\n"
+#: src/ap-auth.c:138 src/ap-mrtg.c:132
+#, fuzzy
+msgid "Error: invalid IP-address.\n"
+msgstr "geçersiz IP-adresi\n"
+
+#: src/ap-auth.c:203 src/ap-mrtg.c:204
+#, fuzzy
+msgid "Unable to determine AP MIB type (no response from AP)."
+msgstr "AP' den veri alınamıyor. Devam etmek için bir tuşa basınız."
+
+#: src/ap-auth.c:211
+msgid "NWN devices are not yet supported."
+msgstr ""
+
+#: src/ap-config.c:43 src/bridge.c:201
+msgid "Bridging"
+msgstr "Bağlanıyor"
+
+#: src/ap-config.c:43
+msgid "Set bridging and IP-related options"
+msgstr "Bağlantı kurma ve IP bağlantılı seçenekler"
+
+#: src/ap-config.c:45 src/ap-config.c:114 src/ap-config.c:123 src/bridge.c:125
+msgid "Wireless"
+msgstr "Kablosuz"
+
+#: src/ap-config.c:45
+msgid "Set wireless options"
+msgstr "Kablosuz seçenekleri kur"
+
+#: src/ap-config.c:46 src/ap-config.c:58
+msgid "Privacy"
+msgstr "Gizlilik"
+
+#: src/ap-config.c:47
+#, fuzzy
+msgid "Auth"
+msgstr "Hakkında"
+
+#: src/ap-config.c:48 src/ap-config.c:60
+msgid "Community"
+msgstr "Topluluk"
+
+#: src/ap-config.c:49
+msgid "Radio"
+msgstr "Radyo"
 
-#: src/ap-mrtg.c:57
+#: src/ap-config.c:49
+msgid "Set radio signal power and antenna options"
+msgstr "Radyo sinyal gücünü ve anten seçeneklerini ayarlayınız."
+
+#: src/ap-config.c:56
+msgid "General"
+msgstr "Genel"
+
+#: src/ap-config.c:56
+msgid "Set general options"
+msgstr "Genel seçenekleri kurunuz"
+
+#: src/ap-config.c:57
+msgid "Advanced"
+msgstr "Gelişmiş"
+
+#: src/ap-config.c:57
+msgid "Set advanced options"
+msgstr "Gelişmiş seçenekleri kurunuz"
+
+#: src/ap-config.c:59
+#, fuzzy
+msgid "MAC auth"
+msgstr "Mac adresini gir"
+
+#: src/ap-config.c:82
+msgid "Upload"
+msgstr "Yükleme"
+
+#: src/ap-config.c:82
+#, fuzzy
+msgid "Activate current configuration"
+msgstr "Geçerli yapılandırmaları aktif hale getir."
+
+#: src/ap-config.c:83
+msgid "Defaults"
+msgstr "Varsayılanlar"
+
+#: src/ap-config.c:83
+msgid "Restore factory default settings"
+msgstr "Fabrika varsayılan ayarlarını geri yükle "
+
+#: src/ap-config.c:84 src/ap-config.c:91
+msgid "Reset"
+msgstr "Sıfırla"
+
+#: src/ap-config.c:85
+msgid "Reset AP. All not uploaded configuration will be lost"
+msgstr "AP' yi sıfırla. Yüklenmemiş yapılandırmalar kaybolacaktır"
+
+#: src/ap-config.c:86
+msgid "TestMode"
+msgstr "TestKipi"
+
+#: src/ap-config.c:86
+msgid "Put Access Point in test mode"
+msgstr "Test kipine Erişim Noktası koy"
+
+#: src/ap-config.c:91
+msgid "Reset AP."
+msgstr "AP'yi sıfırla"
+
+#: src/ap-config.c:112 src/ap-config.c:122
+msgid "SysInfo"
+msgstr "Sistembilgisi"
+
+#: src/ap-config.c:113 src/bridge.c:124 src/bridge.c:127
+msgid "Ethernet"
+msgstr "Eternet"
+
+#: src/ap-config.c:113
+msgid "Get ethernet port statistics"
+msgstr "Eternet bağlantı noktaları istatistiklerini bul"
+
+#: src/ap-config.c:115 src/ap-config.c:124
+msgid "Stations"
+msgstr "İstasyonlar"
+
+#: src/ap-config.c:116
+msgid "AP link"
+msgstr ""
+
+#: src/ap-config.c:117
+msgid "KnownAPs"
+msgstr "Bilinen AP' ler"
+
+#: src/ap-config.c:117
+msgid "Get info about known Access Points"
+msgstr "Bilinen Erişim Noktaları hakkında bilgi edinin."
+
+#: src/ap-config.c:125
+msgid "Latest"
+msgstr "Son haberler"
+
+#: src/ap-config.c:125
+msgid "Get info about latest events"
+msgstr "son gelişmeler hakkında bilgi edinin."
+
+#: src/ap-config.c:150
+msgid "Info"
+msgstr "Bilgi"
+
+#: src/ap-config.c:151
+msgid "Config"
+msgstr "Yapılandırma"
+
+#: src/ap-config.c:152
+msgid "Commands"
+msgstr "Komutlar"
+
+#: src/ap-config.c:152
+msgid "Execute commands on Access Point"
+msgstr "Erişim Noktasında komut gönder"
+
+#: src/ap-config.c:154
+msgid "Connect"
+msgstr "Bağlan"
+
+#: src/ap-config.c:155
+msgid "Search"
+msgstr "Ara"
+
+#: src/ap-config.c:156
+msgid "Polling"
+msgstr ""
+
+#: src/ap-config.c:157
+msgid "Shell"
+msgstr "Kabuk"
+
+#: src/ap-config.c:159
+msgid "Exit"
+msgstr "Çıkış"
+
+#: src/ap-config.c:218
+#, c-format
+msgid "Wireless Access Point Configurator ver. %s"
+msgstr "Kablosuz Erişim Noktası Konfigürasyon Tanımlayıcısı Sürümü %s"
+
+#: src/aplink.c:25
+msgid "RSSI:     ["
+msgstr ""
+
+#: src/aplink.c:26
+msgid "RSSI avg: ["
+msgstr ""
+
+#: src/aplink.c:27
+msgid "RSSI top: ["
+msgstr ""
+
+#: src/aplink.c:28
+msgid "RSSI rou: ["
+msgstr ""
+
+#: src/aplink.c:29
+msgid ""
+"P - pause, T - toggle graph view, Q - quit to menu, Other key - force update."
+msgstr ""
+
+#: src/aplink.c:81
+msgid "RSSI [%]"
+msgstr ""
+
+#: src/aplink.c:82
+msgid "RSSI average [%]"
+msgstr ""
+
+#: src/aplink.c:83
+msgid "RSSI rounded [%]"
+msgstr ""
+
+#: src/aplink.c:84
+msgid "Link Quality [%]"
+msgstr ""
+
+#: src/aplink.c:133
+msgid "Not available - device must have firmware with necessary "
+msgstr ""
+
+#: src/aplink.c:135
+msgid "vendor extensions and be in either 'Access Point client'"
+msgstr ""
+
+#: src/aplink.c:137
+msgid "or 'Repeater' mode."
+msgstr ""
+
+#: src/ap-mrtg.c:42
+#, fuzzy
+msgid ""
+"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-v] [-h] [-r]\n"
+"\n"
+msgstr ""
+"\tap-mrtg -i ip -c topluluk -t türü [-b bssid] [-v] [-h] [-r]\n"
+"\n"
+
+#: src/ap-mrtg.c:44
+msgid ""
+"Get stats from AP and return it in MRTG parsable format\n"
+"\n"
+msgstr ""
+"AP'den istatistik al ve çözümlenebilir formatta MRTG'ye aktar\n"
+"\n"
+
+#: src/ap-mrtg.c:47
+#, fuzzy
+msgid ""
+"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
+"or <l>ink quality (last one will only "
+msgstr ""
+"-t türü       - kablosuz türden istatistikler, eternet, ilişkilendirilmiş "
+"istasyonlar ya da kullanıcı kipinde bağlantı kalitesi\n"
+
+#: src/ap-mrtg.c:49
+msgid "work with ATMEL410 MIB devices in AP Client mode)\n"
+msgstr ""
+
+#: src/ap-mrtg.c:50
+#, fuzzy
+msgid ""
+"-b bssid     - mac address of the AP from which get link quality, only if "
+"type=l\n"
+msgstr ""
+"-b bssid       -bağlantı kalitesinin ulaştığı AP mac adresi, ancak tür =l "
+"ise kullanılır\n"
+
+#: src/ap-mrtg.c:52
+msgid "-n name      - AP name - for check only\n"
+msgstr ""
+
+#: src/ap-mrtg.c:53
+msgid "-v           - report MRTG about problems connecting to AP\n"
+msgstr "-v           - r AP ilişkili problemleri MRTG'ye aktar\n"
+
+#: src/ap-mrtg.c:54 src/ap-rrd.c:54
 msgid "-r           - reset AP when getting LinkQuality stats\n"
 msgstr ""
 "-r           - BağlantıKalitesi istatistiklerini alıp AP'yi yeniden başlat \n"
 
-#: src/ap-mrtg.c:58
+#: src/ap-mrtg.c:56
+#, fuzzy, c-format
 msgid ""
-"-h           - print this help screen\n"
+"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n"
 "\n"
-msgstr "-h            - bu yardım ekranını yazdır\n"
+msgstr ""
+"ap-mrtg %s Telifhakkı (c) 2002 Roman Festchook\n"
+"\n"
+
+#: src/ap-rrd.c:32
+#, c-format
+msgid "Error getting data from AP %s\n"
+msgstr ""
+
+#: src/ap-rrd.c:42
+#, fuzzy
+msgid ""
+"\tap-rrd -i ip -c community -t type -d db_file [-b bssid] [-n name] [-a "
+"aptype] [-h] [-r] \n"
+"\n"
+msgstr ""
+"\tap-mrtg -i ip -c topluluk -t türü [-b bssid] [-v] [-h] [-r]\n"
+"\n"
+
+#: src/ap-rrd.c:44
+#, fuzzy
+msgid ""
+"Get stats from AP and put it in to specified RRDtool database\n"
+"\n"
+msgstr ""
+"AP'den istatistik al ve çözümlenebilir formatta MRTG'ye aktar\n"
+"\n"
+
+#: src/ap-rrd.c:48
+msgid ""
+"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
+"or <l>ink quality in client mode\n"
+msgstr ""
+"-t türü       - kablosuz türden istatistikler, eternet, ilişkilendirilmiş "
+"istasyonlar ya da kullanıcı kipinde bağlantı kalitesi\n"
+
+#: src/ap-rrd.c:49
+msgid "-d db_file   - RRD database file with full path\n"
+msgstr ""
+
+#: src/ap-rrd.c:51
+msgid ""
+"-b bssid     - mac address of the AP to which get link quality, only if "
+"type=l\n"
+msgstr ""
+"-b bssid       -bağlantı kalitesinin ulaştığı AP mac adresi, ancak tür =l "
+"ise kullanılır\n"
 
-#: src/ap-mrtg.c:59
+#: src/ap-rrd.c:52
+msgid "-n name     - AP name - for check only\n"
+msgstr ""
+
+#: src/ap-rrd.c:53
+msgid ""
+"-a aptype    - AP type - 410 (default) or 510 for ATMEL12350's, like the ME-"
+"102\n"
+msgstr ""
+
+#: src/ap-rrd.c:56
 #, fuzzy, c-format
 msgid ""
-"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n"
+"ap-rrd %s Copyright (c) 2002-2004 Roman Festchook\n"
 "\n"
 msgstr ""
 "ap-mrtg %s Telifhakkı (c) 2002 Roman Festchook\n"
 "\n"
 
-#: src/ap-mrtg.c:143
+#: src/ap-rrd.c:133
 msgid "Invalid IP-address\n"
 msgstr "geçersiz IP-adresi\n"
 
-#: src/ap-mrtg.c:188
+#: src/ap-rrd.c:179
 #, c-format
 msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n"
 msgstr ""
 
-#: src/ap-mrtg.c:207
-msgid "Create socket error"
-msgstr "Soket hatası oluştur"
+#: src/ap-tftp.c:84
+msgid "yes"
+msgstr ""
+
+#: src/ap-tftp.c:85
+#, fuzzy
+msgid "no"
+msgstr "Bilgi"
 
-#: src/ap-mrtg.c:211
-msgid "Bind socket error"
-msgstr "Soket hatası bağla"
+#: src/ap-tftp.c:87
+msgid "Error while read()ing firmware file"
+msgstr ""
+
+#: src/ap-tftp.c:100
+msgid "Undefined error"
+msgstr ""
 
-#: src/ap-trapd.c:148
+#: src/ap-tftp.c:101
+msgid "File not found"
+msgstr ""
+
+#: src/ap-tftp.c:102
+#, fuzzy
+msgid "Access violation"
+msgstr "Erişim Noktası"
+
+#: src/ap-tftp.c:103
+msgid "Disk full or allocation error"
+msgstr ""
+
+#: src/ap-tftp.c:104
+msgid "Illegal TFTP operation"
+msgstr ""
+
+#: src/ap-tftp.c:105
+msgid "Unknown transfer ID"
+msgstr ""
+
+#: src/ap-tftp.c:106
+msgid "File already exists"
+msgstr ""
+
+#: src/ap-tftp.c:107
+msgid "No such user"
+msgstr ""
+
+#: src/ap-tftp.c:157
+msgid "Remote-filename too long.\n"
+msgstr ""
+
+#: src/ap-tftp.c:183
+#, c-format
+msgid "%sError in read()"
+msgstr ""
+
+#: src/ap-tftp.c:212
+#, c-format
+msgid "sending %u bytes\n"
+msgstr ""
+
+#: src/ap-tftp.c:221
+#, c-format
+msgid "%sError in sendto()"
+msgstr ""
+
+#: src/ap-tftp.c:244
+#, c-format
+msgid "%sError in recvfrom()"
+msgstr ""
+
+#: src/ap-tftp.c:256
+#, c-format
+msgid "\rProgress: uploaded %3i%%."
+msgstr ""
+
+#: src/ap-tftp.c:267
+#, c-format
+msgid "%sMalformed packet received. Aborting.\n"
+msgstr ""
+
+#: src/ap-tftp.c:276
+#, c-format
+msgid "%sTimed out waiting for response from server (%i/%i).\n"
+msgstr ""
+
+#: src/ap-tftp.c:283
+#, c-format
+msgid "%sError in select()"
+msgstr ""
+
+#: src/ap-tftp.c:297
+#, c-format
+msgid "Received %d bytes: %04x %04x\n"
+msgstr ""
+
+#: src/ap-tftp.c:308
+#, c-format
+msgid "%sError: server responded with %s. Aborting.\n"
+msgstr ""
+
+#: src/ap-tftp.c:315
+#, c-format
+msgid "%sFlash programming in progress...\n"
+msgstr ""
+
+#: src/ap-tftp.c:317
+msgid "Finished successfully.\n"
+msgstr ""
+
+#: src/ap-tftp.c:335
+msgid "PLEASE BE _ABSOLUTELY_ SURE TO READ MANPAGE PRIOR USE!!!\n"
+msgstr ""
+
+#: src/ap-tftp.c:337
+#, c-format
+msgid ""
+"\n"
+"Usage: %s -i IP -f firmware_file.rom [-c community] [-h]\n"
+msgstr ""
+
+#: src/ap-tftp.c:361
+msgid "TFTP client for upgrading firmware in ATMEL AT76C510 WiSOC-based APs.\n"
+msgstr ""
+
+#: src/ap-tftp.c:363
+msgid "(C) 2004-2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>\n"
+msgstr ""
+
+#: src/ap-tftp.c:379
+msgid "Error: invalid IP address format given.\n"
+msgstr ""
+
+#: src/ap-tftp.c:405
+#, fuzzy
+msgid "Error: invalid argument combination.\n"
+msgstr "geçersiz IP-adresi\n"
+
+#: src/ap-tftp.c:412
+msgid "Error while open()ing firmware file"
+msgstr ""
+
+#: src/ap-tftp.c:419 src/ap-tftp.c:472
+msgid "Error: invalid firmware file given.\n"
+msgstr ""
+
+#: src/ap-tftp.c:461
+#, c-format
+msgid ""
+"Firmware file contains:\n"
+"- string \"ATMEL\": %s\n"
+"- string \"802.11 AP\": %s\n"
+"- string \"atbrfirm.bin\": %s\n"
+"- string \"atsingle.bin\": %s\n"
+msgstr ""
+
+#: src/ap-tftp.c:485
+#, c-format
+msgid ""
+"Using:\n"
+"- server: %s\n"
+"- firmware file: \"%s\"\n"
+"- name used for upload: \"%s\"\n"
+msgstr ""
+
+#: src/ap-tftp.c:568
+msgid ""
+"Error: device with the given IP does not seem to run SmartBridges firmware.\n"
+msgstr ""
+
+#: src/ap-tftp.c:574
+msgid "Error: SNMP authorization error or device unavailable.\n"
+msgstr ""
+
+#: src/ap-tftp.c:653
+msgid "Error while lseek()ing in firmware file\n"
+msgstr ""
+
+#: src/ap-trapd.c:150
 #, c-format
 msgid "ap-trapd %s started%s%s."
 msgstr "ap-trapd %s başladı%s%s."
 
-#: src/ap-trapd.c:149
+#: src/ap-trapd.c:151
 msgid " on "
 msgstr "aktif"
 
-#: src/ap-trapd.c:155
+#: src/ap-trapd.c:157
 msgid "Unable to fork. Exiting."
 msgstr "Çatallayamıyor. Çıkıyor."
 
-#: src/ap-trapd.c:159
+#: src/ap-trapd.c:161
 msgid "Can't create socket. Exiting."
 msgstr "Yuva oluşturulamıyor. Çıkıyor."
 
-#: src/ap-trapd.c:165
+#: src/ap-trapd.c:167
 msgid "Can't bind socket. Exiting."
 msgstr "Yuva bağlanamıyor. Çıkıyor."
 
-#: src/ap-trapd.c:172
+#: src/ap-trapd.c:174
 #, c-format
 msgid "Can't bind to device %s. Exiting."
 msgstr "Aygıta bağlanamıyor %s. Çıkıyor."
 
-#: src/ap-trapd.c:183
+#: src/ap-trapd.c:185
 #, c-format
 msgid "Unable to process username %s. Error: %m."
 msgstr "kullanıcı adı işlemiyor %s. hata: %m."
 
-#: src/ap-trapd.c:188
+#: src/ap-trapd.c:190
 #, c-format
 msgid "Unable to change to uid %d."
 msgstr "uid' ye geçiş sağlanamıyor %d."
 
-#: src/ap-trapd.c:235
+#: src/ap-trapd.c:239
 #, c-format
 msgid ""
 "Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s."
 msgstr ""
 "tanımlanamayan SNMP sürümü alındı %d tuzağı. %s'ten:%d.Aracı: %s.Topluluk:%s."
 
-#: src/ap-trapd.c:307
-#, c-format
-msgid "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d"
+#: src/ap-trapd.c:311
+#, fuzzy, c-format
+msgid "Agent:v%d %s (%s@%s:%d) Trap %i: %s%s%s. SysUptime %d:%02d:%02d.%02d"
 msgstr "Aracı:v%d %s (%s@%s:%d) %s%s%s. SistemİşlemSüresi %d:%02d:%02d.%02d"
 
-#: src/auth_mac.c:33
+#: src/auth.c:30
+msgid "APClient authorization credentials"
+msgstr ""
+
+#: src/auth.c:32
 #, fuzzy
-msgid "NUM     MAC address"
+msgid "[A] MAC authorization: "
+msgstr "(A) Makro yetki: %s"
+
+#: src/auth.c:33
+#, fuzzy
+msgid "Enter MAC: "
+msgstr "Makro gir"
+
+#: src/auth.c:34
+#, fuzzy
+msgid "Delete Num: "
+msgstr "Numarayı sil:"
+
+#: src/auth.c:35
+#, fuzzy
+msgid " NUM     MAC address     "
 msgstr "NUM MAKRO adres"
 
+#: src/auth.c:36
+#, fuzzy
+msgid "A: auth; N: new; D: del; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A - yetki; N - yeni; D - sil; oklar - kaydırma; W - yapılandırmayı yaz; Q - "
+"durdur "
+
+#: src/auth.c:38
+msgid "[I] Radius server IP: "
+msgstr ""
+
+#: src/auth.c:39
+#, fuzzy
+msgid "[P] Radius server port: "
+msgstr "(P) Gizli bağlantı noktaları: %s"
+
+#: src/auth.c:40
+msgid "[S] Radius server secret: "
+msgstr ""
+
+#: src/auth.c:41
+#, fuzzy
+msgid "[T] Reauthorization time (minutes): "
+msgstr "(A) Makro yetki: %s"
+
+#: src/auth.c:42
+msgid "[F] Radius source port: "
+msgstr ""
+
+#: src/auth.c:43
+#, fuzzy
+msgid ""
+"A: auth; N: new; D: del; IPSTF: set; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A - yetki; N - yeni; D - sil; oklar - kaydırma; W - yapılandırmayı yaz; Q - "
+"durdur "
+
+#: src/auth.c:45
+#, fuzzy
+msgid "[M] 802.1x authorization: "
+msgstr "(A) Makro yetki: %s"
+
+#: src/auth.c:46
+#, fuzzy
+msgid "[T] key broadcasting time period (seconds): "
+msgstr "(A) Makro yetki: %s"
+
+#: src/auth.c:47
+msgid "[I] 802.1x auth. server IP: "
+msgstr ""
+
+#: src/auth.c:48
+msgid "[S] 802.1x auth. server secret: "
+msgstr ""
+
+#: src/auth.c:49
+#, fuzzy
+msgid ""
+"A: auth; N: new; D: del; MTIS: set; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A - yetki; N - yeni; D - sil; oklar - kaydırma; W - yapılandırmayı yaz; Q - "
+"durdur "
+
+#: src/auth.c:114
+#, fuzzy
+msgid "Internal"
+msgstr "Genel"
+
+#: src/auth.c:116
+#, fuzzy
+msgid "Radius"
+msgstr "Radyo"
+
+#: src/auth.c:121
+msgid "Allow listed MACs only"
+msgstr ""
+
+#: src/auth.c:123
+msgid "Deny listed MACs only"
+msgstr ""
+
+#: src/auth.c:129
+msgid "Mixed environment"
+msgstr ""
+
+#: src/auth.c:213
+msgid "(not shown)"
+msgstr ""
+
+#: src/auth.c:276
+#, fuzzy
+msgid "Authorized MAC addresses:"
+msgstr "Yetkili makro adresler"
+
+#: src/auth.c:345
+msgid "(insufficient community used)"
+msgstr ""
+
+#: src/auth.c:472
+#, c-format
+msgid "Given MAC already exists in MAC list at position %d. Press any key."
+msgstr ""
+
+#: src/bridge.c:27
+msgid "[I] IP: "
+msgstr ""
+
+#: src/bridge.c:28
+#, fuzzy
+msgid "[N] Netmask: "
+msgstr "[N] Ağ Maskesi: %s"
+
+#: src/bridge.c:29
+#, fuzzy
+msgid "[G] Gateway: "
+msgstr "(G) Ağ Geçidi %s"
+
+#: src/bridge.c:30
+#, fuzzy
+msgid "[F] Filter non-IP traffic: "
+msgstr "(F) IP- dışı trafik süzgeci: %s"
+
+#: src/bridge.c:31
+#, fuzzy
+msgid "[P] Primary port: "
+msgstr "(P) Gizli bağlantı noktaları: %s"
+
+#: src/bridge.c:32
+#, fuzzy
+msgid "Attached station MAC: "
+msgstr "İliştirilmiş MAC İstasyonu: %02X%02X%02X%02X%02X%02X"
+
+#: src/bridge.c:33
+#, fuzzy
+msgid "[D] DHCP client: "
+msgstr "(D) DHCP protokolü: %s"
+
+#: src/bridge.c:34
+#, fuzzy
+msgid "[O] Operational mode: "
+msgstr "(O) İşlemsel Kip: %s"
+
 #: src/bridge.c:35
+msgid "[M] Preferred BSSID (remote MAC addr.): "
+msgstr ""
+
+#: src/bridge.c:36
 msgid "[C] Configuration-enabled port(s): "
 msgstr ""
 
+#: src/bridge.c:37
+msgid "[T] Trap-sending port: "
+msgstr ""
+
 #: src/bridge.c:38
-msgid "[B] Isolate wireless clients (broadcast traffic): "
+msgid "[R] Forward broadcast traffic: "
 msgstr ""
 
 #: src/bridge.c:39
+msgid "[B] Isolate wireless clients (broadcast traffic): "
+msgstr ""
+
+#: src/bridge.c:40
 msgid "[U] Isolate wireless clients (unicast traffic): "
 msgstr ""
 
-#: src/bridge.c:119
+#: src/bridge.c:41
+#, fuzzy
+msgid "INGFPDOMSCRBUT - set; W - write conf; Q - quit to menu"
+msgstr "BPGINFDRT - kur;W - yapılandırmayı yaz; Q - menüye dön"
+
+#: src/bridge.c:128
+#, fuzzy
+msgid "Wireless (can be risky)"
+msgstr "Kablosuz Ayarlar"
+
+#: src/bridge.c:129
 #, fuzzy
 msgid "Both"
 msgstr "Her İki Tür"
@@ -1732,35 +2299,62 @@ msgstr "Son hata:"
 msgid "Error:"
 msgstr "Hata"
 
-#: src/stations.c:33
-msgid "AP link state"
+#: src/stations.c:82
+msgid "Not available (device not in AP mode)."
 msgstr ""
 
-#: src/stations.c:37
-msgid " #            MAC                                               "
+#: src/stations.c:92
+msgid "  #     MAC       Parent MAC  RSSI   LQ Sts MACn      IP        "
 msgstr ""
 
-#: src/stations.c:40
-msgid " #     MAC       Parent MAC    RSSI  Status MACn      IP        "
-msgstr ""
+#: src/stations.c:136
+msgid "AssociatedSTAsInfo packet error"
+msgstr "İlişkiliSTAbilgi paketi hatası"
 
-#: src/stations.c:195 src/stations.c:367
+#: src/stations.c:189 src/stations.c:363
 #, fuzzy
 msgid ""
 "Arrows - scroll; S - save to file; Q - return; T - toggle view; Other - "
 "refresh"
 msgstr "Oklar - kaydırma; S - dosyaya kaydet; Q - menüye geri dön"
 
-#: src/stations.c:200
+#: src/stations.c:193
 #, fuzzy
 msgid "Arrows - scroll; S - save to file; Q - return; Other key - refresh"
 msgstr "Oklar - kaydırma; S - dosyaya kaydet; Q - menüye geri dön"
 
-#: src/stations.c:279
+#: src/stations.c:275
 #, fuzzy
 msgid "Id       MAC address     Quality  Age  RSSI"
 msgstr "Id       MAC adresi       Kalite Yükseltme RSSI"
 
+#~ msgid "Create socket error. Press any key."
+#~ msgstr "Yuva hatası oluştur.. Bir tuşa basınız."
+
+#~ msgid "Bind socket error. Press any key."
+#~ msgstr "Yuva hatasını bağlayınız. Bir tuşa basınız."
+
+#~ msgid "Create socket error"
+#~ msgstr "Soket hatası oluştur"
+
+#~ msgid "Bind socket error"
+#~ msgstr "Soket hatası bağla"
+
+#, fuzzy
+#~ msgid "NUM       MAC address"
+#~ msgstr "NUM MAKRO adres"
+
+#, fuzzy
+#~ msgid "A - auth; IPSTF - set; W - write conf; Q - quit"
+#~ msgstr "BPGINFDRT - kur;W - yapılandırmayı yaz; Q - menüye dön"
+
+#, fuzzy
+#~ msgid "A - auth; W - write conf; Q - quit"
+#~ msgstr "DA -seçenekler; W - yapılandırmayı yaz; Q - menüye geri dön"
+
+#~ msgid "Arrows - scroll; S - save to file; Q - quit to menu."
+#~ msgstr "Oklar - kaydırma; S - dosyaya kaydet; Q - menüye geri dön"
+
 #~ msgid "Associated Stations"
 #~ msgstr "İlişkili istasyonlar"
 
index 3f5c69578c592dde83ca5e3bb79766f9e398c8e0..61f122b16d1e84ec70371e8c5328443cdc353d20 100644 (file)
--- a/po/uk.po
+++ b/po/uk.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: ap-utils 1.4.1\n"
-"POT-Creation-Date: 2004-11-28 00:59+0200\n"
+"POT-Creation-Date: 2005-03-07 01:13+0200\n"
 "PO-Revision-Date: 2004-02-27 00:44+0200\n"
 "Last-Translator: Roman Festchook <roma@polesye.net>\n"
 "Language-Team: UK <roma@polesye.net>\n"
@@ -15,419 +15,131 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Report-Msgid-Bugs-To: \n"
 
-#: ap-gl/ap-gl.c:41 ap-gl/bridge.c:178 src/ap-config.c:41 src/bridge.c:182
-msgid "Bridging"
-msgstr "íÏÓÔ"
-
-#: ap-gl/ap-gl.c:41 src/ap-config.c:41
-msgid "Set bridging and IP-related options"
-msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÏÐ槠ÍÏÓÔÁ ÔÁ ¶ò ÐÒÏÔÏËÏÌÕ"
-
-#: ap-gl/ap-gl.c:43 ap-gl/ap-gl.c:81 ap-gl/bridge.c:132 src/ap-config.c:43
-#: src/ap-config.c:112 src/ap-config.c:120 src/bridge.c:117 src/bridge.c:121
-msgid "Wireless"
-msgstr "òÁĦÏ"
-
-#: ap-gl/ap-gl.c:43 src/ap-config.c:43
-msgid "Set wireless options"
-msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒÉ ÒÁĦÏÍÅÒÅÖ¦"
-
-#: ap-gl/ap-gl.c:44 src/ap-config.c:44 src/ap-config.c:56
-msgid "Privacy"
-msgstr "ûÉÆÒÕ×ÁÎÎÑ"
-
-#: ap-gl/ap-gl.c:45 src/ap-config.c:45 src/ap-config.c:57
-msgid "MAC auth"
-msgstr "íáó ÄÏÓÔÕÐ"
-
-#: ap-gl/ap-gl.c:46 src/ap-config.c:46 src/ap-config.c:58
-msgid "Community"
-msgstr "ëÏÍ'ÀΦԦ"
-
-#: ap-gl/ap-gl.c:47 src/ap-config.c:47
-msgid "Radio"
-msgstr "ðÅÒÅÄÁ×ÁÞ"
-
-#: ap-gl/ap-gl.c:47 src/ap-config.c:47
-msgid "Set radio signal power and antenna options"
-msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÏÔÕÖΦÓÔØ ÐÅÒÅÄÁ×ÁÞÁ ÔÁ ÁÎÔÅÎÉ"
-
-#: ap-gl/ap-gl.c:62 src/ap-config.c:80
-msgid "Upload"
-msgstr "úÁ×ÁÎÔÁÖÉÔÉ"
-
-#: ap-gl/ap-gl.c:62 src/ap-config.c:80
-msgid "Activate current configuration"
-msgstr "áËÔÉצÚÕ×ÁÔÉ ÐÏÔÏÞÎÕ ËÏÎƦÇÕÒÁæÀ"
-
-#: ap-gl/ap-gl.c:63 src/ap-config.c:81
-msgid "Defaults"
-msgstr "æÁÂÒ¦ÞΦ"
-
-#: ap-gl/ap-gl.c:63 src/ap-config.c:81
-msgid "Restore factory default settings"
-msgstr "÷¦ÄÎÏ×ÉÔÉ ÆÁÂÒ¦ÞΦ ÎÁÓÔÒÏÊËÉ."
-
-#: ap-gl/ap-gl.c:64 src/ap-config.c:82 src/ap-config.c:89
-msgid "Reset"
-msgstr "òÅÓÔÁÒÔ"
-
-#: ap-gl/ap-gl.c:65 src/ap-config.c:83
-msgid "Reset AP. All not uploaded configuration will be lost"
-msgstr "ðÅÒÅÚÁ×ÁÎÔÁÖÉÔÉ áò. îÅÁËÔÉצÚÏ×ÁΦ ÚͦÎÉ Õ ËÏÎƦÇÕÒÁ槠ÂÕÄÁ ×ÔÒÁÞÅÎÏ."
-
-#: ap-gl/ap-gl.c:66 src/ap-config.c:84
-msgid "TestMode"
-msgstr "ôÅÓÔ"
-
-#: ap-gl/ap-gl.c:66 src/ap-config.c:84
-msgid "Put Access Point in test mode"
-msgstr "ðÏÓÔÁ×ÉÔÉ áò Õ ÔÅÓÔÏ×ÉÊ ÒÅÖÉÍ"
-
-#: ap-gl/ap-gl.c:79 src/ap-config.c:110 src/ap-config.c:119
-msgid "SysInfo"
-msgstr "óÉÓÔÅÍÁ"
-
-#: ap-gl/ap-gl.c:80 ap-gl/bridge.c:131 src/ap-config.c:111 src/bridge.c:116
-#: src/bridge.c:120
-msgid "Ethernet"
-msgstr "åÚÅÒÎÅÔ"
-
-#: ap-gl/ap-gl.c:80 src/ap-config.c:111
-msgid "Get ethernet port statistics"
-msgstr "ïÔÒÉÍÁÔÉ ÓÔÁÔÉÓÔÉËÕ ÅÚÅÒÎÅÔ ÐÏÒÔÕ"
-
-#: ap-gl/ap-gl.c:82 src/ap-config.c:113 src/ap-config.c:121
-msgid "Stations"
-msgstr "óÔÁÎæ§"
-
-#: ap-gl/ap-gl.c:83 src/ap-config.c:114
-msgid "KnownAPs"
-msgstr "÷¦ÄÏͦôÏÞËÉ"
-
-#: ap-gl/ap-gl.c:83 src/ap-config.c:114
-msgid "Get info about known Access Points"
-msgstr "ïÔÒÉÍÁÔÉ ¦ÎÆÏÒÍÁÃÉÀ ÐÒϠצÄÏͦ ôÏÞËÉ äÏÓÔÕÐÕ"
-
-#: ap-gl/ap-gl.c:100 src/ap-config.c:147
-msgid "Info"
-msgstr "¶ÎÆÏÒÍÁæÑ"
-
-#: ap-gl/ap-gl.c:101 src/ap-config.c:148
-msgid "Config"
-msgstr "õÓÔÁÎÏ×ËÉ"
-
-#: ap-gl/ap-gl.c:102 src/ap-config.c:149
-msgid "Commands"
-msgstr "ëÏÍÁÎÄÉ"
-
-#: ap-gl/ap-gl.c:102 src/ap-config.c:149
-msgid "Execute commands on Access Point"
-msgstr "÷ÉËÏÎÁÔÉ ËÏÍÁÎÄÉ ÎÁ áò"
-
-#: ap-gl/ap-gl.c:104 src/ap-config.c:151
-msgid "Connect"
-msgstr "ú'¤ÄÎÁÎÎÑ"
-
-#: ap-gl/ap-gl.c:105 src/ap-config.c:152
-msgid "Search"
-msgstr "ðÏÛÕË"
-
-#: ap-gl/ap-gl.c:106 lib/common.c:83 src/ap-config.c:153
-msgid "About"
-msgstr "ðÒÏÇÒÁÍÁ"
-
-#: ap-gl/ap-gl.c:107 src/ap-config.c:154
-msgid "Shell"
-msgstr "ïÂÏÌÏÎËÁ"
-
-#: ap-gl/ap-gl.c:108 src/ap-config.c:155
-msgid "Exit"
-msgstr "÷ÉȦÄ"
-
-#: ap-gl/ap-gl.c:158 src/ap-config.c:204
-#, c-format
-msgid "Wireless Access Point Configurator ver. %s"
-msgstr "ëÏÎƦÇÕÒÁÔÏÒ ÔÏÞËÉ ÄÏÓÔÕÐÕ ÒÁĦÏÍÅÒÅÖ¦ ×ÅÒ. %s"
-
-#: ap-gl/auth_mac.c:27 src/auth_mac.c:27
-msgid "AuthorizedMacTableString packet error"
-msgstr "ðÏÍÉÌËÏ×ÉÊ ÐÁËÅÔ AuthorizedMacTableString"
-
-#: ap-gl/auth_mac.c:29 src/auth_mac.c:29
-msgid "[A] MAC authorization: "
-msgstr "[A] Máó Á×ÔÏÒÉÚÁæÑ: "
-
-#: ap-gl/auth_mac.c:30 src/auth_mac.c:30
-msgid "Enter MAC: "
-msgstr "÷×ÅĦÔØ íáó:"
-
-#: ap-gl/auth_mac.c:31 src/auth_mac.c:31
-msgid "Delete Num: "
-msgstr "÷ÉÄÁÌÉÔÉ ÎÏÍÅÒ:"
-
-#: ap-gl/auth_mac.c:32 src/auth_mac.c:32
-msgid "Authorized MAC addresses"
-msgstr "á×ÔÏÒÉÚÏ×ÁΦ íáó ÁÄÒÅÓÉ"
-
-#: ap-gl/auth_mac.c:33
-msgid "NUM       MAC address"
-msgstr "#         íáó ÁÄÒÅÓÁ"
-
-#: ap-gl/auth_mac.c:34 src/auth_mac.c:34
-msgid "A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit"
-msgstr ""
-"A Á×ÔÏÒÉÚÁæÑ; N ÎÏ×Á; D ×ÉÄÁÌÉÔÉ; ÓÔÒ¦ÌËÉ ÐÅÒÅÇÌÑÄ; W ÚÁÐÉÓÁÔÉ; Q ×ÉÊÔÉ"
-
-#: ap-gl/auth_mac.c:35
-msgid "A - auth; IPSTF - set; W - write conf; Q - quit"
-msgstr "A - a×ÔÏÒÉÚÁæÑ; IPSTF - ×ÓÔÁÎÏ×ÉÔÉ;W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ"
-
-#: ap-gl/auth_mac.c:36
-msgid "A - auth; W - write conf; Q - quit"
-msgstr "A - a×ÔÏÒÉÚÁæÑ; W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ"
-
-#: ap-gl/auth_mac.c:38
-msgid "[I] RADIUS SERVER IP: "
-msgstr "[I] ¶ò ÁÄÒÅÓÁ RADIUS ÓÅÒ×ÅÒÁ: "
-
-#: ap-gl/auth_mac.c:39
-msgid "[P] RADIUS SERVER PORT: "
-msgstr "[P] ðÏÒÔ RADIUS ÓÅÒ×ÅÒÁ: "
-
-#: ap-gl/auth_mac.c:40
-msgid "[S] RADIUS SERVER SECRET: "
-msgstr "[S] ðÁÒÏÌØ RADIUS ÓÅÒ×ÅÒÁ: "
-
-#: ap-gl/auth_mac.c:41
-msgid "[T] REAUTHORIZATION TIME: "
-msgstr "[T] þÁÓ ÐÅÒÅÁ×ÔÏÒÉÚÁæ§: "
-
-#: ap-gl/auth_mac.c:42
-msgid "[F] RADIUS SOURCE PORT: "
-msgstr "[F] ÷ÉȦÄÎÉÊ ÐÏÒÔ RADIUS ÐÁËÅÔ¦×: "
-
-#: ap-gl/auth_mac.c:87
-msgid "Internal"
-msgstr "÷ÎÕÔÒ¦ÛÎÑ ÔÁÂÌÉÃÑ"
-
-#: ap-gl/auth_mac.c:95
-msgid "<hidden>"
-msgstr "<ÐÒÉÈÏ×ÁÎÏ>"
-
-#: ap-gl/bridge.c:26 src/bridge.c:26
-msgid "[I] IP: "
-msgstr "[I] ¶ò: "
-
-#: ap-gl/bridge.c:27 src/bridge.c:27
-msgid "[N] Netmask: "
-msgstr "[N] íÁÓËÁ: "
-
-#: ap-gl/bridge.c:28 src/bridge.c:28
-msgid "[G] Gateway: "
-msgstr "[G] ûÌÀÚ: "
-
-#: ap-gl/bridge.c:29 src/bridge.c:29
-msgid "[F] Filter non-IP traffic: "
-msgstr "[F] æ¦ÌØÔÒÕ×ÁÔÉ ÎÅ-¶ò ÔÒÁƦË: "
-
-#: ap-gl/bridge.c:30 src/bridge.c:30
-msgid "[P] Primary port: "
-msgstr "[P] çÏÌÏ×ΦʠÐÏÒÔ: "
-
-#: ap-gl/bridge.c:31 src/bridge.c:31
-msgid "Attached station MAC: "
-msgstr "ð¦Ä'¤ÄÎÁÎÁ ÓÔÁÎæÑ: "
-
-#: ap-gl/bridge.c:32 src/bridge.c:32
-msgid "[D] DHCP client: "
-msgstr "[D] DHCP Ë̦¤ÎÔ: "
-
-#: ap-gl/bridge.c:33 src/bridge.c:33
-msgid "[O] Operational mode: "
-msgstr "[O] òÅÖÉÍ ÒÏÂÏÔÉ: "
-
-#: ap-gl/bridge.c:34 src/bridge.c:34
-msgid "[M] Preferred BSSID (remote MAC addr.): "
-msgstr "[M] ÷¦ÄÄÁÌÅÎÉÊ Máó: "
-
-#: ap-gl/bridge.c:36 src/bridge.c:36
-msgid "[T] Trap-sending port(s): "
-msgstr "[T] ðÏÒԠצÄÐÒÁ×ËÉ ÔÒÁЦ×: "
-
-#: ap-gl/bridge.c:37 src/bridge.c:37
-msgid "[R] Forward broadcast traffic: "
-msgstr "[R] ðÅÒÅÄÁÞÁ ÂÒÏÁÄËÁÓÔÏ×ÉÈ ÐÁËÕÎ˦×: "
-
-#: ap-gl/bridge.c:39
-msgid "[U] Isolate wireless clients: "
-msgstr "[U] ¶ÚÏÌÀ×ÁÔÉ ÒÁĦÏË̦¤ÎÔ¦×: "
-
-#: ap-gl/bridge.c:40 src/bridge.c:40
-msgid "INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu"
-msgstr "INGFPDOMSCTRBU - ×ÓÔÁÎÏ×ÉÔÉ; W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ"
-
-#: ap-gl/bridge.c:124 src/bridge.c:109
-msgid "Wireless Bridge Point to MultiPoint"
-msgstr "òÁĦÏÍÏÓÔ ÔÏÞËÁ-ÂÁÇÁÔÏÔÏÞËÁ"
-
-#: ap-gl/bridge.c:125 src/bridge.c:110
-msgid "Access Point"
-msgstr "âÁÚÏ×Á ÓÔÁÎæÑ"
-
-#: ap-gl/bridge.c:126 src/bridge.c:111
-msgid "Access Point client"
-msgstr "ë̦¤ÎÔÓØËÁ ÓÔÁÎæÑ"
-
-#: ap-gl/bridge.c:127 src/bridge.c:112
-msgid "Wireless Bridge Point to Point"
-msgstr "òÁĦÏÍÏÓÔ ÔÏÞËÁ-ÔÏÞËÁ"
-
-#: ap-gl/bridge.c:128 src/bridge.c:113
-msgid "Repeater"
-msgstr "ðÏ×ÔÏÒÀ×ÁÞ"
-
-#: ap-gl/stations.c:77 src/stations.c:100
-msgid "AP is currently in AP Client Mode => no associated STAtions."
-msgstr "ôÏÞËÁ äÏÓÔÕÐÕ Õ ÒÅÖÉͦ Ë̦¤ÎÔÁ => ÎÅÍÁ¤ Ð¦Ä'¤ÄÎÁÎÉÈ ÓÔÁÎæÊ"
-
-#: ap-gl/stations.c:102
-msgid "#     MAC       LQ    RSSI   Status Port IP"
-msgstr "#     MAC       LQ    RSSI   óÔÁÔ   ðÏÒÔ IP"
-
-#: ap-gl/stations.c:128 src/stations.c:159
-msgid "AssociatedSTAsInfo packet error"
-msgstr "ðÏÍÉÌËÏ×ÉÊ ÐÁËÅÔ AssociatedSTAsInfo."
-
-#: ap-gl/stations.c:160
-msgid "Arrows - scroll; S - save to file; Q - quit to menu."
-msgstr "óÔÒ¦ÌËÉ - ÐÒÏËÒÕÔËÁ; S - ÚÂÅÒÅÇÔÉ Õ ÆÁÊÌ; Q - ×ÉÊÔÉ × ÍÅÎÀ."
-
-#: lib/aps.c:29
+#: lib/aps.c:30
 msgid "Known Access Points"
 msgstr "÷¦ÄÏͦ ÔÏÞËÉ ÄÏÓÔÕÐÕ"
 
-#: lib/aps.c:129
+#: lib/aps.c:130
 msgid "Your Access Point is not in \"AP client\" mode => getting"
 msgstr "÷ÁÛÁ ÔÏÞËÁ ÄÏÓÔÕÐÕ ÎÅ Õ ÒÅÖÉͦ ë̦¤ÎÔÁ, ÏÔÒÉÍÁÎÎÑ ÄÁÎÎÉÈ"
 
-#: lib/aps.c:132
+#: lib/aps.c:133
 msgid "up-to-date \"Known APs\" info requires your AP to be"
 msgstr "ÐÒϠצÄÏͦ ÔÏÞËÉ ÄÏÓÔÕÐÕ ×ÉÍÁÇÁ¤ ÔÉÍÞÁÓÏ×ÏÇÏ ËÏÎƦÇÕÒÕ×ÁÎÎÑ"
 
-#: lib/aps.c:135
+#: lib/aps.c:136
 msgid "temporarily configured into \"AP client\" mode and rebooted."
 msgstr "Õ ÒÅÖÉÍ ë̦¤ÎÔÁ ÔÁ ÐÅÒÅÚÁ×ÁÎÔÁÖÅÎÎÑ."
 
-#: lib/aps.c:138
+#: lib/aps.c:139
 msgid "Your AP will be reconfigured back to original mode by this"
 msgstr "÷ÁÛÕ ÔÏÞËÕ ÄÏÓÔÕÐÕ ÂÕÄÅ ÐÏ×ÅÒÎÅÎÏ ÄÏ ÐÏÞÁÔËÏ×ÏÇÏ ÓÔÁÎÕ ËÏÌÉ"
 
-#: lib/aps.c:141
+#: lib/aps.c:142
 msgid "utility once you quit the \"KnownAP\" view. This, in turn, may"
 msgstr "÷É ×ÉÊÄÅÔÅ Ú ÒÅÖÉÍÕ \"÷¦ÄÏͦôÏÞËÉ\". ¶ÎËÏÌÉ, ÃÅ ÍÏÖÅ ÓÐÒÉÞÉÎÉÔÉ"
 
-#: lib/aps.c:144
+#: lib/aps.c:145
 msgid "cause loss of Access Point's current configuration."
 msgstr "×ÔÒÁÔÕ ÐÏÔÏÞÎϧ ËÏÎƦÇÕÒÁ槠÷ÁÛϧ ôÏÞËÉ äÏÓÔÕÐÕ"
 
-#: lib/aps.c:148
+#: lib/aps.c:149
 msgid "Do NOT answer \"Yes\" if you're connected to the Access Point"
 msgstr "îŠצÄÐÏצÄÁÊÔÅ ôÁË ÑËÝÏ ÷ɠЦÄ'¤ÄÎÁΦ ÄÏ ÔÏÞËÉ ÄÏÓÔÕÐÕ"
 
-#: lib/aps.c:151
+#: lib/aps.c:152
 msgid "via its wireless port."
 msgstr "ÞÅÒÅÚ §§ ÒÁĦÏÐÏÒÔ."
 
-#: lib/aps.c:153 lib/cmd.c:45 lib/cmd.c:75 lib/test.c:91
+#: lib/aps.c:154 lib/cmd.c:45 lib/cmd.c:75 lib/test.c:96
 msgid "Do you want to continue? "
 msgstr "âÁÖÁ¤ÔÅ ÐÒÏÄÏ×ÖÉÔÉ? "
 
-#: lib/aps.c:207
+#: lib/aps.c:208
 msgid "NetworkType"
 msgstr "ôÉРÍÅÒÅÖ¦"
 
-#: lib/aps.c:283
+#: lib/aps.c:284
 msgid "Infrastructure"
 msgstr "¶ÎÆÒÁÓÔÒÕËÔÕÒÁ"
 
-#: lib/aps.c:343 lib/aps.c:351 lib/aps.c:359
+#: lib/aps.c:344 lib/aps.c:352 lib/aps.c:360
 msgid "CN: Channel Name; P: Preambule Type (S: Short; L: Long);"
 msgstr "CN: ëÁÎÁÌ; P: ôÉРÐÒÅÁÍÂÕÌÉ (S: ëÏÒÏÔËÁ; L: äÏ×ÇÁ)"
 
-#: lib/aps.c:345
+#: lib/aps.c:346
 msgid "RSSI: Radio Signal Strength Indicator [%]"
 msgstr "RSSI: ¶ÎÄÉËÁÔÏÒ ÐÏÔÕÖÎÏÓÔ¦ ÓÉÇÎÁÌÕ [%]"
 
-#: lib/aps.c:347 lib/aps.c:355
+#: lib/aps.c:348 lib/aps.c:356
 msgid "; LQ: Link Quality [%]"
 msgstr "; LQ: ñ˦ÓÔØ Ú'¤ÄÎÁÎÎÑ [%]"
 
-#: lib/aps.c:353
+#: lib/aps.c:354
 msgid "RSSI: Radio Signal Strength Indicator [dBm]"
 msgstr "RSSI: ¶ÎÄÉËÁÔÏÒ ÐÏÔÕÖÎÏÓÔ¦ ÓÉÇÎÁÌÕ [dBm]"
 
-#: lib/aps.c:361
+#: lib/aps.c:362
 msgid "RSSI: Radio Signal Strength Indicator [raw]"
 msgstr "RSSI: ¶ÎÄÉËÁÔÏÒ ÐÏÔÕÖÎÏÓÔ¦ ÓÉÇÎÁÌÕ [ÎÅÏÂÒÏÂÌÅÎÅ]"
 
-#: lib/aps.c:363
+#: lib/aps.c:364
 msgid "; LQ: Link Q. [raw]"
 msgstr "; LQ: ñ˦ÓÔؠ̦ÎËÕ [ÎÅÏÂÒÏÂÌÅÎÅ]"
 
-#: lib/aps.c:369
+#: lib/aps.c:370
 msgid ""
 "# con. to AP #; R refresh with reset; T toggle; Q quit; Other = refr. w/o "
 "reset"
 msgstr ""
 "# ÐÒɤÄÎÁÔÉÓÑ ÄÏ áò; R ÐÅÒÅÚÁ×ÁÎÔÁÖÉÔÉ; S ÐÏÎÏ×ÉÔÉ; T ÐÅÒÅÍËÎÕÔÉ; Q ×ÉÊÔÉ"
 
-#: lib/aps.c:371
+#: lib/aps.c:372
 msgid ""
 "# con. to AP #; R initiate AP scan; T toggle view; Q quit; Other = refresh "
 "view"
 msgstr ""
 "# ÐÒɤÄÎÁÔÉÓÑ ÄÏ áò; R ÚÁÐÕÓÔÉÔÉ ÐÏÛÕË; S ÐÏÎÏ×ÉÔÉ; T ÐÅÒÅÍËÎÕÔÉ; Q ×ÉÊÔÉ"
 
-#: lib/aps.c:500 lib/ap_search.c:167
+#: lib/aps.c:501 lib/ap_search.c:173
 #, c-format
 msgid "Failure in sendto(): %s. Press any key."
 msgstr "îÅ×iÒÎÉÊ sendto: %s. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ."
 
-#: lib/aps.c:509
+#: lib/aps.c:510
 msgid "You have just initiated the AP scan. Be advised that it may"
 msgstr "÷É ÚÁÐÕÓÔÉÌÉ ÓËÁÎÕ×ÁÎÎÑ ÄÌÑ ÐÏÛÕËÕ ÔÏÞÏË ÄÏÓÔÕÐÕ. ãÅ ÍÏÖÅ"
 
-#: lib/aps.c:512
+#: lib/aps.c:513
 msgid "take a few seconds for your Access Point to find out some"
 msgstr "ÚÁÊÎÑÔÉ ÄÅ˦ÌØËÁ ÓÅËÕÎÄ ÄÏËÉ ×ÁÛÁ ÔÏÞËÁ ÄÏÓÔÕÐÕ ÚÎÁÊÄÅ"
 
-#: lib/aps.c:515
+#: lib/aps.c:516
 msgid "values, so expect finishing the scan in about 5 seconds."
 msgstr ""
 "ÎÅÏÂȦÄΦ ÄÁÎΦ, ÔÏÖ ÒÁÚÒÁÈÏ×ÕÊÔÅ ÎÁ ÚÁ×ÅÒÛÅÎΦ ÓËÁÎÕ×ÁÎÎÑ ÚÁ 5 ÓÅËÕÎÄ."
 
-#: lib/aps.c:518
+#: lib/aps.c:519
 msgid "Also note that your Access Point stops forwarding the network"
 msgstr "ôÁËÖ ÚÁÕ×ÁÖÔÅ, ÝÏ ÷ÁÛÁ ÔÏÞËÁ ÄÏÓÔÕÐÕ ÐÒÉÐÉÎѤ ÐÅÒÅÄÁ×ÁÔÉ"
 
-#: lib/aps.c:521
+#: lib/aps.c:522
 msgid "traffic while the scan is in progress, but restores itself"
 msgstr "ÍÅÒÅÖÅ×ÉÊ ÔÒÁƦˠÐÒÉ ÓËÁÎÕ×ÁÎΦ, ÔÁ ×¦ÄÎÏ×ÌÀ¤ ÓÅÂÅ Õ ÎÏÒÍÁÌØÎÉÊ"
 
-#: lib/aps.c:524
+#: lib/aps.c:525
 msgid "to normal operation in time ranging up to 1 minute."
 msgstr "ÒÅÖÉÍ ÒÁÂÏÔÉ ÐÒÉÂÌÉÚÎÏ ÚÁ È×ÉÌÉÎÕ."
 
-#: lib/aps.c:527
+#: lib/aps.c:528
 msgid "Hence, if you are connected to target Access Point via its"
 msgstr "ôÁËÏÖ, ÑËÝÏ ÷ɠЦÄ'¤ÄÎÁΦ ÄϠæÏÌØÏ×ϧ ÔÏÞËÉ ÄÏÓÔÕÐÕ ÞÅÒÅÚ §§"
 
-#: lib/aps.c:530
+#: lib/aps.c:531
 msgid "wireless port, you need to wait a bit longer"
 msgstr "ÒÁĦϠÐÏÒÔ, ÔÏ ÷ÁÍ ÐÏÔÒ¦ÂÎÏ ÚÁÖÄÁÔÉ ÔÒÏÈÉ ÄÏ×ÛÅ "
 
-#: lib/aps.c:533
+#: lib/aps.c:534
 msgid "after pressing 'S'."
 msgstr "ЦÓÌÑ ÎÁÔÉÓËÁÎÎÑ 'S'."
 
@@ -436,251 +148,272 @@ msgid "Community name: "
 msgstr "ëÏÍ'ÀΦԦ: "
 
 #: lib/ap_search.c:49
-msgid "  NUM  IP ADDRESS       MIB TYPE    NAME"
+#, fuzzy
+msgid "  NUM  IP ADDRESS       MIB TYPE    FW TYPE (VERSION) AP NAME"
 msgstr "    #  IP áäòåóá        ôéð         ¶í'ñ"
 
-#: lib/ap_search.c:100
+#: lib/ap_search.c:106
 msgid "Please wait while scanning, or press 'Q' to quit."
 msgstr "úÁÞÅËÁÊÔÅ ÐÏËÉ ÊÄÅ ÐÏÛÕË ÁÂÏ ÎÁÔÉÓΦÔØ 'Q' ÄÌÑ ×ÉÈÏÄÕ. "
 
-#: lib/ap_search.c:116
+#: lib/ap_search.c:122
 msgid "Can't set broadcast option on socket. Press any key."
 msgstr ""
 "îÅ ÍÏÖÕ ×ÓÔÁÎÏ×ÉÔÉ ÂÒÏÁÄËÁÓÔÏ×ÉÊ ÓÏËÅÔ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ."
 
-#: lib/ap_search.c:125
+#: lib/ap_search.c:131
 msgid "Can't set multicast membership on socket. Press any key."
 msgstr "îÅ ÍÏÖÕ ×ÓÔÁÎÏ×ÉÔÉ ÍÕÌØÔÉËÁÓÔÏ×ÉÊ ÓÏËÅÔ. ðÒÏÄÏ×ÖÅÎÎÑ ÂÕÄØ ÑËÁ ËÌÁצÛÁ."
 
-#: lib/ap_search.c:132
+#: lib/ap_search.c:138
 msgid "Scanning via network interface:"
 msgstr "ûÕËÁ¤ÍÏ ÞÅÒÅÚ ÍÅÒÅÖÅ×ÉÊ ¦ÎÔÅÒÆÅÊÓ:"
 
-#: lib/ap_search.c:133
+#: lib/ap_search.c:139
 #, c-format
 msgid "  Index: %i"
 msgstr "  ¶ÎÄÅËÓ: %i"
 
-#: lib/ap_search.c:135
+#: lib/ap_search.c:141
 #, c-format
 msgid "  Name: %s"
 msgstr "  ¶Í'Ñ: %s"
 
-#: lib/ap_search.c:137
+#: lib/ap_search.c:143
 #, c-format
 msgid "  IP: %s"
 msgstr "  IP: %s"
 
-#: lib/ap_search.c:146
+#: lib/ap_search.c:152
 #, c-format
 msgid "Scanning for AP with MIB type: %s"
 msgstr "÷ÉÚÎÁÞÁÀ ÔÉРáò: %s"
 
-#: lib/ap_search.c:334
-msgid "Please enter SNMP community name that will be used for AP detection."
-msgstr "÷×ÅĦÔØ SNMP ËÏÍ'ÀΦԦ, ÝÏ ÂÕÄÅ ×ÉËÏÒÉÓÔÁÎÏ ÄÌÑ ÐÏÛÕËÕ áò"
-
-#: lib/ap_search.c:345
+#: lib/ap_search.c:378
 msgid "Access Points Search"
 msgstr "ðÏÛÕË ÔÏÞÏË ÄÏÓÔÕÐÕ"
 
-#: lib/ap_search.c:363
+#: lib/ap_search.c:396
 msgid "realloc() error."
 msgstr "ðÏÍÉÌËÁ realloc()."
 
-#: lib/ap_search.c:375
+#: lib/ap_search.c:408
 msgid "Network interface discovery error."
 msgstr "ðÏÍÉÌËÁ ×ÉÚÎÁÞÅÎÎÑ ÍÅÒÅÖÅ×ÉÈ ¦ÎÔÅÒÆÅÊÓ¦×."
 
-#: lib/ap_search.c:450
+#: lib/ap_search.c:483
 msgid "No local network interfaces found. Press any key."
 msgstr "îÅ ÚÎÁÊÄÅÎÏ ÍÅÒÅÖÅ×ÉÈ ¦ÎÔÅÒÆÅÊÓ¦×. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ."
 
-#: lib/ap_search.c:452
+#: lib/ap_search.c:485
 msgid "No directly reachable Access Points found. Press any key."
 msgstr "îÅ ÚÎÁÊÄÅÎÏ ÄÏÓÔÕÐÎÉÈ ÎÁÐÒÑÍÕ áò. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ."
 
-#: lib/ap_search.c:457
+#: lib/ap_search.c:490
 msgid "Single-screen maximum number of APs found."
 msgstr "úÎÁÊÄÅÎÏ ÍÁËÓÉÍÁÌØÎÕ ÄÌÑ ÐÒÏÇÒÁÍɠ˦ÌØ˦ÓÔØ áò."
 
-#: lib/ap_search.c:460
+#: lib/ap_search.c:493
 msgid "# - connect to AP; Q - quit"
 msgstr "# - Ð¦Ä'¤ÄÎÁÔÉÓÑ ÄÏ AP; Q - ×ÉÊÔÉ"
 
-#: lib/ap-utils.h:79
+#: lib/ap-utils.h:82
 msgid "MAC address: "
 msgstr "MAC ÁÄÒÅÓÁ: "
 
-#: lib/ap-utils.h:80
+#: lib/ap-utils.h:83
 msgid "[S] SNMP traps: "
 msgstr "[S] SNMP ÔÒÁÐÉ: "
 
-#: lib/ap-utils.h:82
+#: lib/ap-utils.h:85
 msgid "[C] Frequency channel: "
 msgstr "[C] þÁÓÔÏÔÎÉÊ ËÁÎÁÌ: "
 
-#: lib/ap-utils.h:84
+#: lib/ap-utils.h:87
 msgid "Receive  antenna:"
 msgstr "ðÒÉÊÍÁÀÞÁ ÁÎÔÅÎÁ:"
 
-#: lib/ap-utils.h:85
+#: lib/ap-utils.h:88
 msgid "[U] Left"
 msgstr "[U] ì¦×Á"
 
-#: lib/ap-utils.h:86
+#: lib/ap-utils.h:89
 msgid "[I] Right"
 msgstr "[I] ðÒÁ×Á"
 
-#: lib/ap-utils.h:87
+#: lib/ap-utils.h:90
 msgid "Transmit antenna:"
 msgstr "ðÅÒÅÄÁÀÞÁ ÁÎÔÅÎÁ:"
 
-#: lib/ap-utils.h:88
+#: lib/ap-utils.h:91
 msgid "[O] Left"
 msgstr "[O] ì¦×Á"
 
-#: lib/ap-utils.h:89
+#: lib/ap-utils.h:92
 msgid "[P] Right"
 msgstr "[P] ðÒÁ×Á"
 
-#: lib/ap-utils.h:90
+#: lib/ap-utils.h:93
 msgid "Diversity select:"
 msgstr "÷ɦҠÁÎÔÅÎÉ:"
 
-#: lib/ap-utils.h:91
+#: lib/ap-utils.h:94
 msgid "[T] Left"
 msgstr "[T] ì¦×Á"
 
-#: lib/ap-utils.h:92
+#: lib/ap-utils.h:95
 msgid "[Y] Right"
 msgstr "[Y] ðÒÁ×Á"
 
-#: lib/ap-utils.h:94
+#: lib/ap-utils.h:97
 msgid "Yes"
 msgstr "ôÁË"
 
-#: lib/ap-utils.h:95
+#: lib/ap-utils.h:98
 msgid "No"
 msgstr "î¦"
 
-#: lib/ap-utils.h:97
+#: lib/ap-utils.h:100
 msgid "On"
 msgstr "ôÁË"
 
-#: lib/ap-utils.h:98
+#: lib/ap-utils.h:101
 msgid "Off"
 msgstr "î¦"
 
-#: lib/ap-utils.h:100
+#: lib/ap-utils.h:103
 msgid "Basic"
 msgstr "ïÓÎÏ×ÎÉÊ"
 
-#: lib/ap-utils.h:102
+#: lib/ap-utils.h:105
 msgid "Press any key to continue."
 msgstr "âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ."
 
-#: lib/ap-utils.h:103
-msgid "Q - quit to menu. T - toggle polling mode, Other key - force update."
+#: lib/ap-utils.h:106
+#, fuzzy
+msgid "Q - quit to menu. T - toggle polling mode, Other key - force update"
 msgstr "Q - ×ÉÊÔÉ × ÍÅÎÀ. T - ÐÅÒÅÍËÎÕÔÉ ÒÅÖÉÍ ÚÁÐÉÔÕ, ¶ÎÛ¦ - ÐÏÎÏ×ÉÔÉ."
 
-#: lib/ap-utils.h:105
+#: lib/ap-utils.h:108
 msgid "Unable to write data to AP. Press any key to continue."
 msgstr "îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÄÁÎΦ × áò. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ."
 
-#: lib/ap-utils.h:106
+#: lib/ap-utils.h:109
 msgid "Unable to retrieve (valid) data from AP. Press any key to continue."
 msgstr "îÅ ÍÏÖÕ ÏÔÒÉÍÁÔÉ (צÒΦ) ÄÁÎΦ Ú áò. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ."
 
-#: lib/ap-utils.h:107
-msgid "Trying to retrieve data from AP. Please wait..."
+#: lib/ap-utils.h:110
+#, fuzzy
+msgid "Trying to retrieve data from AP - please wait (or press Q to quit)."
 msgstr "ïÔÒÉÍÕÀ ÄÁÎΦ - ÚÁÖĦÔØ ÂÕÄØ ÌÁÓËÁ..."
 
-#: lib/ap-utils.h:108
+#: lib/ap-utils.h:111
 msgid "Writing data to AP. Please wait..."
 msgstr "úÁÐÉÓÕÀ ÄÁÎΦ - ÚÁÖĦÔØ ÂÕÄØ ÌÁÓËÁ..."
 
-#: lib/ap-utils.h:109
+#: lib/ap-utils.h:112
 msgid "Configuration written to the AP. Press any key to continue."
 msgstr "ëÏÎƦÇÕÒÁæÀ ÚÁÐÉÓÁÎÏ × áò. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ."
 
-#: lib/ap-utils.h:110
+#: lib/ap-utils.h:113
 msgid "select() function error. Press any key."
 msgstr "ðÏÍÉÌËÁ ×ÉËÏÎÁÎÎÑ select(). âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ."
 
-#: lib/ap-utils.h:112
-msgid "Create socket error. Press any key."
-msgstr "ðÏÍÉÌËÁ ÓÔ×ÏÒÅÎÎÑ ÓÏËÅÔÕ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ"
+#: lib/ap-utils.h:114
+#, fuzzy
+msgid "socket() or bind() function error. Press any key."
+msgstr "ðÏÍÉÌËÁ ×ÉËÏÎÁÎÎÑ select(). âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ."
 
-#: lib/ap-utils.h:113
-msgid "Bind socket error. Press any key."
-msgstr "ðÏÍÉÌËÁ ÐÒÉ×`ÑÚËÉ ÓÏËÅÔÕ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ"
+#: lib/ap-utils.h:116
+msgid "Unable to write AP list file ~/.ap-config. Press any key."
+msgstr ""
+"îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÆÁÊÌ ÓÐÉÓËÕ AP ~/.ap-config. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ "
+"ÐÒÏÄÏ×ÖÅÎÎÑ"
+
+#: lib/ap-utils.h:117
+msgid "AP list file ~/.ap-config successfully written. Press any key."
+msgstr ""
+"æÁÊÌ ÓÐÉÓËÕ AP ~/.ap-config ×ÄÁÌÏ ÚÁÐÉÓÁÎÏ. îÁÔÉÓΦÔØ ÂÕÄØ ÑËÕ ËÌÁצÛÕ."
 
-#: lib/ap-utils.h:115
+#: lib/ap-utils.h:119
 msgid "Back to main menu"
 msgstr "ðÏ×ÅÒÎÕÔÉÓÑ ÄÏ ÍÅÎÀ"
 
-#: lib/ap-utils.h:116
+#: lib/ap-utils.h:120
 msgid "Exit program"
 msgstr "÷ÉÊÔÉ Ú ÐÒÏÇÒÁÍÉ"
 
-#: lib/ap-utils.h:117
+#: lib/ap-utils.h:121
 msgid "Run subshell. To return type 'exit'."
 msgstr "úÁÐÕÓÔÉÔÉ ÛÅÌÌ. äÌÑ ÐÏ×ÅÒÎÅÎÎÑ ÎÁÂÅÒ¦ÔØ 'exit'."
 
-#: lib/ap-utils.h:118
+#: lib/ap-utils.h:122
+msgid "Change polling mode interval"
+msgstr ""
+
+#: lib/ap-utils.h:123
 msgid "Short info about program"
 msgstr "ðÒÏ ÐÒÏÇÒÁÍÍÕ"
 
-#: lib/ap-utils.h:119
+#: lib/ap-utils.h:124
 msgid "Find connected Access Points"
 msgstr "úÎÁÊÔɠЦÄËÌÀÞÅΦ áò"
 
-#: lib/ap-utils.h:120
+#: lib/ap-utils.h:125
 msgid "Set connection options: ip and community"
 msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒÉ Ú`¤ÄÎÁÎÎÑ"
 
-#: lib/ap-utils.h:121
+#: lib/ap-utils.h:126
 msgid "Set encryption; edit WEP keys"
 msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÛÉÆÒÕ×ÁÎÎÑ, ÒÅÄÁÇÕ×ÁÔÉ WEP ËÌÀÞ¦"
 
-#: lib/ap-utils.h:122
-msgid "Set MAC authorization; edit MAC authorization table"
+#: lib/ap-utils.h:127
+#, fuzzy
+msgid "Set authorization; edit MAC authorization table"
 msgstr "÷ÓÔÁÎÏ×ÉÔÉ íáó Á×ÔÏÒÉÚÁæÀ; ÒÅÄÁÇÕ×ÁÔÉ ÔÁÂÌÉÃÀ Á×ÔÏÒÉÚÁæ§"
 
-#: lib/ap-utils.h:123
+#: lib/ap-utils.h:128
 msgid "Set SNMP community/password for access to the AP"
 msgstr "÷ÓÔÁÎÏ×ÉÔÉ SNMP ËÏÍ'ÀΦԦ/ÐÁÒÏÌØ ÄÌÑ ÄÏÓÔÕÐÕ ÄÏ áò"
 
-#: lib/ap-utils.h:124
+#: lib/ap-utils.h:129
 msgid "Get info about AP hardware and firmware"
 msgstr "ïÔÒÉÍÁÔÉ ¦ÎÆÏÒÍÁæÀ ÐÒÏ ÁÐÁÒÁÔÎÅ ÔÁ ÐÒÏÇÒÁÍÎÅ ÚÁÂÅÚÐÅÞÅÎÎÑ"
 
-#: lib/ap-utils.h:125
+#: lib/ap-utils.h:130
 msgid "Get wireless port statistics"
 msgstr "ïÔÒÉÍÁÔÉ ÓÔÁÔÉÓÔÉËÕ ÒÁĦϠÐÏÒÔÕ"
 
-#: lib/ap-utils.h:126
+#: lib/ap-utils.h:131
 msgid "Get list of currently associated stations (Access Point clients)"
 msgstr "ïÔÒÉÍÁÔÉ ÐÅÒÅ̦ˠÁÓÏæÊÏ×ÁÎÉÈ ÓÔÁÎæʠ(Ë̦¤ÎԦנáò)"
 
-#: lib/ap-utils.h:127
+#: lib/ap-utils.h:132
+msgid "Get link status in APclient mode"
+msgstr ""
+
+#: lib/ap-utils.h:133
 msgid "Get info and statistics from AP"
 msgstr "ïÔÒÉÍÁÔÉ ¦ÎÆÏÒÍÁæÀ ÔÁ ÓÔÁÔÉÓÔÉËÕ Ú áò"
 
-#: lib/ap-utils.h:128
+#: lib/ap-utils.h:134
 msgid "Set various configuration options"
 msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒÉ ËÏÎƦÇÕÒÁæ§"
 
-#: lib/ap-utils.h:130
+#: lib/ap-utils.h:136
 msgid "Associated stations"
 msgstr "áÓÏæÊÏ×ÁΦ ÓÔÁÎæ§"
 
-#: lib/ap-utils.h:132
+#: lib/ap-utils.h:137
+#, fuzzy
+msgid "AP Client link state"
+msgstr "óÔÁΠÚ×'ÑÚËÕ Ú AP"
+
+#: lib/ap-utils.h:139
 msgid "Polling: on"
 msgstr "ïÐÉÔÕ×ÁÎÎÑ: ÔÁË"
 
-#: lib/ap-utils.h:133
+#: lib/ap-utils.h:140
 msgid "Polling: off"
 msgstr "ïÐÉÔÕ×ÁÎÎÑ: Î¦"
 
@@ -732,159 +465,173 @@ msgstr "
 msgid "Configuration uploaded. Press any key to continue."
 msgstr "ëÏÎƦÇÕÒÁæÀ ÁËÔÉצÚÏ×ÁÎÏ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ."
 
-#: lib/common.c:30
+#: lib/common.c:32
 msgid "Access Point IP-address: "
 msgstr "¶ò ÁÄÒÅÓÁ áò: "
 
-#: lib/common.c:31
+#: lib/common.c:33
 msgid "Password (community): "
 msgstr "ðÁÒÏÌØ (ËÏÍ`ÀΦԦ): "
 
-#: lib/common.c:32
+#: lib/common.c:34
 msgid "Autodetect AP MIB properties? "
 msgstr "á×ÔÏÍÁÔÉÞÎÏ ×ÉÚÎÁÞÉÔÉ MIB ÔÉРáò? "
 
-#: lib/common.c:33
+#: lib/common.c:35
 msgid "AP MIB type: "
 msgstr "ôÉРMIB áò: "
 
-#: lib/common.c:34
+#: lib/common.c:36
 msgid "AP MIB vendor extensions: "
 msgstr "MIB áò ÒÏÚÛÉÒÅÎÎÑ ×ÉÒÏÂÎÉËÁ: "
 
-#: lib/common.c:35
+#: lib/common.c:37
 msgid "Do you want to use AP's name as its label? "
 msgstr "âÁÖÁ¤ÔÅ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ ÎÁÚ×Õ áò ÑË ÊÏÇϠͦÔËÕ? "
 
-#: lib/common.c:36
+#: lib/common.c:38
 msgid "Access Point label: "
 msgstr "í¦ÔËÁ áò: "
 
-#: lib/common.c:37
+#: lib/common.c:39
 msgid "Save connect-settings: "
 msgstr "úÂÅÒÅÇÔɠæ ÐÁÒÁÍÅÔÒÉ: "
 
-#: lib/common.c:100
+#: lib/common.c:40
+msgid "[P] Polling mode interval (tenths of second): "
+msgstr ""
+
+#: lib/common.c:41
+#, fuzzy
+msgid "P - change polling mode interval; Q - quit to menu"
+msgstr "# - ×ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒ; W - ÚÁÐÉÓÁÔÉ ËÏÎƦÇÕÒÁæÀ; Q - ×ÉÊÔÉ × ÍÅÎÀ"
+
+#: lib/common.c:89 src/ap-config.c:158
+msgid "About"
+msgstr "ðÒÏÇÒÁÍÁ"
+
+#: lib/common.c:106
 #, c-format
 msgid "From %s"
 msgstr "Ú %s"
 
-#: lib/common.c:102
+#: lib/common.c:108
 #, c-format
 msgid "Version %s"
 msgstr "÷ÅÒӦѠ%s"
 
-#: lib/common.c:105
+#: lib/common.c:111
 msgid "Written by Roman Festchook roma@polesye.net"
 msgstr "á×ÔÏÒ òÏÍÁΠæÅÝÕË roma@polesye.net"
 
-#: lib/common.c:107
-msgid "Portions by Jan Rafaj aputils@cedric.unob.cz"
+#: lib/common.c:113
+#, fuzzy
+msgid "and Jan Rafaj jr-aputils@cedric.unob.cz"
 msgstr "þÁÓÔËÏ×Ï Jan Rafaj aputils@cedric.unob.cz"
 
-#: lib/common.c:109
-msgid "Copyright (c) 2001-2004"
+#: lib/common.c:115
+#, fuzzy
+msgid "Copyright (c) 2001-2005"
 msgstr "Copyright (c) 2001-2004"
 
-#: lib/common.c:111
+#: lib/common.c:117
 msgid "Roman Festchook and Jan Rafaj"
 msgstr "òÏÍÁΠæÅÝÕË ÔÁ Jan Rafaj"
 
-#: lib/common.c:114
+#: lib/common.c:120
 msgid "This program is distributed under the terms"
 msgstr "ãÑ ÐÒÏÇÒÁÍÁ ÒÏÚÐÏ×ÓÀÄÖÕ¤ÔØÓÑ ÎÁ ÕÍÏ×ÁÈ"
 
-#: lib/common.c:116
+#: lib/common.c:122
 msgid "of the GNU General Public License version 2."
 msgstr "GNU úÁÇÁÌØÎϧ ðÕÂ̦ÞÎϧ ì¦ÃÅÎÚ¦§ ×ÅÒÓ¦§ 2"
 
-#: lib/common.c:118
+#: lib/common.c:124
 msgid "See the included COPYING file for details."
 msgstr "ÄÌÑ ¦ÎÆÏÒÍÁ槠ÄÉצÔØÓÑ ÆÁÊÌ COPYING"
 
-#: lib/common.c:175
+#: lib/common.c:165
 msgid "Connect options"
 msgstr "ïÐ槠Ú'¤ÄÎÁÎÎÑ"
 
-#: lib/common.c:183
+#: lib/common.c:173
 msgid "Enter IP address of your Access Point."
 msgstr "÷×ÅĦÔØ ¶ò ÁÄÒÅÓÕ ÔÏÞËÉ ÄÏÓÔÕÐÕ."
 
-#: lib/common.c:192
+#: lib/common.c:182
 msgid "Entered characters will not be displayed for security reason."
 msgstr "÷×ÅÄÅΦ ÓÉÍ×ÏÌɠΊצÄÏÂÒÁÖÕÀÔØÓѠڠͦÒËÕ×ÁΦ ÂÅÚÐÅËÉ."
 
-#: lib/common.c:266
+#: lib/common.c:249
 msgid "This label will be stored on HDD (independently on AP name!)."
 msgstr "í¦ÔËÕ ÂÕÄÅ ÚÂÅÒÅÖÅÎÏ ÎÁ ÖÏÒÓÔËÉÊ ÄÉÓË (ÎÅÚÁÌÅÖÎϠצĠÎÁÚ×É áò)."
 
-#: lib/common.c:361
+#: lib/common.c:362
 msgid "Trying to probe AP for MIB properties. Please wait..."
 msgstr "ïÐÉÔÕÀ áò Õ ÐÏÛÕËÕ ×ÌÁÓÔÉ×ÏÓÔÅÊ MIB - ÚÁÖĦÔØ ÂÕÄØ ÌÁÓËÁ..."
 
-#: lib/common.c:390
+#: lib/common.c:391
 msgid ""
 "Unable to determine AP MIB properties (no response from AP). Press any key."
 msgstr ""
 "îÅ ÍÏÖÕ ×ÉÚÎÁÞÉÔÉ ÔÉРáò MIB (ΊצÄÐÏצÄÁ¤). âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ "
 "ÐÒÏÄÏ×ÖÅÎÎÑ"
 
-#: lib/file.c:205
+#: lib/common.c:489 lib/set_oeminfo.c:221
+#, c-format
+msgid "%s%u"
+msgstr ""
+
+#: lib/common.c:491
+#, c-format
+msgid "(%0.1f seconds)"
+msgstr ""
+
+#: lib/file.c:199
 msgid "NUM  IP ADDRESS       MIB TYPE    MIB EXT.  LABEL"
 msgstr "  #  ¶ò ÁÄÒÅÓÁ        ôÉРMIB     MIB ÒÏÚ.  í¦ÔËÁ"
 
-#: lib/file.c:206
+#: lib/file.c:200
 msgid "Choose an AP to connect to"
 msgstr "÷ÉÂÅÒ¦ÔØ áò ÄÌÑ Ú`¤ÄÎÁÎÎÑ"
 
-#: lib/file.c:212
+#: lib/file.c:206
 msgid "1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll"
 msgstr ""
 "1-9,C Ú`¤ÄÎÁÎÎÑ; N ÎÏ×ÉÊ; D ×ÉÄÁÌÉÔÉ; W ÚÂÅÒÅÇÔÉ; Q ×ÉÊÔÉ; ÓÔÒ¦ÌËÉ ÐÒÏËÒÕÔËÁ"
 
-#: lib/file.c:268
+#: lib/file.c:257
 msgid "Connect to AP num:"
 msgstr "ú`ÜÄÎÁÔÉÓÑ Ú áò #:"
 
-#: lib/file.c:304
+#: lib/file.c:288
 msgid "Delete num:"
 msgstr "÷ÉÄÁÌÉÔÉ #:"
 
-#: lib/file.c:372
-msgid "AP list file ~/.ap-config successfully written. Press any key."
-msgstr ""
-"æÁÊÌ ÓÐÉÓËÕ AP ~/.ap-config ×ÄÁÌÏ ÚÁÐÉÓÁÎÏ. îÁÔÉÓΦÔØ ÂÕÄØ ÑËÕ ËÌÁצÛÕ."
-
-#: lib/file.c:376
-msgid "Unable to write AP list file ~/.ap-config. Press any key."
-msgstr ""
-"îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÆÁÊÌ ÓÐÉÓËÕ AP ~/.ap-config. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ "
-"ÐÒÏÄÏ×ÖÅÎÎÑ"
-
-#: lib/file.c:426
+#: lib/file.c:442
 msgid "Unable to write stations file. Press any key."
 msgstr ""
 "îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÆÁÊÌ ÓÐÉÓËÕ ÓÔÁÎæÊ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ."
 
-#: lib/file.c:428
+#: lib/file.c:444
 msgid "Stations file succesfully written. Press any key."
 msgstr "æÁÊÌ ÓÐÉÓËÕ ÓÔÁÎæʠ×ÄÁÌÏ ÚÁÐÉÓÁÎÏ. îÁÔÉÓΦÔØ ÂÕÄØ ÑËÕ ËÌÁצÛÕ."
 
-#: lib/input.c:33
+#: lib/input.c:32
 msgid "Invalid value. Press any key to continue."
 msgstr "îÅצÒÎÅ ÚÎÁÞÅÎÎÑ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ."
 
-#: lib/input.c:34
+#: lib/input.c:33
 #, c-format
 msgid "Value must be in range %u - %u. Press any key to continue."
 msgstr ""
 "úÎÁÞÅÎÎÑ ÍÁ¤ ÂÕÔÉ Õ ÄÉÁÐÁÚÏΦ %u - %u. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ"
 
-#: lib/input.c:412
+#: lib/input.c:460
 msgid "Y - Yes; Any other key - No (it's safer to answer No)"
 msgstr "(Y - ÔÁË; N - Î¦ (ÂÅÚÐÅÞΦÛŠצÄÐÏצÓÔɠΦ)"
 
-#: lib/oui.c:6056
+#: lib/oui.c:6061
 msgid "Unknown or Private"
 msgstr "îÅצÄÏÍÉÊ ÁÂÏ ÐÒÉ×ÁÔÎÉÊ"
 
@@ -923,7 +670,7 @@ msgid ""
 "key."
 msgstr "÷É ÎÅ ÍÏÖÅÔÅ ×ÉÍËÎÕÔÉ ÏÂÉÄצ ÁÎÔÅÎÉ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ."
 
-#: lib/scr.c:168
+#: lib/scr.c:157
 #, c-format
 msgid "Current AP: %s Type: %s Ext: %s"
 msgstr "ðÏÔÏÞÎÉÊ ÐÒÉÓÔÒ¦Ê: %s ôÉÐ: %s òÏÚ: %s"
@@ -957,6 +704,148 @@ msgid ""
 "[key] - set community/password; W - write config to AP; Q - quit to menu"
 msgstr "# - ×ÓÔÁÎÏ×ÉÔÉ ËÏÍ`ÀΦԦ/ÐÁÒÏÌØ; W - ÚÁÐÉÓÁÔÉ ÕÓÔÁÎÏ×ËÉ; Q - ×ÉȦÄ"
 
+#: lib/set_oeminfo.c:28
+#, fuzzy
+msgid "Info structure version: "
+msgstr "÷ÅÒӦѠÓÔÒÕËÔÕÒÉ: %u"
+
+#: lib/set_oeminfo.c:29
+#, fuzzy
+msgid "[M] Device MAC address: "
+msgstr "MAC ÁÄÒÅÓÁ: "
+
+#: lib/set_oeminfo.c:30
+#, fuzzy
+msgid "    Manufacturer with this OUI: "
+msgstr "ID ×ÉÒÏÂÎÉËÁ:"
+
+#: lib/set_oeminfo.c:31
+#, fuzzy
+msgid "[D] Regulatory domain: "
+msgstr "òÅÇÕÌÑÔÏÒΦ ÏÂÍÅÖÅÎÎÑ: %s"
+
+#: lib/set_oeminfo.c:32
+#, fuzzy
+msgid "[T] Product type: "
+msgstr "ôÉРÐÒÏÄÕËÔÕ: %u"
+
+#: lib/set_oeminfo.c:33
+#, fuzzy
+msgid "[E] OEM name: "
+msgstr "OEM ¶Í`Ñ:"
+
+#: lib/set_oeminfo.c:34
+#, fuzzy
+msgid "[I] OEM ID: "
+msgstr "[I] ¶ò: "
+
+#: lib/set_oeminfo.c:35
+#, fuzzy
+msgid "[N] Product name: "
+msgstr "¶Í`Ñ ÐÒÏÄÕËÔÕ:"
+
+#: lib/set_oeminfo.c:36
+#, fuzzy
+msgid "[H] Hardware revision: "
+msgstr "áÐÁÒÁÔÎÁ ×ÅÒÓ¦Ñ: %u"
+
+#: lib/set_oeminfo.c:37
+#, fuzzy
+msgid "[O] Country code: "
+msgstr "[O] ëÏÍÁÎÄÁ: "
+
+#: lib/set_oeminfo.c:38
+#, fuzzy
+msgid "[C] Default channel: "
+msgstr "[C] þÁÓÔÏÔÎÉÊ ËÁÎÁÌ: "
+
+#: lib/set_oeminfo.c:39
+#, fuzzy
+msgid "[A] Calibrated channels: "
+msgstr "[C] þÁÓÔÏÔÎÉÊ ËÁÎÁÌ: "
+
+#: lib/set_oeminfo.c:40
+msgid "[P] Nominal Tx Power (CR31) value for calibrated channels: "
+msgstr ""
+
+#: lib/set_oeminfo.c:41
+#, fuzzy
+msgid ""
+"Keys in brackets - set corresponding option; W - write conf; Q - quit to menu"
+msgstr "# - ×ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒ; W - ÚÁÐÉÓÁÔÉ ËÏÎƦÇÕÒÁæÀ; Q - ×ÉÊÔÉ × ÍÅÎÀ"
+
+#: lib/set_oeminfo.c:101
+msgid "THIS IS A SECRET MENU LEADING TO VERY DANGEROUS OPTIONS."
+msgstr ""
+
+#: lib/set_oeminfo.c:103
+msgid "It is intended only for WISPs and repair shops."
+msgstr ""
+
+#: lib/set_oeminfo.c:107
+msgid "It allows to set OEM information stored in the AP (like its"
+msgstr ""
+
+#: lib/set_oeminfo.c:109
+msgid "MAC address, manuf. name, OEM ID, etc.). BE ABSOLUTELY SURE"
+msgstr ""
+
+#: lib/set_oeminfo.c:111
+msgid "THAT YOU KNOW WHAT YOU ARE DOING, AND THAT YOU HAVE THE"
+msgstr ""
+
+#: lib/set_oeminfo.c:113
+msgid "LEGAL RIGHT TO DO ANY MODIFICATION. Disobserving of these"
+msgstr ""
+
+#: lib/set_oeminfo.c:115
+msgid "rules may lead you into a conflict with your local"
+msgstr ""
+
+#: lib/set_oeminfo.c:117
+msgid "regulations and/or law."
+msgstr ""
+
+#: lib/set_oeminfo.c:119
+msgid "Also be warned that the setting of any from these options"
+msgstr ""
+
+#: lib/set_oeminfo.c:121
+msgid "may DAMAGE YOUR AP (other reason why this menu is hidden)."
+msgstr ""
+
+#: lib/set_oeminfo.c:123
+msgid "Values changed here will NOT be restored upon reset"
+msgstr ""
+
+#: lib/set_oeminfo.c:125
+msgid "of the device to factory defaults! It is advisable to"
+msgstr ""
+
+#: lib/set_oeminfo.c:127
+msgid "write them down somewhere prior their changing."
+msgstr ""
+
+#: lib/set_oeminfo.c:129
+msgid "Finally, note that you need to use MANUFACTURER community, "
+msgstr ""
+
+#: lib/set_oeminfo.c:131
+msgid "in order to be able to do any OEM info modification."
+msgstr ""
+
+#: lib/set_oeminfo.c:133
+msgid "Proceed further only at your full risk and responsibility. "
+msgstr ""
+
+#: lib/set_oeminfo.c:135
+msgid "You got the warnings."
+msgstr ""
+
+#: lib/set_oeminfo.c:141
+msgid "OEM Info settings"
+msgstr ""
+
 #: lib/stat.c:29
 msgid "Ethernet Statistics"
 msgstr "óÔÁÔÉÓÔÉËÁ ÅÚÅÒÎÅÔ ÐÏÒÔÕ"
@@ -993,159 +882,186 @@ msgstr "
 msgid "System Info"
 msgstr "óÉÓÔÅÍÎÁ ¦ÎÆÏÒÍÁæÑ"
 
-#: lib/sysinfo.c:120
+#: lib/sysinfo.c:55 src/bridge.c:50
+msgid "Wireless Bridge Point to MultiPoint"
+msgstr "òÁĦÏÍÏÓÔ ÔÏÞËÁ-ÂÁÇÁÔÏÔÏÞËÁ"
+
+#: lib/sysinfo.c:56 src/bridge.c:51
+msgid "Access Point"
+msgstr "âÁÚÏ×Á ÓÔÁÎæÑ"
+
+#: lib/sysinfo.c:57 src/bridge.c:52
+msgid "Access Point client"
+msgstr "ë̦¤ÎÔÓØËÁ ÓÔÁÎæÑ"
+
+#: lib/sysinfo.c:58 src/bridge.c:53
+msgid "Wireless Bridge Point to Point"
+msgstr "òÁĦÏÍÏÓÔ ÔÏÞËÁ-ÔÏÞËÁ"
+
+#: lib/sysinfo.c:59 src/bridge.c:54
+msgid "Repeater"
+msgstr "ðÏ×ÔÏÒÀ×ÁÞ"
+
+#: lib/sysinfo.c:60 lib/sysinfo.c:315 lib/sysinfo.c:424 src/bridge.c:55
+msgid "unknown"
+msgstr "ÎÅצÄÏÍÉÊ"
+
+#: lib/sysinfo.c:144
 msgid "Device hardware/software/name info:"
 msgstr "¶ÎÆÏÒÍÁæѠÐÒÏ ÐÒÉÓÔҦʠÁÐÁÒÁÔÕÒÁ/ÐÒÏÇÒÁÍÁ/ÎÁÚ×Á:"
 
-#: lib/sysinfo.c:154
-msgid "Product name:"
+#: lib/sysinfo.c:172
+#, fuzzy, c-format
+msgid "Operational mode: %s"
+msgstr "[O] òÅÖÉÍ ÒÏÂÏÔÉ: "
+
+#: lib/sysinfo.c:182
+#, fuzzy
+msgid "Product name: "
 msgstr "¶Í`Ñ ÐÒÏÄÕËÔÕ:"
 
-#: lib/sysinfo.c:158
+#: lib/sysinfo.c:186
 #, c-format
 msgid "Product type: %u"
 msgstr "ôÉРÐÒÏÄÕËÔÕ: %u"
 
-#: lib/sysinfo.c:161
-msgid "OEM name:"
+#: lib/sysinfo.c:189
+#, fuzzy
+msgid "OEM name: "
 msgstr "OEM ¶Í`Ñ:"
 
-#: lib/sysinfo.c:168
+#: lib/sysinfo.c:196
 #, c-format
 msgid "Hardware revision: %u"
 msgstr "áÐÁÒÁÔÎÁ ×ÅÒÓ¦Ñ: %u"
 
-#: lib/sysinfo.c:176
+#: lib/sysinfo.c:204
 #, c-format
 msgid "Info structure version: %u"
 msgstr "÷ÅÒӦѠÓÔÒÕËÔÕÒÉ: %u"
 
-#: lib/sysinfo.c:179 lib/sysinfo.c:355
+#: lib/sysinfo.c:207 lib/sysinfo.c:383
 #, c-format
 msgid "Manufacturer OUI: %02X %02X %02X (%s)"
 msgstr "OUI ×ÉÒÏÂÎÉËÁ: %02X %02X %02X (%s)"
 
-#: lib/sysinfo.c:196
+#: lib/sysinfo.c:224
 #, c-format
 msgid "Uptime: %u days, %02u:%02u:%02u hours:mins:secs"
 msgstr "îÁÐÒÁÃØÏ×ÁÎÏ: %u ÄΦ×, :%02u:%02u.%02u ÇÏÄ:È×:ÓÅË"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "FHSS 2.4 GHz"
 msgstr "FHSS 2.4 ççÃ"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "DSSS 2.4 GHz"
 msgstr "ûðó 2.4 ççÃ"
 
-#: lib/sysinfo.c:284
+#: lib/sysinfo.c:312
 msgid "IR Baseband"
 msgstr "¶ÎÆÒÁÞÅÒ×ÏÎÉÊ"
 
-#: lib/sysinfo.c:285
+#: lib/sysinfo.c:313
 msgid "Commercial range 0..40 C"
 msgstr "ëÏÍÅÒæÊÎÉʠĦÁÐÁÚÏΠ0..40 C"
 
-#: lib/sysinfo.c:286
+#: lib/sysinfo.c:314
 msgid "Industrial range -30..70 C"
 msgstr "¶ÎÄÕÓÔÒ¦ÁÌØÎÉʠĦÁÐÁÚÏΠ-30..70 C"
 
-#: lib/sysinfo.c:287 lib/sysinfo.c:396
-msgid "unknown"
-msgstr "ÎÅצÄÏÍÉÊ"
-
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "manual"
 msgstr "×ÒÕÞÎÕ"
 
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "notsupported"
 msgstr "ΊЦÄÔÒÉÍÕ¤ÔØÓÑ"
 
-#: lib/sysinfo.c:289
+#: lib/sysinfo.c:317
 msgid "dynamic"
 msgstr "ĦÎÁͦÞÎÏ"
 
-#: lib/sysinfo.c:345
+#: lib/sysinfo.c:373
 msgid "Manufacturer:"
 msgstr "÷ÉÒÏÂÎÉË:"
 
-#: lib/sysinfo.c:350
+#: lib/sysinfo.c:378
 msgid "Manufacturer ID:"
 msgstr "ID ×ÉÒÏÂÎÉËÁ:"
 
-#: lib/sysinfo.c:361
+#: lib/sysinfo.c:389
 msgid "Product Name:"
 msgstr "¶Í`Ñ ÐÒÏÄÕËÔÕ:"
 
-#: lib/sysinfo.c:367
+#: lib/sysinfo.c:395
 msgid "Product ID:"
 msgstr "ID ÐÒÏÄÕËÔÕ:"
 
-#: lib/sysinfo.c:373
+#: lib/sysinfo.c:401
 msgid "Product Version:"
 msgstr "÷ÅÒӦѠÐÒÏÄÕËÔÕ:"
 
-#: lib/sysinfo.c:379
+#: lib/sysinfo.c:407
 #, c-format
 msgid "PHYType: %s"
 msgstr "ôÉРPHY: %s"
 
-#: lib/sysinfo.c:382
+#: lib/sysinfo.c:410
 #, c-format
 msgid "Temperature: %s"
 msgstr "ôÅÍÐÅÒÁÔÕÒÁ: %s"
 
-#: lib/sysinfo.c:390
+#: lib/sysinfo.c:418
 #, c-format
 msgid "Regulatory Domain: %s"
 msgstr "òÅÇÕÌÑÔÏÒΦ ÏÂÍÅÖÅÎÎÑ: %s"
 
-#: lib/sysinfo.c:391
+#: lib/sysinfo.c:419
 msgid "FCC (USA)"
 msgstr "FCC (óûá)"
 
-#: lib/sysinfo.c:392
+#: lib/sysinfo.c:420
 msgid "DOC (Canada)"
 msgstr "DOC (ëÁÎÁÄÁ)"
 
-#: lib/sysinfo.c:393
+#: lib/sysinfo.c:421
 msgid "ETSI (Europe)"
 msgstr "ETSI (´×ÒÏÐÁ)"
 
-#: lib/sysinfo.c:394
+#: lib/sysinfo.c:422
 msgid "Spain"
 msgstr "¶ÓÐÁΦÑ"
 
-#: lib/sysinfo.c:395
+#: lib/sysinfo.c:423
 msgid "France"
 msgstr "æÒÁÎæÑ"
 
-#: lib/sysinfo.c:396
+#: lib/sysinfo.c:424
 msgid "MKK (Japan)"
 msgstr "MKK (ñÐÏΦÑ)"
 
-#: lib/sysinfo.c:399
+#: lib/sysinfo.c:427
 #, c-format
 msgid "Transmit Power: %u mW"
 msgstr "ðÏÔÕÖΦÓÔØ: %u Í÷Ô"
 
-#: lib/sysinfo.c:429
+#: lib/sysinfo.c:457
 #, c-format
 msgid "WEP implemented: %s"
 msgstr "ð¦ÄÔÒÉÍËÁ WEP: %s"
 
-#: lib/sysinfo.c:432
+#: lib/sysinfo.c:460
 #, c-format
 msgid "Diversity: %s"
 msgstr "÷ɦҠÁÎÔÅÎÉ: %s"
 
-#: lib/sysinfo.c:460
+#: lib/sysinfo.c:488
 #, c-format
 msgid "Uptime: %u:%02u:%02u.%02u"
 msgstr "îÁÐÒÁÃØÏ×ÁÎÏ: %u:%02u:%02u.%02u"
 
-#: lib/sysinfo.c:480
+#: lib/sysinfo.c:508
 #, c-format
 msgid "IP  Address: %s"
 msgstr "IP ÁÄÒÅÓÁ: %s"
@@ -1186,31 +1102,35 @@ msgstr "
 msgid "Right"
 msgstr "ðÒÁ×Á"
 
-#: lib/test.c:86
+#: lib/test.c:79
+msgid "Devices with ATMEL12350 MIB not yet supported."
+msgstr ""
+
+#: lib/test.c:91
 msgid "Test mode"
 msgstr "ôÅÓÔÏ×ÉÊ ÒÅÖÉÍ"
 
-#: lib/test.c:89
+#: lib/test.c:94
 msgid "Using the \"Test mode\" may cause loss of your current"
 msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ ÔÅÓÔÏ×ÏÇÏ ÒÅÖÉÍÕ ÍÏÖÅ ÐÒÉÚ×ÅÓÔÉ ÄÏ ×ÔÒÁÔÉ"
 
-#: lib/test.c:90
+#: lib/test.c:95
 msgid "configuration."
 msgstr "ÐÏÔÏÞÎϧ ËÏÎƦÇÕÒÁæ§."
 
-#: lib/test.c:102
+#: lib/test.c:107
 msgid "Options:"
 msgstr "ðÁÒÁÍÅÔÒÉ:"
 
-#: lib/test.c:128
+#: lib/test.c:133
 msgid "Statistics:"
 msgstr "óÔÁÔÉÓÔÉËÁ:"
 
-#: lib/test.c:129
+#: lib/test.c:134
 msgid "Success Frames: 0 Failed Frames: 0"
 msgstr "÷ÄÁÌÉȠצËÏÎ: 0 îÅ×ÄÁÌÉȠצËÏÎ: 0"
 
-#: lib/test.c:190
+#: lib/test.c:195
 #, c-format
 msgid "Success Frames: %lu Failed Frames: %lu"
 msgstr "÷ÄÁÌÉȠצËÏÎ: %lu îÅ×ÄÁÌÉȠצËÏÎ: %lu"
@@ -1325,7 +1245,8 @@ msgid "[D] DTIM sending interval (beacons): "
 msgstr "[D] ¶ÎÔÅÒ×Á̠צÄÐÒÁ×ËÉ DTIM (ÂÅËÏÎÉ): "
 
 #: lib/wlan.c:48
-msgid "[T] SIFS time (msec): "
+#, fuzzy
+msgid "[T] SIFS time (2nd+ interframe spacing, usec): "
 msgstr "[T] þÁÓ SIFS (ÍÓÅË): "
 
 #: lib/wlan.c:49
@@ -1340,52 +1261,44 @@ msgstr "
 msgid "Long"
 msgstr "ÄÏ×ÇÁ"
 
-#: lib/wlan.c:237
+#: lib/wlan.c:239
 msgid "Wireless Settings"
 msgstr "ðÁÒÁÍÅÔÒÉ ÒÁĦÏÍÅÒÅÖ¦"
 
-#: lib/wlan.c:731
+#: lib/wlan.c:735
 msgid "Antenna Configuration:"
 msgstr "ëÏÎƦÇÕÒÁæѠÁÎÔÅÎ:"
 
-#: lib/wlan.c:748
+#: lib/wlan.c:752
 msgid "General Options"
 msgstr "úÁÇÁÌØΦ ÐÁÒÁÍÅÔÒÉ"
 
-#: lib/wlan.c:750
+#: lib/wlan.c:754
 msgid ""
 "UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu"
 msgstr "UIOPTY - ÁÎÔÅÎÁ; SCANLEDFR1234 - ×ÓÔÁÎÏ×ÉÔÉ; W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ"
 
-#: src/ap-config.c:54
-msgid "General"
-msgstr "çÏÌÏ×Φ"
-
-#: src/ap-config.c:54
-msgid "Set general options"
-msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÚÁÇÁÌØΦ ÐÁÒÁÍÅÔÒÉ"
-
-#: src/ap-config.c:55
-msgid "Advanced"
-msgstr "óÐÅæÁÌØΦ"
+#: src/ap-auth.c:32 src/auth.c:28
+msgid "AuthorizedMacTableString packet error"
+msgstr "ðÏÍÉÌËÏ×ÉÊ ÐÁËÅÔ AuthorizedMacTableString"
 
-#: src/ap-config.c:55
-msgid "Set advanced options"
-msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÓÐÅæÁÌØΦ ÐÁÒÁÍÅÔÒÉ"
+#: src/ap-auth.c:33
+msgid "Invalid data in source file"
+msgstr ""
 
-#: src/ap-config.c:89
-msgid "Reset AP."
-msgstr "òÅÓÔÁÒÔ"
+#: src/ap-auth.c:34
+msgid "Can't open file"
+msgstr ""
 
-#: src/ap-config.c:122
-msgid "Latest"
-msgstr "ðÏĦ§"
+#: src/ap-auth.c:35
+msgid "Can't write to file"
+msgstr ""
 
-#: src/ap-config.c:122
-msgid "Get info about latest events"
-msgstr "ïÔÒÉÍÁÔÉ ¦ÎÆÏÒÍÁæÀ ÐÒÏ ÏÓÔÁÎΦ ÐÏĦ§"
+#: src/ap-auth.c:36
+msgid "Error closing file"
+msgstr ""
 
-#: src/ap-mrtg.c:42
+#: src/ap-auth.c:44 src/ap-mrtg.c:41 src/ap-rrd.c:40
 msgid ""
 "\n"
 "Usage:\n"
@@ -1393,72 +1306,41 @@ msgstr ""
 "\n"
 "÷ÉËÏÒÉÓÔÁÎÎÑ:\n"
 
-#: src/ap-mrtg.c:44
+#: src/ap-auth.c:45
+msgid "\tap-auth -i ip -c community -d filename [-h]\n"
+msgstr ""
+
+#: src/ap-auth.c:46
 msgid ""
-"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-"
-"h] [-r]\n"
+"\tap-auth -i ip -c community -u filename [-h]\n"
 "\n"
 msgstr ""
-"\tap-mrtg -i ip -c ËÏÍ`ÀΦԦ -t ÔÉР[-b bssid] [-n name] [-a aptype] [-v] [-"
-"h] [-r]\n"
-"\n"
 
-#: src/ap-mrtg.c:46
+#: src/ap-auth.c:47
 msgid ""
-"Get stats from AP and return it in MRTG parsable format\n"
+"Change accesspoint's list of authorised MAC addresses\n"
 "\n"
 msgstr ""
-"ïÔÒÉÍÕ¤ ÄÁÎΦ Ú ÔÏÞËÉ ÄÏÓÔÕÐÕ ÔÁ ÐÏ×ÅÒÔÁ¤ §È Õ MRTG ÆÏÒÍÁÔ¦\n"
-"\n"
 
-#: src/ap-mrtg.c:47
+#: src/ap-auth.c:48 src/ap-mrtg.c:45 src/ap-rrd.c:45
 msgid "-i ip        - AP ip address\n"
 msgstr "-i ip        - ip ÁÄÒÅÓÁ ÔÏÞËÉ ÄÏÓÔÕÐÕ\n"
 
-#: src/ap-mrtg.c:48
+#: src/ap-auth.c:49 src/ap-mrtg.c:46 src/ap-rrd.c:46
 msgid "-c community - SNMP community string\n"
 msgstr "-c ËÏÍ`ÀΦԦ - SNMP ËÏÍ'ÀΦԦ\n"
 
-#: src/ap-mrtg.c:50
-msgid ""
-"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
-"or <l>ink quality in client mode\n"
-msgstr ""
-"-t ÔÉР      - ÔÉРÓÔÁÔÉÓÔÉËÉ w - ÒÁĦÏ, e - ÅÚÅÒÎÅÔ, s - ÁÓÏæÊÏ×ÁΦ "
-"ÓÔÁÎ槠ÁÂÏ l - Ñ˦ÓÔØ ËÁÎÁÌÕ Õ ÒÅÖÉͦ Ë̦ÅÎÔÁ\n"
-
-#: src/ap-mrtg.c:52
+#: src/ap-auth.c:50
 msgid ""
-"-b bssid     - mac address of the AP to which get link quality, only if "
-"type=l\n"
+"-d filename  - download list of authorised MAC addresses from AP to a file\n"
 msgstr ""
-"-b bssid     - ÍÁË-ÁÄÒÅÓÁ ÂÁÚÏ×ϧ ÓÔÁÎ槠ÄÏ ÑËϧ ×ÉÚÎÁÞÁÔÉ Ñ˦ÓÔØ "
-"̦ÎËÕ×ÉËÏÒÉÓÔÏ×ÕÊÔÅ Ô¦ÌØ˦ ÌÉÛÅ, ÑËÝÏ ÔÉÐ=l\n"
-
-#: src/ap-mrtg.c:53
-msgid "-n name     - AP name - for check only\n"
-msgstr "-n ÎÁÚ×Á     - ÎÁÚ×Á ÔÏÞËÉ ÄÏÓÔÕÐÕ (ÌÉÛÅ ÄÌÑ ÐÅÒÅצÒËÉ)\n"
 
-#: src/ap-mrtg.c:54
+#: src/ap-auth.c:52
 msgid ""
-"-a aptype        - AP type - 410 (default) or 510 for ATMEL12350's, like the "
-"ME-102\n"
-msgstr ""
-"-a ÔÉР          - ÔÉРÔÏÞËÉ ÄÏÓÔÕÐÕ - 410 (ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ) ÁÂÏ 510 ÄÌÑ "
-"ATMEL12350, ÑË íå-102\n"
-
-#: src/ap-mrtg.c:56
-msgid "-v           - report MRTG about problems connecting to AP\n"
-msgstr ""
-"-v           - ÐÏצÄÏÍÌÑÔÉ MRTG ÐÒÏ ÐÏÍÉÌËÉ Ú`¤ÄÎÁÎÎÑ Ú ÔÏÞËÏÀ ÄÏÓÔÕÐÕ\n"
-
-#: src/ap-mrtg.c:57
-msgid "-r           - reset AP when getting LinkQuality stats\n"
+"-u filename  - upload list of authorised MAC addresses from a file to AP\n"
 msgstr ""
-"-r           - ÒÅÓÔÁÒÔÕ×ÁÔÉ ÔÏÞËÕ ÄÏÓÔÕÐÕ ÐÒÉ ÏÔÒÉÍÁÎΦ ÄÁÎÎÉÈ ÐÒÏ Ñ˦ÓÔØ "
-"̦ÎËÕ\n"
 
-#: src/ap-mrtg.c:58
+#: src/ap-auth.c:54 src/ap-mrtg.c:55 src/ap-rrd.c:55
 msgid ""
 "-h           - print this help screen\n"
 "\n"
@@ -1466,97 +1348,809 @@ msgstr ""
 "-h           - ÎÁÄÒÕËÕ×ÁÔÉ ÃÅÊ ÅËÒÁΠÄÏÐÏÍÏÇÉ\n"
 "\n"
 
-#: src/ap-mrtg.c:59
-#, c-format
+#: src/ap-auth.c:55
+#, fuzzy, c-format
 msgid ""
-"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n"
+"ap-auth %s Copyright (c) 2004 Teemu Kiviniemi\n"
 "\n"
 msgstr ""
 "ap-mrtg %s Copyright (c) 2002-2003 òÏÍÁΠæÅÝÕË\n"
 "\n"
 
-#: src/ap-mrtg.c:143
-msgid "Invalid IP-address\n"
+#: src/ap-auth.c:138 src/ap-mrtg.c:132
+#, fuzzy
+msgid "Error: invalid IP-address.\n"
 msgstr "îÅצÒÎÁ ¶ò ÁÄÒÅÓÁ\n"
 
-#: src/ap-mrtg.c:188
-#, c-format
-msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n"
-msgstr "îÅצÒÎÉÊ ÔÉР'%s' - ÄÏÚ×ÏÌÅΦ ÔÉÐÉ 510 ÔÁ 410\n"
+#: src/ap-auth.c:203 src/ap-mrtg.c:204
+#, fuzzy
+msgid "Unable to determine AP MIB type (no response from AP)."
+msgstr ""
+"îÅ ÍÏÖÕ ×ÉÚÎÁÞÉÔÉ ÔÉРáò MIB (ΊצÄÐÏצÄÁ¤). âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ "
+"ÐÒÏÄÏ×ÖÅÎÎÑ"
 
-#: src/ap-mrtg.c:207
-msgid "Create socket error"
-msgstr "ðÏÍÉÌËÁ ÓÔ×ÏÒÅÎÎÑ ÓÏËÅÔÕ"
+#: src/ap-auth.c:211
+msgid "NWN devices are not yet supported."
+msgstr ""
 
-#: src/ap-mrtg.c:211
-msgid "Bind socket error"
-msgstr "ðÏÍÉÌËÁ ÐÒÉ×`ÑÚËÉ ÓÏËÅÔÕ"
+#: src/ap-config.c:43 src/bridge.c:201
+msgid "Bridging"
+msgstr "íÏÓÔ"
 
-#: src/ap-trapd.c:148
-#, c-format
-msgid "ap-trapd %s started%s%s."
-msgstr "ap-trapd %s ÓÔÁÒÔÏ×ÁÎÏ%s%s."
+#: src/ap-config.c:43
+msgid "Set bridging and IP-related options"
+msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÏÐ槠ÍÏÓÔÁ ÔÁ ¶ò ÐÒÏÔÏËÏÌÕ"
 
-#: src/ap-trapd.c:149
-msgid " on "
-msgstr " ÎÁ "
+#: src/ap-config.c:45 src/ap-config.c:114 src/ap-config.c:123 src/bridge.c:125
+msgid "Wireless"
+msgstr "òÁĦÏ"
 
-#: src/ap-trapd.c:155
-msgid "Unable to fork. Exiting."
-msgstr "îÅ ÍÏÖÕ ×ÉËÏÎÁÔÉ fork. ÷ÉÈÏÄÖÕ."
+#: src/ap-config.c:45
+msgid "Set wireless options"
+msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒÉ ÒÁĦÏÍÅÒÅÖ¦"
 
-#: src/ap-trapd.c:159
-msgid "Can't create socket. Exiting."
-msgstr "îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ÓÏËÅÔ. ÷ÉÈÏÄÖÕ."
+#: src/ap-config.c:46 src/ap-config.c:58
+msgid "Privacy"
+msgstr "ûÉÆÒÕ×ÁÎÎÑ"
 
-#: src/ap-trapd.c:165
-msgid "Can't bind socket. Exiting."
-msgstr "îÅ ÍÏÖÕ ÐÒÉ×`ÑÚÁÔÉ ÓÏËÅÔ. ÷ÉÈÏÄÖÕ."
+#: src/ap-config.c:47
+#, fuzzy
+msgid "Auth"
+msgstr "ðÒÏÇÒÁÍÁ"
 
-#: src/ap-trapd.c:172
-#, c-format
-msgid "Can't bind to device %s. Exiting."
-msgstr "îÅ ÍÏÖÕ ÐÒÉ×`ÑÚÁÔÉÓÑ ÄÏ ÐÒÉÓÔÒÏÀ %s. ÷ÉÈÏÄÖÕ."
+#: src/ap-config.c:48 src/ap-config.c:60
+msgid "Community"
+msgstr "ëÏÍ'ÀΦԦ"
 
-#: src/ap-trapd.c:183
+#: src/ap-config.c:49
+msgid "Radio"
+msgstr "ðÅÒÅÄÁ×ÁÞ"
+
+#: src/ap-config.c:49
+msgid "Set radio signal power and antenna options"
+msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÏÔÕÖΦÓÔØ ÐÅÒÅÄÁ×ÁÞÁ ÔÁ ÁÎÔÅÎÉ"
+
+#: src/ap-config.c:56
+msgid "General"
+msgstr "çÏÌÏ×Φ"
+
+#: src/ap-config.c:56
+msgid "Set general options"
+msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÚÁÇÁÌØΦ ÐÁÒÁÍÅÔÒÉ"
+
+#: src/ap-config.c:57
+msgid "Advanced"
+msgstr "óÐÅæÁÌØΦ"
+
+#: src/ap-config.c:57
+msgid "Set advanced options"
+msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÓÐÅæÁÌØΦ ÐÁÒÁÍÅÔÒÉ"
+
+#: src/ap-config.c:59
+msgid "MAC auth"
+msgstr "íáó ÄÏÓÔÕÐ"
+
+#: src/ap-config.c:82
+msgid "Upload"
+msgstr "úÁ×ÁÎÔÁÖÉÔÉ"
+
+#: src/ap-config.c:82
+msgid "Activate current configuration"
+msgstr "áËÔÉצÚÕ×ÁÔÉ ÐÏÔÏÞÎÕ ËÏÎƦÇÕÒÁæÀ"
+
+#: src/ap-config.c:83
+msgid "Defaults"
+msgstr "æÁÂÒ¦ÞΦ"
+
+#: src/ap-config.c:83
+msgid "Restore factory default settings"
+msgstr "÷¦ÄÎÏ×ÉÔÉ ÆÁÂÒ¦ÞΦ ÎÁÓÔÒÏÊËÉ."
+
+#: src/ap-config.c:84 src/ap-config.c:91
+msgid "Reset"
+msgstr "òÅÓÔÁÒÔ"
+
+#: src/ap-config.c:85
+msgid "Reset AP. All not uploaded configuration will be lost"
+msgstr "ðÅÒÅÚÁ×ÁÎÔÁÖÉÔÉ áò. îÅÁËÔÉצÚÏ×ÁΦ ÚͦÎÉ Õ ËÏÎƦÇÕÒÁ槠ÂÕÄÁ ×ÔÒÁÞÅÎÏ."
+
+#: src/ap-config.c:86
+msgid "TestMode"
+msgstr "ôÅÓÔ"
+
+#: src/ap-config.c:86
+msgid "Put Access Point in test mode"
+msgstr "ðÏÓÔÁ×ÉÔÉ áò Õ ÔÅÓÔÏ×ÉÊ ÒÅÖÉÍ"
+
+#: src/ap-config.c:91
+msgid "Reset AP."
+msgstr "òÅÓÔÁÒÔ"
+
+#: src/ap-config.c:112 src/ap-config.c:122
+msgid "SysInfo"
+msgstr "óÉÓÔÅÍÁ"
+
+#: src/ap-config.c:113 src/bridge.c:124 src/bridge.c:127
+msgid "Ethernet"
+msgstr "åÚÅÒÎÅÔ"
+
+#: src/ap-config.c:113
+msgid "Get ethernet port statistics"
+msgstr "ïÔÒÉÍÁÔÉ ÓÔÁÔÉÓÔÉËÕ ÅÚÅÒÎÅÔ ÐÏÒÔÕ"
+
+#: src/ap-config.c:115 src/ap-config.c:124
+msgid "Stations"
+msgstr "óÔÁÎæ§"
+
+#: src/ap-config.c:116
+#, fuzzy
+msgid "AP link"
+msgstr "óÔÁΠÚ×'ÑÚËÕ Ú AP"
+
+#: src/ap-config.c:117
+msgid "KnownAPs"
+msgstr "÷¦ÄÏͦôÏÞËÉ"
+
+#: src/ap-config.c:117
+msgid "Get info about known Access Points"
+msgstr "ïÔÒÉÍÁÔÉ ¦ÎÆÏÒÍÁÃÉÀ ÐÒϠצÄÏͦ ôÏÞËÉ äÏÓÔÕÐÕ"
+
+#: src/ap-config.c:125
+msgid "Latest"
+msgstr "ðÏĦ§"
+
+#: src/ap-config.c:125
+msgid "Get info about latest events"
+msgstr "ïÔÒÉÍÁÔÉ ¦ÎÆÏÒÍÁæÀ ÐÒÏ ÏÓÔÁÎΦ ÐÏĦ§"
+
+#: src/ap-config.c:150
+msgid "Info"
+msgstr "¶ÎÆÏÒÍÁæÑ"
+
+#: src/ap-config.c:151
+msgid "Config"
+msgstr "õÓÔÁÎÏ×ËÉ"
+
+#: src/ap-config.c:152
+msgid "Commands"
+msgstr "ëÏÍÁÎÄÉ"
+
+#: src/ap-config.c:152
+msgid "Execute commands on Access Point"
+msgstr "÷ÉËÏÎÁÔÉ ËÏÍÁÎÄÉ ÎÁ áò"
+
+#: src/ap-config.c:154
+msgid "Connect"
+msgstr "ú'¤ÄÎÁÎÎÑ"
+
+#: src/ap-config.c:155
+msgid "Search"
+msgstr "ðÏÛÕË"
+
+#: src/ap-config.c:156
+#, fuzzy
+msgid "Polling"
+msgstr "ïÐÉÔÕ×ÁÎÎÑ: ÔÁË"
+
+#: src/ap-config.c:157
+msgid "Shell"
+msgstr "ïÂÏÌÏÎËÁ"
+
+#: src/ap-config.c:159
+msgid "Exit"
+msgstr "÷ÉȦÄ"
+
+#: src/ap-config.c:218
+#, c-format
+msgid "Wireless Access Point Configurator ver. %s"
+msgstr "ëÏÎƦÇÕÒÁÔÏÒ ÔÏÞËÉ ÄÏÓÔÕÐÕ ÒÁĦÏÍÅÒÅÖ¦ ×ÅÒ. %s"
+
+#: src/aplink.c:25
+msgid "RSSI:     ["
+msgstr ""
+
+#: src/aplink.c:26
+msgid "RSSI avg: ["
+msgstr ""
+
+#: src/aplink.c:27
+msgid "RSSI top: ["
+msgstr ""
+
+#: src/aplink.c:28
+msgid "RSSI rou: ["
+msgstr ""
+
+#: src/aplink.c:29
+#, fuzzy
+msgid ""
+"P - pause, T - toggle graph view, Q - quit to menu, Other key - force update."
+msgstr "Q - ×ÉÊÔÉ × ÍÅÎÀ. T - ÐÅÒÅÍËÎÕÔÉ ÒÅÖÉÍ ÚÁÐÉÔÕ, ¶ÎÛ¦ - ÐÏÎÏ×ÉÔÉ."
+
+#: src/aplink.c:81
+msgid "RSSI [%]"
+msgstr ""
+
+#: src/aplink.c:82
+msgid "RSSI average [%]"
+msgstr ""
+
+#: src/aplink.c:83
+msgid "RSSI rounded [%]"
+msgstr ""
+
+#: src/aplink.c:84
+#, fuzzy
+msgid "Link Quality [%]"
+msgstr "; LQ: ñ˦ÓÔØ Ú'¤ÄÎÁÎÎÑ [%]"
+
+#: src/aplink.c:133
+msgid "Not available - device must have firmware with necessary "
+msgstr ""
+
+#: src/aplink.c:135
+msgid "vendor extensions and be in either 'Access Point client'"
+msgstr ""
+
+#: src/aplink.c:137
+msgid "or 'Repeater' mode."
+msgstr ""
+
+#: src/ap-mrtg.c:42
+#, fuzzy
+msgid ""
+"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-v] [-h] [-r]\n"
+"\n"
+msgstr ""
+"\tap-mrtg -i ip -c ËÏÍ`ÀΦԦ -t ÔÉР[-b bssid] [-n name] [-a aptype] [-v] [-"
+"h] [-r]\n"
+"\n"
+
+#: src/ap-mrtg.c:44
+msgid ""
+"Get stats from AP and return it in MRTG parsable format\n"
+"\n"
+msgstr ""
+"ïÔÒÉÍÕ¤ ÄÁÎΦ Ú ÔÏÞËÉ ÄÏÓÔÕÐÕ ÔÁ ÐÏ×ÅÒÔÁ¤ §È Õ MRTG ÆÏÒÍÁÔ¦\n"
+"\n"
+
+#: src/ap-mrtg.c:47
+#, fuzzy
+msgid ""
+"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
+"or <l>ink quality (last one will only "
+msgstr ""
+"-t ÔÉР      - ÔÉРÓÔÁÔÉÓÔÉËÉ w - ÒÁĦÏ, e - ÅÚÅÒÎÅÔ, s - ÁÓÏæÊÏ×ÁΦ "
+"ÓÔÁÎ槠ÁÂÏ l - Ñ˦ÓÔØ ËÁÎÁÌÕ Õ ÒÅÖÉͦ Ë̦ÅÎÔÁ\n"
+
+#: src/ap-mrtg.c:49
+msgid "work with ATMEL410 MIB devices in AP Client mode)\n"
+msgstr ""
+
+#: src/ap-mrtg.c:50
+#, fuzzy
+msgid ""
+"-b bssid     - mac address of the AP from which get link quality, only if "
+"type=l\n"
+msgstr ""
+"-b bssid     - ÍÁË-ÁÄÒÅÓÁ ÂÁÚÏ×ϧ ÓÔÁÎ槠ÄÏ ÑËϧ ×ÉÚÎÁÞÁÔÉ Ñ˦ÓÔØ "
+"̦ÎËÕ×ÉËÏÒÉÓÔÏ×ÕÊÔÅ Ô¦ÌØ˦ ÌÉÛÅ, ÑËÝÏ ÔÉÐ=l\n"
+
+#: src/ap-mrtg.c:52
+#, fuzzy
+msgid "-n name      - AP name - for check only\n"
+msgstr "-n ÎÁÚ×Á     - ÎÁÚ×Á ÔÏÞËÉ ÄÏÓÔÕÐÕ (ÌÉÛÅ ÄÌÑ ÐÅÒÅצÒËÉ)\n"
+
+#: src/ap-mrtg.c:53
+msgid "-v           - report MRTG about problems connecting to AP\n"
+msgstr ""
+"-v           - ÐÏצÄÏÍÌÑÔÉ MRTG ÐÒÏ ÐÏÍÉÌËÉ Ú`¤ÄÎÁÎÎÑ Ú ÔÏÞËÏÀ ÄÏÓÔÕÐÕ\n"
+
+#: src/ap-mrtg.c:54 src/ap-rrd.c:54
+msgid "-r           - reset AP when getting LinkQuality stats\n"
+msgstr ""
+"-r           - ÒÅÓÔÁÒÔÕ×ÁÔÉ ÔÏÞËÕ ÄÏÓÔÕÐÕ ÐÒÉ ÏÔÒÉÍÁÎΦ ÄÁÎÎÉÈ ÐÒÏ Ñ˦ÓÔØ "
+"̦ÎËÕ\n"
+
+#: src/ap-mrtg.c:56
+#, c-format
+msgid ""
+"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n"
+"\n"
+msgstr ""
+"ap-mrtg %s Copyright (c) 2002-2003 òÏÍÁΠæÅÝÕË\n"
+"\n"
+
+#: src/ap-rrd.c:32
+#, c-format
+msgid "Error getting data from AP %s\n"
+msgstr ""
+
+#: src/ap-rrd.c:42
+#, fuzzy
+msgid ""
+"\tap-rrd -i ip -c community -t type -d db_file [-b bssid] [-n name] [-a "
+"aptype] [-h] [-r] \n"
+"\n"
+msgstr ""
+"\tap-mrtg -i ip -c ËÏÍ`ÀΦԦ -t ÔÉР[-b bssid] [-n name] [-a aptype] [-v] [-"
+"h] [-r]\n"
+"\n"
+
+#: src/ap-rrd.c:44
+#, fuzzy
+msgid ""
+"Get stats from AP and put it in to specified RRDtool database\n"
+"\n"
+msgstr ""
+"ïÔÒÉÍÕ¤ ÄÁÎΦ Ú ÔÏÞËÉ ÄÏÓÔÕÐÕ ÔÁ ÐÏ×ÅÒÔÁ¤ §È Õ MRTG ÆÏÒÍÁÔ¦\n"
+"\n"
+
+#: src/ap-rrd.c:48
+msgid ""
+"-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations "
+"or <l>ink quality in client mode\n"
+msgstr ""
+"-t ÔÉР      - ÔÉРÓÔÁÔÉÓÔÉËÉ w - ÒÁĦÏ, e - ÅÚÅÒÎÅÔ, s - ÁÓÏæÊÏ×ÁΦ "
+"ÓÔÁÎ槠ÁÂÏ l - Ñ˦ÓÔØ ËÁÎÁÌÕ Õ ÒÅÖÉͦ Ë̦ÅÎÔÁ\n"
+
+#: src/ap-rrd.c:49
+msgid "-d db_file   - RRD database file with full path\n"
+msgstr ""
+
+#: src/ap-rrd.c:51
+msgid ""
+"-b bssid     - mac address of the AP to which get link quality, only if "
+"type=l\n"
+msgstr ""
+"-b bssid     - ÍÁË-ÁÄÒÅÓÁ ÂÁÚÏ×ϧ ÓÔÁÎ槠ÄÏ ÑËϧ ×ÉÚÎÁÞÁÔÉ Ñ˦ÓÔØ "
+"̦ÎËÕ×ÉËÏÒÉÓÔÏ×ÕÊÔÅ Ô¦ÌØ˦ ÌÉÛÅ, ÑËÝÏ ÔÉÐ=l\n"
+
+#: src/ap-rrd.c:52
+msgid "-n name     - AP name - for check only\n"
+msgstr "-n ÎÁÚ×Á     - ÎÁÚ×Á ÔÏÞËÉ ÄÏÓÔÕÐÕ (ÌÉÛÅ ÄÌÑ ÐÅÒÅצÒËÉ)\n"
+
+#: src/ap-rrd.c:53
+#, fuzzy
+msgid ""
+"-a aptype    - AP type - 410 (default) or 510 for ATMEL12350's, like the ME-"
+"102\n"
+msgstr ""
+"-a ÔÉР          - ÔÉРÔÏÞËÉ ÄÏÓÔÕÐÕ - 410 (ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ) ÁÂÏ 510 ÄÌÑ "
+"ATMEL12350, ÑË íå-102\n"
+
+#: src/ap-rrd.c:56
+#, fuzzy, c-format
+msgid ""
+"ap-rrd %s Copyright (c) 2002-2004 Roman Festchook\n"
+"\n"
+msgstr ""
+"ap-mrtg %s Copyright (c) 2002-2003 òÏÍÁΠæÅÝÕË\n"
+"\n"
+
+#: src/ap-rrd.c:133
+msgid "Invalid IP-address\n"
+msgstr "îÅצÒÎÁ ¶ò ÁÄÒÅÓÁ\n"
+
+#: src/ap-rrd.c:179
+#, c-format
+msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n"
+msgstr "îÅצÒÎÉÊ ÔÉР'%s' - ÄÏÚ×ÏÌÅΦ ÔÉÐÉ 510 ÔÁ 410\n"
+
+#: src/ap-tftp.c:84
+#, fuzzy
+msgid "yes"
+msgstr "ôÁË"
+
+#: src/ap-tftp.c:85
+#, fuzzy
+msgid "no"
+msgstr "¶ÎÆÏÒÍÁæÑ"
+
+#: src/ap-tftp.c:87
+msgid "Error while read()ing firmware file"
+msgstr ""
+
+#: src/ap-tftp.c:100
+msgid "Undefined error"
+msgstr ""
+
+#: src/ap-tftp.c:101
+msgid "File not found"
+msgstr ""
+
+#: src/ap-tftp.c:102
+#, fuzzy
+msgid "Access violation"
+msgstr "âÁÚÏ×Á ÓÔÁÎæÑ"
+
+#: src/ap-tftp.c:103
+msgid "Disk full or allocation error"
+msgstr ""
+
+#: src/ap-tftp.c:104
+msgid "Illegal TFTP operation"
+msgstr ""
+
+#: src/ap-tftp.c:105
+msgid "Unknown transfer ID"
+msgstr ""
+
+#: src/ap-tftp.c:106
+msgid "File already exists"
+msgstr ""
+
+#: src/ap-tftp.c:107
+msgid "No such user"
+msgstr ""
+
+#: src/ap-tftp.c:157
+msgid "Remote-filename too long.\n"
+msgstr ""
+
+#: src/ap-tftp.c:183
+#, c-format
+msgid "%sError in read()"
+msgstr ""
+
+#: src/ap-tftp.c:212
+#, c-format
+msgid "sending %u bytes\n"
+msgstr ""
+
+#: src/ap-tftp.c:221
+#, c-format
+msgid "%sError in sendto()"
+msgstr ""
+
+#: src/ap-tftp.c:244
+#, c-format
+msgid "%sError in recvfrom()"
+msgstr ""
+
+#: src/ap-tftp.c:256
+#, c-format
+msgid "\rProgress: uploaded %3i%%."
+msgstr ""
+
+#: src/ap-tftp.c:267
+#, c-format
+msgid "%sMalformed packet received. Aborting.\n"
+msgstr ""
+
+#: src/ap-tftp.c:276
+#, c-format
+msgid "%sTimed out waiting for response from server (%i/%i).\n"
+msgstr ""
+
+#: src/ap-tftp.c:283
+#, c-format
+msgid "%sError in select()"
+msgstr ""
+
+#: src/ap-tftp.c:297
+#, c-format
+msgid "Received %d bytes: %04x %04x\n"
+msgstr ""
+
+#: src/ap-tftp.c:308
+#, c-format
+msgid "%sError: server responded with %s. Aborting.\n"
+msgstr ""
+
+#: src/ap-tftp.c:315
+#, c-format
+msgid "%sFlash programming in progress...\n"
+msgstr ""
+
+#: src/ap-tftp.c:317
+msgid "Finished successfully.\n"
+msgstr ""
+
+#: src/ap-tftp.c:335
+msgid "PLEASE BE _ABSOLUTELY_ SURE TO READ MANPAGE PRIOR USE!!!\n"
+msgstr ""
+
+#: src/ap-tftp.c:337
+#, c-format
+msgid ""
+"\n"
+"Usage: %s -i IP -f firmware_file.rom [-c community] [-h]\n"
+msgstr ""
+
+#: src/ap-tftp.c:361
+msgid "TFTP client for upgrading firmware in ATMEL AT76C510 WiSOC-based APs.\n"
+msgstr ""
+
+#: src/ap-tftp.c:363
+msgid "(C) 2004-2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>\n"
+msgstr ""
+
+#: src/ap-tftp.c:379
+msgid "Error: invalid IP address format given.\n"
+msgstr ""
+
+#: src/ap-tftp.c:405
+#, fuzzy
+msgid "Error: invalid argument combination.\n"
+msgstr "îÅצÒÎÁ ¶ò ÁÄÒÅÓÁ\n"
+
+#: src/ap-tftp.c:412
+msgid "Error while open()ing firmware file"
+msgstr ""
+
+#: src/ap-tftp.c:419 src/ap-tftp.c:472
+msgid "Error: invalid firmware file given.\n"
+msgstr ""
+
+#: src/ap-tftp.c:461
+#, c-format
+msgid ""
+"Firmware file contains:\n"
+"- string \"ATMEL\": %s\n"
+"- string \"802.11 AP\": %s\n"
+"- string \"atbrfirm.bin\": %s\n"
+"- string \"atsingle.bin\": %s\n"
+msgstr ""
+
+#: src/ap-tftp.c:485
+#, c-format
+msgid ""
+"Using:\n"
+"- server: %s\n"
+"- firmware file: \"%s\"\n"
+"- name used for upload: \"%s\"\n"
+msgstr ""
+
+#: src/ap-tftp.c:568
+msgid ""
+"Error: device with the given IP does not seem to run SmartBridges firmware.\n"
+msgstr ""
+
+#: src/ap-tftp.c:574
+msgid "Error: SNMP authorization error or device unavailable.\n"
+msgstr ""
+
+#: src/ap-tftp.c:653
+msgid "Error while lseek()ing in firmware file\n"
+msgstr ""
+
+#: src/ap-trapd.c:150
+#, c-format
+msgid "ap-trapd %s started%s%s."
+msgstr "ap-trapd %s ÓÔÁÒÔÏ×ÁÎÏ%s%s."
+
+#: src/ap-trapd.c:151
+msgid " on "
+msgstr " ÎÁ "
+
+#: src/ap-trapd.c:157
+msgid "Unable to fork. Exiting."
+msgstr "îÅ ÍÏÖÕ ×ÉËÏÎÁÔÉ fork. ÷ÉÈÏÄÖÕ."
+
+#: src/ap-trapd.c:161
+msgid "Can't create socket. Exiting."
+msgstr "îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ÓÏËÅÔ. ÷ÉÈÏÄÖÕ."
+
+#: src/ap-trapd.c:167
+msgid "Can't bind socket. Exiting."
+msgstr "îÅ ÍÏÖÕ ÐÒÉ×`ÑÚÁÔÉ ÓÏËÅÔ. ÷ÉÈÏÄÖÕ."
+
+#: src/ap-trapd.c:174
+#, c-format
+msgid "Can't bind to device %s. Exiting."
+msgstr "îÅ ÍÏÖÕ ÐÒÉ×`ÑÚÁÔÉÓÑ ÄÏ ÐÒÉÓÔÒÏÀ %s. ÷ÉÈÏÄÖÕ."
+
+#: src/ap-trapd.c:185
 #, c-format
 msgid "Unable to process username %s. Error: %m."
 msgstr "îÅ ÍÏÖÕ ÏÂÒÏÂÉÔÉ ÌÏǦΠ%s. ðÏÍÉÌËÁ: %m."
 
-#: src/ap-trapd.c:188
+#: src/ap-trapd.c:190
 #, c-format
 msgid "Unable to change to uid %d."
 msgstr "îÅ ÍÏÖÕ ÐÅÒÅÚÁÐÕÓÔÉÔÉÓؠЦĠuid %d. "
 
-#: src/ap-trapd.c:235
+#: src/ap-trapd.c:239
 #, c-format
 msgid ""
 "Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s."
 msgstr ""
 "ïÔÒÉÍÁÎÏ ÎÅצÄÏÍÉÊ SNMP ×ÅÒ %d ÔÒÁÐ. ú %s:%d. áÇÅÎÔ: %s. ëÏÍ`ÀΦԦ: %s."
 
-#: src/ap-trapd.c:307
-#, c-format
-msgid "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d"
+#: src/ap-trapd.c:311
+#, fuzzy, c-format
+msgid "Agent:v%d %s (%s@%s:%d) Trap %i: %s%s%s. SysUptime %d:%02d:%02d.%02d"
 msgstr "áÇÅÎÔ:v%d %s (%s@%s:%d) %s%s%s. îÁÐÒÁÃØÏ×ÁÎÏ %d:%02d:%02d.%02d"
 
-#: src/auth_mac.c:33
-msgid "NUM     MAC address"
+#: src/auth.c:30
+msgid "APClient authorization credentials"
+msgstr ""
+
+#: src/auth.c:32
+msgid "[A] MAC authorization: "
+msgstr "[A] Máó Á×ÔÏÒÉÚÁæÑ: "
+
+#: src/auth.c:33
+msgid "Enter MAC: "
+msgstr "÷×ÅĦÔØ íáó:"
+
+#: src/auth.c:34
+msgid "Delete Num: "
+msgstr "÷ÉÄÁÌÉÔÉ ÎÏÍÅÒ:"
+
+#: src/auth.c:35
+#, fuzzy
+msgid " NUM     MAC address     "
 msgstr "#       íáó ÁÄÒÅÓÁ"
 
+#: src/auth.c:36
+#, fuzzy
+msgid "A: auth; N: new; D: del; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A Á×ÔÏÒÉÚÁæÑ; N ÎÏ×Á; D ×ÉÄÁÌÉÔÉ; ÓÔÒ¦ÌËÉ ÐÅÒÅÇÌÑÄ; W ÚÁÐÉÓÁÔÉ; Q ×ÉÊÔÉ"
+
+#: src/auth.c:38
+msgid "[I] Radius server IP: "
+msgstr ""
+
+#: src/auth.c:39
+#, fuzzy
+msgid "[P] Radius server port: "
+msgstr "[P] çÏÌÏ×ΦʠÐÏÒÔ: "
+
+#: src/auth.c:40
+msgid "[S] Radius server secret: "
+msgstr ""
+
+#: src/auth.c:41
+#, fuzzy
+msgid "[T] Reauthorization time (minutes): "
+msgstr "[A] Máó Á×ÔÏÒÉÚÁæÑ: "
+
+#: src/auth.c:42
+msgid "[F] Radius source port: "
+msgstr ""
+
+#: src/auth.c:43
+#, fuzzy
+msgid ""
+"A: auth; N: new; D: del; IPSTF: set; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A Á×ÔÏÒÉÚÁæÑ; N ÎÏ×Á; D ×ÉÄÁÌÉÔÉ; ÓÔÒ¦ÌËÉ ÐÅÒÅÇÌÑÄ; W ÚÁÐÉÓÁÔÉ; Q ×ÉÊÔÉ"
+
+#: src/auth.c:45
+#, fuzzy
+msgid "[M] 802.1x authorization: "
+msgstr "[A] Máó Á×ÔÏÒÉÚÁæÑ: "
+
+#: src/auth.c:46
+#, fuzzy
+msgid "[T] key broadcasting time period (seconds): "
+msgstr "[B] ðÅÒ¦ÏÄ ÂÅËÏΦנ(ÍÓÅË): "
+
+#: src/auth.c:47
+msgid "[I] 802.1x auth. server IP: "
+msgstr ""
+
+#: src/auth.c:48
+msgid "[S] 802.1x auth. server secret: "
+msgstr ""
+
+#: src/auth.c:49
+#, fuzzy
+msgid ""
+"A: auth; N: new; D: del; MTIS: set; arrows: scroll; W: write conf; Q: quit"
+msgstr ""
+"A Á×ÔÏÒÉÚÁæÑ; N ÎÏ×Á; D ×ÉÄÁÌÉÔÉ; ÓÔÒ¦ÌËÉ ÐÅÒÅÇÌÑÄ; W ÚÁÐÉÓÁÔÉ; Q ×ÉÊÔÉ"
+
+#: src/auth.c:114
+msgid "Internal"
+msgstr "÷ÎÕÔÒ¦ÛÎÑ ÔÁÂÌÉÃÑ"
+
+#: src/auth.c:116
+#, fuzzy
+msgid "Radius"
+msgstr "ðÅÒÅÄÁ×ÁÞ"
+
+#: src/auth.c:121
+msgid "Allow listed MACs only"
+msgstr ""
+
+#: src/auth.c:123
+msgid "Deny listed MACs only"
+msgstr ""
+
+#: src/auth.c:129
+msgid "Mixed environment"
+msgstr ""
+
+#: src/auth.c:213
+msgid "(not shown)"
+msgstr ""
+
+#: src/auth.c:276
+#, fuzzy
+msgid "Authorized MAC addresses:"
+msgstr "á×ÔÏÒÉÚÏ×ÁΦ íáó ÁÄÒÅÓÉ"
+
+#: src/auth.c:345
+msgid "(insufficient community used)"
+msgstr ""
+
+#: src/auth.c:472
+#, c-format
+msgid "Given MAC already exists in MAC list at position %d. Press any key."
+msgstr ""
+
+#: src/bridge.c:27
+msgid "[I] IP: "
+msgstr "[I] ¶ò: "
+
+#: src/bridge.c:28
+msgid "[N] Netmask: "
+msgstr "[N] íÁÓËÁ: "
+
+#: src/bridge.c:29
+msgid "[G] Gateway: "
+msgstr "[G] ûÌÀÚ: "
+
+#: src/bridge.c:30
+msgid "[F] Filter non-IP traffic: "
+msgstr "[F] æ¦ÌØÔÒÕ×ÁÔÉ ÎÅ-¶ò ÔÒÁƦË: "
+
+#: src/bridge.c:31
+msgid "[P] Primary port: "
+msgstr "[P] çÏÌÏ×ΦʠÐÏÒÔ: "
+
+#: src/bridge.c:32
+msgid "Attached station MAC: "
+msgstr "ð¦Ä'¤ÄÎÁÎÁ ÓÔÁÎæÑ: "
+
+#: src/bridge.c:33
+msgid "[D] DHCP client: "
+msgstr "[D] DHCP Ë̦¤ÎÔ: "
+
+#: src/bridge.c:34
+msgid "[O] Operational mode: "
+msgstr "[O] òÅÖÉÍ ÒÏÂÏÔÉ: "
+
 #: src/bridge.c:35
+msgid "[M] Preferred BSSID (remote MAC addr.): "
+msgstr "[M] ÷¦ÄÄÁÌÅÎÉÊ Máó: "
+
+#: src/bridge.c:36
 msgid "[C] Configuration-enabled port(s): "
 msgstr "[C] ðÏÒÔ ËÏÎƦÇÕÒÕ×ÁÎÎÑ: "
 
+#: src/bridge.c:37
+#, fuzzy
+msgid "[T] Trap-sending port: "
+msgstr "[T] ðÏÒԠצÄÐÒÁ×ËÉ ÔÒÁЦ×: "
+
 #: src/bridge.c:38
+msgid "[R] Forward broadcast traffic: "
+msgstr "[R] ðÅÒÅÄÁÞÁ ÂÒÏÁÄËÁÓÔÏ×ÉÈ ÐÁËÕÎ˦×: "
+
+#: src/bridge.c:39
 msgid "[B] Isolate wireless clients (broadcast traffic): "
 msgstr "[B] ¶ÚÏÌÀ×ÁÔÉ ÒÁĦÏË̦¤ÎԦנ(ÂÒÏÁÄËÁÓÔÏצ ÐÁËÕÎËÉ): "
 
-#: src/bridge.c:39
+#: src/bridge.c:40
 msgid "[U] Isolate wireless clients (unicast traffic): "
 msgstr "[U] ¶ÚÏÌÀ×ÁÔÉ ÒÁĦÏË̦¤ÎԦנ(ÕΦËÁÓÔÏצ ÐÁËÕÎËÉ): "
 
-#: src/bridge.c:119
+#: src/bridge.c:41
+#, fuzzy
+msgid "INGFPDOMSCRBUT - set; W - write conf; Q - quit to menu"
+msgstr "INGFPDOMSCTRBU - ×ÓÔÁÎÏ×ÉÔÉ; W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ"
+
+#: src/bridge.c:128
+#, fuzzy
+msgid "Wireless (can be risky)"
+msgstr "ðÁÒÁÍÅÔÒÉ ÒÁĦÏÍÅÒÅÖ¦"
+
+#: src/bridge.c:129
 msgid "Both"
 msgstr "ïÂÉÄ×Á"
 
@@ -1607,29 +2201,87 @@ msgstr "
 msgid "Error:"
 msgstr "ðÏÍÉÌËÁ:"
 
-#: src/stations.c:33
-msgid "AP link state"
-msgstr "óÔÁΠÚ×'ÑÚËÕ Ú AP"
-
-#: src/stations.c:37
-msgid " #            MAC                                               "
-msgstr " #            MAC                                               "
+#: src/stations.c:82
+msgid "Not available (device not in AP mode)."
+msgstr ""
 
-#: src/stations.c:40
-msgid " #     MAC       Parent MAC    RSSI  Status MACn      IP        "
+#: src/stations.c:92
+#, fuzzy
+msgid "  #     MAC       Parent MAC  RSSI   LQ Sts MACn      IP        "
 msgstr " #     MAC       MAC ÂÁÚÉ      RSSI   óÔÁÔÕ MACn      IP        "
 
-#: src/stations.c:195 src/stations.c:367
+#: src/stations.c:136
+msgid "AssociatedSTAsInfo packet error"
+msgstr "ðÏÍÉÌËÏ×ÉÊ ÐÁËÅÔ AssociatedSTAsInfo."
+
+#: src/stations.c:189 src/stations.c:363
 msgid ""
 "Arrows - scroll; S - save to file; Q - return; T - toggle view; Other - "
 "refresh"
 msgstr ""
 "óÔÒ¦ÌËÉ - ÐÒÏËÒÕÔËÁ; S - ÚÂÅÒÅÇÔÉ Õ ÆÁÊÌ; T - ÐÅÒÅÍËÎÕÔÉ; Q - ×ÉÊÔÉ × ÍÅÎÀ."
 
-#: src/stations.c:200
+#: src/stations.c:193
 msgid "Arrows - scroll; S - save to file; Q - return; Other key - refresh"
 msgstr "óÔÒ¦ÌËÉ - ÐÒÏËÒÕÔËÁ; S - ÚÂÅÒÅÇÔÉ Õ ÆÁÊÌ; Q - ×ÉÊÔÉ × ÍÅÎÀ."
 
-#: src/stations.c:279
+#: src/stations.c:275
 msgid "Id       MAC address     Quality  Age  RSSI"
 msgstr "#        MAC ÁÄÒÅÓÁ      ñ˦ÓÔØ âÅÚĦѠóÉÌÁ ÓÉÇÎÁÌÕ"
+
+#~ msgid "Please enter SNMP community name that will be used for AP detection."
+#~ msgstr "÷×ÅĦÔØ SNMP ËÏÍ'ÀΦԦ, ÝÏ ÂÕÄÅ ×ÉËÏÒÉÓÔÁÎÏ ÄÌÑ ÐÏÛÕËÕ áò"
+
+#~ msgid "Create socket error. Press any key."
+#~ msgstr "ðÏÍÉÌËÁ ÓÔ×ÏÒÅÎÎÑ ÓÏËÅÔÕ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ"
+
+#~ msgid "Bind socket error. Press any key."
+#~ msgstr "ðÏÍÉÌËÁ ÐÒÉ×`ÑÚËÉ ÓÏËÅÔÕ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ"
+
+#~ msgid "Create socket error"
+#~ msgstr "ðÏÍÉÌËÁ ÓÔ×ÏÒÅÎÎÑ ÓÏËÅÔÕ"
+
+#~ msgid "Bind socket error"
+#~ msgstr "ðÏÍÉÌËÁ ÐÒÉ×`ÑÚËÉ ÓÏËÅÔÕ"
+
+#~ msgid "NUM       MAC address"
+#~ msgstr "#         íáó ÁÄÒÅÓÁ"
+
+#~ msgid "A - auth; IPSTF - set; W - write conf; Q - quit"
+#~ msgstr "A - a×ÔÏÒÉÚÁæÑ; IPSTF - ×ÓÔÁÎÏ×ÉÔÉ;W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ"
+
+#~ msgid "A - auth; W - write conf; Q - quit"
+#~ msgstr "A - a×ÔÏÒÉÚÁæÑ; W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ"
+
+#~ msgid "[I] RADIUS SERVER IP: "
+#~ msgstr "[I] ¶ò ÁÄÒÅÓÁ RADIUS ÓÅÒ×ÅÒÁ: "
+
+#~ msgid "[P] RADIUS SERVER PORT: "
+#~ msgstr "[P] ðÏÒÔ RADIUS ÓÅÒ×ÅÒÁ: "
+
+#~ msgid "[S] RADIUS SERVER SECRET: "
+#~ msgstr "[S] ðÁÒÏÌØ RADIUS ÓÅÒ×ÅÒÁ: "
+
+#~ msgid "[T] REAUTHORIZATION TIME: "
+#~ msgstr "[T] þÁÓ ÐÅÒÅÁ×ÔÏÒÉÚÁæ§: "
+
+#~ msgid "[F] RADIUS SOURCE PORT: "
+#~ msgstr "[F] ÷ÉȦÄÎÉÊ ÐÏÒÔ RADIUS ÐÁËÅÔ¦×: "
+
+#~ msgid "<hidden>"
+#~ msgstr "<ÐÒÉÈÏ×ÁÎÏ>"
+
+#~ msgid "[U] Isolate wireless clients: "
+#~ msgstr "[U] ¶ÚÏÌÀ×ÁÔÉ ÒÁĦÏË̦¤ÎÔ¦×: "
+
+#~ msgid "AP is currently in AP Client Mode => no associated STAtions."
+#~ msgstr "ôÏÞËÁ äÏÓÔÕÐÕ Õ ÒÅÖÉͦ Ë̦¤ÎÔÁ => ÎÅÍÁ¤ Ð¦Ä'¤ÄÎÁÎÉÈ ÓÔÁÎæÊ"
+
+#~ msgid "#     MAC       LQ    RSSI   Status Port IP"
+#~ msgstr "#     MAC       LQ    RSSI   óÔÁÔ   ðÏÒÔ IP"
+
+#~ msgid "Arrows - scroll; S - save to file; Q - quit to menu."
+#~ msgstr "óÔÒ¦ÌËÉ - ÐÒÏËÒÕÔËÁ; S - ÚÂÅÒÅÇÔÉ Õ ÆÁÊÌ; Q - ×ÉÊÔÉ × ÍÅÎÀ."
+
+#~ msgid " #            MAC                                               "
+#~ msgstr " #            MAC                                               "
index 00f1793fc5ffca66ab75fa5d4b3b84153054518b..78305481b9d88fa5cef494fa4dc537180504c34a 100644 (file)
@@ -21,16 +21,23 @@ DEFS = -DLOCALEDIR=\"$(datadir)/locale\" -DHAVE_CONFIG_H
 INCLUDES = -I../lib -I../intl -I..
 LIBS = @INTLLIBS@ @LIBS@
 
-bin_PROGRAMS = ap-config ap-mrtg ap-auth
+bin_PROGRAMS = ap-config ap-mrtg ap-auth ap-tftp ap-rrd
 sbin_PROGRAMS = ap-trapd
  
-ap_config_SOURCES = ap-config.c auth_mac.c bridge.c nwn_advanced.c nwn_latest.c stations.c
-ap_config_LDADD = ../lib/libap.a -lmenu
+ap_config_SOURCES = ap-config.c auth.c bridge.c nwn_advanced.c nwn_latest.c stations.c aplink.c
+ap_config_LDADD = ../lib/libap.a -lmenu @CURSESLIBS@
 
-ap_mrtg_SOURCES = ap-mrtg.c
-ap_mrtg_LDADD = ../lib/libap.a
+ap_tftp_SOURCES = ap-tftp.c
+ap_tftp_LDADD = ../lib/libap.a
 
 ap_trapd_SOURCES = ap-trapd.c
 
 ap_auth_SOURCES = ap-auth.c
 ap_auth_LDADD = ../lib/libap.a
+
+ap_mrtg_SOURCES = ap-mrtg.c
+ap_mrtg_LDADD = ../lib/libap.a
+
+ap_rrd_SOURCES = ap-rrd.c
+ap_rrd_LDADD = ../lib/libap.a
+
index d31bc356cb7ef73bec102b923b92c82ee6c306ff..7f05e48b84fd3c98153ce7a5403bd7a5798701cf 100644 (file)
@@ -71,6 +71,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
+CURSESLIBS = @CURSESLIBS@
 CYGPATH_W = @CYGPATH_W@
 DATADIRNAME = @DATADIRNAME@
 
@@ -159,25 +160,32 @@ sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 INCLUDES = -I../lib -I../intl -I..
 
-bin_PROGRAMS = ap-config ap-mrtg ap-auth
+bin_PROGRAMS = ap-config ap-mrtg ap-auth ap-tftp ap-rrd
 sbin_PROGRAMS = ap-trapd
 
-ap_config_SOURCES = ap-config.c auth_mac.c bridge.c nwn_advanced.c nwn_latest.c stations.c
-ap_config_LDADD = ../lib/libap.a -lmenu
+ap_config_SOURCES = ap-config.c auth.c bridge.c nwn_advanced.c nwn_latest.c stations.c aplink.c
+ap_config_LDADD = ../lib/libap.a -lmenu @CURSESLIBS@
 
-ap_mrtg_SOURCES = ap-mrtg.c
-ap_mrtg_LDADD = ../lib/libap.a
+ap_tftp_SOURCES = ap-tftp.c
+ap_tftp_LDADD = ../lib/libap.a
 
 ap_trapd_SOURCES = ap-trapd.c
 
 ap_auth_SOURCES = ap-auth.c
 ap_auth_LDADD = ../lib/libap.a
+
+ap_mrtg_SOURCES = ap-mrtg.c
+ap_mrtg_LDADD = ../lib/libap.a
+
+ap_rrd_SOURCES = ap-rrd.c
+ap_rrd_LDADD = ../lib/libap.a
 subdir = src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
-bin_PROGRAMS = ap-config$(EXEEXT) ap-mrtg$(EXEEXT) ap-auth$(EXEEXT)
+bin_PROGRAMS = ap-config$(EXEEXT) ap-mrtg$(EXEEXT) ap-auth$(EXEEXT) \
+       ap-tftp$(EXEEXT) ap-rrd$(EXEEXT)
 sbin_PROGRAMS = ap-trapd$(EXEEXT)
 PROGRAMS = $(bin_PROGRAMS) $(sbin_PROGRAMS)
 
@@ -185,9 +193,9 @@ am_ap_auth_OBJECTS = ap-auth.$(OBJEXT)
 ap_auth_OBJECTS = $(am_ap_auth_OBJECTS)
 ap_auth_DEPENDENCIES = ../lib/libap.a
 ap_auth_LDFLAGS =
-am_ap_config_OBJECTS = ap-config.$(OBJEXT) auth_mac.$(OBJEXT) \
+am_ap_config_OBJECTS = ap-config.$(OBJEXT) auth.$(OBJEXT) \
        bridge.$(OBJEXT) nwn_advanced.$(OBJEXT) nwn_latest.$(OBJEXT) \
-       stations.$(OBJEXT)
+       stations.$(OBJEXT) aplink.$(OBJEXT)
 ap_config_OBJECTS = $(am_ap_config_OBJECTS)
 ap_config_DEPENDENCIES = ../lib/libap.a
 ap_config_LDFLAGS =
@@ -195,6 +203,14 @@ am_ap_mrtg_OBJECTS = ap-mrtg.$(OBJEXT)
 ap_mrtg_OBJECTS = $(am_ap_mrtg_OBJECTS)
 ap_mrtg_DEPENDENCIES = ../lib/libap.a
 ap_mrtg_LDFLAGS =
+am_ap_rrd_OBJECTS = ap-rrd.$(OBJEXT)
+ap_rrd_OBJECTS = $(am_ap_rrd_OBJECTS)
+ap_rrd_DEPENDENCIES = ../lib/libap.a
+ap_rrd_LDFLAGS =
+am_ap_tftp_OBJECTS = ap-tftp.$(OBJEXT)
+ap_tftp_OBJECTS = $(am_ap_tftp_OBJECTS)
+ap_tftp_DEPENDENCIES = ../lib/libap.a
+ap_tftp_LDFLAGS =
 am_ap_trapd_OBJECTS = ap-trapd.$(OBJEXT)
 ap_trapd_OBJECTS = $(am_ap_trapd_OBJECTS)
 ap_trapd_LDADD = $(LDADD)
@@ -205,18 +221,20 @@ DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
 @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ap-auth.Po ./$(DEPDIR)/ap-config.Po \
-@AMDEP_TRUE@   ./$(DEPDIR)/ap-mrtg.Po ./$(DEPDIR)/ap-trapd.Po \
-@AMDEP_TRUE@   ./$(DEPDIR)/auth_mac.Po ./$(DEPDIR)/bridge.Po \
-@AMDEP_TRUE@   ./$(DEPDIR)/nwn_advanced.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/ap-mrtg.Po ./$(DEPDIR)/ap-rrd.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/ap-tftp.Po ./$(DEPDIR)/ap-trapd.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/aplink.Po ./$(DEPDIR)/auth.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/bridge.Po ./$(DEPDIR)/nwn_advanced.Po \
 @AMDEP_TRUE@   ./$(DEPDIR)/nwn_latest.Po ./$(DEPDIR)/stations.Po
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 DIST_SOURCES = $(ap_auth_SOURCES) $(ap_config_SOURCES) \
-       $(ap_mrtg_SOURCES) $(ap_trapd_SOURCES)
+       $(ap_mrtg_SOURCES) $(ap_rrd_SOURCES) $(ap_tftp_SOURCES) \
+       $(ap_trapd_SOURCES)
 DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
-SOURCES = $(ap_auth_SOURCES) $(ap_config_SOURCES) $(ap_mrtg_SOURCES) $(ap_trapd_SOURCES)
+SOURCES = $(ap_auth_SOURCES) $(ap_config_SOURCES) $(ap_mrtg_SOURCES) $(ap_rrd_SOURCES) $(ap_tftp_SOURCES) $(ap_trapd_SOURCES)
 
 all: all-am
 
@@ -284,6 +302,12 @@ ap-config$(EXEEXT): $(ap_config_OBJECTS) $(ap_config_DEPENDENCIES)
 ap-mrtg$(EXEEXT): $(ap_mrtg_OBJECTS) $(ap_mrtg_DEPENDENCIES) 
        @rm -f ap-mrtg$(EXEEXT)
        $(LINK) $(ap_mrtg_LDFLAGS) $(ap_mrtg_OBJECTS) $(ap_mrtg_LDADD) $(LIBS)
+ap-rrd$(EXEEXT): $(ap_rrd_OBJECTS) $(ap_rrd_DEPENDENCIES) 
+       @rm -f ap-rrd$(EXEEXT)
+       $(LINK) $(ap_rrd_LDFLAGS) $(ap_rrd_OBJECTS) $(ap_rrd_LDADD) $(LIBS)
+ap-tftp$(EXEEXT): $(ap_tftp_OBJECTS) $(ap_tftp_DEPENDENCIES) 
+       @rm -f ap-tftp$(EXEEXT)
+       $(LINK) $(ap_tftp_LDFLAGS) $(ap_tftp_OBJECTS) $(ap_tftp_LDADD) $(LIBS)
 ap-trapd$(EXEEXT): $(ap_trapd_OBJECTS) $(ap_trapd_DEPENDENCIES) 
        @rm -f ap-trapd$(EXEEXT)
        $(LINK) $(ap_trapd_LDFLAGS) $(ap_trapd_OBJECTS) $(ap_trapd_LDADD) $(LIBS)
@@ -297,8 +321,11 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ap-auth.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ap-config.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ap-mrtg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ap-rrd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ap-tftp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ap-trapd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth_mac.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aplink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bridge.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nwn_advanced.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nwn_latest.Po@am__quote@
index fbd72ef7ff96f2db71ed44fed3af4cde82c3ea82..9375c3d568cb964207e4055959365e51e9cf4716 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *      ap-auth.c from Access Point SNMP Utils for Linux
  *
- * Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
+ * Copyright (c) 2004 Teemu Kiviniemi <teemuki at fotokone.fi>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License Version 2 from
 #endif
 #include "ap-utils.h"
 
-#define PACKET_ERROR _("AuthorizedMacTableString packet error")
+#define ERROR_PACKET _("AuthorizedMacTableString packet error")
 #define ERROR_DATA _("Invalid data in source file")
 #define ERROR_FILE_OPEN _("Can't open file")
 #define ERROR_FILE_WRITE _("Can't write to file")
 #define ERROR_FILE_CLOSE _("Error closing file")
 
-short ap_type = ATMEL410;
+short ap_type;
 char *community = NULL;
-int sockfd;
 struct in_addr ap_ip;
 
 void usage()
@@ -45,16 +44,15 @@ void usage()
     printf(_("\nUsage:\n"));
     printf(_("\tap-auth -i ip -c community -d filename [-h]\n"));
     printf(_("\tap-auth -i ip -c community -u filename [-h]\n\n"));
-    printf(_("Change accesspoint's list of authorised MAC"
-        " addresses\n\n"));
+    printf(_("Change accesspoint's list of authorised MAC addresses\n\n"));
     printf(_("-i ip        - AP ip address\n"));
     printf(_("-c community - SNMP community string\n"));
     printf(_("-d filename  - download list of authorised MAC addresses from AP"
-        " to a file\n"));
+       " to a file\n"));
     printf(_("-u filename  - upload list of authorised MAC addresses from"
-        " a file to AP\n"));
+       " a file to AP\n"));
     printf(_("-h           - print this help screen\n\n"));
-    printf(_("ap-auth %s Copyright (c) 2002-2004 Roman Festchook\n\n"),
+    printf(_("ap-auth %s Copyright (c) 2004 Teemu Kiviniemi\n\n"),
           VERSION);
 }
 
@@ -73,18 +71,18 @@ int get_addr (struct MacListStat *ml, char *addr)
 {
     int i;
     char tmp[3];
-    
+
     if (strlen (addr) != 12)
         return 1;
-    
+
     tmp[2] = '\0';
-    
+
     for (i = 0; i < 6 ; i++) {
         tmp[0] = addr[2 * i];
        tmp[1] = addr[2 * i + 1];
        ml->addr[i] = strtol (tmp, NULL, 16);
     }
-    
+
     return 0;
 }
 
@@ -96,47 +94,48 @@ int main(int argc, char **argv)
     extern int optopt;
     int opt = 0;
     int mode = 0; /* 1 = download, 2 = upload */
-
     FILE *f;
     char *filename = NULL;
-    struct sockaddr_in client;
-    
+
     struct AuthorizedMacTableString {
        unsigned int short Action;
        unsigned int short NumOfAllTableAddresses;
        unsigned int short NumOfCurrentAddress;
        unsigned char MacAddress[6];
     } *AuthMac = NULL, get;
-    
+
     struct MacListStat *first = NULL, *curr = NULL;
-    
-    char AutorizedMac[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
-       0x02, 0x06, 0x02, 0x00
+
+    char sysDescr_NWN[] = {
+       0x2B, 0x06, 0x01, 0x02, 0x01, 0x01, 0x01, 0x00
+    };
+    char sysDescr_ATMEL[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x01, 0x00
+    };
+    char AutorizedMac_ATMEL[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x06, 0x02, 0x00
     };
-    
+
     int total_mac, mac_num = 0;
     varbind varbinds[1];
     char mac_tmp[13];
+    char *cp;
     struct MacListStat ml_tmp;
     int i, tmp;
-        
+
 #ifdef HAVE_GETTEXT
     setlocale(LC_ALL, "");
     bindtextdomain("ap-utils", LOCALEDIR);
     textdomain("ap-utils");
 #endif
 
-    memset(&client, 0, sizeof client);
-    client.sin_family = AF_INET;
-    client.sin_port = INADDR_ANY;
-    client.sin_addr.s_addr = INADDR_ANY;
-    
     do {
        opterr = 0;
        switch (opt = getopt(argc, argv, "i:c:d:u:")) {
        case 'i':
-           if (inet_aton(optarg, &ap_ip) == 0) {
-               printf(_("Invalid IP-address\n"));
+           for (cp = optarg, i = 0; *cp && (cp = index(cp, '.')); cp++, i++);
+           if (i < 3 || inet_aton(optarg, &ap_ip) == 0) {
+               printf(_("Error: invalid IP-address.\n"));
                return 1;
            }
            break;
@@ -161,35 +160,77 @@ int main(int argc, char **argv)
            return 1;
        }
     } while (opt != -1);
-    
+
     if (!community) {
        usage();
        return 1;
     }
-    
-    if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
-       perror(_("Create socket error"));
-       return 1;
+
+    /*
+     * Part detecting ap_type (ATMEL AP MIB type) follows.
+     * We could use get_mib_details() here with advantage, but it would
+     * have to involve 1. putting it to separate file in lib/ and
+     * 2. patch it so it would not contain curses-related commands (TODO)
+     */
+
+    /* determine private MIB type according to enterprises ID */
+    varbinds[0].oid = sysDescr_NWN;
+    varbinds[0].len_oid = sizeof(sysDescr_NWN);
+    varbinds[0].value = NULL;
+    varbinds[0].len_val = 0;
+    varbinds[0].type = NULL_VALUE;
+    if (snmp(varbinds, 1, GET) > 0) {
+        ap_type = NWN;
+    } else {
+       varbinds[0].oid = sysDescr_ATMEL;
+       varbinds[0].len_oid = sizeof(sysDescr_ATMEL);
+       varbinds[0].value = NULL;
+       varbinds[0].len_val = 0;
+       varbinds[0].type = NULL_VALUE;
+       if (snmp(varbinds, 1, GET) > 0) {
+           ap_type = ATMEL410;
+       } else {
+           sysDescr_ATMEL[5] = 0xE0;
+           sysDescr_ATMEL[6] = 0x3E;
+           varbinds[0].oid = sysDescr_ATMEL;
+           varbinds[0].len_oid = sizeof(sysDescr_ATMEL);
+           varbinds[0].value = NULL;
+           varbinds[0].len_val = 0;
+           varbinds[0].type = NULL_VALUE;
+           if (snmp(varbinds, 1, GET) > 0) {
+               ap_type = ATMEL12350;
+           } else {
+               printf(_("Unable to determine AP MIB type "
+                   "(no response from AP)."));
+               return 1;
+           }
+       }
     }
-    if (bind(sockfd, (struct sockaddr *) &client, SIZE) == -1) {
-       perror(_("Bind socket error"));
+
+    if (ap_type == NWN) {
+       printf(_("NWN devices are not yet supported."));
        return 1;
     }
-    
+
+    if (ap_type == ATMEL12350) {
+       AutorizedMac_ATMEL[5] = 0xE0;
+       AutorizedMac_ATMEL[6] = 0x3E;
+    }
+
     switch (mode) {
-    
+
     case 1: /* download */
-    
+
        total_mac = 0;
        mac_num = 0;
-       
+
        while (mac_num <= total_mac) {
            get.Action = 0x02; rshort(get.Action);
            get.NumOfAllTableAddresses = total_mac; rshort(get.NumOfAllTableAddresses);
            get.NumOfCurrentAddress = mac_num; rshort(get.NumOfCurrentAddress);
            
-           varbinds[0].oid = AutorizedMac;
-           varbinds[0].len_oid = sizeof(AutorizedMac);
+           varbinds[0].oid = AutorizedMac_ATMEL;
+           varbinds[0].len_oid = sizeof(AutorizedMac_ATMEL);
            varbinds[0].value = (char *) &get;
            varbinds[0].len_val = 12;
            varbinds[0].type = STRING_VALUE;
@@ -199,7 +240,7 @@ int main(int argc, char **argv)
                printf("\n");
                return 1;
            }
-           
+
            if (varbinds[0].len_val == 12) {
                if (AuthMac)
                    free(AuthMac);
@@ -208,16 +249,16 @@ int main(int argc, char **argv)
                                                               len_val);
                memcpy(AuthMac, varbinds[0].value, varbinds[0].len_val);
            } else {
-               printf(PACKET_ERROR);
+               printf(ERROR_PACKET);
                printf("\n");
                return 1;
            }
-           
+
            rshort(AuthMac->NumOfAllTableAddresses);
            total_mac =
                (AuthMac->NumOfAllTableAddresses ==
                 65535) ? 0 : AuthMac->NumOfAllTableAddresses;
-       
+
            if (mac_num) {
                if (first == NULL) {
                    first = (struct MacListStat *)
@@ -264,7 +305,7 @@ int main(int argc, char **argv)
        mac_num  = 0;
        while (!feof (f)) {
            tmp = fread (mac_tmp, 1, sizeof (mac_tmp), f);
-           
+
            if (tmp == sizeof (mac_tmp)) {
                if (mac_tmp[12] != '\n') {
                    printf(ERROR_DATA);
@@ -272,7 +313,7 @@ int main(int argc, char **argv)
                    return 1;
                }
                mac_tmp[12] = '\0';
-               
+
                if (get_addr (&ml_tmp, mac_tmp) != 0) {
                    printf(ERROR_DATA);
                    printf("\n");
@@ -293,7 +334,7 @@ int main(int argc, char **argv)
            }
        }
        fclose(f);
-       
+
        curr = first;
        i = 1;
        while (curr != NULL) {
@@ -304,8 +345,8 @@ int main(int argc, char **argv)
            get.NumOfCurrentAddress = i;
            rshort(get.NumOfCurrentAddress);
            memcpy(get.MacAddress, curr->addr, 6);
-           varbinds[0].oid = AutorizedMac;
-           varbinds[0].len_oid = sizeof(AutorizedMac);
+           varbinds[0].oid = AutorizedMac_ATMEL;
+           varbinds[0].len_oid = sizeof(AutorizedMac_ATMEL);
            varbinds[0].value = (char *) &get;
            varbinds[0].len_val = 12;
            varbinds[0].type = STRING_VALUE;
@@ -315,7 +356,7 @@ int main(int argc, char **argv)
                return 1;
            }
            if (varbinds[0].len_val != 12) {
-               printf(PACKET_ERROR);
+               printf(ERROR_PACKET);
                printf("\n");
                return 1;
            }
@@ -327,16 +368,14 @@ int main(int argc, char **argv)
        usage();
        return 1;
     }
-    
-    close(sockfd);
-    
+
     curr = first;
     while (curr != NULL) {
         curr = curr->next;
        free (first);
        first = curr;
     }
-    
+
     if (community)
        free(community);
     if (filename)
index c41525e89b6d640d95ada9b0d585dd4fcff4dd4e..fa82c8c2faccc7ecbb9165c20d4e9cc62dceb1cb 100644 (file)
 #include <sys/ioctl.h>
 #include "ap-utils.h"
 
+extern short ap_type;
+extern int snmp_quit_by_keypress;
+
 WINDOW *win_for_menu, *sub_for_menu, *win_for_help, *main_win, *main_sub;
 char *community;
-int sockfd, atmel410_filter = 0, wait_mode = WAIT_FOREVER;
+int atmel410_filter = 0, wait_mode = WAIT_FOREVER;
 struct in_addr ap_ip;
 char *prog_title = "Wireless Access Point Configurator";
 char set_oeminfo_allowed = 0;
-extern short ap_type;
 
 void config_menu()
 {
@@ -42,7 +44,7 @@ void config_menu()
         0},
        {_("Wireless"), _("Set wireless options"), atmel_wireless, 0},
        {_("Privacy"), MENU_ENCRYPT, wep, 0},
-       {_("MAC auth"), MENU_MAC, atmel_auth_mac, 0},
+       {_("Auth"), MENU_AUTH, atmel_auth, 0},
        {_("Community"), MENU_COMMUNITY, AuthorizedSettings, 0},
        {_("Radio"), _("Set radio signal power and antenna options"),
         power, 0},
@@ -54,7 +56,7 @@ void config_menu()
         {_("General"), _("Set general options"), nwn_wireless, 0},
         {_("Advanced"), _("Set advanced options"), advanced, 0},
         {_("Privacy"), MENU_ENCRYPT, nwn_wep, 0},
-        {_("MAC auth"), MENU_MAC, nwn_auth_mac, 0},
+        {_("MAC auth"), MENU_AUTH, nwn_auth_mac, 0},
         {_("Community"), MENU_COMMUNITY, AuthorizedSettings, 0},
         {"..", MAIN_MENU, NULL, 0},
         {0, 0, NULL, 0}
@@ -111,6 +113,7 @@ void stat_menu()
        {_("Ethernet"), _("Get ethernet port statistics"), EthStat, 0},
        {_("Wireless"), MENU_WIRELESS, WirelessStat, 0},
        {_("Stations"), MENU_STAS, atmel_stations, 0},
+       {_("AP link"), MENU_APLINK, atmel_aplink, 0},
        {_("KnownAPs"), _("Get info about known Access Points"), APs, 0},
        {"..", MAIN_MENU, NULL, 0},
        {0, 0, NULL, 0}
@@ -150,8 +153,9 @@ void main_menu()
         command_menu, 1},
        {_("Connect"), MENU_CONNECT, _auth, 0},
        {_("Search"), MENU_SEARCH, ap_search, 0},
-       {_("About"), MENU_ABOUT, about, 0},
+       {_("Polling"), MENU_POLLING, polling_interval, 0},
        {_("Shell"), MENU_SHELL, exit_shell, 0},
+       {_("About"), MENU_ABOUT, about, 0},
        {_("Exit"), MENU_EXIT, exit_program, 0},
        {0, 0, NULL, 0}
     };
@@ -177,10 +181,19 @@ int main( /*int argc, char **argv */ )
     initscr();
     if (has_colors()) {
        start_color();
-       init_pair(1, COLOR_BLACK, COLOR_CYAN);
-       init_pair(2, COLOR_BLACK, COLOR_WHITE);
-       init_pair(3, COLOR_BLACK, COLOR_GREEN);
-       init_pair(4, COLOR_WHITE, COLOR_RED);
+
+       /* Never trust that these are defined by default. */
+       init_pair (COLOR_RED, COLOR_RED, COLOR_BLACK );
+       init_pair (COLOR_GREEN, COLOR_GREEN, COLOR_BLACK);
+       init_pair (COLOR_YELLOW, COLOR_YELLOW, COLOR_BLACK);
+       init_pair (COLOR_BLUE, COLOR_BLUE, COLOR_BLACK);
+       init_pair (COLOR_MAGENTA, COLOR_MAGENTA, COLOR_BLACK);
+       init_pair (COLOR_CYAN, COLOR_CYAN, COLOR_BLACK);
+
+       init_pair(11, COLOR_BLACK, COLOR_CYAN);
+       init_pair(12, COLOR_BLACK, COLOR_WHITE);
+       init_pair(13, COLOR_BLACK, COLOR_GREEN);
+       init_pair(14, COLOR_WHITE, COLOR_RED);
     }
 
     noraw();
@@ -189,16 +202,17 @@ int main( /*int argc, char **argv */ )
     scrollok(stdscr, TRUE);
     idlok(stdscr, TRUE);
     keypad(stdscr, TRUE);
+    snmp_quit_by_keypress = 1;
     refresh();
 
 /* draw help win */
     win_for_help = newwin(1, COLS, LINES - 1, 0);
-    wattrset(win_for_help, COLOR_PAIR(1));
+    wattrset(win_for_help, COLOR_PAIR(11));
     print_help("");
 
 /* draw title win */
     win_for_title = newwin(1, COLS, 0, 0);
-    wattrset(win_for_title, COLOR_PAIR(1));
+    wattrset(win_for_title, COLOR_PAIR(11));
     for (i = 0; i < COLS; i++)
        waddch(win_for_title, ' ');
     sprintf(message, _("Wireless Access Point Configurator ver. %s"),
@@ -211,7 +225,7 @@ int main( /*int argc, char **argv */ )
     sub_for_menu = derwin(win_for_menu, LINES - 5, MCOLS - 2, 2, 1);
     set_menu_win(NULL, win_for_menu);
     set_menu_sub(NULL, sub_for_menu);
-    attrset(COLOR_PAIR(1));
+    attrset(COLOR_PAIR(11));
 
     /* íÁÌÀÀ ÒÁÍËÕ */
     waddch(win_for_menu, ACS_BSSB);
@@ -253,4 +267,3 @@ int main( /*int argc, char **argv */ )
 /* Not reachable */
     return 0;
 }
-
index 296a37ac4f5dbccb45d923eb0cebb51421c0355e..7dec50ace31fcf7d28dfc20e701c1777a432dc14 100644 (file)
 #define ERR_STR_V "\n\n-\n\n"
 #define ERR_STR_N "999999999\n999999999\n-\n\n"
 
-short ap_type = ATMEL410;
+short ap_type;
 char *community = NULL;
-int sockfd;
 struct in_addr ap_ip;
 
 void usage()
 {
     printf(_("\nUsage:\n"));
-    printf(_
-          ("\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-h] [-r]\n\n"));
-    printf(_
-          ("Get stats from AP and return it in MRTG parsable format\n\n"));
+    printf(_("\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] "
+            "[-v] [-h] [-r]\n\n"));
+    printf(_("Get stats from AP and return it in MRTG parsable format\n\n"));
     printf(_("-i ip        - AP ip address\n"));
     printf(_("-c community - SNMP community string\n"));
-    printf(_
-          ("-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations or <l>ink quality in client mode\n"));
-    printf(_
-          ("-b bssid     - mac address of the AP to which get link quality, only if type=l\n"));
-    printf(_("-n name     - AP name - for check only\n")); 
-    printf(_("-a aptype        - AP type - 410 (default) or 510 for ATMEL12350's, like the ME-102\n"));
-    printf(_
-          ("-v           - report MRTG about problems connecting to AP\n"));
+    printf(_("-t type      - statistics type <w>ireless, <e>thernet, "
+            "associated <s>tations or <l>ink quality (last one will only "));
+    printf(_("work with ATMEL410 MIB devices in AP Client mode)\n"));
+    printf(_("-b bssid     - mac address of the AP from which get link quality"
+            ", only if type=l\n"));
+    printf(_("-n name      - AP name - for check only\n")); 
+    printf(_("-v           - report MRTG about problems connecting to AP\n"));
     printf(_("-r           - reset AP when getting LinkQuality stats\n"));
     printf(_("-h           - print this help screen\n\n"));
     printf(_("ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n\n"),
           VERSION);
-
 }
 
-
 int main(int argc, char **argv)
 {
     extern char *optarg;
@@ -81,43 +76,41 @@ int main(int argc, char **argv)
        unsigned char essid[32];
     } *app = NULL;
 
-    char Wireless[] =
-       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x03, 0x01,
-       0x00
+    char sysDescr_NWN[] = {
+       0x2B, 0x06, 0x01, 0x02, 0x01, 0x01, 0x01, 0x00
+    };
+    char sysDescr_ATMEL[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x01, 0x00
     };
-    char EthRx[] =
-       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x07, 0x01,
-       0x00
+    char bridgeOperationalMode[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x01, 0x00
     };
-    char EthTx[] =
-       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x07, 0x02,
-       0x00
+    char EthRxStatistics[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x07, 0x01, 0x00
     };
-    char operAccessPointName[] =
-       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x0A,
-       0x00
+    char EthTxStatistics[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x07, 0x02, 0x00
     };
-    char StasNum[] =
-       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x05, 0x01,
-       0x00
+    char operAccessPointName[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x0A, 0x00
     };
-    char KnownAP[] =
-       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x07,
-       0x01, 0x00
+    char wirelessStatistics[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x03, 0x01, 0x00
     };
-    char bridgeOperationalMode[] =
-       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
-       0x01, 0x04, 0x01, 0x00
+    char AssociatedSTAsNum[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x05, 0x01, 0x00
+    };
+    char wirelessKnownAPs[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x07, 0x01, 0x00
     };
 
-    struct EthernetRxStatistics *EthRxStat = NULL;
-    struct EthernetTxStatistics *EthTxStat = NULL;
-    struct WirelessStatistics *WirelessStat = NULL;
+    struct EthRxStatistics_s *EthRxStat = NULL;
+    struct EthTxStatistics_s *EthTxStat = NULL;
+    struct wirelessStatistics_s *WirelessStat = NULL;
     varbind varbinds[2];
     int i, reset_flag=0;
     char message[12], bssid_flag,  stat_type = 0, *ERR_STR =
-       ERR_STR_N, *bssid = NULL, *name = NULL;
-    struct sockaddr_in client;
+       ERR_STR_N, *bssid = NULL, *name = NULL, *cp;
 
 #ifdef HAVE_GETTEXT
     setlocale(LC_ALL, "");
@@ -125,11 +118,6 @@ int main(int argc, char **argv)
     textdomain("ap-utils");
 #endif
 
-    memset(&client, 0, sizeof client);
-    client.sin_family = AF_INET;
-    client.sin_port = INADDR_ANY;
-    client.sin_addr.s_addr = INADDR_ANY;
-
     if (argc < 4) {
        usage();
        exit(0);
@@ -137,10 +125,11 @@ int main(int argc, char **argv)
 
     do {
        opterr = 0;
-       switch (opt = getopt(argc, argv, "i:c:t:b:n:a:rv")) {
+       switch (opt = getopt(argc, argv, "i:c:t:b:n:rv")) {
        case 'i':
-           if (inet_aton(optarg, &ap_ip) == 0) {
-               printf(_("Invalid IP-address\n"));
+           for (cp = optarg, i = 0; *cp && (cp = index(cp, '.')); cp++, i++);
+           if (i < 3 || inet_aton(optarg, &ap_ip) == 0) {
+               printf(_("Error: invalid IP-address.\n"));
                return 1;
            }
            break;
@@ -165,30 +154,6 @@ int main(int argc, char **argv)
        case 'r':
            reset_flag=1;
            break;
-        case 'a':
-            if ( strcmp( optarg, "510\0" ) == 0) {
-              Wireless[5] = 0xE0;
-              Wireless[6] = 0x3E;
-              EthRx[5] = 0xE0;
-              EthRx[6] = 0x3E;
-              EthTx[5] = 0xE0;
-              EthTx[6] = 0x3E;
-              operAccessPointName[5] = 0xE0;
-              operAccessPointName[6] = 0x3E;
-              StasNum[5] = 0xE0;
-              StasNum[6] = 0x3E;
-              KnownAP[5] = 0xE0;
-              KnownAP[6] = 0x3E;
-              bridgeOperationalMode[5] = 0xE0;
-              bridgeOperationalMode[6] = 0x3E;
-            } else if (strcmp(optarg, "410") == 0) {
-              /* nothing - hard-coded defaults are fine */
-            } else {
-              /* Invalid AP-Type */
-              printf(_("Invalid AP-Type '%s' - valid types are 510 or 410\n"), optarg);
-              return 1;
-            }
-            break;
        case -1:
             break;
        default:
@@ -202,32 +167,84 @@ int main(int argc, char **argv)
        goto quit;
     }
 
+    /*
+     * Part detecting ap_type (ATMEL AP MIB type) follows.
+     * We could use get_mib_details() here with advantage, but it would
+     * have to involve 1. putting it to separate file in lib/ and
+     * 2. patch it so it would not contain curses-related commands (TODO)
+     */
+
+    /* determine private MIB type according to enterprises ID */
+    varbinds[0].oid = sysDescr_NWN;
+    varbinds[0].len_oid = sizeof(sysDescr_NWN);
+    varbinds[0].value = NULL;
+    varbinds[0].len_val = 0;
+    varbinds[0].type = NULL_VALUE;
+    if (snmp(varbinds, 1, GET) > 0) {
+        ap_type = NWN;
+    } else {
+       varbinds[0].oid = sysDescr_ATMEL;
+       varbinds[0].len_oid = sizeof(sysDescr_ATMEL);
+       varbinds[0].value = NULL;
+       varbinds[0].len_val = 0;
+       varbinds[0].type = NULL_VALUE;
+       if (snmp(varbinds, 1, GET) > 0) {
+           ap_type = ATMEL410;
+       } else {
+           sysDescr_ATMEL[5] = 0xE0;
+           sysDescr_ATMEL[6] = 0x3E;
+           varbinds[0].oid = sysDescr_ATMEL;
+           varbinds[0].len_oid = sizeof(sysDescr_ATMEL);
+           varbinds[0].value = NULL;
+           varbinds[0].len_val = 0;
+           varbinds[0].type = NULL_VALUE;
+           if (snmp(varbinds, 1, GET) > 0) {
+               ap_type = ATMEL12350;
+           } else {
+               printf(_("Unable to determine AP MIB type "
+                   "(no response from AP)."));
+               return 1;
+           }
+       }
+    }
 
-    if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
-       perror(_("Create socket error"));
+    if (ap_type == NWN) {
+       printf("NWN devices are not yet supported.");
        return 1;
     }
-    if (bind(sockfd, (struct sockaddr *) &client, SIZE) == -1) {
-       perror(_("Bind socket error"));
-       return 1;
+
+    if (ap_type == ATMEL12350) {
+       bridgeOperationalMode[5] = 0xE0;
+       bridgeOperationalMode[6] = 0x3E;
+       EthRxStatistics[5] = 0xE0;
+       EthRxStatistics[6] = 0x3E;
+       EthTxStatistics[5] = 0xE0;
+       EthTxStatistics[6] = 0x3E;
+       operAccessPointName[5] = 0xE0;
+       operAccessPointName[6] = 0x3E;
+       wirelessStatistics[5] = 0xE0;
+       wirelessStatistics[6] = 0x3E;
+       AssociatedSTAsNum[5] = 0xE0;
+       AssociatedSTAsNum[6] = 0x3E;
+       wirelessKnownAPs[5] = 0xE0;
+       wirelessKnownAPs[6] = 0x3E;
     }
 
     switch (stat_type) {
 
     case 'e':
-
-       varbinds[0].oid = EthRx;
-       varbinds[0].len_oid = sizeof(EthRx);
-       varbinds[0].value = EthRx;
+       varbinds[0].oid = EthRxStatistics;
+       varbinds[0].len_oid = sizeof(EthRxStatistics);
+       varbinds[0].value = EthRxStatistics;
        varbinds[0].len_val = 0;
        varbinds[0].type = NULL_VALUE;
-       varbinds[1].oid = EthTx;
-       varbinds[1].len_oid = sizeof(EthTx);
-       varbinds[1].value = EthTx;
+       varbinds[1].oid = EthTxStatistics;
+       varbinds[1].len_oid = sizeof(EthTxStatistics);
+       varbinds[1].value = EthTxStatistics;
        varbinds[1].len_val = 0;
        varbinds[1].type = NULL_VALUE;
 
-       if (snmp(varbinds, 2, GET) <= 0) {
+       if (snmp(varbinds, 2, GET) < 2) {
            printf(ERR_STR);
            return 1;
        }
@@ -236,7 +253,7 @@ int main(int argc, char **argv)
            if (EthRxStat)
                free(EthRxStat);
            EthRxStat =
-               (struct EthernetRxStatistics *) malloc(varbinds[0].
+               (struct EthRxStatistics_s *) malloc(varbinds[0].
                                                       len_val);
            memcpy(EthRxStat, varbinds[0].value, varbinds[0].len_val);
        } else {
@@ -248,7 +265,7 @@ int main(int argc, char **argv)
            if (EthTxStat)
                free(EthTxStat);
            EthTxStat =
-               (struct EthernetTxStatistics *) malloc(varbinds[1].
+               (struct EthTxStatistics_s *) malloc(varbinds[1].
                                                       len_val);
            memcpy(EthTxStat, varbinds[1].value, varbinds[1].len_val);
        } else {
@@ -263,9 +280,9 @@ int main(int argc, char **argv)
            free(EthTxStat);
        break;
     case 'w':
-       varbinds[0].oid = Wireless;
-       varbinds[0].len_oid = sizeof(Wireless);
-       varbinds[0].value = Wireless;
+       varbinds[0].oid = wirelessStatistics;
+       varbinds[0].len_oid = sizeof(wirelessStatistics);
+       varbinds[0].value = wirelessStatistics;
        varbinds[0].len_val = 0;
        varbinds[0].type = NULL_VALUE;
 
@@ -274,11 +291,15 @@ int main(int argc, char **argv)
            return 1;
        }
 
-       if (varbinds[0].len_val == 88) {
+       if (varbinds[0].len_val == 88 || varbinds[0].len_val == 104) {
+           /*
+            * 88 ... using traditional ATMEL 12350 MIB
+            * 104 .. using functionally enhanced ATMEL 12350 MIB by EZYNET
+            */
            if (WirelessStat)
                free(WirelessStat);
            WirelessStat =
-               (struct WirelessStatistics *) malloc(varbinds[0].len_val);
+               (struct wirelessStatistics_s *) malloc(varbinds[0].len_val);
            memcpy(WirelessStat, varbinds[0].value, varbinds[0].len_val);
        } else {
            printf(ERR_STR);
@@ -294,9 +315,9 @@ int main(int argc, char **argv)
        break;
 
     case 's':
-       varbinds[0].oid = StasNum;
-       varbinds[0].len_oid = sizeof(StasNum);
-       varbinds[0].value = StasNum;
+       varbinds[0].oid = AssociatedSTAsNum;
+       varbinds[0].len_oid = sizeof(AssociatedSTAsNum);
+       varbinds[0].value = AssociatedSTAsNum;
        varbinds[0].len_val = 0;
        varbinds[0].type = NULL_VALUE;
 
@@ -309,7 +330,6 @@ int main(int argc, char **argv)
        break;
 
     case 'l':
-
        varbinds[0].oid = bridgeOperationalMode;
        varbinds[0].len_oid = sizeof(bridgeOperationalMode);
        varbinds[0].len_val = 0;
@@ -320,7 +340,7 @@ int main(int argc, char **argv)
            return 1;
        }
 
-       if (*(varbinds[0].value) != 3) {
+       if (!(ap_type == ATMEL410 && *(varbinds[0].value) == 3)) {
            printf(ERR_STR);
            return 1;
        }
@@ -332,9 +352,9 @@ int main(int argc, char **argv)
                }
                sleep(10);
        }
-               
-       varbinds[0].oid = KnownAP;
-       varbinds[0].len_oid = sizeof(KnownAP);
+
+       varbinds[0].oid = wirelessKnownAPs;
+       varbinds[0].len_oid = sizeof(wirelessKnownAPs);
        varbinds[0].type = NULL_VALUE;
        varbinds[0].len_val = 0;
 
@@ -373,7 +393,6 @@ int main(int argc, char **argv)
 
     printf("-\n");
 
-
     if ( name != NULL ) {
         varbinds[0].oid = operAccessPointName;
         varbinds[0].len_oid = sizeof(operAccessPointName);
@@ -394,9 +413,6 @@ int main(int argc, char **argv)
         printf("-\n");
     }
 
-    close(sockfd);
-
-    
   quit:
     if (community)
        free(community);
@@ -408,4 +424,3 @@ int main(int argc, char **argv)
        free(name);
     return 0;
 }
-
diff --git a/src/ap-rrd.c b/src/ap-rrd.c
new file mode 100644 (file)
index 0000000..9b15269
--- /dev/null
@@ -0,0 +1,391 @@
+/*
+ *      ap-rrd.c from Access Point SNMP Utils for Linux
+ *
+ * Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License Version 2 from
+ * June 1991 as published by the Free Software Foundation.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+#include <stdio.h>
+#include <fcntl.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#if defined (__GLIBC__)
+#include <libgen.h>
+#endif
+#include "ap-utils.h"
+
+#define ERR_STR _("Error getting data from AP %s\n")
+
+short ap_type = ATMEL410;
+char *community = NULL;
+struct in_addr ap_ip;
+
+void usage()
+{
+    printf(_("\nUsage:\n"));
+    printf(_
+          ("\tap-rrd -i ip -c community -t type -d db_file [-b bssid] [-n name] [-a aptype] [-h] [-r] \n\n"));
+    printf(_
+          ("Get stats from AP and put it in to specified RRDtool database\n\n"));
+    printf(_("-i ip        - AP ip address\n"));
+    printf(_("-c community - SNMP community string\n"));
+    printf(_
+          ("-t type      - statistics type <w>ireless, <e>thernet, associated <s>tations or <l>ink quality in client mode\n"));
+    printf(_("-d db_file   - RRD database file with full path\n"));
+    printf(_
+          ("-b bssid     - mac address of the AP to which get link quality, only if type=l\n"));
+    printf(_("-n name     - AP name - for check only\n")); 
+    printf(_("-a aptype    - AP type - 410 (default) or 510 for ATMEL12350's, like the ME-102\n"));
+    printf(_("-r           - reset AP when getting LinkQuality stats\n"));
+    printf(_("-h           - print this help screen\n\n"));
+    printf(_("ap-rrd %s Copyright (c) 2002-2004 Roman Festchook\n\n"),
+          VERSION);
+
+}
+
+
+int main(int argc, char **argv)
+{
+    extern char *optarg;
+    extern int optind;
+    extern int opterr;
+    extern int optopt;
+    int opt = 0;
+
+    struct ap {
+       char mac[6];
+       unsigned char q1;
+       unsigned char q2;
+       unsigned char channel;
+       unsigned char x2;
+       unsigned char options;
+       unsigned char x3[5];
+       unsigned char essid[32];
+    } *app = NULL;
+
+    char Wireless[] =
+       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x03, 0x01,
+       0x00
+    };
+    char EthRx[] =
+       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x07, 0x01,
+       0x00
+    };
+    char EthTx[] =
+       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x07, 0x02,
+       0x00
+    };
+    char operAccessPointName[] =
+       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x0A,
+       0x00
+    };
+    char StasNum[] =
+       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x05, 0x01,
+       0x00
+    };
+    char KnownAP[] =
+       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x07,
+       0x01, 0x00
+    };
+    char bridgeOperationalMode[] =
+       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
+       0x01, 0x04, 0x01, 0x00
+    };
+
+    struct EthRxStatistics_s *EthRxStat = NULL;
+    struct EthTxStatistics_s *EthTxStat = NULL;
+    struct wirelessStatistics_s *WirelessStat = NULL;
+    varbind varbinds[2];
+    int i, reset_flag=0;
+    char message[12], bssid_flag,  stat_type = 0, *bssid = NULL, *name = NULL, *rrd_file = NULL, cmd[1024];
+
+#ifdef HAVE_GETTEXT
+    setlocale(LC_ALL, "");
+    bindtextdomain("ap-utils", LOCALEDIR);
+    textdomain("ap-utils");
+#endif
+
+    if (argc < 4) {
+       usage();
+       exit(0);
+    }
+
+    do {
+       opterr = 0;
+       switch (opt = getopt(argc, argv, "i:c:t:b:n:a:d:r")) {
+       case 'i':
+           if (inet_aton(optarg, &ap_ip) == 0) {
+               printf(_("Invalid IP-address\n"));
+               return 1;
+           }
+           break;
+       case 't':
+           stat_type = optarg[0];
+           break;
+       case 'c':
+           community = malloc(strlen(optarg) + 1);
+           strncpy(community, optarg, strlen(optarg) + 1);
+           break;
+       case 'b':
+           bssid = malloc(strlen(optarg) + 1);
+           strncpy(bssid, optarg, strlen(optarg) + 1);
+           break;
+       case 'd':
+           rrd_file = malloc(strlen(optarg) + 1);
+           strncpy(rrd_file, optarg, strlen(optarg) + 1);
+           break;
+       case 'n':
+           name = malloc(strlen(optarg) + 1);
+           strncpy(name, optarg, strlen(optarg) + 1);
+           break;
+       case 'r':
+           reset_flag=1;
+           break;
+        case 'a':
+            if ( strcmp( optarg, "510\0" ) == 0) {
+              Wireless[5] = 0xE0;
+              Wireless[6] = 0x3E;
+              EthRx[5] = 0xE0;
+              EthRx[6] = 0x3E;
+              EthTx[5] = 0xE0;
+              EthTx[6] = 0x3E;
+              operAccessPointName[5] = 0xE0;
+              operAccessPointName[6] = 0x3E;
+              StasNum[5] = 0xE0;
+              StasNum[6] = 0x3E;
+              KnownAP[5] = 0xE0;
+              KnownAP[6] = 0x3E;
+              bridgeOperationalMode[5] = 0xE0;
+              bridgeOperationalMode[6] = 0x3E;
+            } else if (strcmp(optarg, "410") == 0) {
+              /* nothing - hard-coded defaults are fine */
+            } else {
+              /* Invalid AP-Type */
+              printf(_("Invalid AP-Type '%s' - valid types are 510 or 410\n"), optarg);
+              return 1;
+            }
+            break;
+       case -1:
+            break;
+       default:
+           usage();
+           goto quit;
+       }
+    } while (opt != -1);
+
+    if (!community) {
+       usage();
+       goto quit;
+    }
+
+    switch (stat_type) {
+
+    case 'e':
+
+       varbinds[0].oid = EthRx;
+       varbinds[0].len_oid = sizeof(EthRx);
+       varbinds[0].value = EthRx;
+       varbinds[0].len_val = 0;
+       varbinds[0].type = NULL_VALUE;
+       varbinds[1].oid = EthTx;
+       varbinds[1].len_oid = sizeof(EthTx);
+       varbinds[1].value = EthTx;
+       varbinds[1].len_val = 0;
+       varbinds[1].type = NULL_VALUE;
+
+       if (snmp(varbinds, 2, GET) <= 0) {
+           printf(ERR_STR, inet_ntoa(ap_ip));
+           return 1;
+       }
+
+       if (varbinds[0].len_val == 64) {
+           if (EthRxStat)
+               free(EthRxStat);
+           EthRxStat =
+               (struct EthRxStatistics_s *) malloc(varbinds[0].
+                                                      len_val);
+           memcpy(EthRxStat, varbinds[0].value, varbinds[0].len_val);
+       } else {
+           printf(ERR_STR, inet_ntoa(ap_ip));
+           return 1;
+       }
+
+       if (varbinds[1].len_val == 56) {
+           if (EthTxStat)
+               free(EthTxStat);
+           EthTxStat =
+               (struct EthTxStatistics_s *) malloc(varbinds[1].
+                                                      len_val);
+           memcpy(EthTxStat, varbinds[1].value, varbinds[1].len_val);
+       } else {
+           printf(ERR_STR, inet_ntoa(ap_ip));
+           return 1;
+       }
+       sprintf(cmd, "rrdtool update %s N:%u:%u", rrd_file, swap4(EthRxStat->TotalBytesRx), swap4(EthTxStat->TotalBytesTx));
+       system(cmd);
+       if (EthRxStat)
+           free(EthRxStat);
+       if (EthTxStat)
+           free(EthTxStat);
+       break;
+    case 'w':
+       varbinds[0].oid = Wireless;
+       varbinds[0].len_oid = sizeof(Wireless);
+       varbinds[0].value = Wireless;
+       varbinds[0].len_val = 0;
+       varbinds[0].type = NULL_VALUE;
+
+       if (snmp(varbinds, 1, GET) <= 0) {
+           printf(ERR_STR, inet_ntoa(ap_ip));
+           return 1;
+       }
+
+       if (varbinds[0].len_val == 88) {
+           if (WirelessStat)
+               free(WirelessStat);
+           WirelessStat =
+               (struct wirelessStatistics_s *) malloc(varbinds[0].len_val);
+           memcpy(WirelessStat, varbinds[0].value, varbinds[0].len_val);
+       } else {
+           printf(ERR_STR, inet_ntoa(ap_ip));
+           return 1;
+       }
+       sprintf(cmd, "rrdtool update %s N:%u:%u", rrd_file,
+              swap4(WirelessStat->UnicastReceivedPackets) +
+              swap4(WirelessStat->BroadcastReceivedPackets) +
+              swap4(WirelessStat->MulticastReceivedPackets),
+              swap4(WirelessStat->UnicastTransmittedPackets) +
+              swap4(WirelessStat->BroadcastTransmittedPackets) +
+              swap4(WirelessStat->MulticastTransmittedPackets));
+       system(cmd);
+       break;
+
+    case 's':
+       varbinds[0].oid = StasNum;
+       varbinds[0].len_oid = sizeof(StasNum);
+       varbinds[0].value = StasNum;
+       varbinds[0].len_val = 0;
+       varbinds[0].type = NULL_VALUE;
+
+       if (snmp(varbinds, 1, GET) <= 0) {
+           printf(ERR_STR, inet_ntoa(ap_ip));
+           return 1;
+       }
+
+       sprintf(cmd, "rrdtool update %s N:%u", rrd_file, *varbinds[0].value);
+       system(cmd);
+       break;
+
+    case 'l':
+
+       varbinds[0].oid = bridgeOperationalMode;
+       varbinds[0].len_oid = sizeof(bridgeOperationalMode);
+       varbinds[0].len_val = 0;
+       varbinds[0].type = NULL_VALUE;
+
+       if (snmp(varbinds, 1, GET) <= 0) {
+           printf(ERR_STR, inet_ntoa(ap_ip));
+           return 1;
+       }
+
+       if (*(varbinds[0].value) != 3) {
+           printf(ERR_STR, inet_ntoa(ap_ip));
+           return 1;
+       }
+
+       if (reset_flag) {
+               if (SysReset()) {
+                   printf(ERR_STR, inet_ntoa(ap_ip));
+                   return 1;
+               }
+               sleep(10);
+       }
+               
+       varbinds[0].oid = KnownAP;
+       varbinds[0].len_oid = sizeof(KnownAP);
+       varbinds[0].type = NULL_VALUE;
+       varbinds[0].len_val = 0;
+
+       if (snmp(varbinds, 1, GET) <= 0) {
+           printf(ERR_STR, inet_ntoa(ap_ip));
+           return 1;
+       }
+       bssid_flag = 1;
+       for (i = 0; i < varbinds[0].len_val; i += 48) {
+           if (app)
+               free(app);
+           app = (struct ap *) malloc(48);
+           memcpy(app, varbinds[0].value + i, 48);
+           if (!app->channel)
+               continue;
+           if (bssid) {
+               sprintf(message, "%02X%02X%02X%02X%02X%02X",
+                       app->mac[0] & 0xFF, app->mac[1] & 0xFF,
+                       app->mac[2] & 0xFF, app->mac[3] & 0xFF,
+                       app->mac[4] & 0xFF, app->mac[5] & 0xFF);
+               if (memcmp(message, bssid, 12))
+                   continue;
+           };
+       sprintf(cmd, "rrdtool update %s N:%u:%u", rrd_file, app->q2, 96 - app->q1);
+       system(cmd);
+           bssid_flag = 0;
+           break;
+       }
+       if (bssid_flag)
+           printf(ERR_STR, inet_ntoa(ap_ip));
+       break;
+    default:
+       usage();
+       goto quit;
+    }
+
+/*    printf("-\n");
+
+
+    if ( name != NULL ) {
+        varbinds[0].oid = operAccessPointName;
+        varbinds[0].len_oid = sizeof(operAccessPointName);
+        varbinds[0].len_val = 0;
+        varbinds[0].type = NULL_VALUE;
+        if (snmp(varbinds, 1, GET) <= 0) {
+               printf("\n");
+               return 1;
+        }
+
+        for (i = 0; i < 32 && *(varbinds[0].value + i); i++)
+               putchar(*(varbinds[0].value + i));
+               putchar('\n');
+          if (strncmp(name,varbinds[0].value,strlen(name)) ){
+               return 2;
+        }
+    } else {
+        printf("-\n");
+    }
+*/
+    
+  quit:
+    if (community)
+       free(community);
+    if (app)
+       free(app);
+    if (bssid)
+       free(bssid);
+    if (name)
+       free(name);
+    return 0;
+}
diff --git a/src/ap-tftp.c b/src/ap-tftp.c
new file mode 100644 (file)
index 0000000..5e6ac57
--- /dev/null
@@ -0,0 +1,670 @@
+/* ------------------------------------------------------------------------- */
+/* ap-tftp.c                                                                 */
+/*                                                                           */
+/* Version: 1.1                                                              */
+/*                                                                           */
+/* Copyright (C) 2004-2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>  */
+/*                                                                           */
+/* A simple tftp client for upgrading ATMEL AT76C510 WiSOC-based APs.        */
+/* Supports ATMEL+INTERSIL boards (1.4x.y firmware) and ATMEL+RFMD boards    */
+/* (0.x.y.z firmware).                                                       */
+/* Modelled around TELLUS (GEMTEK/ATMEL OEM) and SMARTBRIDGES TFTP clients   */
+/* functionality.                                                            */
+/* Tested with TELLUS, D-Link and SmartBridges hardware.                     */
+/* This program is part of AP-UTILS project (http://ap-utils.polesye.net)    */
+/*                                                                           */
+/* Loosely based on a simple tftp client for busybox.                        */
+/* Tries to follow RFC1350.                                                  */
+/* Only "octet" mode and "put" method supported.                             */
+/*                                                                           */
+/* Not implemented:                                                          */
+/* - uploading of OEM (default) settings                                     */
+/* - uploading of PATCH code                                                 */
+/*                                                                           */
+/* Code based on:                                                            */
+/*                                                                           */
+/* bb tftp: Copyright (C) 2001 Magnus Damm <damm@opensource.se>              */
+/*                                                                           */
+/* atftp:   Copyright (C) 2000 Jean-Pierre Lefebvre <helix@step.polymtl.ca>  */
+/*                             and Remi Lefebvre <remi@debian.org>           */
+/*                                                                           */
+/* utftp:   Copyright (C) 1999 Uwe Ohse <uwe@ohse.de>                        */
+/*                                                                           */
+/* This program is free software; you can redistribute it and/or modify      */
+/* it under the terms of the GNU General Public License as published by      */
+/* the Free Software Foundation; either version 2 of the License, or         */
+/* (at your option) any later version.                                       */
+/*                                                                           */
+/* This program 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          */
+/* General Public License for more details.                                  */
+/*                                                                           */
+/* You should have received a copy of the GNU General Public License         */
+/* along with this program; if not, write to the Free Software               */
+/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA   */
+/*                                                                           */
+/* ------------------------------------------------------------------------- */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+#include <sys/stat.h>
+#include <netdb.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include "ap-utils.h"
+
+#ifdef HAVE_GETTEXT
+/* GNU gettext stuff*/
+#include <locale.h>
+#include <libgnuintl.h>
+#define _(String) gettext (String)
+#else
+#define _(String) (String)
+#endif
+
+#define TFTP_BLOCKSIZE_DEFAULT 512 /* according to RFC 1350, do not change */
+#define TFTP_TIMEOUT 2             /* # seconds waiting for single response */
+#define TFTP_RETRIES 5             /* # retries with TFTP_TIMEOUT */
+#undef FEATURE_TFTP_DEBUG
+
+/* opcodes we support */
+#define TFTP_WRQ   2
+#define TFTP_DATA  3
+#define TFTP_ACK   4
+#define TFTP_ERROR 5
+
+#ifdef FEATURE_TFTP_DEBUG
+#define YES _("yes")
+#define NO _("no")
+#endif
+#define ERR_READFW _("Error while read()ing firmware file")
+
+
+/* This is necessary becouse of linkage to libap.a */
+short ap_type = ATMEL410;
+char *community = NULL;
+struct in_addr ap_ip;
+
+int tftp(int ip, const char *remotefile, int localfd, const char *wopt,
+        int woptlen, int maxdlen)
+{
+/* known errors server may respond with */
+char *tftp_error_msg[8] = {
+    _("Undefined error"),
+    _("File not found"),
+    _("Access violation"),
+    _("Disk full or allocation error"),
+    _("Illegal TFTP operation"),
+    _("Unknown transfer ID"),
+    _("File already exists"),
+    _("No such user")
+};
+    const int port = 69;
+    struct sockaddr_in to;
+    struct sockaddr_in from;
+    struct timeval tv;
+    fd_set rfds;
+    unsigned short tmp;
+    int fromlen;
+    int opcode = TFTP_WRQ;
+    int tftp_bufsize = TFTP_BLOCKSIZE_DEFAULT;
+    int timeout;
+    int block_nr = 1;
+    int finished = 0;
+    int socketfd;
+    int len;
+    int bc = lseek(localfd, 0, SEEK_CUR);
+    char *nl = "";
+    char *cp;
+    char *buf = malloc(tftp_bufsize);
+    char buf2[64];
+
+    printf("Trying to upload firmware to the AP...\n");
+
+    if ((socketfd = socket(PF_INET, SOCK_DGRAM, 0)) < 0) {
+       perror("socket()");
+       return EXIT_FAILURE;
+    }
+
+    len = sizeof(to);
+    memset(&to, 0, len);
+    bind(socketfd, (struct sockaddr *)&to, len);
+
+    to.sin_family = AF_INET;
+    to.sin_port = htons(port);
+    to.sin_addr.s_addr = ip;
+
+    while (1) {
+       timeout = TFTP_RETRIES;
+       cp = buf;
+
+       /* first create the opcode part */
+
+       *((unsigned short *) cp) = htons(opcode);
+       cp += 2;
+
+       if (opcode == TFTP_WRQ) {
+           /* see if the filename fits into buf */
+           len = strlen(remotefile) + 1;
+           if ((cp + len + 1 + 6 + woptlen) >= &buf[tftp_bufsize - 1]) {
+               printf(_("Remote-filename too long.\n"));
+               break;
+           }
+
+           strncpy(cp, remotefile, len);
+           cp += len;
+
+           // ATMEL tftp client specific
+           *cp = 1;
+           cp++;
+
+           memcpy(cp, "octet", 6);
+           cp += 6;
+
+           // ATMEL tftp client specific ("upload auth. code")
+           memcpy(cp, wopt, woptlen);
+           cp += woptlen;
+       }
+
+       if (opcode == TFTP_DATA) {
+           *((unsigned short *) cp) = htons(block_nr);
+           cp += 2;
+
+           len = read(localfd, cp, tftp_bufsize);
+
+           if (len < 0) {
+               sprintf(buf2, _("%sError in read()"), nl);
+               perror(buf2);
+               break;
+           }
+
+           block_nr++;
+
+           /*
+            * assure we wont upload more than maxdlen bytes
+            * even if total file length > maxdlen
+            */
+           if (bc + len > maxdlen) {
+               len = maxdlen - bc;
+               cp[len] = '\0';
+           }
+           bc += len;
+
+           if (len != tftp_bufsize)
+               finished++;
+
+           cp += len;
+       }
+
+       /* send packet */
+
+       do {
+           len = cp - buf;
+
+#ifdef FEATURE_TFTP_DEBUG
+           printf(_("sending %u bytes\n"), len);
+           for (cp = buf; cp < &buf[len]; cp++)
+               printf("%02x ", *cp & 0xFF);
+
+           printf("\n");
+#endif
+           if (sendto(socketfd, buf, len, 0,
+               (struct sockaddr *) &to, sizeof(to)) < 0)
+           {
+               sprintf(buf2, _("%sError in sendto()"), nl);
+               perror(buf2);
+               len = -1;
+               break;
+           }
+
+           /* receive packet */
+
+           memset(&from, 0, sizeof(from));
+           fromlen = sizeof(from);
+
+           tv.tv_sec = TFTP_TIMEOUT;
+           tv.tv_usec = 0;
+
+           FD_ZERO(&rfds);
+           FD_SET(socketfd, &rfds);
+
+           switch (select(FD_SETSIZE, &rfds, NULL, NULL, &tv)) {
+               case 1:
+                   len = recvfrom(socketfd, buf, tftp_bufsize, 0,
+                       (struct sockaddr *) &from, &fromlen);
+
+                   if (len < 0) {
+                       sprintf(buf2, _("%sError in recvfrom()"), nl);
+                       perror(buf2);
+                       break;
+                   }
+
+                   /*
+                   if (to.sin_port == htons(port))
+                       to.sin_port = from.sin_port;
+                   */
+                   if (to.sin_port == from.sin_port) {
+#ifndef FEATURE_TFTP_DEBUG
+                       if (opcode == TFTP_DATA) {
+                           sprintf(buf2, _("\rProgress: uploaded %3i%%."),
+                               bc * 100 / maxdlen);
+                           write(fileno(stdout), buf2, strlen(buf2));
+                           nl = "\n";
+                       }
+#endif
+                       timeout = 0;
+                       break;
+                   }
+
+                   /* assume invalid packet */
+                   printf(_("%sMalformed packet received. Aborting.\n"), nl);
+                   len = -1;
+                   break;
+
+               case 0:
+                   timeout--;
+                   if (timeout == 0)
+                       len = -1;
+
+                   printf(_("%sTimed out waiting for response from server "
+                       "(%i/%i).\n"),nl, TFTP_RETRIES - timeout, TFTP_RETRIES);
+                   nl = "";
+                   break;
+
+               default:
+                   len = -1;
+                   sprintf(buf2, _("%sError in select()"), nl);
+                   perror(buf2);
+           }
+       } while (timeout && (len >= 0));
+
+       if (len < 0)
+           break;
+
+       /* process received packet */
+
+       opcode = ntohs(*((unsigned short *) buf));
+       tmp = ntohs(*((unsigned short *) &buf[2]));
+
+#ifdef FEATURE_TFTP_DEBUG
+       printf(_("Received %d bytes: %04x %04x\n"), len, opcode, tmp);
+#endif
+
+       if (opcode == TFTP_ERROR) {
+           sprintf(buf, "code %i", tmp);
+           if (tmp < (sizeof(tftp_error_msg) / sizeof(char *))) {
+               strcat(buf, " (");
+               strcat(buf, tftp_error_msg[tmp]);
+               strcat(buf, ")");
+           }
+
+           printf(_("%sError: server responded with %s. Aborting.\n"),nl,buf);
+           break;
+       }
+
+       if (opcode == TFTP_ACK) {
+           if (tmp == (block_nr - 1)) {
+               if (finished) {
+                   printf(_("%sFlash programming in progress...\n"), nl);
+                   sleep(5);
+                   printf(_("Finished successfully.\n"));
+                   break;
+               }
+
+               opcode = TFTP_DATA;
+               continue;
+           }
+       }
+    }
+
+    close(socketfd);
+    free(buf);
+
+    return finished ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
+void usage(char **argv)
+{
+    printf (_("PLEASE BE _ABSOLUTELY_ SURE TO READ MANPAGE PRIOR USE!!!\n"));
+    printf (_(
+       "\nUsage: %s -i IP -f firmware_file.rom [-c community] [-h]\n"),
+       argv[0]);
+}
+
+int main(int argc, char **argv)
+{
+    struct stat sb;
+    char *localfile = NULL;
+    char *remotefile = NULL;
+    char *cp;
+    int fd;
+    int result = 0;
+    int i;
+    static char wopt[256];
+    int woptlen;
+    int maxdlen;
+
+#ifdef HAVE_GETTEXT
+    /* locale support init */
+    setlocale(LC_ALL, "");
+    bindtextdomain("ap-utils", LOCALEDIR);
+    textdomain("ap-utils");
+#endif
+
+    printf (_("TFTP client for upgrading firmware in ATMEL AT76C510 "
+           "WiSOC-based APs.\n"));
+    printf (_("(C) 2004-2005 Jan Rafaj "
+           "<jr-aputils at cedric dot unob dot cz>\n"));
+
+    if (argc == 1) {
+       usage(argv);
+       return EXIT_SUCCESS;
+    }
+
+    ap_ip.s_addr = 0;
+
+    while ((i = getopt(argc, argv, "i:f:c:h")) != -1) {
+       switch (i) {
+           case 'i':
+               /* host = gethostbyname(optarg); */
+               for (cp = optarg, i = 0; *cp && (cp = index(cp, '.')); cp++, i++);
+               if (i < 3 || !(inet_aton(optarg, &ap_ip))) {
+                   printf(_("Error: invalid IP address format given.\n"));
+                   result = EXIT_FAILURE;
+                   goto quit;
+               }
+               break;
+           case 'f': 
+               localfile = strdup(optarg);
+               break;
+           case 'c':
+               community = strdup(optarg);
+               break;
+           case 'h':
+               usage(argv);
+               result = EXIT_SUCCESS;
+               goto quit;
+           default:
+               result = EXIT_FAILURE;
+               goto quit;
+       }
+    }
+
+    /*
+     * either any of mandatory options (IP, firmware path) not specified,
+     * or some extra non-option arguments specified
+     */
+    if (ap_ip.s_addr == 0 || !localfile || optind != argc) {
+       printf(_("Error: invalid argument combination.\n"));
+       result = EXIT_FAILURE;
+       goto quit;
+    }
+
+    fd = open(localfile, O_RDONLY, 0644);
+    if (fd < 0) {
+       perror(_("Error while open()ing firmware file"));
+       result = EXIT_FAILURE;
+       goto quit;
+    }
+
+    fstat(fd, &sb);
+    if (sb.st_size < 94448 || sb.st_size > 524288) {
+       printf(_("Error: invalid firmware file given.\n"));
+       result = EXIT_FAILURE;
+       goto quit;
+    }
+
+    while ((i = read(fd, wopt, sizeof(wopt))) != 0) {
+       if (i < 0) {
+           perror(ERR_READFW);
+           result = EXIT_FAILURE;
+           goto quit;
+       }
+
+       if (i == sizeof(wopt))
+           lseek(fd, -13, SEEK_CUR);
+
+       while (i--) {
+           if (!(memcmp(&wopt[i], "ATMEL", 5)))
+               result |= 1;
+
+           if (!(memcmp(&wopt[i], "802.11 AP", 9)))
+               result |= 2;
+
+           if (!(memcmp(&wopt[i], "atbrfirm.bin", 12))) {
+               result |= 16;
+               remotefile = "atbrfirm.bin";
+           }
+
+           if (!(memcmp(&wopt[i], "atsingle.bin", 12))) {
+               result |= 32;
+               remotefile = "atsingle.bin";
+           }
+
+           if (result > 18)
+               break;
+       }
+
+       if (result > 18)
+           break;
+
+       memset(wopt, 0, sizeof(wopt));
+    }
+#if FEATURE_TFTP_DEBUG
+    printf(_("Firmware file contains:\n"
+           "- string \"ATMEL\": %s\n"
+           "- string \"802.11 AP\": %s\n"
+           "- string \"atbrfirm.bin\": %s\n"
+           "- string \"atsingle.bin\": %s\n"),
+           result & 1 ? YES : NO, result & 2 ? YES : NO,
+           result & 16 ? YES : NO, result & 32 ? YES : NO);
+#endif
+    if ((result & (1|2)) != (1|2) || (result & (16|32)) == (16|32) ||
+       (result & (16|32)) == 0)
+    {
+       printf(_("Error: invalid firmware file given.\n"));
+       result = EXIT_FAILURE;
+       goto quit;
+    }
+
+    lseek(fd, 0, SEEK_SET);
+
+    cp = strrchr(localfile, '/');
+    if (cp)
+       cp++;
+    else
+       cp = localfile;
+
+    printf(_("Using:\n"
+       "- server: %s\n"
+       "- firmware file: \"%s\"\n"
+       "- name used for upload: \"%s\"\n"),
+       inet_ntoa(ap_ip), cp, remotefile);
+
+    if (result & 16) {
+       /* Firmware series 1.4x.y - atbrfirm.bin */
+
+       /*
+        * For most devices using 1.4x.y firmware:
+        * - at most 94448 bytes needs to be written (file content above
+        *   this offset is simply cut off)
+        * - checksum is only performed on the uploaded (first 94448)
+        *   bytes of the firmware file
+        * - auth. code has 8 bytes in length (see below for its structure)
+        * SmartBridges, however, differs in this:
+        * - the TFTP firmware upgrade utility first checks whether the OUI
+        *   portion of its MAC address is 00301A (SMARTBRIDGES PTE. LTD.),
+        *   followed by 09 (apparently AT76C510-based SmartBridges devices),
+        *   and will continue only upon match. This is to prevent performing
+        *   this SmartBridges-style upgrade to non-SmartBridges devices, that
+        *   could otherwise end up with damaged flash content. Note that
+        *   this is still somewhat clumsy, since there's a remote possibility
+        *   that someone redefined his/her ATMEL AP MAC address with
+        *   SmartBridges OUI and added 09, so this check would not prevent
+        *   damage in this case (ouch!). There's however, a better check
+        *   we could come up up with: lets borrow a part of the code from
+        *   get_mib_details() to find out whether the target device appears
+        *   to be running firmware with ATMEL410 SBRIDGES MIB, and proceed
+        *   with 'SmartBridges' upgrade method only, if it does.
+        * - entire file is being written; there's no 'first 94448 bytes only'
+        *   limitation
+        * - 8-byte auth. code (see below) is followed by:
+        *   - (char):   length of the following "password" string
+        *   - (string): "password" string - the firmware will perform
+        *               actual upgrade only if this "password" matches with
+        *               any of the three communities defined in the AP
+        *               (sysadmin's note: finally something reasonable)
+        */
+
+       unsigned short sum = 0;
+       unsigned short *wp;
+       int readen = 0;
+
+       if (community) {
+           /*
+            * OK, looks like we want to upgrade SmartBridges hardware => no
+            * firmware file cutoff, and lets check whether the target device
+            * appears to have SmartBridges firmware. If not, bail out.
+            */
+/*
+           char operEthernetAddress[12] = {
+               0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A,
+               0x01, 0x01, 0x02, 0x03, 0x00
+           };
+*/
+           char AuthRadiusIP[] = {
+               0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A,
+               0x01, 0x02, 0x06, 0x03, 0x00
+           };
+           varbind varbinds[1];
+
+           maxdlen = sb.st_size;
+
+/*
+           varbinds[0].oid = operEthernetAddress;
+           varbinds[0].len_oid = sizeof(operEthernetAddress);
+*/
+           varbinds[0].oid = AuthRadiusIP;
+           varbinds[0].len_oid = sizeof(AuthRadiusIP);
+           varbinds[0].value = NULL;
+           varbinds[0].len_val = 0;
+           varbinds[0].type = NULL_VALUE;
+           if (snmp(varbinds, 1, GET) > 0) {
+/*
+               i = varbinds[0].value[0] << 24 |
+                   varbinds[0].value[1] << 16 |
+                   varbinds[0].value[2] << 8  |
+                   varbinds[0].value[3];
+               if (i != 0x00301A09) {
+*/
+               if (varbinds[0].len_val != 4) {
+                   printf(_("Error: device with the given IP does not seem "
+                            "to run SmartBridges firmware.\n"));
+                   result = EXIT_FAILURE;
+                   goto quit;
+               }
+           } else {
+               printf(_("Error: SNMP authorization error or device unavailable"
+                   ".\n"));
+               result = EXIT_FAILURE;
+               goto quit;
+           }
+       } else {
+           /* non-SB hardware */
+           maxdlen = 94448;
+       }
+
+       /* compute checksum */
+       while ((i = read(fd, wopt, sizeof(wopt))) != 0) {
+           if (i < 0) {
+               perror(ERR_READFW);
+               result = EXIT_FAILURE;
+               goto quit;
+           }
+
+           /* assure we do not checksum more than maxdlen bytes */
+           if ((readen + i) > maxdlen)
+               i = maxdlen - readen;
+
+           readen += i;
+
+           /* perform iterative checksumming */
+           i /= 2;
+           wp = (unsigned short *)wopt;
+           while (i--) {
+               if (sum + *wp > 0xFFFF)
+                   sum++;
+
+               sum += *(wp++);
+           };
+
+           /* prevent eventual fread() if file length > maxdlen */
+           if (readen == maxdlen)
+               break;
+       }
+       sum ^= 0xFFFF;
+       lseek (fd, 0, SEEK_SET);
+
+       /*
+        * wopt[0] - wopt[1] are fw length in unsigned short form
+        * wopt[2] - wopt[3] are fw checksum in unsigned short form
+        * wopt[4] - wopt[7] are fw length in unsigned int form
+        */
+       wopt[0] = maxdlen;
+       wopt[1] = maxdlen >> 8;
+       wopt[2] = sum;
+       wopt[3] = sum >> 8;
+       wopt[4] = maxdlen;
+       wopt[5] = maxdlen >> 8;
+       wopt[6] = maxdlen >> 16;
+       wopt[7] = maxdlen >> 24;
+
+       printf("- checksum: %x\n", ntohs(sum));
+
+       woptlen = 8;
+
+       if (community) {
+           wopt[8] = strlen(community);
+           memcpy((void *) &wopt[9], (void *)community, strlen(community));
+           woptlen += (1 + strlen(community));
+       }
+    } else { /* result & 32 */
+       /* Firmware series 0.x.y.z - atsingle.bin */
+
+       /* For 0.x.y.z firmware:
+        * - first 234 bytes from the file are used as auth. code
+        * - the actual firmware is being uploaded since offset 256 in the file
+        */
+
+       i = read(fd, wopt, 234);
+       if (i < 234) {
+           printf(ERR_READFW);
+           result = EXIT_FAILURE;
+           goto quit;
+       }
+       if (lseek(fd, 256, SEEK_SET) == -1) {
+           perror(_("Error while lseek()ing in firmware file\n"));
+           result = EXIT_FAILURE;
+           goto quit;
+       }
+       woptlen = 234;
+       maxdlen = sb.st_size; /* no limit */
+    }
+
+    result = tftp(ap_ip.s_addr, remotefile, fd, wopt, woptlen, maxdlen);
+
+quit:
+    if (localfile)
+       free(localfile);
+    if (community)
+       free(community);
+
+    return(result);
+}
index cd864a1d84c10cd6f5a6fdc1986dbe6194bdd4c9..d1666e0865b1101c5dbde836573cdc1bf3f7fcfa 100644 (file)
@@ -53,8 +53,10 @@ int main(int argc, char **argv)
     size_t time_stamp;
     char mac[6], *enterprise_oid = NULL, c, mac_info[31], mac_flag = 0;
     struct in_addr agent_addr;
-    char enterprise[] = { 0x2b, 0x06, 1, 4, 1, 0x83, 0x1a, 1, 1 };
-    char *generic_traps[8] = { "ColdStart",
+    char enterprise_410[] = { 0x2b, 0x06, 1, 4, 1, 0x83, 0x1a, 1, 1 };
+    char enterprise_12350[] = { 0x2b, 0x06, 1, 4, 1, 0xe0, 0x3e, 1, 1 };
+    char *generic_traps[8] = {
+       "ColdStart",
        "WarmStart",
        "LinkDown",
        "LinkUp",
@@ -229,7 +231,9 @@ int main(int argc, char **argv)
        enterprise_oid[start[1]] = '\0';
        start += start[1] + 2;
        memcpy(&agent_addr.s_addr, start + 2, 4);
-       if (memcmp(enterprise_oid, enterprise, sizeof(enterprise))) {
+       if (memcmp(enterprise_oid, enterprise_410, sizeof(enterprise_410)) &&
+           memcmp(enterprise_oid, enterprise_12350, sizeof(enterprise_12350)))
+       {
            syslog(LOG_INFO,
                   _
                   ("Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s."),
@@ -304,11 +308,13 @@ int main(int argc, char **argv)
        }
        syslog(LOG_INFO,
               _
-              ("Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d"),
+              ("Agent:v%d %s (%s@%s:%d) Trap %i: %s%s%s. "
+               "SysUptime %d:%02d:%02d.%02d"),
               snmp_version + 1,  inet_ntoa(agent_addr),
               community, inet_ntoa(client.sin_addr), ntohs(client.sin_port),
-              (generic_trap ==
-               6) ? (atmel_ap_type == 1) ? specific_traps[specific_trap-1] : specific_traps_sb[specific_trap-1] :
+              (generic_trap == 6) ? specific_trap: generic_trap + 1,
+              (generic_trap == 6) ?
+               (atmel_ap_type == 1) ? specific_traps_sb[specific_trap-1] : specific_traps[specific_trap-1] :
               generic_traps[generic_trap], (mac_flag) ? " " : "",
               (mac_flag) ? mac_info : "", time_stamp, min, sec, hand);
     }
diff --git a/src/aplink.c b/src/aplink.c
new file mode 100644 (file)
index 0000000..e3e5413
--- /dev/null
@@ -0,0 +1,439 @@
+/*
+ *        aplink.c from Access Point SNMP Utils for Linux
+ *
+ * Copyright (c) 2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License Version 2 from
+ * June 1991 as published by the Free Software Foundation.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include "ap-utils.h"
+
+#define S_RSSI     _("RSSI:     [")
+#define S_RSSI_AVG _("RSSI avg: [")
+#define S_RSSI_TOP _("RSSI top: [")
+#define S_RSSI_ROU _("RSSI rou: [")
+#define APLINK_HELP _("P - pause, T - toggle graph view, Q - quit to menu, Other key - force update.")
+
+#define GRWIN_LENGTH   (COLS - MCOLS - 7)
+#define GRWIN_HEIGHT    (LAST_ROW - 10)
+
+int gr_mode = 0;
+
+extern WINDOW *main_sub;
+extern short ap_type, ap_vendorext;
+extern int wait_mode, poll_delay;
+
+/*
+ * TODO: Implement APClientInfo as alternative, for NetGear ME102 MIB
+ * (ap_type == ATMEL12350 && ap_vendorext == NONE).
+ */
+
+void atmel_aplink()
+{
+    char bridgeOperationalMode[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x01, 0x00
+    };
+    /*
+     * ATMEL12350 EZYNET MIB and ATMEL410 SBRIDGES MIB specific OIDs:
+     * for ATMEL410 SBRIDGES MIB: .1.3.6.1.4.1.410.1.2.8.1.0
+     * for ATMEL12350 EZYNET MIB: .1.3.6.1.4.1.12350.1.2.7.4.0
+     */
+    char NetworkSettings[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x08, 0x01, 0x00
+    };
+
+    /* APClient mode: AP link diagnostics */
+
+    struct NetworkSettings_ATMEL410_SBRIDGES sa_sb_410;
+    struct NetworkSettings_ATMEL12350_EZYNET sa_en_12350;
+
+    /* Used common members of the 2 structures above. */
+    unsigned char BSSID[6];
+    /* unsigned short InfoCapability; */
+    unsigned char Rssi;
+    unsigned char Channel;
+    /* LinkQuality for NetworkSettings_ATMEL410_SBRIDGES */
+    /* CurrentRate for NetworkSettings_ATMEL12350_EZYNET */
+    unsigned char LQCR;
+    unsigned char ESSID[32];
+    unsigned long ESSLEN; /* uchar for NetworkSettings_ATMEL410_SBRIDGES */
+
+    int i, j = 0, linked = 0, samples = 0, sum = 0, rssi_perc;
+    int rssi_avg = 0, rssi_avg_perc, rssi_top = 0, rssi_top_perc;
+    int rssi_rou, rssi_rou_perc, lq_perc = 0, lq_perc_top = 0;
+    int ringbuf_pos = 0, p_wait_mode = wait_mode;
+    char ringbuf[20];
+    char message[1024];
+    char *gr_modes[5] = { _("RSSI [%]"),
+                         _("RSSI average [%]"),
+                         _("RSSI rounded [%]"),
+                         _("Link Quality [%]"),
+                         NULL };
+    WINDOW *gauge_rssi;
+    WINDOW *gauge_rssi_top;
+    WINDOW *gauge_rssi_avg;
+    WINDOW *gauge_rssi_rou;
+    WINDOW *grwin_rssi;
+    WINDOW *grwin_rssi_avg = NULL;
+    WINDOW *grwin_rssi_rou = NULL;
+    WINDOW *grwin_lq = NULL;
+    varbind varbinds[1];
+
+    if (ap_type == ATMEL12350) {
+       bridgeOperationalMode[5] = 0xE0;
+       bridgeOperationalMode[6] = 0x3E;
+
+       NetworkSettings[5] = 0xE0;
+       NetworkSettings[6] = 0x3E;
+       NetworkSettings[9] = 0x07;
+       NetworkSettings[10] = 0x04;
+    }  
+
+    gauge_rssi = derwin(main_sub, 1, 20, 2, strlen(S_RSSI));
+    gauge_rssi_top = derwin(main_sub, 1, 20, 3, strlen(S_RSSI_TOP));
+    gauge_rssi_avg = derwin(main_sub, 1, 20, 4, strlen(S_RSSI_AVG));
+    gauge_rssi_rou = derwin(main_sub, 1, 20, 5, strlen(S_RSSI_ROU));
+    grwin_rssi = derwin(main_sub, GRWIN_HEIGHT + 2, GRWIN_LENGTH + 2, 9, 3);
+
+    /* find out mode the device is currently in */
+    varbinds[0].oid = bridgeOperationalMode;
+    varbinds[0].len_oid = sizeof(bridgeOperationalMode);
+    varbinds[0].value = bridgeOperationalMode;
+    varbinds[0].len_val = 0;
+    varbinds[0].type = NULL_VALUE;
+    print_help(WAIT_RET);
+    if (snmp(varbinds, 1, GET) <= 0) {
+         print_helperr(ERR_RET);
+         getch();
+         goto exit;
+    }
+
+    /*
+     * Rule out all modes except APClient(3) mode and WRepeater(5) mode on
+     * device running firmware with necessary vendor extensions.
+     */
+    if(!( ((ap_type == ATMEL410 && ap_vendorext == SBRIDGES) ||
+          (ap_type == ATMEL12350 && ap_vendorext == EZYNET)) &&
+         (*(varbinds[0].value) == 3 || *(varbinds[0].value) == 5) )) {
+       mvwaddstr(main_sub, 1, 1,
+           _("Not available - device must have firmware with necessary "));
+       mvwaddstr(main_sub, 2, 1,
+           _("vendor extensions and be in either 'Access Point client'"));
+       mvwaddstr(main_sub, 3, 1,
+           _("or 'Repeater' mode."));
+       print_help(ANY_KEY);
+       wrefresh(main_sub);
+       getch();
+       goto exit;
+    }
+
+    wait_mode = WAIT_TIMEOUT;
+
+    print_top(POLL_ON, AP_TITLE);
+    print_help(APLINK_HELP);
+    noecho();
+
+    memset(ringbuf, 0, sizeof(ringbuf));
+
+    box(grwin_rssi, 0, 0);
+    for (i = GRWIN_HEIGHT - GRWIN_HEIGHT / 3; i > 0; i -= GRWIN_HEIGHT / 3) {
+       j += 33;
+       mvwprintw(main_sub, 9 + i, 0, "%u", j);
+       mvwaddch(grwin_rssi, i, 0, ACS_SSSS);
+    }
+    delwin(grwin_rssi);
+    wmove(main_sub, 9, 6);
+    print_bold(main_sub, gr_modes[gr_mode]);
+    grwin_rssi     = newwin(GRWIN_HEIGHT, GRWIN_LENGTH, 12, MCOLS + 4);
+    grwin_rssi_avg = newwin(GRWIN_HEIGHT, GRWIN_LENGTH, 12, MCOLS + 4);
+    grwin_rssi_rou = newwin(GRWIN_HEIGHT, GRWIN_LENGTH, 12, MCOLS + 4);
+    if (ap_type == ATMEL410)
+       grwin_lq       = newwin(GRWIN_HEIGHT, GRWIN_LENGTH, 12, MCOLS + 4);
+    wattrset(grwin_rssi,     COLOR_PAIR(COLOR_BLUE));
+    wattrset(grwin_rssi_avg, COLOR_PAIR(COLOR_BLUE));
+    wattrset(grwin_rssi_rou, COLOR_PAIR(COLOR_BLUE));
+    if (ap_type == ATMEL410)
+       wattrset(grwin_lq, COLOR_PAIR(COLOR_BLUE));
+
+    while (1) {
+       mvwaddstr(main_sub, 0, 0, "Associated with AP: ");
+
+       varbinds[0].oid = NetworkSettings;
+       varbinds[0].len_oid = sizeof(NetworkSettings);
+       varbinds[0].value = NetworkSettings;
+       varbinds[0].type = STRING_VALUE;
+       varbinds[0].len_val = 0;
+
+       if (snmp(varbinds, 1, GET) <= 0) {
+           /* do just once */
+           waddstr(main_sub, NO);
+           if (linked) {
+               linked = sum = samples = ringbuf_pos = 0;
+               memset(ringbuf, 0, sizeof(ringbuf));
+
+               wclrtoeol(main_sub);
+               clear_main_new(1, 9);
+               /* wclrtobot(main_sub); */
+
+               wattrset(grwin_rssi,     COLOR_PAIR(COLOR_RED));
+               wattrset(grwin_rssi_avg, COLOR_PAIR(COLOR_RED));
+               wattrset(grwin_rssi_rou, COLOR_PAIR(COLOR_RED));
+               if (ap_type == ATMEL410)
+                   wattrset(grwin_lq,   COLOR_PAIR(COLOR_RED));
+
+               for (i = 0; i < GRWIN_HEIGHT; i++) {
+                   mvwdelch(grwin_rssi,     i, 0);
+                   mvwdelch(grwin_rssi_avg, i, 0);
+                   mvwdelch(grwin_rssi_rou, i, 0);
+                   mvwaddch(grwin_rssi,     i, GRWIN_LENGTH - 1, ACS_SBSB);
+                   mvwaddch(grwin_rssi_avg, i, GRWIN_LENGTH - 1, ACS_SBSB);
+                   mvwaddch(grwin_rssi_rou, i, GRWIN_LENGTH - 1, ACS_SBSB);
+                   if (ap_type == ATMEL410) {
+                       mvwdelch(grwin_lq,   i, 0);
+                       mvwaddch(grwin_lq,   i, GRWIN_LENGTH - 1, ACS_SBSB);
+                   }
+               }
+               wattrset(grwin_rssi,     COLOR_PAIR(COLOR_BLUE));
+               wattrset(grwin_rssi_avg, COLOR_PAIR(COLOR_BLUE));
+               wattrset(grwin_rssi_rou, COLOR_PAIR(COLOR_BLUE));
+               if (ap_type == ATMEL410)
+                   wattrset(grwin_lq,   COLOR_PAIR(COLOR_BLUE));
+           }
+
+           wnoutrefresh(main_sub);
+           wnoutrefresh(gr_mode == 0 ? grwin_rssi :
+                        gr_mode == 1 ? grwin_rssi_avg :
+                        gr_mode == 2 ? grwin_rssi_rou : grwin_lq);
+
+           doupdate();
+       } else {
+           waddstr(main_sub, YES);
+
+           if (ap_type == ATMEL410) {
+               memcpy(&sa_sb_410, varbinds[0].value, varbinds[0].len_val);
+
+               memcpy(BSSID, sa_sb_410.BSSID, 6);
+               /* InfoCapability = sa_sb_410.InfoCapability; */
+               Rssi = sa_sb_410.Rssi;
+               Channel = sa_sb_410.Channel;
+               LQCR = sa_sb_410.LinkQuality;
+               memcpy(ESSID, sa_sb_410.ESSID, 32);
+               ESSLEN = sa_sb_410.ESSLEN;
+           } else { /* ap_type == ATMEL12350 */
+               memcpy(&sa_en_12350, varbinds[0].value, varbinds[0].len_val);
+
+               memcpy(BSSID, sa_en_12350.BSSID, 6);
+               /* InfoCapability = sa_en_12350.InfoCapability; */
+               Rssi = sa_en_12350.Rssi;
+               Channel = sa_en_12350.Channel;
+               LQCR = sa_en_12350.CurrentRate;
+               memcpy(ESSID, sa_en_12350.ESSID, 32);
+               ESSLEN = sa_en_12350.ESSLEN;
+           }
+
+           sprintf(message, "Joined BSSID: %02X%02X%02X%02X%02X%02X",
+               BSSID[0] & 0xFF, BSSID[1] & 0xFF, BSSID[2] & 0xFF,
+               BSSID[3] & 0xFF, BSSID[4] & 0xFF, BSSID[5] & 0xFF);
+           mvwaddstr(main_sub, 1, 0, message);
+
+           mvwaddstr(main_sub, 2, 0, S_RSSI);
+           rssi_perc = (int)((minimum (Rssi, 40)) * (float)2.5);
+           werase(gauge_rssi);
+           for (i = 0; i < (20 * rssi_perc / 100); i++) {
+               if (i == 0)
+                   wattrset(gauge_rssi, COLOR_PAIR(COLOR_RED));
+               if (i == 7)
+                   wattrset(gauge_rssi, COLOR_PAIR(COLOR_YELLOW) | A_BOLD);
+               if (i == 14)
+                   wattrset(gauge_rssi, COLOR_PAIR(COLOR_GREEN));
+               waddch(gauge_rssi, ACS_BLOCK);
+           }
+           wnoutrefresh(gauge_rssi);
+           sprintf(message, "] [%4ddBm] [%3u%%] [%3u]",
+               dbmconv(Rssi), rssi_perc, Rssi);
+           mvwaddstr(main_sub, 2, strlen(S_RSSI) + 20, message);
+
+           mvwaddstr(main_sub, 3, 0, S_RSSI_TOP);
+           if (Rssi > rssi_top)
+               rssi_top = Rssi;
+           rssi_top_perc = (int)((minimum (rssi_top, 40)) * (float)2.5);
+           werase(gauge_rssi_top);
+           for (i = 0; i < (20 * rssi_top_perc / 100); i++) {
+               if (i == 0)
+                   wattrset(gauge_rssi_top, COLOR_PAIR(COLOR_RED));
+               if (i == 7)
+                   wattrset(gauge_rssi_top, COLOR_PAIR(COLOR_YELLOW) | A_BOLD);
+               if (i == 14)
+                   wattrset(gauge_rssi_top, COLOR_PAIR(COLOR_GREEN));
+               waddch(gauge_rssi_top, ACS_BLOCK);
+           }
+           wnoutrefresh(gauge_rssi_top);
+           sprintf(message, "] [%4ddBm] [%3u%%] [%3u]",
+               dbmconv(rssi_top), rssi_top_perc, rssi_top);
+           mvwaddstr(main_sub, 3, strlen(S_RSSI_TOP) + 20, message);
+
+           mvwaddstr(main_sub, 4, 0, S_RSSI_AVG);
+           sum += Rssi;
+           rssi_avg = sum / ++samples;
+           if (samples == 100000) {
+               samples = 1;
+               sum = Rssi;
+           }
+           rssi_avg_perc = (int)((minimum (rssi_avg, 40)) * (float)2.5);
+           werase(gauge_rssi_avg);
+           for (i = 0; i < (20 * rssi_avg_perc / 100); i++) {
+               if (i == 0)
+                   wattrset(gauge_rssi_avg, COLOR_PAIR(COLOR_RED));
+               if (i == 7)
+                   wattrset(gauge_rssi_avg, COLOR_PAIR(COLOR_YELLOW) | A_BOLD);
+               if (i == 14)
+                   wattrset(gauge_rssi_avg, COLOR_PAIR(COLOR_GREEN));
+               waddch(gauge_rssi_avg, ACS_BLOCK);
+           }
+           wnoutrefresh(gauge_rssi_avg);
+           sprintf(message, "] [%4ddBm] [%3u%%] / %5u sampl.",
+               dbmconv(rssi_avg), rssi_avg_perc, samples);
+           mvwaddstr(main_sub, 4, strlen(S_RSSI_AVG) + 20, message);
+
+           mvwaddstr(main_sub, 5, 0, S_RSSI_ROU);
+           ringbuf[ringbuf_pos++] = Rssi;
+           if (ringbuf_pos == sizeof(ringbuf))
+               ringbuf_pos = 0;
+           rssi_rou = 0;
+           for (i = 0; i < (int)sizeof(ringbuf); rssi_rou += ringbuf[i], i++);
+           rssi_rou /= sizeof(ringbuf);
+           rssi_rou_perc = (int)((minimum (rssi_rou, 40)) * (float)2.5);
+           werase(gauge_rssi_rou);
+           for (i = 0; i < (20 * rssi_rou_perc / 100); i++) {
+               if (i == 0)
+                   wattrset(gauge_rssi_rou, COLOR_PAIR(COLOR_RED));
+               if (i == 7)
+                   wattrset(gauge_rssi_rou, COLOR_PAIR(COLOR_YELLOW) | A_BOLD);
+               if (i == 14)
+                   wattrset(gauge_rssi_rou, COLOR_PAIR(COLOR_GREEN));
+               waddch(gauge_rssi_rou, ACS_BLOCK);
+           }
+           wnoutrefresh(gauge_rssi_rou);
+           sprintf(message, "] [%4ddBm] [%3u%%] / last %2u sam.",
+               dbmconv(rssi_rou), rssi_rou_perc, sizeof(ringbuf));
+           mvwaddstr(main_sub, 5, strlen(S_RSSI_ROU) + 20, message);
+
+           if (ap_type == ATMEL410) {
+               lq_perc = (int)(100 - (minimum (LQCR, 40)) * (float)2.5);
+               if (lq_perc > lq_perc_top)
+                   lq_perc_top = lq_perc;
+               sprintf(message, "Link quality: %3u%% (top: %3u%%)",
+                   lq_perc, lq_perc_top);
+           } else { /* ap_type == ATMEL12350 */
+               sprintf(message, "Current rate: ");
+               switch(LQCR) {
+                  case 0:
+                       strcat(message, "1 Mbps  ");
+                       break;
+                  case 1:
+                       strcat(message, "2 Mbps  ");
+                       break;
+                  case 2:
+                       strcat(message, "5.5 Mbps");
+                       break;
+                  case 3:
+                       strcat(message, "11 Mbps ");
+               }
+           }
+           mvwaddstr(main_sub, 6, 0, message);
+
+           sprintf(message, "Channel: %2u", Channel);
+           mvwaddstr(main_sub, 7, 0, message);
+
+           mvwaddstr(main_sub, 8, 0, "ESSID: ");
+           waddnstr(main_sub, ESSID, ESSLEN);
+/*
+           sprintf(message, "InfoCapability: %3u", InfoCapability & 0xFF);
+           mvwaddstr(main_sub, 9, 0, message);
+*/
+           wnoutrefresh(main_sub);
+
+           for (i = 0; i < GRWIN_HEIGHT; i++) {
+               mvwdelch(grwin_rssi,     i, 0);
+               mvwdelch(grwin_rssi_avg, i, 0);
+               mvwdelch(grwin_rssi_rou, i, 0);
+               if (ap_type == ATMEL410)
+                   mvwdelch(grwin_lq,   i, 0);
+           }
+           for (i = 0; i < GRWIN_HEIGHT * rssi_perc / 100; i++)
+               mvwaddch(grwin_rssi,
+                   GRWIN_HEIGHT - 1 - i, GRWIN_LENGTH - 1, ACS_BLOCK);
+           for (i = 0; i < GRWIN_HEIGHT * rssi_avg_perc / 100; i++)
+               mvwaddch(grwin_rssi_avg,
+                   GRWIN_HEIGHT - 1 - i, GRWIN_LENGTH - 1, ACS_BLOCK);
+           for (i = 0; i < GRWIN_HEIGHT * rssi_rou_perc / 100; i++)
+               mvwaddch(grwin_rssi_rou,
+                   GRWIN_HEIGHT - 1 - i, GRWIN_LENGTH - 1, ACS_BLOCK);
+           if (ap_type == ATMEL410)
+               for (i = 0; i < GRWIN_HEIGHT * lq_perc / 100; i++)
+                   mvwaddch(grwin_lq,
+                       GRWIN_HEIGHT - 1 - i, GRWIN_LENGTH - 1, ACS_BLOCK);
+
+           wnoutrefresh(gr_mode == 0 ? grwin_rssi :
+                        gr_mode == 1 ? grwin_rssi_avg :
+                        gr_mode == 2 ? grwin_rssi_rou : grwin_lq);
+
+           doupdate();
+
+           linked = 1;
+       }
+
+       i = wait_key(poll_delay);
+       switch(i) {
+           case 'p':
+           case 'P':
+               getch();
+               break;
+           case 'q':
+           case 'Q':
+               goto exit;
+           case 't':
+           case 'T':
+               gr_mode++;
+               if (gr_mode == (ap_type == ATMEL410 ? 4 : 3))
+                   gr_mode = 0;
+
+               wmove(main_sub, 9, 6);
+               print_bold(main_sub, gr_modes[gr_mode]);
+               for (i = 0; i < 10; i++)
+                   waddch(main_sub, ACS_BSBS);
+       }
+       /* either timeout for user input (i == 0) or invalid key => cont. */
+    }
+
+exit:
+    wait_mode = p_wait_mode;
+
+    delwin(gauge_rssi);
+    delwin(gauge_rssi_top);
+    delwin(gauge_rssi_avg);
+    delwin(gauge_rssi_rou);
+
+    delwin(grwin_rssi);
+    delwin(grwin_rssi_avg);
+    delwin(grwin_rssi_rou);
+    if (ap_type == ATMEL410)
+       delwin(grwin_lq);
+
+    print_top(NULL, NULL);
+    clear_main(0);
+}
diff --git a/src/auth.c b/src/auth.c
new file mode 100644 (file)
index 0000000..b4cf968
--- /dev/null
@@ -0,0 +1,1098 @@
+/*
+ *      auth.c from Access Point SNMP Utils for Linux
+ *
+ * Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
+ * Copyright (c) 2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License Version 2 from
+ * June 1991 as published by the Free Software Foundation.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include "ap-utils.h"
+
+#define MAX_LINES LINES-12
+#define PACKET_ERROR _("AuthorizedMacTableString packet error")
+
+#define AUTH_TITLE _("APClient authorization credentials")
+
+#define MAC_AUTH _("[A] MAC authorization: ")
+#define MAC_ADD  _("Enter MAC: ")
+#define MAC_DEL  _("Delete Num: ")
+#define MAC_HEADER _(" NUM     MAC address     ")
+#define MAC_HELP _("A: auth; N: new; D: del; arrows: scroll; W: write conf; Q: quit")
+
+#define RADIUS_IP _("[I] Radius server IP: ")
+#define RADIUS_DEST_PORT _("[P] Radius server port: ")
+#define RADIUS_SECRET _("[S] Radius server secret: ")
+#define RADIUS_TIME _("[T] Reauthorization time (minutes): ")
+#define RADIUS_PORT _("[F] Radius source port: ")
+#define RADIUS_HELP _("A: auth; N: new; D: del; IPSTF: set; arrows: scroll; W: write conf; Q: quit")
+
+#define DOT1X_MODE _("[M] 802.1x authorization: ")
+#define DOT1X_TIME _("[T] key broadcasting time period (seconds): ")
+#define DOT1X_IP _("[I] 802.1x auth. server IP: ")
+#define DOT1X_SECRET _("[S] 802.1x auth. server secret: ")
+#define DOT1X_HELP _("A: auth; N: new; D: del; MTIS: set; arrows: scroll; W: write conf; Q: quit")
+
+extern WINDOW *main_sub;
+extern int LINES;
+extern short ap_type, ap_vendorext;
+
+void atmel_auth()
+{
+    char AuthorizationMacEnable[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x06, 0x01, 0x00
+    };
+    char AutorizedMac[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x06, 0x02, 0x00
+    };
+
+    /* These 6 are ATMEL410 MIB with SBRIDGES extensions -specific */
+    char AuthRadiusIP[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x06, 0x03, 0x00
+    };
+    char AuthRadiusSecret[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x06, 0x04, 0x00
+    };
+    char AuthRadiusSecretLength[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x06, 0x05, 0x00
+    };
+    char AuthRadiusPort[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x06, 0x06, 0x00
+    };
+    char AuthRadiusReauthorizationTime[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x06, 0x07, 0x00
+    };
+    char AuthRadiusDestinPort[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x06, 0x08, 0x00
+    };
+
+    /* These 4 are ATMEL12350 MIB with EZYNET extensions -specific */
+    /* Note: GEMTEK MIB falsely claims it has these, but it is not true. :( */
+    char Dot1xEnable[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x08, 0x01, 0x00
+    };
+    char BroadcastKeyPeriod[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x08, 0x02, 0x00
+    };
+    char ServerIP[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x08, 0x03, 0x00
+    };
+    char ServerSecret[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x08, 0x04, 0x00
+    };
+
+    struct AuthorizedMacTableString {
+       unsigned int short Action;
+       unsigned int short NumOfAllTableAddresses;
+       unsigned int short NumOfCurrentAddress;
+       unsigned char MacAddress[6];
+    } *AuthMac = NULL, get;
+
+    /* for ATMEL* MIBs with NONE extensions */
+    char *AuthModes_OO[] = {
+       ON,
+       OFF
+    };
+       
+    /* for ATMEL410 MIB with SBRIDGES extensions */
+    char *AuthModes_IOR[] = {
+       _("Internal"),
+       OFF,
+       _("Radius")
+    };
+
+    /* for ATMEL12350 MIBs with GEMTEK or EZYNET extensions */
+    char *AuthModes_AOD[] = {
+       _("Allow listed MACs only"),
+       OFF,
+       _("Deny listed MACs only")
+    };
+
+    char *Dot1xModes[] = {
+       ON,
+       OFF,
+       _("Mixed environment")
+    };
+
+    /* These will be used for both Radius-related and 802.1x-related stuff. */
+    struct in_addr ea_ip;
+    char ea_secret[33];
+    int ea_mode, ea_port, ea_time, ea_dest_port,
+       m_ea_mode = 0, m_ea_port = 0, m_ea_ip = 0, m_ea_secret = 0,
+       m_ea_time = 0, m_ea_dest_port = 0;
+
+    struct MacListStat *pmac, *first = NULL, *curr = NULL;
+    char message[1024], m_authmac = 0;
+    int i = 0, total_mac, auth_mode = 0, mac_num = 0, begin, end;
+    varbind varbinds[7];
+
+
+    if (ap_type == ATMEL12350) {
+       AuthorizationMacEnable[5] = 0xE0;
+       AuthorizationMacEnable[6] = 0x3E;
+       AutorizedMac[5] = 0xE0;
+       AutorizedMac[6] = 0x3E;
+    }
+
+    varbinds[i].oid = AuthorizationMacEnable;
+    varbinds[i].len_oid = sizeof(AuthorizationMacEnable);
+    varbinds[i].type = NULL_VALUE;
+    varbinds[i].len_val = 0;
+    i++;
+
+    if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES) {
+       varbinds[i].oid = AuthRadiusIP;
+       varbinds[i].len_oid = sizeof(AuthRadiusIP);
+       varbinds[i].type = NULL_VALUE;
+       varbinds[i].len_val = 0;
+       i++;
+
+       varbinds[i].oid = AuthRadiusPort;
+       varbinds[i].len_oid = sizeof(AuthRadiusPort);
+       varbinds[i].type = NULL_VALUE;
+       varbinds[i].len_val = 0;
+       i++;
+
+       varbinds[i].oid = AuthRadiusReauthorizationTime;
+       varbinds[i].len_oid = sizeof(AuthRadiusReauthorizationTime);
+       varbinds[i].type = NULL_VALUE;
+       varbinds[i].len_val = 0;
+       i++;
+
+       varbinds[i].oid = AuthRadiusDestinPort;
+       varbinds[i].len_oid = sizeof(AuthRadiusDestinPort);
+       varbinds[i].type = NULL_VALUE;
+       varbinds[i].len_val = 0;
+       i++;
+    }
+
+    if (ap_type == ATMEL12350 && ap_vendorext == EZYNET) {
+       varbinds[i].oid = Dot1xEnable;
+       varbinds[i].len_oid = sizeof(Dot1xEnable);
+       varbinds[i].type = NULL_VALUE;
+       varbinds[i].len_val = 0;
+       i++;
+
+       varbinds[i].oid = BroadcastKeyPeriod;
+       varbinds[i].len_oid = sizeof(BroadcastKeyPeriod);
+       varbinds[i].type = NULL_VALUE;
+       varbinds[i].len_val = 0;
+       i++;
+
+       varbinds[i].oid = ServerIP;
+       varbinds[i].len_oid = sizeof(ServerIP);
+       varbinds[i].type = NULL_VALUE;
+       varbinds[i].len_val = 0;
+       i++;
+    }
+
+    print_help(WAIT_RET);
+    if (snmp(varbinds, i, GET) < i) {
+       print_helperr(ERR_RET);
+       goto exit;
+    }
+    print_top(NULL, AUTH_TITLE);
+
+    auth_mode = *(varbinds[0].value);
+
+    strcpy(ea_secret, _("(not shown)"));
+
+    if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES) {
+       sprintf(message, "%s%s", MAC_AUTH, AuthModes_IOR[auth_mode - 1]);
+       mvwaddstr(main_sub, 0, 0, message);
+
+       if (auth_mode == 3) { /* Radius */
+           memcpy(&ea_ip.s_addr, varbinds[1].value, 4);
+           sprintf(message, "%s%s", RADIUS_IP, inet_ntoa(ea_ip));
+           mvwaddstr(main_sub, 1, 0, message);
+
+           ea_dest_port = varbinds[4].len_val == 2 ?
+               (varbinds[4].value[0] << 8) | varbinds[4].value[1] :
+               varbinds[4].value[0] < 0x80 ?
+               varbinds[4].value[0] : 0xff00 | varbinds[4].value[0];
+           sprintf(message, "%s%d", RADIUS_DEST_PORT, ea_dest_port);
+           mvwaddstr(main_sub, 2, 0, message);
+
+           sprintf(message, "%s%s", RADIUS_SECRET, ea_secret);
+           mvwaddstr(main_sub, 3, 0, message);
+
+           ea_time = varbinds[3].len_val == 2 ?
+               (varbinds[3].value[0] << 8) | varbinds[3].value[1] :
+               varbinds[3].value[0] < 0x80 ?
+               varbinds[3].value[0] : 0xff00 | varbinds[3].value[0];
+           sprintf(message, "%s%d", RADIUS_TIME, ea_time);
+           mvwaddstr(main_sub, 4, 0, message);
+
+           ea_port = varbinds[2].len_val == 2 ?
+               (varbinds[2].value[0] << 8) | varbinds[2].value[1] :
+               varbinds[2].value[0] < 0x80 ?
+               varbinds[2].value[0] : 0xff00 | varbinds[2].value[0];
+           sprintf(message, "%s%d", RADIUS_PORT, ea_port);
+           mvwaddstr(main_sub, 5, 0, message);
+       }
+    } else if (ap_type == ATMEL12350 &&
+       (ap_vendorext == GEMTEK || ap_vendorext == EZYNET)) {
+       sprintf(message, "%s%s", MAC_AUTH, AuthModes_AOD[auth_mode - 1]);
+       mvwaddstr(main_sub, 0, 0, message);
+
+       if (ap_vendorext == EZYNET) {
+           ea_mode = *(varbinds[1].value);
+           sprintf(message, "%s%s", DOT1X_MODE, Dot1xModes[ea_mode - 1]);
+           mvwaddstr(main_sub, 1, 0, message);
+
+           ea_time = varbinds[2].len_val == 2 ?
+               (varbinds[2].value[0] << 8) | varbinds[2].value[1] :
+               varbinds[2].value[0] < 0x80 ?
+               varbinds[2].value[0] : 0xff00 | varbinds[2].value[0];
+           sprintf(message, "%s%d", DOT1X_TIME, ea_time);
+           mvwaddstr(main_sub, 2, 0, message);
+
+           memcpy(&ea_ip.s_addr, varbinds[3].value, 4);
+           sprintf(message, "%s%s", DOT1X_IP, inet_ntoa(ea_ip));
+           mvwaddstr(main_sub, 3, 0, message);
+
+           sprintf(message, "%s%s", DOT1X_SECRET, ea_secret);
+           mvwaddstr(main_sub, 4, 0, message);
+       }
+    } else {
+       sprintf(message, "%s%s", MAC_AUTH, AuthModes_OO[auth_mode - 1]);
+       mvwaddstr(main_sub, 0, 0, message);
+    }
+    mvwaddstr(main_sub, 7, 0, _("Authorized MAC addresses:"));
+    wattrset(main_sub, COLOR_PAIR(13));
+    mvwaddstr(main_sub, 8, 0, MAC_HEADER);
+    wattrset(main_sub, A_NORMAL);
+    wrefresh(main_sub);
+
+    print_help("Trying to retrieve auth. MAC address list from AP. Please wait.");
+
+    total_mac = 0;
+    mac_num = 0;
+
+    while (mac_num <= total_mac) {
+       get.Action = 0x02; rshort(get.Action);
+       get.NumOfAllTableAddresses = total_mac; rshort(get.NumOfAllTableAddresses);
+       get.NumOfCurrentAddress = mac_num; rshort(get.NumOfCurrentAddress);
+
+       varbinds[0].oid = AutorizedMac;
+       varbinds[0].len_oid = sizeof(AutorizedMac);
+       varbinds[0].value = (char *) &get;
+       varbinds[0].len_val = 12;
+       varbinds[0].type = STRING_VALUE;
+
+       i = snmp(varbinds, 1, SET);
+       if (i == 0) {
+           print_helperr(ERR_SET);
+           goto exit;
+       }
+       if (i < 0)
+           break;
+
+       if (varbinds[0].len_val == 12) {
+           if (AuthMac)
+               free(AuthMac);
+           AuthMac =
+               (struct AuthorizedMacTableString *) malloc(varbinds[0].
+                                                          len_val);
+           memcpy(AuthMac, varbinds[0].value, varbinds[0].len_val);
+/*         AuthMac =
+               (struct AuthorizedMacTableString *) varbinds[0].value;*/
+       } else {
+           print_helperr(PACKET_ERROR);
+           goto exit;
+       }
+
+       rshort(AuthMac->NumOfAllTableAddresses);
+       total_mac =
+           (AuthMac->NumOfAllTableAddresses ==
+            65535) ? 0 : AuthMac->NumOfAllTableAddresses;
+
+       if (mac_num) {
+           if (first == NULL) {
+               first = (struct MacListStat *)
+                   malloc(sizeof(struct MacListStat));
+               curr = first;
+           } else {
+               curr->next = (struct MacListStat *)
+                   malloc(sizeof(struct MacListStat));
+               curr = curr->next;
+           }
+           memcpy(curr->addr, AuthMac->MacAddress, 6);
+           curr->next = NULL;
+       }
+       mac_num++;
+    }
+
+    begin = (mac_num > MAX_LINES) ? mac_num + 1 - (MAX_LINES) : 1;
+    end = mac_num;
+
+    if (i < 0) {
+       mvwaddstr(main_sub, 9, 0, _("(insufficient community used)"));
+       wrefresh(main_sub);
+    } else {
+       scroll_rows(first, begin, end, 9, 0);
+    }
+
+    noecho();
+
+    if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES)
+       print_help(RADIUS_HELP);
+    else if (ap_type == ATMEL12350 && ap_vendorext == EZYNET)
+       print_help(DOT1X_HELP);
+    else
+       print_help(MAC_HELP);
+
+    while (1) {
+       switch (getch()) {
+       case 'q':
+       case 'Q':
+           goto quit;
+       case 'a':
+       case 'A':
+           auth_mode = menu_choose(0, strlen(MAC_AUTH),
+               ap_type == ATMEL410 && ap_vendorext == SBRIDGES ?
+                   AuthModes_IOR :
+               ap_type == ATMEL12350 &&
+                   (ap_vendorext == GEMTEK || ap_vendorext == EZYNET) ?
+                   AuthModes_AOD :
+                   AuthModes_OO,
+               ap_vendorext == NONE ?
+                   2 : 3
+           );
+           clear_main_new(0, 1);
+           print_menusel(0, 0, MAC_AUTH,
+               ap_type == ATMEL410 && ap_vendorext == SBRIDGES ?
+                   AuthModes_IOR[auth_mode] :
+               ap_type == ATMEL12350 &&
+                   (ap_vendorext == GEMTEK || ap_vendorext == EZYNET) ?
+                   AuthModes_AOD[auth_mode] :
+                   AuthModes_OO[auth_mode]
+           );
+           auth_mode++;
+/*
+           auth_mode = on_off(0, strlen(MAC_AUTH));
+           clear_main_new(0, 1);
+           print_menusel(0, 0, MAC_AUTH, (auth_mode == 1) ? ON : OFF);
+*/
+           m_authmac = 1;
+           continue;
+       case 'd':
+       case 'D':
+           /* no MACs available for deletion */
+           if (mac_num == 1)
+               continue;
+
+           mvwaddstr(main_sub, 6, 0, MAC_DEL);
+           get_value(message, 6, strlen(MAC_DEL), 5, INT_STRING,
+               0, mac_num - 1, NULL);
+           i = atoi(message);
+           if (i == 0) {
+               clear_main_new(6, 7);
+               continue;
+           }
+           curr = first;
+           if (i == 1) {
+               if (curr->next) {
+                   pmac = curr->next;
+                   free(first);
+                   first = pmac;
+               }
+           } else {
+               int j = i;
+
+               while (--j > 1)
+                   curr = curr->next;
+               pmac = curr->next;
+               curr->next = pmac->next;
+               free(pmac);
+           }
+
+           mac_num--;
+
+           /* Rather do not ask how this works. */
+           if (i < begin) {
+               begin--;
+               end--;
+           } else if (i > (end - 1)) {
+               /* Nothing to do! */
+           } else { /* begin <= i <= (end - 1) */
+               if ((begin == 1) && ((end - 1) == mac_num)) {
+                   end--;
+               } else if ((begin > 1) && ((end - 1) < mac_num)) {
+                   /* Uncomment for top side scrolling first. */
+/*
+                   begin--;
+                   end--;
+*/
+               } else if (begin > 1) {
+                   begin--;
+                   end--;
+               }
+           }
+#if 0 /* DEBUG */
+           sprintf(message, "MAX_LINES: %i mac_num: %i begin: %i end: %i",
+               MAX_LINES, mac_num, begin, end);
+           clear_main(0);
+           mvwaddstr(main_sub, 0, 0, message);
+           wrefresh(main_sub);
+           exit(0);
+#endif /* DEBUG */
+           scroll_rows(first, begin, end, 9, 0);
+           clear_main_new(6, 7);
+           continue;
+       case 'n':
+       case 'N':
+           if (mac_num == 1) {
+               free(first);
+               first = NULL;
+           }
+again:
+           mvwaddstr(main_sub, 6, 0, MAC_ADD);
+           get_mac(message, 6, strlen(MAC_ADD));
+
+           curr = first;
+           i = 1;
+           while (curr) {
+               if (memcmp(curr->addr, message, 6) == 0) {
+                   sprintf(message, _("Given MAC already exists in MAC list "
+                       "at position %d. Press any key."), i);
+                   print_helperr(message);
+                   getch();
+                   if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES)
+                       print_help(RADIUS_HELP);
+                   else if (ap_type == ATMEL12350 && ap_vendorext == EZYNET)
+                       print_help(DOT1X_HELP);
+                   else
+                       print_help(MAC_HELP);
+                   goto again;
+               }
+               curr = curr->next;
+               i++;
+           }
+
+           curr = first;
+           while (curr && curr->next)
+               curr = curr->next;
+           if (first == NULL) {
+               first = (struct MacListStat *)
+                   malloc(sizeof(struct MacListStat));
+               curr = first;
+           } else {
+               curr->next = (struct MacListStat *)
+                   malloc(sizeof(struct MacListStat));
+               curr = curr->next;
+           }
+           curr->next = NULL;
+           memcpy(curr->addr, message, 6);
+           mac_num++;
+/*         get_value(message, 1, strlen(MAC_ADD), 13, ANY_STRING, 0, 0,
+               NULL);
+
+           for (i = 0; i < 6; i++) {
+               mess[0] = message[2 * i];
+               mess[1] = message[2 * i + 1];
+               mess[2] = '\0';
+               curr->addr[i] = strtol(mess, NULL, 16);
+           }
+           clear_main_new(1, 2);
+*/
+           begin = (mac_num > MAX_LINES) ? mac_num + 1 - (MAX_LINES) : 1;
+           end = mac_num;
+           scroll_rows(first, begin, end, 9, 0);
+           clear_main_new(6, 7);
+           continue;
+       case 'f':
+       case 'F':
+           if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES && auth_mode == 3) {
+               get_value(message, 5, strlen(RADIUS_PORT), 6,
+                   INT_STRING, 0, 65535, RADIUS_HELP);
+               ea_port = atoi(message);
+               m_ea_port = 1;
+           };
+           continue;
+       case 'i':
+       case 'I':
+           if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES && auth_mode == 3) {
+               get_ip(&ea_ip, 1, strlen(RADIUS_IP), RADIUS_HELP);
+               m_ea_ip = 1;
+           }
+           if (ap_type == ATMEL12350 && ap_vendorext == EZYNET) {
+               get_ip(&ea_ip, 3, strlen(DOT1X_IP), DOT1X_HELP);
+               m_ea_ip = 1;
+           }
+           continue;
+       case 'm':
+       case 'M':
+           if (ap_type == ATMEL12350 && ap_vendorext == EZYNET) {
+               ea_mode = menu_choose(1, strlen(DOT1X_MODE), Dot1xModes, 3);
+               clear_main_new(1, 2);
+               print_menusel(1, 0, DOT1X_MODE, Dot1xModes[ea_mode]);
+               ea_mode++;
+               m_ea_mode = 1;
+           }
+           continue;
+       case 'p':
+       case 'P':
+           if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES && auth_mode == 3) {
+               get_value(message, 2, strlen(RADIUS_DEST_PORT), 6,
+                   INT_STRING, 0, 65535, RADIUS_HELP);
+               ea_dest_port = atoi(message);
+               m_ea_dest_port = 1;
+           }
+           continue;
+       case 's':
+       case 'S':
+           if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES && auth_mode == 3) {
+               get_value(ea_secret, 3, strlen(RADIUS_SECRET), -33,
+                   ANY_STRING, 0, 0, NULL);
+               m_ea_secret = 1;
+           }
+           if (ap_type == ATMEL12350 && ap_vendorext == EZYNET) {
+               get_value(ea_secret, 4, strlen(DOT1X_SECRET), -17,
+                   ANY_STRING, 0, 0, NULL);
+               m_ea_secret = 1;
+           }
+           continue;
+       case 't':
+       case 'T':
+           if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES && auth_mode == 3) {
+               get_value(message, 4, strlen(RADIUS_TIME), 6,
+                   INT_STRING, 0, 65535, RADIUS_HELP);
+               ea_time = atoi(message);
+               m_ea_time = 1;
+           }
+           if (ap_type == ATMEL12350 && ap_vendorext == EZYNET) {
+               get_value(message, 2, strlen(DOT1X_TIME), 6,
+                   INT_STRING, 0, 65535, RADIUS_HELP);
+               ea_time = atoi(message);
+               m_ea_time = 1;
+           }
+           continue;
+       case 'w':
+       case 'W':
+           curr = first;
+           i = (mac_num == 1 ? 0 : 1);
+           while (curr != NULL) {
+               get.Action = 0x01; rshort(get.Action);
+               get.NumOfAllTableAddresses = mac_num - 1; rshort(get.NumOfAllTableAddresses);
+               get.NumOfCurrentAddress = i; rshort(get.NumOfCurrentAddress);
+               memcpy(get.MacAddress, curr->addr, 6);
+               varbinds[0].oid = AutorizedMac;
+               varbinds[0].len_oid = sizeof(AutorizedMac);
+               varbinds[0].value = (char *) &get;
+               varbinds[0].len_val = 12;
+               varbinds[0].type = STRING_VALUE;
+               print_help(WAIT_SET);
+               if (snmp(varbinds, 1, SET) <= 0) {
+                   print_helperr(ERR_SET);
+                   goto exit;
+               }
+               if (varbinds[0].len_val != 12) {
+                   print_helperr(PACKET_ERROR);
+                   goto exit;
+               }
+               curr = curr->next;
+               i++;
+           }
+
+           i = 0;
+
+           if (m_authmac) {
+               int c = swap4(auth_mode);
+
+               varbinds[i].oid = AuthorizationMacEnable;
+               varbinds[i].len_oid = sizeof(AuthorizationMacEnable);
+               varbinds[i].value = (char *) &c;
+               varbinds[i].len_val = 1;
+               varbinds[i].type = INT_VALUE;
+               i++;
+           }
+
+           if (m_ea_port) {
+               varbinds[i].oid = AuthRadiusPort;
+               varbinds[i].len_oid = sizeof(AuthRadiusPort);
+               ea_port = htons(ea_port);
+               varbinds[i].value = (char *) &ea_port;
+               varbinds[i].len_val = 2;
+               varbinds[i].type = INT_VALUE;
+               i++;
+           }
+
+           if (m_ea_ip) {
+               if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES) {
+                   varbinds[i].oid = AuthRadiusIP;
+                   varbinds[i].len_oid = sizeof(AuthRadiusIP);
+               }
+
+               if (ap_type == ATMEL12350 && ap_vendorext == EZYNET) {
+                   varbinds[i].oid = ServerIP;
+                   varbinds[i].len_oid = sizeof(ServerIP);
+               }
+
+               ea_ip.s_addr = htonl(ea_ip.s_addr);
+               ea_ip.s_addr = swap4(ea_ip.s_addr);
+               varbinds[i].value = (char *) &ea_ip.s_addr;
+               varbinds[i].len_val = 4;
+               varbinds[i].type = INT_VALUE;
+               i++;
+           }
+
+           if (m_ea_mode) {
+               varbinds[i].oid = Dot1xEnable;
+               varbinds[i].len_oid = sizeof(Dot1xEnable);
+               ea_mode = swap4(ea_mode);
+               varbinds[i].value = (char *) &ea_mode;
+               varbinds[i].len_val = 1;
+               varbinds[i].type = INT_VALUE;
+               i++;
+           }
+
+           if (m_ea_dest_port) {
+               varbinds[i].oid = AuthRadiusDestinPort;
+               varbinds[i].len_oid = sizeof(AuthRadiusDestinPort);
+               ea_dest_port = htons(ea_dest_port);
+               varbinds[i].value = (char *) &ea_dest_port;
+               varbinds[i].len_val = 2;
+               varbinds[i].type = INT_VALUE;
+               i++;
+           }
+
+           if (m_ea_secret) {
+               int c = strlen(ea_secret);
+
+               if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES) {
+                   varbinds[i].oid = AuthRadiusSecretLength;
+                   varbinds[i].len_oid = sizeof(AuthRadiusSecretLength);
+                   varbinds[i].value = (char *) &c;
+                   varbinds[i].len_val = 1;
+                   varbinds[i].type = INT_VALUE;
+                   i++;
+
+                   varbinds[i].oid = AuthRadiusSecret;
+                   varbinds[i].len_oid = sizeof(AuthRadiusSecret);
+               }
+
+               if (ap_type == ATMEL12350 && ap_vendorext == EZYNET) {
+                   varbinds[i].oid = ServerSecret;
+                   varbinds[i].len_oid = sizeof(ServerSecret);
+               }
+
+               varbinds[i].value = ea_secret;
+               varbinds[i].len_val = c;
+               varbinds[i].type = STRING_VALUE;
+               i++;
+           }
+
+           if (m_ea_time) {
+               if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES) {
+                   varbinds[i].oid = AuthRadiusReauthorizationTime;
+                   varbinds[i].len_oid = sizeof(AuthRadiusReauthorizationTime);
+               }
+
+               if (ap_type == ATMEL12350 && ap_vendorext == EZYNET) {
+                   varbinds[i].oid = BroadcastKeyPeriod;
+                   varbinds[i].len_oid = sizeof(BroadcastKeyPeriod);
+               }
+
+               ea_time = htons(ea_time);
+               varbinds[i].value = (char *) &ea_time;
+               varbinds[i].len_val = 2;
+               varbinds[i].type = INT_VALUE;
+               i++;
+           }
+
+           print_help(WAIT_SET);
+           if (snmp(varbinds, i, SET) <= 0) {
+               print_helperr(ERR_SET);
+               goto exit;
+           }
+           wbkgd(main_sub, A_NORMAL);
+           wattrset(main_sub, COLOR_PAIR(13));
+           mvwaddstr(main_sub, 8, 0, MAC_HEADER);
+           wattrset(main_sub, A_NORMAL);
+           wrefresh(main_sub);
+           print_help(DONE_SET);
+           goto exit;
+       case KEY_DOWN:
+       case KEY_RIGHT:
+           if (end < mac_num) {
+               begin++;
+               end++;
+               scroll_rows(first, begin, end, 9, 0);
+           }
+           continue;
+       case KEY_UP:
+       case KEY_LEFT:
+           if (begin > 1) {
+               begin--;
+               end--;
+               scroll_rows(first, begin, end, 9, 0);
+           }
+           continue;
+       case KEY_NPAGE:
+           if (end < mac_num) {
+               end = (end + (MAX_LINES) - 1 < mac_num) ?
+                   end + (MAX_LINES) - 1 : mac_num;
+               begin = (end - (MAX_LINES) + 1 > 0) ?
+                   end - (MAX_LINES) + 1 : 1;
+               scroll_rows(first, begin, end, 9, 0);
+           }
+           continue;
+       case KEY_PPAGE:
+           if (begin > 1) {
+               begin = (begin - (MAX_LINES) + 1 > 0) ?
+                   begin - (MAX_LINES) + 1 : 1;
+               end = (begin + (MAX_LINES) - 1 < mac_num) ?
+                   begin + (MAX_LINES) - 1 : mac_num;
+               scroll_rows(first, begin, end, 9, 0);
+           }
+           continue;
+       case KEY_END:
+           if (end < mac_num) {
+               begin = (mac_num > MAX_LINES) ? mac_num + 1 - (MAX_LINES) : 1;
+               end = mac_num;
+               scroll_rows(first, begin, end, 9, 0);
+           }
+           continue;
+       case KEY_HOME:
+           if (begin > 1) {
+               begin = 1;
+               end = (mac_num > MAX_LINES) ? MAX_LINES : mac_num;
+               scroll_rows(first, begin, end, 9, 0);
+           }
+           continue;
+       }
+       continue;
+    }
+
+    print_help(ANY_KEY);
+  exit:
+    getch();
+  quit:
+    while ((curr = first)) {
+       first = curr->next;
+       free(curr);
+    }
+    if (AuthMac)
+       free(AuthMac);
+    print_top(NULL, NULL);
+    clear_main(0);
+}
+
+void nwn_auth_mac()
+{
+    struct MacListStat *pmac, *first = NULL, *curr = NULL;
+    char Mac[] =
+       { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x02,
+       0x02, 0x01, 0x02, 0x00
+    };
+    char MacAllow[] =
+       { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x02,
+       0x02, 0x01, 0x03, 0x00
+    };
+    char MacRowStatus[] =
+       { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x02,
+       0x02, 0x01, 0x04, 0x00
+    };
+    char message[1024], auth_enable[] =
+       { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
+    char destroy = 6, create = 4, allow = 1;
+    int i, auth_mac = 0, mac_num = 0, begin, end;
+    varbind varbinds[3];
+    print_top(NULL, AUTH_TITLE);
+
+    mvwaddstr(main_sub, 2, 0, MAC_HEADER);
+    wrefresh(main_sub);
+    print_help(WAIT_RET);
+
+    mac_num = 1;
+    varbinds[0].oid = Mac;
+    varbinds[0].len_oid = sizeof(Mac);
+    varbinds[0].value = Mac;
+    varbinds[0].len_val = 0;
+    varbinds[0].type = NULL_VALUE;
+    if (snmp(varbinds, 1, GET_NEXT) <= 0) {
+       print_helperr(ERR_RET);
+       goto exit;
+    }
+
+    while (memcmp(varbinds[0].oid, Mac, sizeof(Mac) - 1) == 0) {
+
+       Mac[sizeof(Mac) - 1] = varbinds[0].oid[sizeof(Mac) - 1];
+       MacAllow[sizeof(MacAllow) - 1] = varbinds[0].oid[sizeof(Mac) - 1];
+       MacRowStatus[sizeof(MacRowStatus) - 1] =
+           varbinds[0].oid[sizeof(Mac) - 1];
+
+       varbinds[0].oid = Mac;
+       varbinds[0].len_oid = sizeof(Mac);
+       varbinds[0].value = Mac;
+       varbinds[0].len_val = 0;
+       varbinds[0].type = NULL_VALUE;
+       varbinds[1].oid = MacAllow;
+       varbinds[1].len_oid = sizeof(MacAllow);
+       varbinds[1].value = Mac;
+       varbinds[1].len_val = 0;
+       varbinds[1].type = NULL_VALUE;
+       varbinds[2].oid = MacRowStatus;
+       varbinds[2].len_oid = sizeof(MacRowStatus);
+       varbinds[2].value = Mac;
+       varbinds[2].len_val = 0;
+       varbinds[2].type = NULL_VALUE;
+       if (snmp(varbinds, 3, GET) < 3) {
+           print_helperr(ERR_RET);
+           goto exit;
+       }
+       if (memcmp(auth_enable, varbinds[0].value, 6)) {
+           if (first == NULL) {
+               first = (struct MacListStat *)
+                   malloc(sizeof(struct MacListStat));
+               curr = first;
+           } else {
+               curr->next = (struct MacListStat *)
+                   malloc(sizeof(struct MacListStat));
+               curr = curr->next;
+           }
+           memcpy(curr->addr, varbinds[0].value, 6);
+           curr->next = NULL;
+           mac_num++;
+       } else
+           auth_mac = 1;
+
+
+       varbinds[0].oid = Mac;
+       varbinds[0].len_oid = sizeof(Mac);
+       varbinds[0].value = Mac;
+       varbinds[0].len_val = 0;
+       varbinds[0].type = NULL_VALUE;
+       if (snmp(varbinds, 1, GET_NEXT) <= 0) {
+           print_helperr(ERR_RET);
+           goto exit;
+       }
+    }
+
+    begin = 1;
+    end = (mac_num > MAX_LINES) ? MAX_LINES : mac_num;
+
+    sprintf(message, "%s%s", MAC_AUTH, (auth_mac) ? OFF : ON);
+    mvwaddstr(main_sub, 0, 0, message);
+
+    scroll_rows(first, begin, end, 3, 0);
+
+    noecho();
+
+    print_help(MAC_HELP);
+    while (1) {
+       switch (getch()) {
+       case 'Q':
+       case 'q':
+           goto quit;
+       case 'a':
+           auth_mac = on_off(0, strlen(MAC_AUTH)) - 1;
+           clear_main_new(0, 1);
+           print_menusel(0, 0, MAC_AUTH, (auth_mac) ? OFF : ON);
+           continue;
+       case 'd':
+           mvwaddstr(main_sub, 1, 0, MAC_DEL);
+           get_value(message, 1, strlen(MAC_DEL), 5, INT_STRING,
+               1, mac_num - 1, NULL);
+           i = atoi(message);
+           if (i == 1) {
+               pmac = first;
+               first = first->next;
+               free(pmac);
+           } else {
+               curr = first;
+               while (--i > 1)
+                   curr = curr->next;
+               pmac = curr->next;
+               curr->next = pmac->next;
+               free(pmac);
+           }
+           mac_num--;
+           begin = 1;
+           end = (mac_num > MAX_LINES) ? MAX_LINES : mac_num;
+           scroll_rows(first, begin, end, 3, 0);
+           clear_main_new(1, 2);
+           continue;
+       case 'n':
+       case 'N':
+           mvwaddstr(main_sub, 1, 0, MAC_ADD);
+           curr = first;
+           while (curr && curr->next)
+               curr = curr->next;
+           if (first == NULL) {
+               first = (struct MacListStat *)
+                   malloc(sizeof(struct MacListStat));
+               curr = first;
+           } else {
+               curr->next = (struct MacListStat *)
+                   malloc(sizeof(struct MacListStat));
+               curr = curr->next;
+           }
+           curr->next = NULL;
+           mac_num++;
+           get_mac(curr->addr, 1, strlen(MAC_ADD));
+/*
+           for (i = 0; i < 6; i++) {
+               get_value(message, 1, 20 + i * 3, 3, ANY_STRING, 0, 0, NULL);
+               curr->addr[i] = strtol(message, NULL, 16);
+           }
+           clear_main_new(1, 2);
+*/
+           begin = 1;
+           end = (mac_num > MAX_LINES) ? MAX_LINES : mac_num;
+           scroll_rows(first, begin, end, 3, 0);
+           continue;
+       case 'w':
+       case 'W':
+           print_help(WAIT_SET);
+
+           Mac[sizeof(Mac) - 1] = 0;
+
+           varbinds[0].oid = Mac;
+           varbinds[0].len_oid = sizeof(Mac);
+           varbinds[0].value = Mac;
+           varbinds[0].len_val = 0;
+           varbinds[0].type = NULL_VALUE;
+           if (snmp(varbinds, 1, GET_NEXT) <= 0) {
+               print_helperr(ERR_RET);
+               goto exit;
+           }
+           while (memcmp(varbinds[0].oid, Mac, sizeof(Mac) - 1) == 0) {
+
+               MacRowStatus[sizeof(MacRowStatus) - 1] =
+                   varbinds[0].oid[sizeof(Mac) - 1];
+               varbinds[0].oid = MacRowStatus;
+               varbinds[0].len_oid = sizeof(MacRowStatus);
+               varbinds[0].value = &destroy;
+               varbinds[0].len_val = 1;
+               varbinds[0].type = INT_VALUE;
+               if (snmp(varbinds, 1, SET) <= 0) {
+                   print_helperr(ERR_SET);
+                   goto exit;
+               }
+               varbinds[0].oid = Mac;
+               varbinds[0].len_oid = sizeof(Mac);
+               varbinds[0].value = Mac;
+               varbinds[0].len_val = 0;
+               varbinds[0].type = NULL_VALUE;
+               if (snmp(varbinds, 1, GET_NEXT) <= 0) {
+                   print_helperr(ERR_RET);
+                   goto exit;
+               }
+           }
+
+
+           curr = first;
+           i = 1;
+
+           if (auth_mac) {
+               Mac[sizeof(Mac) - 1] = i;
+               MacAllow[sizeof(MacAllow) - 1] = i;
+               MacRowStatus[sizeof(MacRowStatus) - 1] = i;
+
+               varbinds[0].oid = MacRowStatus;
+               varbinds[0].len_oid = sizeof(MacRowStatus);
+               varbinds[0].value = &create;
+               varbinds[0].len_val = 1;
+               varbinds[0].type = INT_VALUE;
+               varbinds[1].oid = Mac;
+               varbinds[1].len_oid = sizeof(Mac);
+               varbinds[1].value = auth_enable;
+               varbinds[1].len_val = 6;
+               varbinds[1].type = STRING_VALUE;
+               varbinds[2].oid = MacAllow;
+               varbinds[2].len_oid = sizeof(MacAllow);
+               varbinds[2].value = &allow;
+               varbinds[2].len_val = 1;
+               varbinds[2].type = INT_VALUE;
+               print_help(WAIT_SET);
+               if (snmp(varbinds, 3, SET) <= 0) {
+                   print_helperr(ERR_SET);
+                   goto exit;
+               }
+               i++;
+           }
+
+
+
+
+           while (curr != NULL) {
+               Mac[sizeof(Mac) - 1] = i;
+               MacAllow[sizeof(MacAllow) - 1] = i;
+               MacRowStatus[sizeof(MacRowStatus) - 1] = i;
+
+               varbinds[0].oid = MacRowStatus;
+               varbinds[0].len_oid = sizeof(MacRowStatus);
+               varbinds[0].value = &create;
+               varbinds[0].len_val = 1;
+               varbinds[0].type = INT_VALUE;
+               varbinds[1].oid = Mac;
+               varbinds[1].len_oid = sizeof(Mac);
+               varbinds[1].value = curr->addr;
+               varbinds[1].len_val = 6;
+               varbinds[1].type = STRING_VALUE;
+               varbinds[2].oid = MacAllow;
+               varbinds[2].len_oid = sizeof(MacAllow);
+               varbinds[2].value = &allow;
+               varbinds[2].len_val = 1;
+               varbinds[2].type = INT_VALUE;
+               print_help(WAIT_SET);
+               if (snmp(varbinds, 3, SET) <= 0) {
+                   print_helperr(ERR_SET);
+                   goto exit;
+               }
+               curr = curr->next;
+               i++;
+           }
+           wbkgd(main_sub, A_NORMAL);
+           wrefresh(main_sub);
+           print_help(DONE_SET);
+           goto exit;
+       case KEY_DOWN:
+       case KEY_RIGHT:
+           if (end < mac_num) {
+               begin++;
+               end++;
+               scroll_rows(first, begin, end, 3, 0);
+           }
+
+           continue;
+       case KEY_UP:
+       case KEY_LEFT:
+           if (begin > 1) {
+               begin--;
+               end--;
+               scroll_rows(first, begin, end, 3, 0);
+           }
+           continue;
+       }
+       continue;
+    }
+
+    print_help(ANY_KEY);
+  exit:
+    getch();
+  quit:
+    while ((curr = first)) {
+       first = curr->next;
+       free(curr);
+    }
+    print_top(NULL, NULL);
+    clear_main(0);
+}
diff --git a/src/auth_mac.c b/src/auth_mac.c
deleted file mode 100644 (file)
index 847d62f..0000000
+++ /dev/null
@@ -1,593 +0,0 @@
-/*
- *      auth.c from Access Point SNMP Utils for Linux
- *
- * Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License Version 2 from
- * June 1991 as published by the Free Software Foundation.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include "ap-utils.h"
-
-#define MAX_LINES LINES-6
-#define PACKET_ERROR _("AuthorizedMacTableString packet error")
-
-#define MAC_AUTH _("[A] MAC authorization: ")
-#define MAC_ADD  _("Enter MAC: ")
-#define MAC_DEL  _("Delete Num: ")
-#define MAC_TITLE _("Authorized MAC addresses")
-#define MAC_HEADER _("NUM     MAC address")
-#define MAC_HELP _("A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit")
-
-extern WINDOW *main_sub;
-extern int LINES;
-extern short ap_type;
-
-void atmel_auth_mac()
-{
-    struct AuthorizedMacTableString {
-       unsigned int short Action;
-       unsigned int short NumOfAllTableAddresses;
-       unsigned int short NumOfCurrentAddress;
-       unsigned char MacAddress[6];
-    } *AuthMac = NULL, get;
-
-    struct MacListStat *pmac, *first = NULL, *curr = NULL;
-    uint32_t auth_mac_hw;
-
-    char EnableAuthMAC[] =
-       { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
-       0x02, 0x06, 0x01, 0x00
-    };
-    char AutorizedMac[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01,
-       0x02, 0x06, 0x02, 0x00
-    };
-
-    char message[1024], m_authmac = 0;
-    int i, total_mac, auth_mac = 0, mac_num = 0, begin, end;
-    varbind varbinds[1];
-
-    if (ap_type == ATMEL12350) {
-       EnableAuthMAC[5] = 0xE0;
-       EnableAuthMAC[6] = 0x3E;
-       AutorizedMac[5] = 0xE0;
-       AutorizedMac[6] = 0x3E;
-    }
-
-    varbinds[0].oid = EnableAuthMAC;
-    varbinds[0].len_oid = sizeof(EnableAuthMAC);
-    varbinds[0].type = NULL_VALUE;
-    varbinds[0].len_val = 0;
-    print_help(WAIT_RET);
-    if (snmp(varbinds, 1, GET) <= 0) {
-       print_helperr(ERR_RET);
-       goto exit;
-    }
-    print_top(NULL, MAC_TITLE);
-
-    auth_mac = *(varbinds[0].value);
-    sprintf(message, "%s%s", MAC_AUTH, (auth_mac == 1) ? ON : OFF);
-    mvwaddstr(main_sub, 0, 0, message);
-    mvwaddstr(main_sub, 2, 1, MAC_HEADER);
-    wrefresh(main_sub);
-
-    total_mac = 0;
-    mac_num = 0;
-
-    while (mac_num <= total_mac) {
-       get.Action = 0x02; rshort(get.Action);
-       get.NumOfAllTableAddresses = total_mac; rshort(get.NumOfAllTableAddresses);
-       get.NumOfCurrentAddress = mac_num; rshort(get.NumOfCurrentAddress);
-
-       varbinds[0].oid = AutorizedMac;
-       varbinds[0].len_oid = sizeof(AutorizedMac);
-       varbinds[0].value = (char *) &get;
-       varbinds[0].len_val = 12;
-       varbinds[0].type = STRING_VALUE;
-
-       if (snmp(varbinds, 1, SET) <= 0) {
-           print_helperr(ERR_RET);
-           goto exit;
-       }
-
-       if (varbinds[0].len_val == 12) {
-           if (AuthMac)
-               free(AuthMac);
-           AuthMac =
-               (struct AuthorizedMacTableString *) malloc(varbinds[0].
-                                                          len_val);
-           memcpy(AuthMac, varbinds[0].value, varbinds[0].len_val);
-/*         AuthMac =
-               (struct AuthorizedMacTableString *) varbinds[0].value;*/
-       } else {
-           print_helperr(PACKET_ERROR);
-           goto exit;
-       }
-
-       rshort(AuthMac->NumOfAllTableAddresses);
-       total_mac =
-           (AuthMac->NumOfAllTableAddresses ==
-            65535) ? 0 : AuthMac->NumOfAllTableAddresses;
-
-       if (mac_num) {
-           if (first == NULL) {
-               first = (struct MacListStat *)
-                   malloc(sizeof(struct MacListStat));
-               curr = first;
-           } else {
-               curr->next = (struct MacListStat *)
-                   malloc(sizeof(struct MacListStat));
-               curr = curr->next;
-           }
-           memcpy(curr->addr, AuthMac->MacAddress, 6);
-           curr->next = NULL;
-       }
-       mac_num++;
-    }
-
-    begin = 1;
-    end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num;
-    scroll_rows(first, begin, end, 3, 0);
-
-    noecho();
-
-    print_help(MAC_HELP);
-    while (1) {
-       switch (getch()) {
-       case 'q':
-       case 'Q':
-           goto quit;
-       case 'a':
-       case 'A':
-           auth_mac = on_off(0, strlen(MAC_AUTH));
-           clear_main_new(0, 1);
-           print_menusel(0, 0, MAC_AUTH, (auth_mac == 1) ? ON : OFF);
-           m_authmac = 1;
-           continue;
-       case 'd':
-       case 'D':
-           mvwaddstr(main_sub, 1, 0, MAC_DEL);
-           get_value(message, 1, strlen(MAC_DEL), 5, INT_STRING,
-               1, mac_num - 1, NULL);
-           i = atoi(message);
-           if (i == 1) {
-               pmac = first;
-               first = first->next;
-               free(pmac);
-           } else {
-               curr = first;
-               while (--i > 1)
-                   curr = curr->next;
-               pmac = curr->next;
-               curr->next = pmac->next;
-               free(pmac);
-           }
-           mac_num--;
-           begin = 1;
-           end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num;
-           scroll_rows(first, begin, end, 3, 0);
-           clear_main_new(1, 2);
-           continue;
-       case 'n':
-       case 'N':
-           mvwaddstr(main_sub, 1, 0, MAC_ADD);
-           curr = first;
-           while (curr && curr->next)
-               curr = curr->next;
-           if (first == NULL) {
-               first = (struct MacListStat *)
-                   malloc(sizeof(struct MacListStat));
-               curr = first;
-           } else {
-               curr->next = (struct MacListStat *)
-                   malloc(sizeof(struct MacListStat));
-               curr = curr->next;
-           }
-           curr->next = NULL;
-           mac_num++;
-/*         get_value(message, 1, strlen(MAC_ADD), 13, ANY_STRING, 0, 0,
-               NULL);
-
-           for (i = 0; i < 6; i++) {
-               mess[0] = message[2 * i];
-               mess[1] = message[2 * i + 1];
-               mess[2] = '\0';
-               curr->addr[i] = strtol(mess, NULL, 16);
-           }
-           clear_main_new(1, 2);
-*/
-           get_mac(curr->addr, 1, strlen(MAC_ADD));
-           begin = 1;
-           end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num;
-           scroll_rows(first, begin, end, 3, 0);
-           clear_main_new(1, 2);
-           continue;
-       case 'w':
-       case 'W':
-           if (m_authmac) {
-               auth_mac_hw = swap4(auth_mac);
-               varbinds[0].oid = EnableAuthMAC;
-               varbinds[0].len_oid = sizeof(EnableAuthMAC);
-               varbinds[0].type = INT_VALUE;
-               varbinds[0].value = (char *) &auth_mac_hw;
-               varbinds[0].len_val = 1;
-               print_help(WAIT_SET);
-               if (snmp(varbinds, 1, SET) <= 0) {
-                   print_helperr(ERR_RET);
-                   goto exit;
-               }
-           }
-           curr = first;
-           i = 1;
-           while (curr != NULL) {
-               get.Action = 0x01; rshort(get.Action);
-               get.NumOfAllTableAddresses = mac_num - 1; rshort(get.NumOfAllTableAddresses);
-               get.NumOfCurrentAddress = i; rshort(get.NumOfCurrentAddress);
-               memcpy(get.MacAddress, curr->addr, 6);
-               varbinds[0].oid = AutorizedMac;
-               varbinds[0].len_oid = sizeof(AutorizedMac);
-               varbinds[0].value = (char *) &get;
-               varbinds[0].len_val = 12;
-               varbinds[0].type = STRING_VALUE;
-               print_help(WAIT_SET);
-               if (snmp(varbinds, 1, SET) <= 0) {
-                   print_helperr(ERR_RET);
-                   goto exit;
-               }
-               if (varbinds[0].len_val != 12) {
-                   print_helperr(PACKET_ERROR);
-                   goto exit;
-               }
-               curr = curr->next;
-               i++;
-           }
-           print_help(DONE_SET);
-           goto exit;
-       case KEY_DOWN:
-       case KEY_RIGHT:
-           if (end < mac_num) {
-               begin++;
-               end++;
-               scroll_rows(first, begin, end, 3, 0);
-           }
-           continue;
-       case KEY_UP:
-       case KEY_LEFT:
-           if (begin > 1) {
-               begin--;
-               end--;
-               scroll_rows(first, begin, end, 3, 0);
-           }
-           continue;
-       }
-       continue;
-    }
-
-    print_help(ANY_KEY);
-  exit:
-    getch();
-  quit:
-    while ((curr = first)) {
-       first = curr->next;
-       free(curr);
-    }
-    if (AuthMac)
-       free(AuthMac);
-    print_top(NULL, NULL);
-    clear_main(0);
-}
-
-void nwn_auth_mac()
-{
-    struct MacListStat *pmac, *first = NULL, *curr = NULL;
-    char Mac[] =
-       { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x02,
-       0x02, 0x01, 0x02, 0x00
-    };
-    char MacAllow[] =
-       { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x02,
-       0x02, 0x01, 0x03, 0x00
-    };
-    char MacRowStatus[] =
-       { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x02,
-       0x02, 0x01, 0x04, 0x00
-    };
-    char message[1024], auth_enable[] =
-       { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
-    char destroy = 6, create = 4, allow = 1;
-    int i, auth_mac = 0, mac_num = 0, begin, end;
-    varbind varbinds[3];
-    print_top(NULL, MAC_TITLE);
-
-    mvwaddstr(main_sub, 2, 5, MAC_HEADER);
-    wrefresh(main_sub);
-    print_help(WAIT_RET);
-
-    mac_num = 1;
-    varbinds[0].oid = Mac;
-    varbinds[0].len_oid = sizeof(Mac);
-    varbinds[0].value = Mac;
-    varbinds[0].len_val = 0;
-    varbinds[0].type = NULL_VALUE;
-    if (snmp(varbinds, 1, GET_NEXT) <= 0) {
-       print_helperr(ERR_RET);
-       goto exit;
-    }
-
-    while (memcmp(varbinds[0].oid, Mac, sizeof(Mac) - 1) == 0) {
-
-       Mac[sizeof(Mac) - 1] = varbinds[0].oid[sizeof(Mac) - 1];
-       MacAllow[sizeof(MacAllow) - 1] = varbinds[0].oid[sizeof(Mac) - 1];
-       MacRowStatus[sizeof(MacRowStatus) - 1] =
-           varbinds[0].oid[sizeof(Mac) - 1];
-
-       varbinds[0].oid = Mac;
-       varbinds[0].len_oid = sizeof(Mac);
-       varbinds[0].value = Mac;
-       varbinds[0].len_val = 0;
-       varbinds[0].type = NULL_VALUE;
-       varbinds[1].oid = MacAllow;
-       varbinds[1].len_oid = sizeof(MacAllow);
-       varbinds[1].value = Mac;
-       varbinds[1].len_val = 0;
-       varbinds[1].type = NULL_VALUE;
-       varbinds[2].oid = MacRowStatus;
-       varbinds[2].len_oid = sizeof(MacRowStatus);
-       varbinds[2].value = Mac;
-       varbinds[2].len_val = 0;
-       varbinds[2].type = NULL_VALUE;
-       if (snmp(varbinds, 3, GET) <= 0) {
-           print_helperr(ERR_RET);
-           goto exit;
-       }
-       if (memcmp(auth_enable, varbinds[0].value, 6)) {
-           if (first == NULL) {
-               first = (struct MacListStat *)
-                   malloc(sizeof(struct MacListStat));
-               curr = first;
-           } else {
-               curr->next = (struct MacListStat *)
-                   malloc(sizeof(struct MacListStat));
-               curr = curr->next;
-           }
-           memcpy(curr->addr, varbinds[0].value, 6);
-           curr->next = NULL;
-           mac_num++;
-       } else
-           auth_mac = 1;
-
-
-       varbinds[0].oid = Mac;
-       varbinds[0].len_oid = sizeof(Mac);
-       varbinds[0].value = Mac;
-       varbinds[0].len_val = 0;
-       varbinds[0].type = NULL_VALUE;
-       if (snmp(varbinds, 1, GET_NEXT) <= 0) {
-           print_helperr(ERR_RET);
-           goto exit;
-       }
-    }
-
-    begin = 1;
-    end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num;
-
-    sprintf(message, "%s%s", MAC_AUTH, (auth_mac) ? OFF : ON);
-    mvwaddstr(main_sub, 0, 0, message);
-
-    scroll_rows(first, begin, end, 3, 0);
-
-    noecho();
-
-    print_help(MAC_HELP);
-    while (1) {
-       switch (getch()) {
-       case 'Q':
-       case 'q':
-           goto quit;
-       case 'a':
-           auth_mac = on_off(0, strlen(MAC_AUTH)) - 1;
-           clear_main_new(0, 1);
-           print_menusel(0, 0, MAC_AUTH, (auth_mac) ? OFF : ON);
-           continue;
-       case 'd':
-           mvwaddstr(main_sub, 1, 0, MAC_DEL);
-           get_value(message, 1, strlen(MAC_DEL), 5, INT_STRING,
-               1, mac_num - 1, NULL);
-           i = atoi(message);
-           if (i == 1) {
-               pmac = first;
-               first = first->next;
-               free(pmac);
-           } else {
-               curr = first;
-               while (--i > 1)
-                   curr = curr->next;
-               pmac = curr->next;
-               curr->next = pmac->next;
-               free(pmac);
-           }
-           mac_num--;
-           begin = 1;
-           end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num;
-           scroll_rows(first, begin, end, 3, 0);
-           clear_main_new(1, 2);
-           continue;
-       case 'n':
-       case 'N':
-           mvwaddstr(main_sub, 1, 0, MAC_ADD);
-           curr = first;
-           while (curr && curr->next)
-               curr = curr->next;
-           if (first == NULL) {
-               first = (struct MacListStat *)
-                   malloc(sizeof(struct MacListStat));
-               curr = first;
-           } else {
-               curr->next = (struct MacListStat *)
-                   malloc(sizeof(struct MacListStat));
-               curr = curr->next;
-           }
-           curr->next = NULL;
-           mac_num++;
-           get_mac(curr->addr, 1, strlen(MAC_ADD));
-/*
-           for (i = 0; i < 6; i++) {
-               get_value(message, 1, 20 + i * 3, 3, ANY_STRING, 0, 0, NULL);
-               curr->addr[i] = strtol(message, NULL, 16);
-           }
-           clear_main_new(1, 2);
-*/
-           begin = 1;
-           end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num;
-           scroll_rows(first, begin, end, 3, 0);
-           continue;
-       case 'w':
-       case 'W':
-           print_help(WAIT_SET);
-
-           Mac[sizeof(Mac) - 1] = 0;
-
-           varbinds[0].oid = Mac;
-           varbinds[0].len_oid = sizeof(Mac);
-           varbinds[0].value = Mac;
-           varbinds[0].len_val = 0;
-           varbinds[0].type = NULL_VALUE;
-           if (snmp(varbinds, 1, GET_NEXT) <= 0) {
-               print_helperr(ERR_RET);
-               goto exit;
-           }
-           while (memcmp(varbinds[0].oid, Mac, sizeof(Mac) - 1) == 0) {
-
-               MacRowStatus[sizeof(MacRowStatus) - 1] =
-                   varbinds[0].oid[sizeof(Mac) - 1];
-               varbinds[0].oid = MacRowStatus;
-               varbinds[0].len_oid = sizeof(MacRowStatus);
-               varbinds[0].value = &destroy;
-               varbinds[0].len_val = 1;
-               varbinds[0].type = INT_VALUE;
-               if (snmp(varbinds, 1, SET) <= 0) {
-                   print_helperr(ERR_RET);
-                   goto exit;
-               }
-               varbinds[0].oid = Mac;
-               varbinds[0].len_oid = sizeof(Mac);
-               varbinds[0].value = Mac;
-               varbinds[0].len_val = 0;
-               varbinds[0].type = NULL_VALUE;
-               if (snmp(varbinds, 1, GET_NEXT) <= 0) {
-                   print_helperr(ERR_RET);
-                   goto exit;
-               }
-           }
-
-
-           curr = first;
-           i = 1;
-
-           if (auth_mac) {
-               Mac[sizeof(Mac) - 1] = i;
-               MacAllow[sizeof(MacAllow) - 1] = i;
-               MacRowStatus[sizeof(MacRowStatus) - 1] = i;
-
-               varbinds[0].oid = MacRowStatus;
-               varbinds[0].len_oid = sizeof(MacRowStatus);
-               varbinds[0].value = &create;
-               varbinds[0].len_val = 1;
-               varbinds[0].type = INT_VALUE;
-               varbinds[1].oid = Mac;
-               varbinds[1].len_oid = sizeof(Mac);
-               varbinds[1].value = auth_enable;
-               varbinds[1].len_val = 6;
-               varbinds[1].type = STRING_VALUE;
-               varbinds[2].oid = MacAllow;
-               varbinds[2].len_oid = sizeof(MacAllow);
-               varbinds[2].value = &allow;
-               varbinds[2].len_val = 1;
-               varbinds[2].type = INT_VALUE;
-               print_help(WAIT_SET);
-               if (snmp(varbinds, 3, SET) <= 0) {
-                   print_helperr(ERR_RET);
-                   goto exit;
-               }
-               i++;
-           }
-
-
-
-
-           while (curr != NULL) {
-               Mac[sizeof(Mac) - 1] = i;
-               MacAllow[sizeof(MacAllow) - 1] = i;
-               MacRowStatus[sizeof(MacRowStatus) - 1] = i;
-
-               varbinds[0].oid = MacRowStatus;
-               varbinds[0].len_oid = sizeof(MacRowStatus);
-               varbinds[0].value = &create;
-               varbinds[0].len_val = 1;
-               varbinds[0].type = INT_VALUE;
-               varbinds[1].oid = Mac;
-               varbinds[1].len_oid = sizeof(Mac);
-               varbinds[1].value = curr->addr;
-               varbinds[1].len_val = 6;
-               varbinds[1].type = STRING_VALUE;
-               varbinds[2].oid = MacAllow;
-               varbinds[2].len_oid = sizeof(MacAllow);
-               varbinds[2].value = &allow;
-               varbinds[2].len_val = 1;
-               varbinds[2].type = INT_VALUE;
-               print_help(WAIT_SET);
-               if (snmp(varbinds, 3, SET) <= 0) {
-                   print_helperr(ERR_RET);
-                   goto exit;
-               }
-               curr = curr->next;
-               i++;
-           }
-           print_help(DONE_SET);
-           goto exit;
-       case KEY_DOWN:
-       case KEY_RIGHT:
-           if (end < mac_num) {
-               begin++;
-               end++;
-               scroll_rows(first, begin, end, 3, 0);
-           }
-
-           continue;
-       case KEY_UP:
-       case KEY_LEFT:
-           if (begin > 1) {
-               begin--;
-               end--;
-               scroll_rows(first, begin, end, 3, 0);
-           }
-           continue;
-       }
-       continue;
-    }
-
-    print_help(ANY_KEY);
-  exit:
-    getch();
-  quit:
-    while ((curr = first)) {
-       first = curr->next;
-       free(curr);
-    }
-    print_top(NULL, NULL);
-    clear_main(0);
-}
index 7833cc510ffb38f72cc0f5cafcdd8274a7a21e60..30961f8c6d524514721ff77afdc90fe6cd9e0cd2 100644 (file)
@@ -2,6 +2,7 @@
  *      bridge.c from Access Point SNMP Utils for Linux
  *
  * Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
+ * Copyright (c) 2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License Version 2 from
 #define OPER _("[O] Operational mode: ")
 #define REMOTE_MAC _("[M] Preferred BSSID (remote MAC addr.): ")
 #define CF_PORT _("[C] Configuration-enabled port(s): ")
-#define TRAP_PORT _("[T] Trap-sending port(s): ")
+#define TRAP_PORT _("[T] Trap-sending port: ")
 #define FW_BCAST _("[R] Forward broadcast traffic: ")
 #define SB_BCAST _("[B] Isolate wireless clients (broadcast traffic): ")
 #define SB_UCAST _("[U] Isolate wireless clients (unicast traffic): ")
-#define HELP _("INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu")
+#define HELP _("INGFPDOMSCRBUT - set; W - write conf; Q - quit to menu")
 
 extern short ap_type, ap_vendorext;
 
+
 void bridging()
 {
+
+char *bridge_modes[6] = {
+    _("Wireless Bridge Point to MultiPoint"),
+    _("Access Point"),
+    _("Access Point client"),
+    _("Wireless Bridge Point to Point"),
+    _("Repeater"),
+    _("unknown")
+};
+
     char sysTrapSwitch[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x03, 0x00
     };
@@ -62,30 +74,33 @@ void bridging()
     char operDHCP[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x05, 0x00
     };
-    char PrimaryPort[] = {
+    char operPrimaryPort[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x06, 0x00
     };
-    /* This one is ATMEL12350 MIB specific. */
-    char ConfigPort[] = {
-       0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x02, 0x07, 0x00
+
+    /* This one is ATMEL410 SBRIDGES MIB and ATMEL12350 all MIBs specific. */
+    char operConfigurationPort[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x07, 0x00
     };
-    /* This one is ATMEL12350 TELLUS MIB specific. */
-    char TrapPort[] = {
+
+    /* This one is ATMEL12350 GEMTEK MIB and ATMEL12350 EZYNET MIB specific. */
+    char operTrapPort[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x02, 0x08, 0x00
     };
 
-    char IPFilter[] = {
+    char operIPFilter[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x01, 0x00
     };
-    /* These 3 are ATMEL12350 MIB specific. */
-    char ForwardBroadcast[] = {
-       0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x03, 0x02, 0x00
+
+    /* These 3 are ATMEL410 SBRIDGES MIB and ATMEL12350 all MIBs specific. */
+    char operForwarbBcast[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x02, 0x00
     };
-    char SendBackBcast[] = {
-       0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x03, 0x03, 0x00
+    char operSendBackBcast[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x03, 0x00
     };
-    char SendBackUnicast[] = {
-       0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x03, 0x04, 0x00
+    char operSendBackUnicast[] = {
+       0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x04, 0x00
     };
 
     char bridgeOperationalMode[] = {
@@ -105,45 +120,46 @@ void bridging()
        m_dhcp = 0, m_ip = 0, m_mask = 0, m_gw = 0, m_remote_bssid = 0,
        m_config_port = 0, m_trap_port = 0, m_fw_bcast = 0, m_sb_bcast = 0,
        m_sb_ucast = 0;
-    char *bridge_modes[6] = {
-       _("Wireless Bridge Point to MultiPoint"),
-       _("Access Point"),
-       _("Access Point client"),
-       _("Wireless Bridge Point to Point"),
-       _("Repeater"),
-       ("unknown")
-    }, *pr_ports[2] = {
+    char *pr_ports[2] = {
        _("Ethernet"),
        _("Wireless")
-    }, *cf_trap_ports[3] = {
-       _("Both"),
+    }, *cf_ports[3] = {
        _("Ethernet"),
-       _("Wireless")
+       _("Wireless (can be risky)"),
+       _("Both")
     };
     int i;
     unsigned int trap_port = 0;
 
     if (ap_type == ATMEL12350) {
-       operEthernetAddress[5] = 0xE0;
-       operEthernetAddress[6] = 0x3E;
-       IPFilter[5] = 0xE0;
-       IPFilter[6] = 0x3E;
-       PrimaryPort[5] = 0xE0;
-       PrimaryPort[6] = 0x3E;
-       operDHCP[5] = 0xE0;
-       operDHCP[6] = 0x3E;
+       sysTrapSwitch[5] = 0xE0;
+       sysTrapSwitch[6] = 0x3E;
        operIPAddress[5] = 0xE0;
        operIPAddress[6] = 0x3E;
        operIPMask[5] = 0xE0;
        operIPMask[6] = 0x3E;
+       operEthernetAddress[5] = 0xE0;
+       operEthernetAddress[6] = 0x3E;
        operGateway[5] = 0xE0;
        operGateway[6] = 0x3E;
+       operDHCP[5] = 0xE0;
+       operDHCP[6] = 0x3E;
+       operPrimaryPort[5] = 0xE0;
+       operPrimaryPort[6] = 0x3E;
+       operConfigurationPort[5] = 0xE0;
+       operConfigurationPort[6] = 0x3E;
+       operIPFilter[5] = 0xE0;
+       operIPFilter[6] = 0x3E;
+       operForwarbBcast[5] = 0xE0;
+       operForwarbBcast[6] = 0x3E;
+       operSendBackBcast[5] = 0xE0;
+       operSendBackBcast[6] = 0x3E;
+       operSendBackUnicast[5] = 0xE0;
+       operSendBackUnicast[6] = 0x3E;
        bridgeOperationalMode[5] = 0xE0;
        bridgeOperationalMode[6] = 0x3E;
        bridgeRemoteBridgeBSSID[5] = 0xE0;
        bridgeRemoteBridgeBSSID[6] = 0x3E;
-       sysTrapSwitch[5] = 0xE0;
-       sysTrapSwitch[6] = 0x3E;
     }
 
     for (i = 0; i < 15; i++) {
@@ -154,27 +170,30 @@ void bridging()
 
     i = 0;
 
-    varbinds[i++].oid = operEthernetAddress;
-    varbinds[i++].oid = IPFilter;
-    varbinds[i++].oid = PrimaryPort;
-    varbinds[i++].oid = operDHCP;
+    varbinds[i++].oid = sysTrapSwitch;
     varbinds[i++].oid = operIPAddress;
     varbinds[i++].oid = operIPMask;
+    varbinds[i++].oid = operEthernetAddress;
     varbinds[i++].oid = operGateway;
+    varbinds[i++].oid = operDHCP;
+    varbinds[i++].oid = operPrimaryPort;
+    varbinds[i++].oid = operIPFilter;
     varbinds[i++].oid = bridgeOperationalMode;
-    varbinds[i++].oid = sysTrapSwitch;
     varbinds[i++].oid = bridgeRemoteBridgeBSSID;
-    if (ap_type == ATMEL12350) {
-       varbinds[i++].oid = ConfigPort;
-       varbinds[i++].oid = ForwardBroadcast;
-       varbinds[i++].oid = SendBackBcast;
-       varbinds[i++].oid = SendBackUnicast;
-       if (ap_vendorext == TELLUS || ap_vendorext == VERNET)
-           varbinds[i++].oid = TrapPort;
+    if ((ap_type == ATMEL410 && ap_vendorext == SBRIDGES) ||
+       (ap_type == ATMEL12350)) {
+       varbinds[i++].oid = operConfigurationPort;
+       varbinds[i++].oid = operForwarbBcast;
+       varbinds[i++].oid = operSendBackBcast;
+       varbinds[i++].oid = operSendBackUnicast;
+    }
+    if (ap_type == ATMEL12350 &&
+       (ap_vendorext == GEMTEK || ap_vendorext == EZYNET)) {
+           varbinds[i++].oid = operTrapPort;
     }
 
     print_help(WAIT_RET);
-    if (snmp(varbinds, i, GET) <= 0) {
+    if (snmp(varbinds, i, GET) < i) {
        print_helperr(ERR_RET);
        goto exit;
     }
@@ -182,50 +201,54 @@ void bridging()
     print_top(NULL, _("Bridging"));
 
     sprintf(message, "%s%02X%02X%02X%02X%02X%02X", MAC,
-           varbinds[0].value[0] & 0xFF,
-           varbinds[0].value[1] & 0xFF,
-           varbinds[0].value[2] & 0xFF,
-           varbinds[0].value[3] & 0xFF,
-           varbinds[0].value[4] & 0xFF,
-           varbinds[0].value[5] & 0xFF);
+           varbinds[3].value[0] & 0xFF,
+           varbinds[3].value[1] & 0xFF,
+           varbinds[3].value[2] & 0xFF,
+           varbinds[3].value[3] & 0xFF,
+           varbinds[3].value[4] & 0xFF,
+           varbinds[3].value[5] & 0xFF);
     mvwaddstr(main_sub, 0, 0, message);
 
-    memcpy(&ip.s_addr, varbinds[4].value, 4);
+    memcpy(&ip.s_addr, varbinds[1].value, 4);
     sprintf(message, "%s%s", IPADDR, inet_ntoa(ip));
     mvwaddstr(main_sub, 1, 0, message);
 
-    memcpy(&mask.s_addr, varbinds[5].value, 4);
+    memcpy(&mask.s_addr, varbinds[2].value, 4);
     sprintf(message, "%s%s", NETMASK, inet_ntoa(mask));
     mvwaddstr(main_sub, 1, 24, message);
 
-    memcpy(&gw.s_addr, varbinds[6].value, 4);
+    memcpy(&gw.s_addr, varbinds[4].value, 4);
     sprintf(message, "%s%s", GATEWAY, inet_ntoa(gw));
     mvwaddstr(main_sub, 2, 0, message);
 
-    filter = *(varbinds[1].value);
+    filter = *(varbinds[7].value);
     sprintf(message, "%s%s", IP_FILTER, (filter == 1) ? ON : OFF);
     mvwaddstr(main_sub, 3, 0, message);
 
-    if (ap_vendorext == SBRIDGES) {
+/*
+    if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES) {
        sprintf(message, "%s%02X%02X%02X%02X%02X%02X", SB_ATTMAC,
-               *(varbinds[2].value +0) & 0xFF, *(varbinds[2].value +1) & 0xFF,
-               *(varbinds[2].value +2) & 0xFF, *(varbinds[2].value +3) & 0xFF,
-               *(varbinds[2].value +4) & 0xFF, *(varbinds[2].value +5) & 0xFF);
+               *(varbinds[6].value +0) & 0xFF, *(varbinds[6].value +1) & 0xFF,
+               *(varbinds[6].value +2) & 0xFF, *(varbinds[6].value +3) & 0xFF,
+               *(varbinds[6].value +4) & 0xFF, *(varbinds[6].value +5) & 0xFF);
     } else {
-       primary_port = *(varbinds[2].value);
+*/
+       primary_port = *(varbinds[6].value);
        if (primary_port < 1 || primary_port > 2) {
            primary_port = 1;
        }
        sprintf(message, "%s%s", PR_PORT, pr_ports[primary_port - 1]);
+/*
     }
+*/
     mvwaddstr(main_sub, 4, 0, message);
 
-    dhcp = *(varbinds[3].value);
+    dhcp = *(varbinds[5].value);
     sprintf(message, "%s%s", DHCP, (dhcp == 1) ? ON : OFF);
     mvwaddstr(main_sub, 5, 0, message);
 
     memcpy(RemoteBSSID, varbinds[9].value, 6);
-    if ((bridge_mode = *(varbinds[7].value)) != 2) {
+    if ((bridge_mode = *(varbinds[8].value)) != 2) {
        sprintf(message, "%s%02X%02X%02X%02X%02X%02X", REMOTE_MAC,
                *(RemoteBSSID + 0) & 0xFF, *(RemoteBSSID + 1) & 0xFF,
                *(RemoteBSSID + 2) & 0xFF, *(RemoteBSSID + 3) & 0xFF,
@@ -237,35 +260,40 @@ void bridging()
     sprintf(message, "%s%s", OPER, bridge_modes[bridge_mode - 1]);
     mvwaddstr(main_sub, 6, 0, message);
 
-    traps = *(varbinds[8].value);
+    traps = *(varbinds[0].value);
     sprintf(message, "%s%s", TRAPS, (traps == 1) ? ON : OFF);
     mvwaddstr(main_sub, 8, 0, message);
 
-    if (ap_type == ATMEL12350) {
+    if ((ap_type == ATMEL410 && ap_vendorext == SBRIDGES) ||
+       ap_type == ATMEL12350) {
        config_port = *(varbinds[10].value);
-       sprintf(message, "%s%s", CF_PORT, cf_trap_ports[config_port]);
+       if (config_port == 0) /* happens with ATMEL12350 EZYNET firmware only */
+           config_port = 3;
+       sprintf(message, "%s%s", CF_PORT, cf_ports[config_port - 1]);
        mvwaddstr(main_sub, 9, 0, message);
 
-       if (ap_vendorext == TELLUS || ap_vendorext == VERNET) {
-           for (i = 0; i < varbinds[14].len_val;
-                   trap_port += varbinds[14].value[i] *
-                   (1 << ((varbinds[14].len_val - i - 1) * 8)), i++);
-           sprintf(message, "%s%u", TRAP_PORT, trap_port);
-           mvwaddstr(main_sub, 10, 0, message);
-       }
-
        fw_bcast = *(varbinds[11].value);
        sprintf(message, "%s%s", FW_BCAST, (fw_bcast == 1) ? ON : OFF);
-       mvwaddstr(main_sub, 11, 0, message);
+       mvwaddstr(main_sub, 10, 0, message);
 
        sb_bcast = *(varbinds[12].value);
        sprintf(message, "%s%s", SB_BCAST, (sb_bcast == 1) ? ON : OFF);
-       mvwaddstr(main_sub, 12, 0, message);
+       mvwaddstr(main_sub, 11, 0, message);
 
        sb_ucast = *(varbinds[13].value);
        sprintf(message, "%s%s", SB_UCAST, (sb_ucast == 1) ? ON : OFF);
+       mvwaddstr(main_sub, 12, 0, message);
+    }
+
+    if (ap_type == ATMEL12350 &&
+       (ap_vendorext == GEMTEK || ap_vendorext == EZYNET)) {
+       for (i = 0; i < varbinds[14].len_val;
+           trap_port += varbinds[14].value[i] *
+           (1 << ((varbinds[14].len_val - i - 1) * 8)), i++);
+       sprintf(message, "%s%u", TRAP_PORT, trap_port);
        mvwaddstr(main_sub, 13, 0, message);
     }
+
     wrefresh(main_sub);
     noecho();
 
@@ -296,12 +324,14 @@ void bridging()
            continue;
        case 'P':
        case 'p':
-           if (ap_vendorext != SBRIDGES) {
-               primary_port = menu_choose(4, strlen(PR_PORT), pr_ports, 2) + 1;
-               clear_main_new(4, 5);
-               print_menusel(4, 0, PR_PORT, pr_ports[primary_port - 1]);
-               m_primary_port = 1;
-           }   
+/*
+           if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES)
+               continue;
+*/
+           primary_port = menu_choose(4, strlen(PR_PORT), pr_ports, 2) + 1;
+           clear_main_new(4, 5);
+           print_menusel(4, 0, PR_PORT, pr_ports[primary_port - 1]);
+           m_primary_port = 1;
            continue;
        case 'D':
        case 'd':
@@ -354,63 +384,68 @@ void bridging()
            continue;
        case 'C':
        case 'c':
-           if (ap_type == ATMEL12350) {
-               config_port = menu_choose(9, strlen(CF_PORT), cf_trap_ports, 3);
+           if ((ap_type == ATMEL410 && ap_vendorext == SBRIDGES) ||
+               ap_type == ATMEL12350) {
+               config_port = menu_choose(9, strlen(CF_PORT), cf_ports, 3) + 1;
                clear_main_new(9, 10);
-               print_menusel(9, 0, CF_PORT, cf_trap_ports[config_port]);
+               print_menusel(9, 0, CF_PORT, cf_ports[config_port - 1]);
                m_config_port = 1;
             }
            continue;
-       case 'T':
-       case 't':
-           if (ap_vendorext == TELLUS || ap_vendorext == VERNET) {
-               get_value(message, 10, strlen(TRAP_PORT), 6, INT_STRING,
-                   0, 65535, HELP);
-               trap_port = atoi(message);
-               m_trap_port = 1;
-           }
-           continue;
        case 'R':
        case 'r':
-           if (ap_type == ATMEL12350) {
-               fw_bcast = on_off(11, strlen(FW_BCAST));
-               clear_main_new(11, 12);
-               print_menusel(11, 0, FW_BCAST, (fw_bcast == 1) ? ON : OFF);
+           if ((ap_type == ATMEL410 && ap_vendorext == SBRIDGES) ||
+               ap_type == ATMEL12350) {
+               fw_bcast = on_off(10, strlen(FW_BCAST));
+               clear_main_new(10, 11);
+               print_menusel(10, 0, FW_BCAST, (fw_bcast == 1) ? ON : OFF);
                m_fw_bcast = 1;
            }
            continue;
        case 'B':
        case 'b':
-           if (ap_type == ATMEL12350) {
-               sb_bcast = on_off(12, strlen(SB_BCAST));
-               clear_main_new(12, 13);
-               print_menusel(12, 0, SB_BCAST, (sb_bcast == 1) ? ON : OFF);
+           if ((ap_type == ATMEL410 && ap_vendorext == SBRIDGES) ||
+               ap_type == ATMEL12350) {
+               sb_bcast = on_off(11, strlen(SB_BCAST));
+               clear_main_new(11, 12);
+               print_menusel(11, 0, SB_BCAST, (sb_bcast == 1) ? ON : OFF);
                m_sb_bcast = 1;
            }
            continue;
        case 'U':
        case 'u':
-           if (ap_type == ATMEL12350) {
-               sb_ucast = on_off(13, strlen(SB_UCAST));
-               clear_main_new(13, 14);
-               print_menusel(13, 0, SB_UCAST, (sb_ucast == 1) ? ON : OFF);
+           if ((ap_type == ATMEL410 && ap_vendorext == SBRIDGES) ||
+               ap_type == ATMEL12350) {
+               sb_ucast = on_off(12, strlen(SB_UCAST));
+               clear_main_new(12, 13);
+               print_menusel(12, 0, SB_UCAST, (sb_ucast == 1) ? ON : OFF);
                m_sb_ucast = 1;
            }
            continue;
+       case 'T':
+       case 't':
+           if (ap_type == ATMEL12350 &&
+               (ap_vendorext == GEMTEK || ap_vendorext == EZYNET)) {
+               get_value(message, 13, strlen(TRAP_PORT), 6, INT_STRING,
+                   0, 65535, HELP);
+               trap_port = atoi(message);
+               m_trap_port = 1;
+           }
+           continue;
        case 'w':
        case 'W':
            i = 0;
            if (m_filter) {
-               varbinds[i].oid = IPFilter;
-               varbinds[i].len_oid = sizeof(IPFilter);
+               varbinds[i].oid = operIPFilter;
+               varbinds[i].len_oid = sizeof(operIPFilter);
                varbinds[i].type = INT_VALUE;
                varbinds[i].value = (char *) &filter;
                varbinds[i].len_val = 1;
                i++;
            }
            if (m_primary_port) {
-               varbinds[i].oid = PrimaryPort;
-               varbinds[i].len_oid = sizeof(PrimaryPort);
+               varbinds[i].oid = operPrimaryPort;
+               varbinds[i].len_oid = sizeof(operPrimaryPort);
                varbinds[i].type = INT_VALUE;
                varbinds[i].value = (char *) &primary_port;
                varbinds[i].len_val = 1;
@@ -479,32 +514,32 @@ void bridging()
                i++;
            }
            if (m_config_port) {
-               varbinds[i].oid = ConfigPort;
-               varbinds[i].len_oid = sizeof(ConfigPort);
+               varbinds[i].oid = operConfigurationPort;
+               varbinds[i].len_oid = sizeof(operConfigurationPort);
                varbinds[i].type = INT_VALUE;
                varbinds[i].value = (char *) &config_port;
                varbinds[i].len_val = 1;
                i++;
            }
            if (m_fw_bcast) {
-               varbinds[i].oid = ForwardBroadcast;
-               varbinds[i].len_oid = sizeof(ForwardBroadcast);
+               varbinds[i].oid = operForwarbBcast;
+               varbinds[i].len_oid = sizeof(operForwarbBcast);
                varbinds[i].type = INT_VALUE;
                varbinds[i].value = (char *) &fw_bcast;
                varbinds[i].len_val = 1;
                i++;
            }
            if (m_sb_bcast) {
-               varbinds[i].oid = SendBackBcast;
-               varbinds[i].len_oid = sizeof(SendBackBcast);
+               varbinds[i].oid = operSendBackBcast;
+               varbinds[i].len_oid = sizeof(operSendBackBcast);
                varbinds[i].type = INT_VALUE;
                varbinds[i].value = (char *) &sb_bcast;
                varbinds[i].len_val = 1;
                i++;
            }
            if (m_sb_ucast) {
-               varbinds[i].oid = SendBackUnicast;
-               varbinds[i].len_oid = sizeof(SendBackUnicast);
+               varbinds[i].oid = operSendBackUnicast;
+               varbinds[i].len_oid = sizeof(operSendBackUnicast);
                varbinds[i].type = INT_VALUE;
                varbinds[i].value = (char *) &sb_ucast;
                varbinds[i].len_val = 1;
@@ -514,8 +549,8 @@ void bridging()
                int len_val;
 
                len_val = (trap_port > 0x7fff) ? 3 : (trap_port > 0x7f) ? 2 : 1;
-               varbinds[i].oid = TrapPort;
-               varbinds[i].len_oid = sizeof(TrapPort);
+               varbinds[i].oid = operTrapPort;
+               varbinds[i].len_oid = sizeof(operTrapPort);
                varbinds[i].type = STRING_VALUE;
                varbinds[i].value = (char *) &trap_port;
                varbinds[i].len_val = len_val;
@@ -523,10 +558,13 @@ void bridging()
            }
 
            print_help(WAIT_SET);
-           if (snmp(varbinds, i, SET) <= 0)
+           if (snmp(varbinds, i, SET) <= 0) {
                print_helperr(ERR_SET);
-           else
+           } else {
+               wbkgd(main_sub, A_NORMAL);
+               wrefresh(main_sub);
                print_help(DONE_SET);
+           }
            goto exit;
        case 'Q':
        case 'q':
@@ -540,4 +578,3 @@ void bridging()
     print_top(NULL, NULL);
     clear_main(0);
 }
-
index db68a788d6c0d76504ed579ff7c304c9132aebb9..1bf7c0122140876fe7e51dc17e10ece095ae6eb8 100644 (file)
@@ -45,7 +45,7 @@ void advanced()
     varbinds[1].oid = smtACKWindow;
     varbinds[1].len_oid = sizeof(smtACKWindow);
     print_help(WAIT_RET);
-    if (snmp(varbinds, 2, GET) <= 0) {
+    if (snmp(varbinds, 2, GET) < 2) {
        print_helperr(ERR_RET);
        goto exit;
     }
@@ -114,11 +114,13 @@ void advanced()
                i++;
            }   
 
-               print_help(WAIT_SET);
-               if (snmp(varbinds, i, SET) <= 0) {
-                   print_helperr(ERR_SET);
+           print_help(WAIT_SET);
+           if (snmp(varbinds, i, SET) <= 0) {
+               print_helperr(ERR_SET);
                    goto exit;
-               }
+           }
+           wbkgd(main_sub, A_NORMAL);
+           wrefresh(main_sub);
            print_help(DONE_SET);
            goto exit;
        default:
@@ -132,4 +134,3 @@ void advanced()
     print_top(NULL, NULL);
     clear_main(0);
 }
-
index 59d6b936eda8c04ab10b266e5d78b9cf75758f8f..bfc7a522a400f3186f58c6d301e83012d30014c9 100644 (file)
@@ -80,7 +80,7 @@ void latest()
     varbinds[7].oid = oid_secLastErrorAddress;
     varbinds[7].len_oid = sizeof(oid_secLastErrorAddress);
 
-    if (snmp(varbinds, OID_NUM, GET) <= 0) {
+    if (snmp(varbinds, OID_NUM, GET) < OID_NUM) {
        print_help(ERR_RET);
        goto exit;
     }
index 6c23478305ad874811e587dfbf1945aa2a7cfef4..bb6ca9018cac9f347b8cce6ce4ea0ade72c3327e 100644 (file)
@@ -2,6 +2,7 @@
  *      stations.c from Access Point SNMP Utils for Linux
  *
  * Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
+ * Copyright (c) 2005 Jan Rafaj <jr-aputils at cedric dot unob dot cz>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License Version 2 from
 #include <string.h>
 #include "ap-utils.h"
 
-/*
- * NOTE: SBRIDGES seems to be currently handled by ap-gl =>
- * no SBRIDGES-related code here (yet)!
- */
-
-#define TITLE_AP _("AP link state")
-
-/* following for any non-VERNET ATMEL* MIB */
-#define HEADER_STAS \
-       _(" #            MAC                                               ")
-/* following for VERNET-enhanced ATMEL12350 MIB */
-#define HEADER_STAS_VERNET \
-       _(" #     MAC       Parent MAC    RSSI  Status MACn      IP        ")
-
 #define MAX_LINES LINES-4
 
 extern int LINES;
@@ -51,39 +38,34 @@ void atmel_stations()
     char bridgeOperationalMode[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x01, 0x00
     };
-    char StasNum[] = {
+    char AssociatedSTAsNum[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x05, 0x01, 0x00
     };
-    char StasMac[] = {
+    char AssociatedSTAsInfo[] = {
        0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x05, 0x02, 0x00
     };
 
-    struct AssociatedSTAsInfo {
-       unsigned short Num;
-       unsigned char MacAddress[6];
-       /* following ones are specific for enhanced ATMEL 12350 MIB by VERNET */
-       unsigned char Status;
-       unsigned char Port;
-       unsigned char ParentMacAddress[6];
-       unsigned char RSSI;
-       unsigned char IP[4];
-    } *mac = NULL, get;
+    /* AP mode: connected APClients info */
+
+    struct AssociatedSTAsInfo_ATMEL410 ap_410;
+    struct AssociatedSTAsInfo_ATMEL12350 ap_12350;
 
     struct MacListStat *first = NULL, *curr = NULL;
     char message[1024];
     int mac_idx, begin, end, total_mac;
     varbind varbinds[1];
 
+
     if (ap_type == ATMEL12350) {
         bridgeOperationalMode[5] = 0xE0;
        bridgeOperationalMode[6] = 0x3E;
-       StasNum[5] = 0xE0;
-       StasNum[6] = 0x3E;
-       StasMac[5] = 0xE0;
-       StasMac[6] = 0x3E;
+       AssociatedSTAsNum[5] = 0xE0;
+       AssociatedSTAsNum[6] = 0x3E;
+       AssociatedSTAsInfo[5] = 0xE0;
+       AssociatedSTAsInfo[6] = 0x3E;
     }  
 
-    /* find out in what mode the AP currently is */
+    /* find out mode the device is currently in */
     varbinds[0].oid = bridgeOperationalMode;
     varbinds[0].len_oid = sizeof(bridgeOperationalMode);
     varbinds[0].value = bridgeOperationalMode;
@@ -95,29 +77,26 @@ void atmel_stations()
          goto exit;
     }
 
-    /* for AP in AP-Client mode & without VERNET firmware, disable status */
-    if (*(varbinds[0].value) == 3 && ap_vendorext != VERNET) {
-       mvwaddstr(main_sub, 3, 1, _("AP is currently in AP Client Mode => "
-           "no associated STAtions."));
+    /* Rule out all modes except AP(2). */
+    if (*(varbinds[0].value) != 2) {
+       mvwaddstr(main_sub, 1, 1, _("Not available (device not in AP mode)."));
        print_help(ANY_KEY);
        wrefresh(main_sub);
-       getch();
        goto exit;
     }
 
     noecho();
-    wattrset(main_sub, COLOR_PAIR(3));
-    if (ap_vendorext == VERNET)
-       mvwaddstr(main_sub, 0, 0, HEADER_STAS_VERNET);
-    else
-       mvwaddstr(main_sub, 0, 0, HEADER_STAS);
+
+    wattrset(main_sub, COLOR_PAIR(13));
+    mvwaddstr(main_sub, 0, 0,
+       _("  #     MAC       Parent MAC  RSSI   LQ Sts MACn      IP        "));
     wattrset(main_sub, A_NORMAL);
 
 refresh:
     /* find out how many STAtions is in the list */
-    varbinds[0].oid = StasNum;
-    varbinds[0].len_oid = sizeof(StasNum);
-    varbinds[0].value = StasNum;
+    varbinds[0].oid = AssociatedSTAsNum;
+    varbinds[0].len_oid = sizeof(AssociatedSTAsNum);
+    varbinds[0].value = AssociatedSTAsNum;
     varbinds[0].type = NULL_VALUE;
     varbinds[0].len_val = 0;
 
@@ -125,59 +104,74 @@ refresh:
 
     if (snmp(varbinds, 1, GET) <= 0) {
        print_helperr(ERR_RET);
-       getch();
        goto exit;
     }
 
     total_mac = *(varbinds[0].value);
     print_help(WAIT_SET);
     mac_idx = 1;
-    while (mac_idx <= total_mac) {
 
-       /* tell the AP we want first mac_idx-th MAC */
-       varbinds[0].oid = StasMac;
-       varbinds[0].len_oid = sizeof(StasMac);
+    while (mac_idx <= total_mac) {
+       /*
+        * Tell the AP we want mac_idx-th AssociatedSTAsInfo structure.
+        * Note: since:
+        * - position of 'Index' member in ap_* struct is always the same
+        * - only the 'Index' member is actually to be used
+        * - both structures have same size (24)
+        * we may pick *any* ap_* struct here.
+        */
+       varbinds[0].oid = AssociatedSTAsInfo;
+       varbinds[0].len_oid = sizeof(AssociatedSTAsInfo);
        varbinds[0].type = INT_VALUE;
-       get.Num = swap2(mac_idx);
-       varbinds[0].value = (char *) &get;
-       varbinds[0].len_val = sizeof(get);
+       ap_410.Index = swap2(mac_idx);
+       varbinds[0].value = (char *)&ap_410;
+       varbinds[0].len_val = sizeof(ap_410);
 
        if (snmp(varbinds, 1, SET) <= 0) {
            print_helperr(ERR_RET);
-           getch();
            goto exit;
        }
 
-       if (varbinds[0].len_val == 24) {
-           if (mac)
-               free(mac);
-           mac =
-               (struct AssociatedSTAsInfo *) malloc(varbinds[0].len_val);
-           memcpy(mac, varbinds[0].value, varbinds[0].len_val);
-           /* mac = (struct AssociatedSTAsInfo *) varbinds[0].value; */
-       } else {
+       if (varbinds[0].len_val != 24) {
            print_helperr(_("AssociatedSTAsInfo packet error"));
            goto exit;
        }
 
        if (first == NULL) {
            first =
-               (struct MacListStat *) malloc(sizeof(struct MacListStat));
+               (struct MacListStat *) calloc(1, sizeof(struct MacListStat));
            curr = first;
        } else {
            curr->next =
-               (struct MacListStat *) malloc(sizeof(struct MacListStat));
+               (struct MacListStat *) calloc(1, sizeof(struct MacListStat));
            curr = curr->next;
        }
 
-       memcpy(curr->addr, mac->MacAddress, 6);
-
-       if (ap_vendorext == VERNET) {
-           curr->Status = mac->Status;
-           curr->Port = mac->Port;
-           memcpy(curr->ParentMacAddress, mac->ParentMacAddress, 6);
-           curr->rssi = mac->RSSI;
-           memcpy(&(curr->IP.s_addr), mac->IP, 4);
+       /* lets not use black magic (casting) here, ok? */
+       if (ap_type == ATMEL410) {
+           memcpy(&ap_410, varbinds[0].value, sizeof(ap_410));
+
+           memcpy(curr->addr, ap_410.MacAddress, 6);
+           if (ap_vendorext == SBRIDGES) {
+               memcpy(curr->ParentMacAddress, ap_410.ParentMacAddress, 6);
+               memcpy(&(curr->IP.s_addr), ap_410.IP, 4);
+               curr->rssi = ap_410.RSSI;
+               curr->quality = ap_410.LinkQuality;
+               curr->Status = ap_410.Status;
+               curr->Port = ap_410.Port;
+           }
+       } else { /* ap_type == ATMEL12350 */
+           memcpy(&ap_12350, varbinds[0].value, sizeof(ap_12350));
+
+           memcpy(curr->addr, ap_12350.MacAddress, 6);
+           if (ap_vendorext == EZYNET) {
+               memcpy(curr->ParentMacAddress, ap_12350.ParentMacAddress, 6);
+               memcpy(&(curr->IP.s_addr), ap_12350.IP, 4);
+               curr->rssi = ap_12350.RSSI;
+               /* curr->quality stays empty */
+               curr->Status = ap_12350.Status;
+               curr->Port = ap_12350.Port;
+           }
        }
 
        curr->next = NULL;
@@ -187,20 +181,19 @@ refresh:
     begin = 1;
     end = (MAX_LINES < mac_idx) ? MAX_LINES : mac_idx;
 
-    sprintf(message, "%s: %d", TITLE_STAS, total_mac);
+    sprintf(message, "%s: %d", ST_TITLE, total_mac);
     while (1) {
-       if (ap_vendorext == VERNET) {
+       if ((ap_type == ATMEL410 && ap_vendorext == SBRIDGES) ||
+           (ap_type == ATMEL12350 && ap_vendorext == EZYNET)) {
            print_top_rssi(message);
-
            print_help(_("Arrows - scroll; S - save to file; Q - return; "
                         "T - toggle view; Other - refresh"));
-           scroll_rows(first, begin, end, 1, 3);
        } else {
            print_top(NULL, message);
            print_help(_("Arrows - scroll; S - save to file; Q - return; "
                         "Other key - refresh"));
-           scroll_rows(first, begin, end, 1, 0);
        }
+       scroll_rows(first, begin, end, 1, 2);
 
        switch (getch()) {
            case 'S':
@@ -223,10 +216,11 @@ refresh:
                continue;
            case 'Q':
            case 'q':
-               goto exit;
+               goto quit;
            case 'T':
            case 't':
-               if (ap_vendorext == VERNET) {
+               if ((ap_type == ATMEL410 && ap_vendorext == SBRIDGES) ||
+                   (ap_type == ATMEL12350 && ap_vendorext == EZYNET)) {
                    sts_viewtype += 1;
                    if (sts_viewtype == 3)
                        sts_viewtype = 0;
@@ -243,6 +237,8 @@ refresh:
     }
 
 exit:
+    getch();
+quit:
     while ((curr = first)) {
        first = curr->next;
        free(curr);
@@ -274,7 +270,7 @@ void nwn_stations()
 
 
     mac_idx = 0;
-    print_top(NULL, TITLE_STAS);
+    print_top(NULL, ST_TITLE);
     mvwaddstr(main_sub, 0, 3,
        _("Id       MAC address     Quality  Age  RSSI"));
     noecho();
@@ -320,7 +316,7 @@ void nwn_stations()
        varbinds[3].len_oid = sizeof(RSSI);
        varbinds[3].len_val = 0;
        varbinds[3].type = NULL_VALUE;
-       if (snmp(varbinds, 4, GET) <= 0) {
+       if (snmp(varbinds, 4, GET) < 4) {
            print_helperr(ERR_RET);
            getch();
            goto exit;
@@ -369,7 +365,7 @@ void nwn_stations()
 
        scroll_rows(first, begin, end, 1, 1);
 
-       sprintf(message, "%s: %d", TITLE_STAS, mac_idx);
+       sprintf(message, "%s: %d", ST_TITLE, mac_idx);
        print_top_rssi(message);
 
        switch (getch()) {
@@ -417,4 +413,3 @@ void nwn_stations()
     print_top(NULL, NULL);
     clear_main(0);
 }
-