]> git.decadent.org.uk Git - ap-utils.git/blobdiff - ChangeLog
Update config.{sub,guess} in the right place at build time - closes: #534825
[ap-utils.git] / ChangeLog
index 52e910c70636b7b4663cead3dbe6594b7dda274e..c004cc08ffc9a1129bdc183950d7eed398c469cf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,797 @@
+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
+           must be entered manually
+       * lib/ap_search.c: reverted back to scan oid Wireless info string (that find APs even
+           with wrong community) raser than APName oid; info string now truncated only if it
+           cant be displayed at current screen width (now it screen width independed)
+       * Makefile.am: into dist-hook added command to remove po/*.gmo files from
+           final distribution package to decrease size
+       * ap-gl/ap-gl.c: in ap-gl utility reverted back to ATMEL_PRISM rather than ATMEL410 naming
+       * Documentation/ap-config.8: fixed minor bug in example key for 64-bit WEP encryption
+           (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=243208)
+       * Documentation/ap-gl.8, Documentation/Makefile.am: added man page for ap-gl utility
+       * Documentation/ap-auth.8, Documentation/Makefile.am: added man page for ap-auth utility
+       * po/fr.po: fixed coredump in Config menu with French locale (now just removed long
+            translated string from po file)
+            (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:
+         - made WARNING2 more accurate; added WARNING3
+       * lib/Makefile.am:
+         - added set_oeminfo.c to the list of source modules
+       * lib/ap-utils.h:
+         - QHELP and SELECT #defines moved here from lib/stat.c, as we now
+           reuse them. QHELP renamed to QTHELP (+ toggling mode).
+         - added #defines for NONE, SBRIDGES, TELLUS and VERNET constants
+           with numbering according to new ap_vendorexts[][]. Actual values
+           of these are hold within newly introduced ap_vendorext global
+           (similar to meaning of ap_type global).
+         - new data type 'rdprops', used to describe regulatory domain
+           properties (code, description, first channel, last channel)
+         - formatting fixes (cosmetic)
+         - now #includes lib/ap-curses.h
+       * lib/ap_search.c:
+         - output formatting changes (unification)
+         - in case the length of AP NAME being displayed for actually
+           scanned AP exceeds 27 characters, truncate the display
+           to first 27 characters (80x25 screen limit) and append
+           '>' character to indicate that not full AP NAME has been
+           displayed
+         - user is now prompted for a community, that will be used
+           to detect APs, prior scanning
+       * lib/common.c:
+         - introduced new char *ap_vendorexts[][]; moved char *ap_type[]
+           here from src/ap-config.c and ap-gl/ap-gl.c
+         - in favour of proper naming, renamed all *APNAME #defines
+           to *APLABEL (same for texts, with a help message that clearly
+           states that AP LABEL is _independent_ of AP NAME (AP NAME = name
+           stored inside the AP), to prevent eventual user confusion.
+         - all references to 'name' changed to 'label' in order to respect
+           that AP label != AP name (see above). permitted length of label
+           is now max. of 16 characters.
+         - implemented ability to manually select MIB vendor extension
+           along with MIB type (previously just 'AP type:'). This was
+           really necessary as we couldn't rely on get_mib_details()
+           probing especially when the target AP was not available.
+         - if AP MIB type & vendor extension has been _autodetected_, or if
+           there's a good belief that the to-be-connected AP (via
+           connect_options()) is really alive (when we enter connect_options()
+           from ap_search()), then offer possibility to use AP NAME
+           as AP LABEL. However, as AP NAME may have max. length of 31
+           characters, it will be always truncated to first 16 chars
+           (max. length of AP LABEL), and user will be warned if this happens.
+         - introduced new 'rdprops regdom_types[]' field to unify reg. domain
+           description. Along with newly introduced regdom_types[]
+           and regdom_idx(), it enables us to get reg. domain properties
+           related to specific reg. domain code at any time, anywhere.
+           Merged reg. domain codes & properties of MKK1 & ISRAEL freq.
+           domains. Change: MKK domain defines only channel 14.
+         - squashed ch_list() in favour of regdom_types[] => killed malloc()s
+           in wlan.c & test.c. char *channels[] now keeps statically what
+           ch_list() was used to generate on demand before
+         - avoid asking for community upon entering connect_options()
+           called from ap_search(), as we already know the community
+         - thrown myself into about()
+       * lib/file.c:
+         - all references to 'name' changed to 'label' in order to respect
+           that AP LABEL != necessarilly AP NAME (see above)
+         - implemented storing of MIB vendor extension into ~/.ap-config
+         - changed name of stored file with MAC authorised addresses
+           in the AP from '~/ap-MIBTYPE.stations' to
+           'ap-IP-MIBTYPE-MIBEXT.stations'
+         - output formatting changes (in AP list code):
+           - 'NAME' -> 'LABEL', 'TYPE' -> 'MIB TYPE', newly introduced:
+             'MIB EXT'; accomodate to new layout
+         - in parse_db_str(), truncate displayed length of AP NAME to 16
+           characters (80x25 screen limit), upon length of label being read
+           > 16 characters (80x25 screen width limit), and append '>'
+           character to indicate that it has not been displayed
+           in its full length (TODO: remove screen width limits)
+         - fixed numerous memleaks caused by missing free()ing of
+           ip, passwd and label parts of APList structure in get_opts()
+         - option writing ~/.ap-config is now verbose. Required moving
+           main print_help() to the while(1) cycle body.
+         - save_Stations() is now verbose at minimum level
+       * lib/input.c:
+         - patched get_value() so that zero-length ANY_STRING type input
+           can be optionally allowed. Selected string input fields now accept
+           empty value. minv & maxv arguments switched from int to unsigned
+           int so that we may cover full uint32 range - also involved
+           switching from atoi() to strtoul(), as we need to check a condition
+           when errno == ERANGE (given value bigger than 0xFFFFFFFF).
+         - implemented wait_key() as unified means to wait for user input
+           selection different ways. The actual input mode with respect
+           to waiting is being held in wait_mode global, that can
+           be toggled using 't/T' keys in statistic views where appropriate
+           (SysInfo, Ethernet statistics, Wireless statistics).
+         - added help_ysn() as preferred & unified way to wait for user Y/N
+           choice. Prints Y/ safe N help message; clear settings subwin
+           & returns 0 upon pressing y/Y or 1 upon n/N. All Y/N code
+           everywhere has been replaced with single call to help_syn().
+       * lib/menu.c:
+         - added hidden call to atmel_set_oeminfo (secret 'OEM info settings'
+           menu), based on set_oeminfo_allowed global from set_oeminfo.c
+       * lib/scr.c:
+         - print_bottom() now also prints MIB vendor extension info
+           in form of 'Ext: <TAG>'
+         - introduced print_bold() to decrease high amount of low-level
+           attribute-setting stuff everywhere (involved conversion
+           to print_bold() wherever possible)
+         - removed print_viewtype() and all references to this replaced
+           with print_bold()
+       * lib/set_oeminfo.c:
+         - newly introduced. Actually only functional for ATMEL CPU-based
+           APs. ALLOWS TO CHANGE OEM INFORMATIONS STORED WITHIN THE AP,
+           AFTER PRESSING 'S' KEY WHILE IN 'Config' MENU. Note that this
+           is a HIDDEN function, since it is really only suitable for large
+           WISPs & repair shops. Compatibility level that has been achieved
+           with original windows utility is around 96%. Use with care.
+       * lib/snmp.c:
+         - added (currently commented out) new function ber_decode_uint().
+           It may come in handy elsewhere in the future.
+       * lib/sysinfo.c:
+         - atmel_sysinfo() now uses select() to wait for user keyboard input.
+           'q' or 'Q' key quits, others force update without clearing screen.
+         - (hopefully) fixed conversion of raw input buffer value to int
+           for uptime-displaying code
+       * lib/sysinfo.c, lib/sysinfo_set.c, lib/wlan.c, lib/ap-utils.h:
+         (cosmetical):
+         - added #include <time.h>, missing on some platforms
+         - renamed ptr410 and ptr12350 to str410 and str12350
+         - renamed SysDeviceInfo_* to sysDeviceInfo (MIB conformance)
+         - fixed interpretation of (long) INT value returned by the AP
+           in UpTime-displaying code
+         - implemented toggling of polling mode through 'T' [works
+           only with ATMEL12350 VERNET MIB-compatible devices]
+         - uses select() instead of getch() when polling is active
+         - indentation fixes (cosmetic)
+       * lib/test.c:
+         - changes to use channels[] and regdom_types[] instead of
+           ch_list() and malloc()s
+       * lib/wlan.c:
+         - changes to use channels[] and regdom_types[] instead of
+           ch_list() and malloc()s
+         - fix: added missing print_help(WAIT_RET)
+       * ap-gl/ap-gl.c:
+         - few indentation fixes (cosmetic)
+         - changes to keep sync with new lib functionality (MIB vendor
+           extensions code)
+       * ap-gl/stations.c, src/stations.c:
+         - print_help() is now called from within while(1) cycle, in order
+           to be compatible with updated save_Stations()
+       * src/bridge.c:
+         - fix: added missing print_help(WAIT_RET)
+       * 'RegulationDomain' renamed to 'RegulatoryDomain' for MIB conformance
+       * further optimisations everywhere for reusing print_bold()
+       * load of small bugfixes
+       * print_title() replaced with new print_top() that will also
+         handle displaying "view" type (on LHS) along with menu title
+         (on RHS) using single pass. This was really in need of unification.
+         Side effect: no need to redraw title strip on each screen update
+         anymore (no two separate ways to write to same location).
+       * some spelling, indentation & accuracy fixes here and there
+
+2004-11-09 Jan Rafaj
+       * README:
+         - removed reference to HARDWARE-NOTES, that didnt made it into
+           previous ap-utils versions by accident
+         - added WARNING 1 and WARNING 2 sections (originally intended to be
+           in HARDWARE-NOTES, but the magnitude of their importance deserves
+           to put them straight into README)
+       * TODO: updated
+       * lib/ap-utils.h:
+         - added "(valid)" to the ERR_RET message, which more accurately
+           reflects what may actually happen (AP actually _may_ return
+           data, but in an unexpected format)
+         - enhanced WirelessStatistics structure for TransmittedPackets_11Mbps,
+           TransmittedPackets_55Mbps, TransmittedPackets_2Mbps, and
+           TransmittedPackets_1Mbps so that we can support functionally
+           enhanced firmware from VERNET WISP.
+       * lib/ap_search.c:
+         - in third column, display operAccessPointName OUI using label
+           "Name" instead of Wireless OUI. Makes more sense.
+         - made the number of APs per screen, as well as the offset at which
+           the info about whats actually scanned, is printed, relative
+           to the actual screen height (so to increase maximum hard-coded
+           amount of APs displayed, just switch from 80x25 console font
+           to a bigger one, or use X terminal window)
+       * lib/aps.c:
+         - reverted displaying back to RSSI & LQ both in % in screen 1.
+           This is becouse a) we want to keep as close to the view of the
+           original ATMEL utility as possible here, and b) huge dispersion
+           in dBm versus raw value of RSSI exists among different flavours
+           of APs, and the dBm formula unfortunately often gives results
+           very far from real values. So we want to display something thats
+           less jittering in the scope of inter-AP comparison.
+         - cosmetic fixes (2-line legend instead of 3-line)
+         - rebound the 'refresh' from 's' key to otherwise unused keys,
+           in favour of keyboard interface unification
+       * lib/common.c:
+         - created get_mib_details() to provide vendor-specific private
+           ATMEL MIB detection
+         - fixed a bug introduced by the 'name' patch, resulting in
+           omission to clear screen properly when user has given
+           insufficient credentials (bad password) to detect new AP type
+         - made the 'name'-patch code malloc-free (and memleak #2 free).
+           There's no point to use malloc()d space here since we dont
+           reuse it elsewhere (contrary to char *community).
+         - fixed bad variable boundary-handling introduced by 'name'-patch
+           that might result in crash of utility under circumstance
+           when ~/.ap-config didnt previously exist and user attempted
+           to add new AP with name of length >= 7 characters
+         - added possibility to skip name definition if user wants to
+           (useful for example when the newly added AP's IP will be used
+           solely for testing purposes :)
+       * vendor-specific private ATMEL MIB detection is now referred to
+         get_mib_details() everywhere
+       * lib/file.c:
+         - a lot of indentation fixes
+         - in get_opts(): fixed couple of bugs:
+           - it was possible to issue 'Connect' command when the AP list
+             was empty (was leading to endless loop)
+           - 'Delete' command failed to remove last remaining AP from the
+             list, ending up in endless loop (as get_value() doesnt do
+             sanity checking on its input paremeters)
+         - fixed a memleak #1 possibly introduced by 'name' patch - we need
+           to free char *name after its use
+         - in _scroll_rows(), fixed the AP MIB TYPE cutoff-by-format-string,
+           introduced by 'name' patch, and enhanced message size to accomodate
+           the true max. row size instead
+         - in get_opts() appended '(in ~/.ap-config)' behind the user-defined
+           APs list banner, to better reflect the real meaning of 'NAME'
+           (and other fields), to prevent someone from f.e. thinking
+           that the NAME here is the name stored in AP's configuration
+           (which it is NOT, of course).
+       * lib/oui.c: added OUIs:
+         - 000B46 (Cisco)
+         - 000D54 (3Com Europe Ltd)
+         - 000D88 (D-Link Corporation)
+         - 000EA6 (ASUSTEK COMPUTER INC.)
+       * lib/radio.c:
+         - fixed non-working radio menu with ATMEL12350 APs by merging the
+           initial TestModeRadioConfiguration and operAntennaSettings OID
+           modifications when ap_type == ATMEL12350
+       * lib/stat.c:
+         - replaced ERR_RET_PRESS with ERR_RET
+         - simplified; no more forking, goto's reduced, no need of
+           pipe(), alarm() or sig*jmp(); use select() for waiting -
+           it is now possible to quit (by pressing 'q' or 'Q') immediately.
+           Also, the counters now get updated immediately after pressing
+           whatever key != q.
+         - fixed a bug that, due to previous use of sig*jmp(), resulted
+           in lockup when attempting to quit ap-config after it has received
+           invalid packet, by pressing 'q' key several times
+         - WirelessStat(): implemented support of ATMEL 12350 functionally
+           enhanced MIB by VERNET WISP.
+       * lib/sysinfo.c:
+         - enhanced atmel_sysinfo() for displaying system uptime using
+           UpTime OID from ATMEL12350 VERNET MIB.
+       * lib/wlan.c:
+         - fixed showing/setting of BeaconPeriod value for ATMEL12350_TELLUS -
+           acceptable value range is now 0 - 65535 as originally intended
+         - new: implemented showing/setting of 'SIFS time' parameter, specific
+           to APs with ATMEL12350_VERNET firmware/MIB
+       * spelling & indentation fixes
+       * lib/scr.c, src/stations.c:
+         - implemented support for viewing statistics
+           produced by enhanced ATMEL 12350 firmware by VERNET
+         - implemented toggling of RSSI between 'dBm' view, '%' view, and
+           raw view - added new functions print_viewtype_rssi(), conv_rssi().
+           [TODO: update ap-gl/stations.c, too]
+         - pressing other than the selected keys will now result in refresh
+           of all values
+
+2004-10-24 Roman Festchook
+       * lib/common.c: fix to clear display before displaying AP type 
+       * configure.in: version 1.4.2pre1
+
+2004-10-24 Przemyslaw Stanislaw Knycz
+       * po/pl.po: translation updated
+
+2004-10-18 Roman Festchook
+       * lib/common.c: fix to use get_value instead of get_pass for input AP name
+       * po/uk.po: translation updated
+
+2004-10-18 Teemu Kiviniemi
+       * src/ap-auth.c: command line utility to change the list of authorised MAC addresses added
+       * Documentation/README.ap-auth: some docs for ap-auth utility
+
+2004-10-18 Aleksey Korenkov
+       * lib/common.c, lib/file.c, src/ap-config.c: patch that adds name to list of APs
+
+2004-08-08 Dan Pelleg
+       * lib/ap_search.c: fix error when build ap-utils on freebsd.
+
+2004-06-22 Elif Bilge Maden
+       * po/tr.po: Turkish translation added
+
+2004-05-16 Roman Festchook
+       * configure.in: version 1.4.1
+       * NEWS: main changes added
+
+2004-05-16 Michel Robitaille
+       * po/fr.po: updated translation
+
+2004-05-04 Roman Festchook
+       * lib/ap_search.c: Compiler Error for ap-utils on Darwin 7.3 (Mac OS X 10.3.3) fix
+
 2004-04-04 Dieter Fiebelkorn
        * lib/ap_search.c: Compiler Error for ap-utils on Darwin 7.3 (Mac OS X 10.3.3) fix
 
 2004-03-20 Roman Festchook
-        * ap-gl/bridge.c: Isolate wireless clients status displaying fixed
+       * ap-gl/bridge.c: Isolate wireless clients status displaying fixed
        * lib/snmp.c: decreased timeout waiting for snmp reply packet to 1 second
        * src/ap-mrtg.c: to decrease usage of network and AP CPU AP name only requested if -n option specified