pax_global_header00006660000000000000000000000064111724666270014526gustar00rootroot0000000000000052 comment=17cd5711411f45df26b33c51288780627b7377e2 ap-utils-1.5/000077500000000000000000000000001117246662700131315ustar00rootroot00000000000000ap-utils-1.5/ABOUT-NLS000066400000000000000000000520751117246662700143710ustar00rootroot00000000000000Notes on the Free Translation Project ************************************* Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work at translations should contact the appropriate team. When reporting bugs in the `intl/' directory or bugs which may be related to internationalization, you should tell about the version of `gettext' which is used. The information can be found in the `intl/VERSION' file, in internationalized packages. Quick configuration advice ========================== If you want to exploit the full power of internationalization, you should configure it using ./configure --with-included-gettext to force usage of internationalizing routines provided within this package, despite the existence of internationalizing capabilities in the operating system where this package is being installed. So far, only the `gettext' implementation in the GNU C library version 2 provides as many features (such as locale alias, message inheritance, automatic charset conversion or plural form handling) as the implementation here. It is also not possible to offer this additional functionality on top of a `catgets' implementation. Future versions of GNU `gettext' will very likely convey even more functionality. So it might be a good idea to change to GNU `gettext' as soon as possible. So you need _not_ provide this option if you are using GNU libc 2 or you have installed a recent copy of the GNU gettext package with the included `libintl'. INSTALL Matters =============== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. If not, the GNU `gettext' own library will be used. This library is wholly contained within this package, usually in the `intl/' subdirectory, so prior installation of the GNU `gettext' package is _not_ required. Installers may use special options at configuration time for changing the default behaviour. The commands: ./configure --with-included-gettext ./configure --disable-nls will respectively bypass any pre-existing `gettext' to use the internationalizing routines provided within this package, or else, _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl.a' file and will decide to use this. This might be not what is desirable. You should use the more recent version of the GNU `gettext' library. I.e. if the file `intl/VERSION' shows that the library which comes with this package is more recent, you should use ./configure --with-included-gettext to prevent auto-detection. The configuration process will not test for the `catgets' function and therefore it will not be used. The reason is that even an emulation of `gettext' on top of `catgets' could not provide all the extensions of the GNU `gettext' library. Internationalized packages have usually many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. Using This Package ================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your country by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. Translating Teams ================= For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `translation@iro.umontreal.ca' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skill are praised more than programming skill, here. Available Packages ================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of March 2002. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files bg ca cs da de el en eo es et fi fr +-------------------------------------+ a2ps | [] [] [] [] | bash | [] [] [] [] | bfd | [] [] | binutils | [] [] | bison | [] [] [] | clisp | [] [] [] [] | cpio | [] [] [] [] | diffutils | [] [] [] [] [] [] | enscript | [] [] | error | [] [] | fetchmail | () [] [] [] () | fileutils | [] [] [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] | gas | [] [] | gawk | [] [] | gcal | [] [] | gcc | [] [] | gettext | [] [] [] [] [] | gnupg | [] [] [] [] [] [] | gprof | [] [] | grep | [] [] [] [] [] [] | hello | [] [] [] [] [] [] [] [] | id-utils | [] [] [] | indent | [] [] [] [] [] | jpilot | () [] [] [] | jwhois | [] [] | kbd | [] [] | ld | [] [] | libc | [] [] [] [] [] [] [] | lilypond | [] [] | lynx | [] [] [] [] | m4 | [] [] [] [] [] | make | [] [] [] [] | mysecretdiary | [] [] | nano | [] () [] [] [] [] | nano_1_0 | [] () [] [] [] [] | opcodes | [] [] [] | parted | [] [] [] [] | ptx | [] [] [] [] [] | python | | recode | [] [] [] [] [] [] | sed | [] [] [] [] [] [] [] [] | sh-utils | [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] [] [] | sketch | () [] () | soundtracker | [] [] [] | sp | | tar | [] [] [] [] [] [] | texinfo | [] [] [] [] [] | textutils | [] [] [] [] [] | util-linux | [] [] [] [] | vorbis-tools | | wdiff | [] [] [] [] [] | wget | [] [] [] [] [] [] [] [] | +-------------------------------------+ bg ca cs da de el en eo es et fi fr 1 12 11 31 36 9 1 8 39 15 1 50 gl he hr hu id it ja ko lv nb nl nn +-------------------------------------+ a2ps | () () [] | bash | | bfd | [] | binutils | [] | bison | [] [] | clisp | [] | cpio | [] [] [] | diffutils | [] [] [] | enscript | [] | error | [] | fetchmail | | fileutils | [] [] [] | findutils | [] [] [] [] [] [] | flex | [] | gas | | gawk | [] | gcal | | gcc | | gettext | [] | gnupg | [] [] [] | gprof | | grep | [] | hello | [] [] [] [] [] [] [] [] [] [] | id-utils | [] | indent | [] [] [] | jpilot | () () | jwhois | | kbd | | ld | | libc | [] [] [] [] | lilypond | [] [] | lynx | [] [] | m4 | [] [] [] [] | make | [] [] [] [] | mysecretdiary | | nano | [] [] [] () [] () [] | nano_1_0 | [] [] [] () [] () [] | opcodes | [] | parted | [] [] [] | ptx | [] [] [] [] | python | | recode | [] [] [] | sed | [] [] [] [] [] [] [] | sh-utils | [] [] [] [] [] | sharutils | [] [] [] | sketch | () | soundtracker | [] | sp | | tar | [] [] [] | texinfo | [] [] | textutils | [] [] | util-linux | () [] | vorbis-tools | | wdiff | | wget | [] [] [] [] [] | +-------------------------------------+ gl he hr hu id it ja ko lv nb nl nn 19 7 0 4 6 11 22 9 1 8 19 4 no pl pt pt_BR ru sk sl sv tr uk zh_TW +----------------------------------------+ a2ps | () () () [] [] [] () | 8 bash | | 4 bfd | [] [] | 5 binutils | [] | 4 bison | [] [] [] | 8 clisp | | 5 cpio | [] [] [] [] | 11 diffutils | [] [] [] [] [] | 14 enscript | [] [] [] | 6 error | [] [] [] | 6 fetchmail | () () [] | 4 fileutils | [] [] [] [] | 12 findutils | [] [] [] [] [] [] [] | 18 flex | [] [] [] | 8 gas | [] | 3 gawk | [] [] | 5 gcal | [] [] | 4 gcc | [] | 3 gettext | [] [] [] [] | 10 gnupg | [] [] [] | 12 gprof | [] [] | 4 grep | [] [] [] | 10 hello | [] [] [] [] [] [] [] | 25 id-utils | [] [] | 6 indent | [] [] [] [] | 12 jpilot | () () | 3 jwhois | () () [] | 3 kbd | [] [] | 4 ld | [] [] | 4 libc | [] [] [] [] [] [] | 17 lilypond | [] | 5 lynx | [] [] [] | 9 m4 | [] [] [] | 12 make | [] [] [] [] | 12 mysecretdiary | [] [] | 4 nano | () [] [] [] [] | 14 nano_1_0 | () [] [] [] | 13 opcodes | [] [] | 6 parted | [] [] [] | 10 ptx | [] [] [] [] [] [] | 15 python | | 0 recode | [] [] [] [] | 13 sed | [] [] [] [] [] [] | 21 sh-utils | [] [] [] [] [] [] [] [] [] | 22 sharutils | [] [] [] | 12 sketch | [] () | 3 soundtracker | [] | 5 sp | | 0 tar | [] [] [] [] [] [] [] | 16 texinfo | [] [] [] | 10 textutils | [] [] [] [] | 11 util-linux | [] [] [] | 8 vorbis-tools | [] | 1 wdiff | [] [] [] [] | 9 wget | [] [] [] [] [] [] [] | 20 +----------------------------------------+ 35 teams no pl pt pt_BR ru sk sl sv tr uk zh_TW 55 domains 5 13 2 12 25 11 11 41 34 4 7 489 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If March 2002 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. Using `gettext' in new packages =============================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle to use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `translation@iro.umontreal.ca' to make the `.pot' files available to the translation teams. ap-utils-1.5/AUTHORS000066400000000000000000000000521117246662700141760ustar00rootroot00000000000000Roman Festchook ap-utils-1.5/COPYING000066400000000000000000000431001117246662700141620ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy 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 Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. ap-utils-1.5/ChangeLog000066400000000000000000002675331117246662700147230ustar00rootroot000000000000002005-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 . 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 ' 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: ' - 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 , 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 * 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 2004-03-06 Roman Festchook * src/ap-trapd.c: MAc address logging changed to common ap-utils format (without any dividers) * configure.in: version 1.4.1pre3 2004-02-27 Roman Festchook * lib/ap-curses.h, configure.in: updates to build with SysV curses lib if ncurses not found 2004-02-27 Daniel Eisenbud * lib, src, ap-gl: Solaris and SysV curses build fixes 2004-02-26 Roman Festchook * lib/sysinfo.c, lib/wlan.c: fixed Bus error when getting SysInfo structure data from AP on Sun Sparc64 processor * po/uk.po: updated translation * lib, ap-gl, src: removed dublicated includes * lib/ap-utils.h, lib/ap-curses.h, configure.in: updates to build on Solaris with SysV curses lib * THANKS: updated 2004-02-25 Vladimir N.Velychko * Documentation/Ukrainian/*: translation spelling fixes 2004-02-25 Roman Festchook * lib, ap-gl, src: removed including config.h from files that include ap-utils.h * lib/ap-utils.h, configure.in: another updates to MacOS X build 2004-02-24 Daniel Eisenbud * lib/wlan.c: fix to make ap-config able to set ESSID on powerpc and probably other bigendian machines 2004-02-22 Roman Festchook * src/stations.c; ap-gl/stations.c: added check if AP in Client mode with corresponding warning message to user * configure.in: version 1.4.1pre2 2004-02-21 Roman Festchook * configure.in: updated to build under MacOS X 2004-02-10 Roman Festchook * lib/scr.c: fixed memory leak in scroll_rows function * lib/wlan.c: fixed wrong keys for changing values for NWN APs 2004-02-04 Roman Festchook * configure.in: version 1.4 * NEWS: main changes added 2004-01-30 Roman Festchook * Documentatin/README.ap-gl: added file with notes about ap-gl utility * TODO: updated 2004-01-29 Roman Festchook * ap-gl: changed ATMEL410 -> ATMEL_PRISM name, for safe use removed Config port blocking, merged wireless client isolation (unicast & broadcast). 2003-12-30 Roman Festchook * ap-gl: added new utility for ATMEL410 AP with 1.4k.1 firmware and support for RADIUS auth, wireless clients isolation, Repeater mode, Config port blocking, connected APs extended info (MAC, IP, Parent IP, RSSI, LQ, Status, Port) * lib, src, ap.gl: a lot of internal code moving from program to lib sources * po/uk.po: translation updated * TODO: updated * configure.in: version 1.4pre2 "Happy New Year" release * src/bridge.c: renamed options "Send back broadcast/unicast traffic) to Isolate wireless clients 2003-12-28 Ashley Gittins * src/ap-mrtg.c: changes to support ATMEL12350/ME-102 2003-11-27 Roman Festchook * TODO: updated 2003-11-27 Jacek Pliszka * ap-utils.spec, Documentation/README.RPM: added spec file for rpm building 2003-11-25 Roman Festchook * po/uk.po: updated 2003-11-23 Roman Festchook * po/uk.po: updated to current sources * src/common.c: changed copyright years to 2001-2003 * src/ap-mrtg.c: changed copyright years to 2002-2003 * src/aps.c: table header legenda increased to 3 lines * TODO: updated with current goals and removed working now things * configure.in: version 1.3.4pre1 2003-11-15 Jacek Pliszka * src/ap-mrtg.c: added -n name option to ap-mrtg that, if used, checks if name of the AP polled is same as one given 2003-11-11 Roman Festchook * src/ap-mrtg.c: fixed to return 999999999 for outgoing traffic when error connecting to AP exist 2003-10-27 Jan Rafaj * README,THANKS,TODO: modified * HARDWARE-NOTES: added. This should keep important hardware-related informations that the users _must_ read prior using ap-utils. * reverted parameters order for on_off(), menu_choose() so that we always use order everywhere * src/aps.c: - made ap_viewtype global so that the selected view type sustains for whole session - replaced snmp() for SiteSurveyCommand scan with sendto(), as buggy ATMEL12350 firmware does not confirm SiteSurveyCommand reception, but goes straight to internal scanning loop. This allows for attempts to perform SiteSurveyCommand via wireless interface of the AP, which would previously time out due to the reluctance of the firmware to send confirmation, as described above. * src/bridge.c: disallow remote BSSID option key if AP is in Access Point mode * src/common.c: - again changed/corrected the order of autodetection. We cannot check against sysDescr OID of ATMEL12350 in first step becouse ATMEL410 devices would pass this check too and would be falsely marked as ATMEL12350. - added back possibility to manually select the AP type. User is given a choice to either autodetect the device (default), or specify type manually. The latter may have advantage if the AP is not actually available via network. - hide cursor again after user turns back from the subshell * src/radio.c: implemented detection & setup functions for APs that give response to operAntennaSettings OID query in 1-byte format. It seems that these devices do not distinguish between receiving and transmitting antennas. This is true even for some APs with single antenna output (Tellus A14 as an example), where this OID gives really no good to the sum of resulting functionality (why would you ever need to set up which antenna is left, right or diversity, if you got just one ? :^) * lib/ap-utils.h, src/common.c, src/input.c: - added new function get_pass(). This code has been taken from common.c, modified and moved to input.c. - AP type is now displayed once it is selected or autodetected - maximum password length is 16 characters, not more (originally it was 32). It is quite possible more than 16 may work with some devices, but I've never seen an AP MIB that would define community length > 16 characters. - made the offsets at which the values are displayed, relative to the length of option name strings, to ease work for translators - yes_no(): newly introduced - ignore escape key presses in both get_value() and get_pass() * src/ap_search.c: - indentation fixes - if connect_options() is called for discovered APs, the 'type' argument has to be always > 0, as this is being checked against in connect_options(). We increment it with one all the time and decrement back after the check in connect_options(). Now, the user is not prompted for AP type in connect_options() if he should not have to be (originally intended behaviour). - check against duplicated responses from ATMEL410 APs. These are also able to answer queries with 12350 in query OID. This is now being explicitly checked for => no more duplicate ATMEL410 and ATMEL12350 APs with same IPs in the Search menu. - do not attempt to assign const char "public" to 'community' variable, as we attempt to free() it elsewhere. We could use malloc() here, but still, this would have no good reason since user is (and should be) always prompted for a password once he selects desired AP from the 'Search' menu, once it is found => all password-saving & handling parts have been removed for now. This also fixes a crash that would occur if someone would try to connect to an AP in 'Connect' menu, after unsuccessful 'Search' attempt. - implemented searching per multiple network devices. This involved modifying ap_search() and changing it to scan_local_segment(), as well as making scan_local_segment() self-reentrant, plus adding portable code to scan for available network interfaces for their IP/broadcast(ptp) pairs, that are later used to scan segments via scan_local_segment(). Thanks to Dan J. Bernstein for an effort in writing portable SIOCGIFCONF-related code; the current implementation is based on his ipme.c from Qmail. No more using 255.255.255.255 as broadcast as well as source IP scanning. Results are now accurate even on routers with multiple network interfaces of different types. The current ap_search() has been verified/tested with W-Link WEN2021 and Tellus TWL-A14 APs on Linux 2.2/2.4 and FreeBSD 4.9 . - the progress is now verbose: - each AP is shown immediately as soon as it is found - the screen is realtime-updated with information about network interface index, its name and AP type, currently scanned for - it is now possible to quit from scanning process by pressing 'q' or 'Q' whenever user wants to - do not attempt to connect to an AP by pressing a key with index of AP that is not present in the 'found' table * src/oui.c: added OUIs: - 000C30 (Cisco) - 000C41 (The Linksys Group, Inc.) * configure.in: added check to determine whether the (struct sockaddr) has 'sa_len' member, and if it has, #define HAVE_SA_LEN in order to properly support network interface detection on 4.4BSD-ish systems. Moved AC_CONFIG_AUX_DIR macro behind AC_INIT, to satisfy newer autoconf. Also, moved template definition from acconfig.h here. * acconfig.h: deleted (deprecated for newer autoconfs) * src/menu.c: added hooks for keys, 'q' / 'Q', Home (PageUp), and End (PageDown) * src/set_community.c: use get_pass() for now instead of get_value(), so that the passwords are hidden when someone types them in. We should really use get_value() for this later, and make the password hiding optional. 2003-10-21 Roman Festchook * configure.in: version 1.3.3, added "thank you" message * src/common.c: falling back to firstly implemented AP type autodetection order - firstly searching for ATMEL410, by default ATMEL12530 * NEWS: main changes added 2003-08-14 Roman Festchook * configure.in: version 1.3.3-pre3 2003-09-08 Jan Rafaj * README: added several APs to the table of supported hardware * lib/ap-utils.h, src/ap-config.c, src/auth_mac.c: AuthMAC() renamed to atmel_auth_mac() * lib/ap-utils.h, src/input.c, src/test.c, src/set_community.c, src/wep.c, src/wlan.c, src/auth_mac.c, src/bridge.c, src/common.c, src/file.c, src/nwn_advanced.c, src/radio.c: - get_value(): rewritten; now embeds the bounds as well as pressed key checking. The range boundaries, the desired type of input with respect to the acceptable characters, and the pointer to a message to be restored, when a warning about exceeded boundary is printed in the bottom stripe, are accepted as four additional parameters now. - get_ip(), get_mask(): newly introduced - get_ip(), get_mac(): based on get_value(), with additional bounds checking tailored accordingly and moved here from src/bridge.c - get_mask(): based on get_ip() with additional mask correctness checking code moved here from src/bridge.c - all the above functions were used to replace the respective original input functions to match the changed prototypes - the generic message 'Invalid value...' has been replaced with 'Value must be in range %i - %i...'. This is printed in bold-white/red in bottom stripe if the user input value exceeds the predefined boundaries. - added inet_aton()-specific includes to lib/ap-utils.h, and removed elsewhere for multiple reasons * src/wlan.c: fixed code displaying the ESSID - upon its change, previously it could happen that if a newly written ESSID would be shorter than the previous one, the loop that has been used to display ESSID would [erroneously] expect the string to be finished with '\0' (which is not required due to operESSIDLength), and would display garbage with content of and length up to an old ESSID string 2003-08-27 Jan Rafaj * README: fixed/added some supported AP hardware entries * lib/ap-utils.h, src/ap-config.c, src/bridge.c, src/radio.c, src/set_community.c, src/sysinfo.c, src/test.c, src/wep.c, src/wlan.c: hopefully the last round of changes in naming convention * src/bridge.c, src/wlan.c: utility now distinguishes some extra MIB subtypes: for 410 enter- prises MIBs: "SmartBridges" form, and for 12350 enterprises MIBs: "Tellus" MIB form "prototype". The MIB form is being distinguished based on the OUI part of MAC address of the device. Other than those MIBs named above are considered "generic" forms, becouse are very ubiquitous. This procedure is necessary, becouse despite the fact that many MIBs keep the same enterprises ID, they differ slightly in OID structures (some OIDs are in one MIB and not in other, and same OIDs even may have significantly different meaning - this is a case of Tellus A14 MIB x NetGear ME102 MIB, f.e.). So, unfortunately, there's no other way, but: - make some MIB "prototypes" (aggregate those that contain exactly the same information, based on the supported AP models across all the device manufacturers) - determine the correct MIB based on the OUI part of MAC address of the device (we assume noone changes OUI part of the MAC of his AP) It is quite possible that this approach will need revision in the future, but since there appears to be no 100% reliable way of how to distinguish different device models of one specific manufacturer, the above is currently the finest, although still coarse enough, method to support most devices. * src/bridge.c: - 'Preferred BSSID' keys rebound from 'm/M' to 'r/R' - 'Forward broadcast traffic' keys rebound from 't/T' to 'r/R' - introduced new setting 'Trap-sending port(s)', and bound to 't/T' key. This setting appears only if ATMEL12350 device with "Tellus Group Co." OUI is detected. * src/wlan.c: - fixed 'Beacon period' input/output data formatting/displaying - display/snag/set 'Beacon period' and 'DTIM sending interval' options/their values only if the device uses "generic" ATMEL12350 MIB prototype (that of NetGear ME102 for example). This should fix crashing becouse of missing MIB OIDs for people that use this kind of devices. 2003-08-25 Roman Festchook * lib/ap-utils.h, configure.in: FreeBSD compile time fixes 2003-08-19 Roman Festchook * src/ap_search.c: fixed getch delay and restoring current connect options when quiting search screen 2003-08-18 Jan Rafaj * README, THANKS: modified * most of string #defines moved from lib/ap-utils.h to the corresponding modules in src - lib/ap-utils.h should keep just those that are common to more than 1 module * src/aps.c: - fix bound-checking condition. Some APs with older ATMEL firmware actually provide less space than 16 APs in its KnownAP reply, and we also need to check for condition when lvalue of next MAC entry in the response table is 0 (means end of statistics) - only rewrite the current bridge_mode to 3 (AP client) if the AP is ATMEL12350 type * src/auth_mac.c, src/bridge.c, src/nwn_latest.c, src/sysinfo.c, src/test.c, src/wep.c, src/wlan.c: - stripped the formatting characters from remaining string #defines - made the displaying value in 'Feature: value' dependant on offset computed through strlen() from #defined string - this way, the internationalisation is eased becouse translators dont need to keep with original english strings size * src/bridge.c: implemented new functionality from ATMEL 12350 MIB for: - Configuration-enabled port(s) - ForwardBroadcast - SendBackBcast - SendBackUnicast * src/input.c: enhanced get_mac() for checking invalid MAC values that user may type in; if he does, print generic error and loop unless user gives syntactically correct value. * src/radio.c: changed the 'Key' to '[key]' in bottom message for uniformity. * lib/ap-utils.h, src/sysinfo.c, src/wlan.c: renamed CFG_STRUCT_ {ATMEL410,ATMEL12350} to SysDeviceInfo_{ATMEL410,ATMEL12350} * src/wlan.c: corrected offset of displayed values for features: - InterRoaming - BeaconPeriod - DTIM 2003-08-14 Roman Festchook * src/common.c: changed AP type autodetection order - firstly searching for ATMEL12350, by default ATMEL410 * configure.in: version 1.3.3-pre2 * src/aps.c: fixed connecting to choosen AP on ATMEL12350 APs in not AP Client mode 2003-08-14 Elros Cyriatan * po/nl/po: New Dutch PO file for `ap-utils' 2003-08-11 Jan Rafaj * next round of spelling and indentation fixes * src/aps.c: - made the 'KnownAP' statistics available only if the Access Point is in AP client mode [original behaviour]. Some Access Points may keep the statistics in their RAM, but no update is performed. Even, sometimes, their RAM may contain garbage after reset, which would cause parsing problems. * lib/ap-utils.h, lib/reset.c, src/ap-config.c, src/ap-mrtg.c, src/ap_search.c, src/aps.c, src/auth_mac.c, src/bridge.c, src/cmd.c, src/common.c, src/radio.c, src/set_community.c, src/stat.c, src/stations.c, src/sysinfo.c, src/test.c, src/wep.c, src/wlan.c: - changed all occurences of 'ATMEL' to 'ATMEL410' and for 'ME102' to 'ATMEL12350' * lib/ap-utils.h, src/ap-config.c, src/sysinfo.c: - renamed sysinfo() to atmel_sysinfo() * lib/ap-utils.h, src/ap-config.c, src/wlan.c: - renamed wireless() to atmel_wireless() * src/ap-config.c: - redefined color pair 2 (black ink, green background), and defined new color pair 3 (black ink, green background), and color pair 4 (white ink, red background). 2 is used for showing all string values actually changed by the user; 3 is used for displaying column-info stripe in aps.c, and 4 is used to display error-related messages in bottom status stripe. * src/input.c: - get_value() modified * src/scr.c, lib/ap-utils.h: - added new function print_menusel(). Prints a message split up to two parts - first part without colors, second part in bright. Used in conjunction with get_value() to display parameters that the user modified, in bold. - added new function print_helperr(). This is basically the same as print_help(), with the only difference that it prints the text in white bold on red background. Uses color pair 4 and bold attribute; see above. * names of all print_help() functions related to printing error messages have been changed to print_helperr() * src/auth_mac.c, src/bridge.c, src/radio.c, src/test.c, src/wep.c, src/wlan.c, lib/ap-utils.h: - implemented new colorisation scheme using print_menusel() and get_value(), get_mac() - if user enters a new value, the maximum space (in character counts) that can be used, is displayed in inverse color. As soon as user confirms the new value by pressing enter, the changed value is displayed in bold (so that he knows what he has actually changed). * src/bridge.c: - when entering AP's IP, mask and gateway, do not allow to pass further if the user input is invalid - instead, loop unless user enters valid information - hardened bounds checking against correct netmask value; now, invalid netmasks like 255.255.255.129 elicits error and forces prompt for new value, too * lib/ap-utils.h, src/ap-mrtg.c, src/ap_search.c: placed conditinal GLIBC checks => ap-utils now compile/run even on non-GLIBC (LIBC5-based and such) systems, hopefully. Actually it has only been tested with libc5-based Linux system. * lib/ap-utils.h, src/ap-mrtg.c, src/ap-trapd.c: placed conditional HAVE_GETTEXT checks around parts using gettext, to get ap-utils compile on systems without gettext support * lib/snmp.c, src/file.c: external declaration of ap_type datatype unified as 'short' and made global to make some old GNU C compilers happy 2003-08-07 Roman Festchook * src/brige.c: fixed bug when saving changed ip, netmask and gw 2003-08-07 Jan Rafaj * various spelling and indentation fixes here and there * all the ATMEL 12350-specific stuff below has been modelled using Tellus A14 AP. * src/aps.c: - made it malloc()-free. no more potential leaks. - 'KnownAP' now works for ATMEL 12350-based APs too - allow of up to 16 concurrent APs to be displayed in the 'KnownAP', as the packet itself may carry up to 16 records (768/48). This is also a fix becouse up to now, the menu has shown just the first AP entry. - The button for 'refresh without reset', originally bound to 'g' and 'G' key, has been rebound to 's' ('S') key, since the keys a-g (A-G) are now used as keys, corresponding to numbers 10-16 of the APs displayed, when used in '# connect to this AP' command. - enhanced '# connect to this AP' functionality for also setting the appropriate channel through operChannelID OID - disallow connection to Ad-Hoc mode bridges - fixed bad effect of displaying 'Writing data to AP' after pressing AP number, even if the number of the selected AP is not actually present in the table - changed the color scheme to some more eye-pleasant values - implemented 4 different "views", that can be toggled via 't' ('T') key: * view 1: - most usual one; with RSSI and LQ in % [ATMEL utility view] * view 2: - the same as 1; except that RSSI is displayed in dBm and LQ in raw * view 3: - ESSID shown expanded to full length, no NetworkType; RSSI displayed in raw, LQ displayed in raw * view 4: - shown only BSSID, and its hardware manufacturer - the 'KnownAP' statistics is available without reset if the Access Point is either in any of APclient or AP modes, not just when it is in APclient mode. * lib/ap-utils.h: - HARD_CONFIGURATION_STRUCT is now replaced with two new structures: CFG_STRUCT_ATMEL (for ATMEL 410-based devices), and CFG_STRUCT_ME102 (for ATMEL 12350-based devices). * src/sysinfo.c: - sysinfo() made malloc()-free, and made both ATMEL 410- and ATMEL 12350-aware => SysInfo for APs of both ATMEL types is now displayed correctly * src/oui.c: - added OUI 000CCE (Cisco Systems) * lib/ap-utils.h, src/wlan.c: - made it fully ATMEL 410- and ATMEL 12350-aware (displaying/setting of additional InterRoaming, BeaconPeriod and DTIM parameters in case of ATMEL12350). Note that it is possible to regulate BeaconPeriod in range 0-65407 and DTIM in range 0-255, but the boundary limits may vary with different hardware. I've tried to make as broad range coverage as possible. Anyway, for example, Tellus A14 resets the BeaconPeriod internally to 100, if you write it with value out of 1-1000 interval. - rebound key for ESSID from 'd' ('D') to 'e' ('E') 2003-07-26 Roman Festchook * src/ap_search.c, src/common.c: changed AP types ATMEL to ATMEL410 and ME102 to ATMEL12350 * src/common.c: added AP type autodetection - by default ATMEL12350 * src/common.c, src/ap_search.c, lib/ap-utils.h: now its possible to choose working AP from AP search result * po/uk.po: updated translation * lib/ap-utils.h, src/brige.c: bigendian fixes when setting ip, netmask and gw * configure.in: version 1.3.3-pre1 2003-06-20 Roman Festchook * configure.in, acconfig.h, lib/ap-utils.h: small fix to compile under OpenBSD * po/*.po: fixed some fuzzy translations 2003-06-03 Eugen Hoanca * po/ro.po, configure.in: added Romanian translation 2003-05-28 Roman Festchook * configure.in, NEWS: version 1.3.2 2003-05-26 Roman Festchook * config/config.guess, config/config.sub: updated from latest autoconf 2003-05-21 Roman Festchook * README: new supported AP added * configure.in: version 1.3.2-pre4 2003-05-20 Roman Festchook * src/ap-mrtg.c: fix bug like 2003-05-20 Peter 'p2' De Schrijver patch fixes 2003-05-20 Peter 'p2' De Schrijver * src/auth_mac.c, src/stat.c, src/sysinfo.c, lib/ap-utils.h: patch to fix ap-config for 64bit archs such as the alpha. It also fixes a minor bug on big endian machines. Patch tested on alpha, ia32, parisc and powerpc. 2003-04-29 Michel Robitaille * po/fr.po: updated translation 2003-04-28 Roman Festchook * README: new supported APs added * src/auth_mac.c: small compile error with old gcc fixed 2003-04-26 Roman Festchook * README: new supported APs added 2003-04-15 Roman Festchook * po/pl.po: updated translation * lib/Makefile.am: not used code exluded for faster compilation * lib/ap-utils.h: code rearangement * src/scr.c: some updates for more faster screen handling * configure.in: version 1.3.2-pre3 2003-04-15 Przemyslaw Stanislaw Knycz * po/pl.po: fix to correct displaying polish chars 2003-03-13 Roman Festchook * README: new supported AP from SVEC 2003-02-27 Roman Festchook * FAQ: updates 2003-02-26 Roman Festchook * lib/*, src/*, README: added support fpr new Netgear ME102 enterprase in old Atmel mib (ME102 type) * configure.in: version 1.3.2-pre2 2003-02-25 Roman Festchook * README: new supported hardware from DCom removed (it's WLink hardware:) 2003-02-23 Roman Festchook * README: new supported hardware from DCom 2003-02-23 Roman Festchook * src/menu.c, src/input.c: added new vi-like keys to menu movement * Documentation/ap-config.8: added info about vi-like keys to menu movement * configure.in: version 1.3.2-pre1 2003-02-14 Roman Festchook * TODO: support for ME102 new mib * configure.in, NEWS: version 1.3.1 2003-02-11 Roman Festchook * src/wep.c, src/wlan.c: fixed for warnins when compiling by egcs-2.91 2003-02-08 Roman Festchook * src/common.c: removed unnecessary debug message 2003-02-06 Roman Festchook * src/input.c, src/mac_auth.c, src/bridge.c. src/nwn_latest.c, src/sysinfo.c, lib/ap-utils.h: mac adresseses now dysplayed and entered like XXXXXXXXXXXX * Documentation/FAQ: added info about new ME102 AP * src/ap-search.c: fixed bug with closing sock descriptor after making search - what make impossible working with current AP without reconnect 2003-02-04 Roman Festchook * src/file.c: fixed updating options file bug 2003-02-03 Roman Festchook * src/wep.c, Documentation/ap-config.8: added info about WEP key values 2003-01-10 Roman Festchook * src/common.c: fixed options file name mismatch 2002-12-22 Roman Festchook * src/file.c: added keys for fast selecting one from first 9 APs, fixed coredump when parsing file in wrong format * po/uk.po: updated translation 2002-12-16 Roman Festchook * src/ap-mrtg.c: command line parameters parsing small fix 2002-12-15 Roman Festchook * configure.in: build cleanups * src/file.c, src/common.c: now connect option for many APs can be stored in file and current AP can be choosed from it * src/*, lib/*: many code cleanups and fixes 2002-12-10 Roman Festchook * configure.in, src/Makefile.am: fixes to build on OpenBSD * README: new supported OS OpenBSD 2002-12-05 Roman Festchook * README: supported hardware table updated * configure.in, NEWS: version 1.3 2002-12-02 Roman Festchook * src/ap-mrtg.c: fixed printing warning in non verbose mode when getting Link Quality stats * src/ap-mrtg.c, man/ap-mrtg.8: Signal Strenght returned in dBm 2002-11-25 Roman Festchook * man/ap-config.8: removed dead link 2002-11-25 Wolfgang Fuschlberger * Documentation/Ovislink-HOWTO.html: updated howto 2002-11-20 Roman Festchook * configure.in: defined LIBS and INSTALL variables to compile under QNX (nto-qnx) * INSTALL: updated with info about installing on QNX * README: new supported OS added * src/Makefile.am, configure.in: removed checking for ncurses libs and LIBS difinition moved to Makefile (I think its wrong but useful:) * src/aps.c, man/ap-config.8: RSSI now displayed in dBm (thanks to Ivan Korshun) * po/*.po: translations updates 2002-11-11 Michel Robitaille * po/fr.po: updated french translation 2002-11-10 Roman Festchook * man/*.8: removed referrer to ap-atmel and ap-nwn 2002-11-10 Dan Pelleg * src/wlan.c: patch to build on FreeBSD 2002-11-04 Wolfgang Fuschlberger * Documentation/Ovislink-HOWTO.html: howto use ap-utils with Ovislink hardware * README: new supported hardware from Ovislink 2002-11-01 Wojciech Puchar * po/pl.po: polish localization 2002-11-01 Roman Festchook * lib/common.c, po/*.po: spelling fixes 2002-10-31 Roman Festchook * src/aps.c: fixed getting info from APs manufactured by CC&C Technologies * po/*.po: translations updates 2002-10-30 Roman Festchook * README: new supported hardware * src/aps.c: check for right channel added 2002-10-29 Rahul G * lib/ber.c: function to ber encode object identifiers added 2002-10-24 Roman Festchook * configure.in, NEWS: version 1.2 2002-10-21 Pawel P. Kaszynski * README: new supported hardware from Intellinet 2002-10-17 Michel Robitaille * po/fr.po: updated french translation 2002-10-15 Roman Festchook * configure.in: more fixes to compile under netbsd 2002-10-11 Roman Festchook * lib/common.c: added option to disable saving connect options to file 2002-10-10 Roman Festchook * src/wlan.c: fixed fail to set essid because wrong len * Documentation/mib/atmel: new mib added form airBrige device * src/ap-trapd.c, man/ap-trapd.8: added support for Smartbridges airBrige traps, run utility with -s key * src/brige.c: added support for Smartbridges airBrige speciffic oid 2002-10-09 Roman Festchook * src/brige.c: added check for getted from AP values * configure.in: added CC variable to compile under netbsd * README, INSTALL, mib/ap-config.8: updates about merging utilites to ap-config 2002-10-07 Roman Festchook * src/ap-config.c, lib/common.c, lib/ap-search.c: connect and search procedure updates 2002-10-07 Dan Pelleg * lib/ap-search.c: fix to compile under FreeBSD 2002-10-03 Roman Festchook * src: ap-nwn and ap-atmel merged to one utility ap-config * lib/snmp.c: decreased timeout waiting for reply from agent - in general it result more faster read SNMP data 2002-10-02 Roman Festchook * common/ap-search.c: socklen_t variables redefined to uint32_t for build package under MacOS-X * common/file.c: char variable j redefined as unsigned to socessful build where char is per default unsigned on arm, powerpc and s390. * nwn/wlan.c: form handling code cleanups, fixed display refreshing after changing antenna and rate options * README: new supported hardware * configure.in, NEWS: version 1.1.1 2002-09-29 Roman Festchook * nwn/advanced.c, man/ap-nwn.8: added some advanced options to optimize long range links and antenna tuning 2002-09-28 Roman Festchook * atmel/aps.c: now after setting master AP from displated list also setted mode to AP client and ESSID to master AP ESSID, also now AP resets when getting stat only if brige mode = Access Point * nwn/reset.c, nwn/ap-nwn.c: added option to reset AP * atmel/wep.c: WEP encryption after fixes works - tested WEP64 crypted link between CompexWP11 and GL2411AP as client * atmel/ap-trapd.c, man/ap-trapd.8: updated traps list with new traps from 1.4j.1 firmware * atmel/brige.c: added Repeater mode to Brige modes * nwn/nwn.c: now possible to define 4 WEP keys and choose default key 2002-09-26 Roman Festchook * atmel/ap-mrtg.c: small fixes about link quality displaying * atmel/ap-trapd.c: small log format changes * README: new supported hardware Smartbridges airBrige and airPoint 2002-09-20 Roman Festchook * configure.in, NEWS: version 1.1 2002-09-19 Roman Festchook * atmel/aps.c: interface updates * po/uk.po, po/fr.po: small translations update 2002-09-19 Andy Igoshin * atmel/radio.c: now wors fin on big_andian 2002-09-17 Andy Igoshin * common/ap-utils.h, atmel/wlan.c: basic rates display fix * man/*.8: man page formatting updates 2002-09-17 Roman Festchook * nwn/stations.c: rewrited code that get associated stations info to avoid problems with invisible stations * nwn/stations.c, atmel/stations.c: fixed display last value problem * po/uk.po, po/fr.po: small translations update 2002-09-16 Roman Festchook * nwn/stations.c, atmel/aps.c, man/ap-atmel.8, man/ap-nwn.8: display linkquality and signal strenght without any modification on returned values, documentation updates about it * po/uk.po: translation update * atmel/aps.c: added option to connect to one of the displayed known APs, also now possible reget and refresh (with reset) stats * atmel/ap-mrtg.c, man/ap-mrtg.8: aded option to reset AP when getting link quality stats, documentation updates about it, also after reset 10 second timeout set 2002-09-15 Andy Igoshin * atmel/ap-mrtg.c, atmel/aps.c, atmel/bridge.c, atmel/cmd.c, atmel/stat.c, atmel/stations.c, atmel/wep.c, atmel/wlan.c, common/ap-utils.h: code cleanups * nwn/sysinfo.c: code cleanups 2002-09-12 Andy Igoshin * configure.in: small fix for AIX * atmel/auth_mac.c, atmel/wep.c: case statement code cleanups * atmel/auth_mac.c: now works good with big_endian * common/ap-utils.h: additional macros for data conversion on big_endian * atmel/brige.c: removed any ip adderess converting on big-endian arch * atmel/wep.c: now encryption enable and key num works good with big_endian 2002-09-12 Roman Festchook * nwn/sysinfo.c: removed any ip adderess converting on big-endian arch * atmel/auth_mac.c: changed type to mib defined * common/ap-utils.h: swap2 definition to little_endian arch * atmel/wep.c: some variables declaration moved to up to compile on old gcc compilers 2002-09-11 Roman Festchook * atmel/wlan.c: fixed unpackeing RegulatoryDomain on big_endian computers * atmel/bridge.c, nwn/sysinfo.c: fixed ip adderess converting on big-endian arch 2002-09-11 Andy Igoshin * atmel/sysinfo.c: fixed displaying RegulatoryDomain on big_endian computers * configure.in: OS definition now standart macro, AIX compilation options * atmel/auth_mac.c: mac auth foxes for big_endian 2002-09-08 Andy Igoshin * atmel/Makefile.am, common/Makefile.am, common/ap_search.c, common/menu.c, common/scr.c, nwn/Makefile.am: patch to compile by native compiler under AIX 4.3.3 2002-09-08 Roman Festchook * README: new supported hardware Micronet SP918 and OS AIX 4.3.3 added * configure.in, common/ap-utils.h, acconfig.h: now big_endian defined using standart configure macro AC_C_BIGENDIAN (thanks Andy Igoshin for suggection) 2002-09-06 Roman Festchook * atmel/bridge.c, nwn/sysinfo.c: fixed ip adderess displaying on big-endian arch * README: new supported OS MacOS-X * configure.in: new big_endian arch Power Macintosh 2002-09-04 Roman Festchook * nwn/wlan.c, atmel/wlan.c: fixed setting channel bug under Spain and France regulatory domain * man/nwn.8: additional info about Search AP option * README: new supported hardware Dlink-1000AP * nwn/auth_mac.c: displaying mac autorization status fixed 2002-09-02 Roman Festchook * configure.in, NEWS: version 1.0.5 * po/uk.po: ukrainian translation updates 2002-08-29 Roman Festchook * atmel/ap-mrtg.c, man/ap-mrtg.8, aclocal.h, configure.in, INSTALL: enable report to MRTG when unable to get stats from AP now sturtup option, also command line arguments now parse using getopt() in ap-mrtg * atmel/ap-trapd.c, man/ap-trapd.8, aclocal.h, configure.in, INSTALL: option to change defaul unprivileged user now sturtup option, also command line arguments now parse using getopt() in ap-trapd * atmel/brige.c: entering AP mac address in Client mode fix * common.c, configure.in: macro for check big-endian arch (sparc and mips) now set variable AP_BIG_ENDIAN 2002-08-28 Roman Festchook * atmel/*.c, nwn/*.c, common/*.c: getting pressed key fixes to avoid reactions to neutral keys pressed by user 2002-08-28 Michel Robitaille * po/fr.po: french localization 2002-08-27 Roman Festchook * atmel/stat.c, atmel/test.c, atmel/sysinfo.c, nwn/stat.c: applayed macro swap4 from Erik Rossen for display long values * configure.in: macro for check big-endian arch (sparc and mips) added 2002-08-27 Erik Rossen * common/ap-utils.h: added swap4 - a quick-and-dirty macro to unconditionally swap bytes in 4-byte integers between big-endian and little-endian ordering * INSTALL: instruction to compile under Sparc Linux 2002-08-26 Roman Festchook * README: updates and spelling * atmel/test.c: user interface in test mode improvements and fallback when error reading test stat from AP now will not quit tests to make possible restoring normal AP functionality, regulation domain restriction removed 2002-08-19 17:42 Dan Pelleg * nwn/ap-nwn.c: minor change for compile under FreeBSD 2002-08-08 22:56 Roman Festchook * configure.in, NEWS: version 1.0.4 2002-08-02 20:29 Roman Festchook * configure.in: moved configuration utilites into config dir * atmel/*.c: code rewrited to don't use struct to unpack data that comes from network (as suggect Erik Rossen its may fix problems running utility on nonintel computer architectures). 2002-07-24 01:06 Roman Festchook * configure.in, common/common.c, acconfig.h, INSTALL: added compile time option to disable regulation domain channel restrictions 2002-07-22 00:02 Roman Festchook * man/ap-atmel.8, man/ap-nwn.8: added manpages for ap-atmel and ap-nwn 2002-07-21 20:02 Roman Festchook * man/ap-trapd.8, man/ap-mrtg.8: added manpages for ap-trapd and ap-mrtg 2002-07-21 15:06 Roman Festchook * nwn/stations.c, atmel/auth_mac.c: getting data from AP algorithms optimization 2002-07-21 01:24 Roman Festchook * common/oui.c: added displaying AP manufacturer using OUI value * README: spelling fixes 2002-07-18 14:53 Roman Festchook * nwn/stations.c: added info about waiting for data when getting data from AP 2002-07-16 01:04 Roman Festchook * configure.in: version 1.0.3 * common/ap_search.c, common/set_community.c: code of search and auth functions moved into common for both utilites functions * Makefile.am: now packages will be compressed by bzip2 (to save bandwith) 2002-07-15 19:31 Roman Festchook * common/scr.c, common/common.c, common/ap-utils.h: added info about current AP at right bottom of the screen 2002-07-14 00:20 Roman Festchook * po, intl, m4: integration with GNU gettext for simlying localization and translation * src: a lot of internal code optimization and spelling * nwn/search.c: AP search fixes * po/uk.po: ukrainian localization 2002-07-07 gettextize * Makefile.am (SUBDIRS): Add intl. (ACLOCAL_AMFLAGS): New variable. (EXTRA_DIST): New variable. * configure.in (AC_OUTPUT): po/Makefile.in, m4/Makefile. 2002-07-07 05:20 Roman Festchook * ap-trapd: log additiomal info about agent that generate trap 2002-07-05 02:00 Roman Festchook * common/ap-cnf.h, *.c: common/ap-cnf.h renamed to common/ap-utils.h * nwn/menu.c, atmel/menu.c, common/menu.c, common/ap-utils.h, common/Makefile.am: menu handling code rewrited to one universal routine 2002-07-04 15:44 Roman Festchook * configure.in: version 1.0.2 2002-06-29 20:15 Roman Festchook * nwn/search.c: error messages fixes * configure.in: added test for Linux * atmel/ap-trapd.c: fixed displaying new IP when SettingPingIPAddress trap received, also displaying mac address limited to related traps, bind to device code compiled only at Linux * Documentation/README.trapd: info about bind to device option code work only at Linux * Documentation/THANKS: new contributor Dan Pelleg * common/ap-cnf.h, README: changed project name to Wireless Access Point Utilites for Unix 2002-06-28 17:14 Roman Festchook * atmel/Makefile.am, nwn/Makefile.am, common/Makefile.am: added options to compile on FreeBSD 2002-06-28 16:45 Dan Pelleg * atmel/ap-atmel.c, atmel/ap-mrtg.c, atmel/ap-trapd.c, atmel/bridge.c, atmel/radio.c, atmel/search.c, common/common.c, common/file.c, common/snmp.c, nwn/ap-nwn.c, nwn/search.c, nwn/sysinfo.c, nwn/wlan.c: patch to compile and run on FreeBSD 2002-06-26 15:53 Roman Festchook * configure.in: version 1.0.1 2002-06-24 23:40 Roman Festchook * ap-trapd: by default installed into '/usr/local/sbin' * src: code cleanups and compiler warnings fixes 2002-06-21 16:34 Roman Festchook * */Makefile.am: added target style * atmel/ap-mrtg: code rearangement 2002-06-17 09:24 Roman Festchook * README: ap-amtel does work with an D-Link DWL 900AP wich is (according to some google research it's an Linksys WAP11). Reported by Jens Link . 2002-06-16 18:48 Roman Festchook * ap-trapd: added compile time option to set nonprivileged account for running utility 2002-06-16 03:12 Roman Festchook * Makefile: now Makefiles generated by GNU autoconf and automake * INSTALL: updated with info about new instalation procedures * ap-mrtg: added compile time option to disable warnings when unable to get data from AP * atmel/aps.c: removed unnecessary code that read/set remote brige BSSID * atmel/search.c, atmel/wlan.c, nwn/search.c, nwn/wlan.c: compile time warnings fixed 2002-06-15 02:10 Roman Festchook * ap-atmel: added try to restore settings when fail to get KnownAPs info 2002-06-09 23:33 Roman Festchook * version: 1.0 * ap-mrtg: removed email from usage message * ap-mrtg and ap-trapd code: placed into atmel directory * Makefile: some optimization at subdirs and at top level * Documentation: mibs now back to package * NEWS, AUTHORS: added 2002-06-08 01:03 Roman Festchook * ap-trapd: fixed getting data from old trap body when processing new trap 2002-06-06 14:29 Roman Festchook * ap-trapd: rewriten to log shorter messages without informative data lost * Documentations: some updates for preparing to version 1.0 2002-06-05 00:01 Roman Festchook * ap-atmel: added warnings in potentially dangerous options: KnownAPs, Reset, Upload, Defaults, Restore 2002-06-01 00:20 Roman Festchook * version: 1.0pre3 * ap-mrtg: added selecting AP to which get Link Quality/Signal Strenght statistics, also updated documentation 2002-05-31 00:50 Scott L. Thomas, Roman Festchook * ap-mrtg: option to get Link Quality/Signal Strenght stat from AP in client mode added * Documentation/README.mrtg: description about getting Link Quality/Signal Strenght stat from AP in client mode added * Documentation/README.nwn: added info about basic rates setting * ap-atmel, ap-nwn: added backspace support when entering password 2002-05-30 14:05 Roman Festchook * ap-trapd: option to bind listening for traps on a specific interface added * Documentation/README.trapd: option to bind listening for traps on a specific interface described * Documentation/README.nwn: added info about associated stations 2002-05-29 19:30 Roman Festchook * ap-nwn: fixed basic rates, AP name and ESSID displaying * ap-atmel, ap-nwn: some optimization for size * snmp.c: memory leaks fixes when parsing received packets * ap-nwn: uptime displaying fixed 2002-05-27 00:03 Roman Festchook * version: 1.0pre2 * ap-atmel: added Regulation domain restriction to select channel in Test Mode * ap-atmel, ap-nwn: added floating dropdown menus for choose from the list of options 2002-05-26 16:45 Roman Festchook * ap-nwn: fixed lenght bug in setting AP name 2002-05-25 14:05 Roman Festchook * Documentation: added banner image:)) 2002-05-22 00:19 Roman Festchook * version: 1.0pre1 * Documentation: additions and spelling * src: removed unused code 2002-05-21 20:06 Roman Festchook * ap-nwn: added option to find connected APs 2002-05-20 01:37 Roman Festchook * ap-nwn: added basic rates choose options, added WEP key set options, added setting prefered channel to operational channel value * Documentation: mibs excluded from program package (they come with devices), also excluded power hack docs (readme has links to this pages) - this greatly reduce package size:) 2002-05-18 19:51 Roman Festchook * ap-atmel: fixed bug with unable to repeat APs search, other search fixes and improvements 2002-05-17 15:51 Roman Festchook * version: 0.9.6 * ap-atmel: added option to find connected APs 2002-05-16 00:12 Roman Festchook * atmel/aps.c: removed timeout when getting KnownAPs stat from AP in client mode 2002-05-15 20:57 Roman Festchook * ap-mrtg: added option to get associated stations stat * README.mrtg: info about stations stat 2002-05-11 08:49 Erik Rossen * src: fixed compile time errors and warnings * atmel/scr.c, nwn/scr.c: patch to get rid of the annoying flicker every time one changes a menu 2002-05-06 02:42 Roman Festchook * common/file.c: now AP ip and community string saved in config file ~/., so no need to input it after each program start * common/common.c: connection password at input displayed with '*' * wlan.c: added Regulation Domain limit on setting channel * atmel/aps.c: Now KnownAP stat may be get without AP reset if AP in client mode * atmel/radio.c: Antenna checks on Atmel, so user can't disable both antenna, if he do this and save conf - AP restores factory defaults, now it fixed 2002-05-05 22:39 Roman Festchook * common/file.c: now Associated Stations list may be saved to file ~/.stations. 2002-05-04 23:26 Roman Festchook * version: 0.9.5 * README.atmel: added description of most configuration options * Documentation: updated documentations * source tree: changed structure * ap-cnf: renamed to ap-atmel 2002-05-04 18:46 Roman Festchook * ap-nwn: added utility to config Compex WP11 2002-05-02 18:46 Roman Festchook * ap-atmel/auth.c: fixed mac number error when deleting addresses from list * snmp.c: now returned from agent oid accessible in program 2002-05-01 17:43 Roman Festchook * snmp.c: added support for Compex WP11 SNMP-agent 2002-05-01 13:01 Roman Festchook * FAQ: added FAQ 2002-04-30 16:40 Roman Festchook * src/ap-trapd.c: fixed bug with SettingPingIPAddress trap message 2002-04-27 00:17 Roman Festchook * src/sysinfo.c: added description for Regulation Domain 2002-04-23 21:12 Roman Festchook * version: 0.9 * src/test.c: finished test mode * docs: documentation updates 2002-04-23 19:00 Roman Festchook * src/radio.c: added option to enable/disable antennas * src/menu.c: small menu rearangement again:)) 2002-04-22 17:08 Roman Festchook * src/auth.c: fixed mac number error when deleting addresses from list * src/menu.c: small menu rearangement 2002-04-15 20:20 Kucherak Sergij, Roman Festchook * version: 0.8.2 * INSTALL, README.ap-cnf: added ukrainian docs 2002-04-15 20:01 Roman Festchook * src/aps.c: added displaying Link Quality and Signal Strenght 2002-04-14 23:18 Roman Festchook * src/stat.c: fixed bug, that cause unable to exit problem when can't to get Ethernet or Wireless stat * src/aps.c: addded showing Preambule and Wep, also fixed bug with displaying Network Type * src/test.c: added unknown OID (see doc/todo), test mode still not work * src/snmp.c: fixed some warnings from gcc version pre3 2002-04-14 00:12 Roman Festchook * src/ap-cnf.c: showing cursor when entering password/community in connect screen 2002-04-12 00:14 Roman Festchook * src/auth.c: fixed displaying and setting mac authorization status 2002-04-07 22:32 Roman Festchook * version: 0.8.1 * src/menu.c: added printing tips to all menu options 2002-04-07 13:52 Roman Festchook * src/Makefile: added 'install' option 2002-04-06 23:50 Roman Festchook * name: changed name to Access Point SNMP Utils for Linux * src/stat.c: added mac address displaying in SysInfo, correctly printed sysinfo string * README: splited docs at top level directory - added INSTALL and README.util, added additional info 2002-04-04 22:50 Roman Festchook * src/ap-trapd.c: after opening socket changed UID and GID to non root user, I think it's more secure; also added check from what enterprise this trap came * src/ap-cnf.c: added info about not displayed characters when entering password/community 2002-04-04 01:12 Roman Festchook * src: added info about retrieving/setting data on help string * src/aps.c: more informative help string * src/menu.c: option APs renamed to KnownAPs 2002-04-02 14:34 Roman Festchook * version: 0.8 * src/aps.c: more verbose info when searching for APs * README: added warnins about using Statistics/APs option and info about ap-trapd * src: code cleanups to remove some warning when compiling gcc 2.9x 2002-04-01 21:36 Roman Festchook * src/wlan.c: fixed bug with AP name lenght when setting AP name, this may cause ip address change like 192.168.97.32 => 0.192.168.97. So I think it's critical bug. 2002-03-31 22:58 Roman Festchook * src/wlan.c: fixed bug with ESSID lenght when setting ESSID, this make impossible to set ESSID in some cases * src/trapd.c: added SNMP traps processing daemon 2002-03-27 13:58 Roman Festchook * version: 0.7.6 * src/ap-mrtg: error reports fixes * src/power.c: power level settings changed, now optimal values may be experimentally choosed 2002-03-21 14:32 Roman Festchook * src/smnp.c: conection timeout fixes 2002-03-23 23:16 Roman Festchook * version: 0.7.5 * src/auth.c: fixed bug with mac addresses num = 65535, which mean 0, this may cause problems configuring absolutelly new AP * src/aps.c: more safe KnownAPs function - now it restores parameters after requesting known aps info * src/cmd.c: upload configuration fixes 2002-03-11 02:01 Roman Festchook * src/snmp.c: SNMP packets assembly rewriten to work correctly with packets which size more than 128 bytes 2002-03-09 02:15 Roman Festchook * version: 0.7.4 * src: more verbose parameters description, removed unused code * ap-cnf: added screen "About", just about me and my program:)) * ap-mrtg: errors printed in MRTG parsable format * TODO: new goals 2002-03-07 11:20 Roman Festchook * version: 0.7.3 * src/snmp.c: fixed bug with alarm handler * src/stat.c, src/auth.c: removed mac addresses limit, added option to save Associated Stations mac addresses to file. 2002-03-03 13:22 Roman Festchook * version: 0.7.2 * src: many small bugfixes and code cleanups * src/stat.c: Ethernet, Wireless and Wireless environment screens now refreshed every second with updated data * src/test.c: start working on test mode settings, but it not useful for now * README: new homepage url 2002-03-01 23:53 Roman Festchook * version: 0.7.1-pre * src/snmp.c: Wireless stat now count all packets not only Unicast * src/power.c: setting power level changes * README: changed info about setting power level 2002-02-28 00:52 Roman Festchook * src/snmp.c, src/ap-cnf.c, src/ap-mrtg.c: connect blocks fixes 2002-02-27 20:15 Roman Festchook * src/power.c: power level now displayed with some kind of graph 2002-02-26 14:22 Roman Festchook * version: 0.7 * src/wep.c: added Privacy settings, please test 2002-02-25 16:44 Roman Festchook * spelling: spelling heads up:)) (thanks Charles Henderson) 2002-02-25 14:35 Roman Festchook * version: 0.6.1 * src/ap-mrtg.c: added utility to use MRTG for create stats graphics * README: added info about using MRTG to request AP 2002-02-24 01:10 Roman Festchook * src/power.c: added Signal Power settings * README: added info about Signal Power settings * version: 0.6 2002-02-23 16:53 Roman Festchook * src/bridge.c: added SNMP Traps switch option * src/wireless.c: interface improvement when setting Basic and Supported rates * src/auth.c: socket to AP now opened in nonblock mode * src/snmp.c: disabled program halt when timeout data read from socket * TODO: new goals * THANKS: added 2002-02-21 22:52 Roman Festchook * src/bridge.c: fixed broken setting RemoteBSSID in no Access Point operational modes 2002-02-21 14:17 Roman Festchook * doc/: added some docs about setting signal power * doc/mib: added mibs from another APs * TODO: added setting signal power * README: added additional info * src/: new features - new code, version 0.5 2002-02-13 23:22 Roman Festchook * ChangeLog: There was no ChangeLog here, so I added one. ap-utils-1.5/Documentation/000077500000000000000000000000001117246662700157425ustar00rootroot00000000000000ap-utils-1.5/Documentation/FAQ000066400000000000000000000116161117246662700163010ustar00rootroot00000000000000Q: 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 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: 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 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 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'. ap-utils-1.5/Documentation/HARDWARE-NOTES000066400000000000000000000017031117246662700177510ustar00rootroot00000000000000Tellus A14 and its clones - IMPORTANT, READ CAREFULLY: ====================================================== Users of Tellus A14 and its OEM versions (Wline A14): Beware. The firmware 0.2.2.11 contains a SERIOUS BUG that may cause unpredictable damage, when the AP is configured over SNMP or even via its web interface, no matter if the manufacturer-recommended 0.0.1.15 version of SNMP manager, or AP-UTILS, are used. The only reliable way of (re)configuring the device is to either reconfigure it via the supplied USB utility (ver. 0.0.5.6), or use a different firmware in the AP, than 0.2.2.11 . At the moment, unfortunately, we may _NOT_ recommend anyone to use AP-UTILS to configure these devices. The progress of determining correct firmware that does not corrupt the contents of AP's flash memory once it is reconfigured, is underway, however, and as soon as such a firmware will be known, the relevant information will be posted here. ap-utils-1.5/Documentation/Makefile.am000066400000000000000000000017731117246662700200060ustar00rootroot00000000000000# # Makefile.am from Access Point SNMP Utils for Linux # # Copyright (c) 2002 Roman Festchook # # 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 # ## 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 ap-tftp.8 EXTRA_DIST = $(man_MANS) FAQ Ukrainian/* Ovislink-HOWTO.html HARDWARE-NOTES README.* mibs-atmel/* ap-utils-1.5/Documentation/Makefile.in000066400000000000000000000234421117246662700200140ustar00rootroot00000000000000# Makefile.in generated by automake 1.7.8 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Makefile.am from Access Point SNMP Utils for Linux # # Copyright (c) 2002 Roman Festchook # # 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 # srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSESLIBS = @CURSESLIBS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GENCAT = @GENCAT@ GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLBISON = @INTLBISON@ INTLLIBS = @INTLLIBS@ INTLOBJS = @INTLOBJS@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ ac_ct_CC = @ac_ct_CC@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ 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 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 CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = DIST_SOURCES = NROFF = nroff MANS = $(man_MANS) DIST_COMMON = $(srcdir)/Makefile.in Makefile.am all: all-am .SUFFIXES: $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Documentation/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: man8dir = $(mandir)/man8 install-man8: $(man8_MANS) $(man_MANS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(man8dir) @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ *.8*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ 8*) ;; \ *) ext='8' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst"; \ $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst; \ done uninstall-man8: @$(NORMAL_UNINSTALL) @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ *.8*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ 8*) ;; \ *) ext='8' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " rm -f $(DESTDIR)$(man8dir)/$$inst"; \ rm -f $(DESTDIR)$(man8dir)/$$inst; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) $(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 \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: $(mkinstalldirs) $(DESTDIR)$(man8dir) install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: info: info-am info-am: install-data-am: install-man install-exec-am: install-info: install-info-am install-man: install-man8 installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am uninstall-man uninstall-man: uninstall-man8 .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am info info-am install \ install-am install-data install-data-am install-exec \ install-exec-am install-info install-info-am install-man \ install-man8 install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-info-am uninstall-man uninstall-man8 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ap-utils-1.5/Documentation/Ovislink-HOWTO.html000066400000000000000000000261201117246662700213250ustar00rootroot00000000000000 Linux and Wireless Ovislink Airlive WL-1100AP/WL-1100PCM with Intersil Prism2 Chipset

Ovislink Airlive WL-1100AP Access Point
Ovislink Airlive WL-1100PCM PCMCIA Adapter




On this page you will a find a short guide on how to set up this wireless hardware under Linux.
I wrote it because when I searched google I found nothing about this Hardware.

All comments, suggestions etc. are welcome. Please contact me at wf-hp@gmx.net.


A few days ago I decided to get me a new toy. I bought a wireless LAN-Card together with an access-point (short AP) to avoid 20 metres of Twisted-Pair Cable lying through the corridors of my home.

I chose the Ovislink hardware, because on the box of the PCMCIA-card Linux was listed as an OS which supported the card. The manual of the AP which they allowed me to read in the shop said it had to be configured over SNMP. After doing a little research on google I found out, that chances were good this could be done with one of the programs from ap-utils. I hoped it would work, but I have to confess I would have also used Windows for the configuration, since the price was rather low and I badly wanted to have that thing.

I own a HP Omnibook XE3-GC (the old variant with the Savage-Chip) running Debian/sarge at the moment (in stable/woody the package ap-utils was not included) and a router running Debian/woody, which now got a second NIC (network interface card) to attach the AP.



Setting up the PCMCIA-Card

The WLAN-Card has a Prism2-Chip which is supported by linux-wlan-ng.
In this file I will only cover the relevant details for WLAN-Configuration. For the basics please refer to the PCMCIA-HOWTO.

I heard reports that this card also worked with orinoco_cs. I will continue to use prism2_cs since it is the 'official' driver-module offered by Ovislink, but I am interested in reports about using orinoco_cs, especially the differences to prism2_cs.

Things you need for compiling linux-wlan-ng:
- sources of linux-wlan-ng from http://www.linux-wlan.com
- sources of pcmcia-cs from http://pcmcia-cs.sourceforge.net
- sources of your linux kernel from http://www.kernel.org

For Debian-users: apt-get source linux-wlan-ng pcmcia-cs kernel-source-`uname -r`

Run ./Configure in the source-directory of pcmcia-cs.

Run ./Configure in the source-directory of linux-wlan-ng and answer the following question with yes:
Build Prism2.x PCMCIA Card Services (_cs) driver? (y/n) [y]: y

The other modules (PCI- and USB-drivers) are not needed.

Compile and install (as root) pcmcia-cs (if it is not installed yet) and linux-wlan-ng by running in both of the source-directories:
make && make install.

Add the following lines to the file /etc/pcmcia/config.opts. In case you are using Debian you can add it to /etc/pcmcia/wlan-ng.conf, since all *.conf-files in /etc/pcmcia/ are sourced from /etc/pcmcia/config.opts:

card "Intersil PRISM2 11 Mbps Wireless Adapter"
   manfid 0x0156, 0x0002
   bind "prism2_cs"

With this card-definition the card will be recognized correctly by cardmgr when it is inserted into the PCMCIA-slot and the module /lib/modules/`uname -r`/pcmcia/prism2_cs.o will be loaded.

Next you have to configure the files /etc/pcmcia/network.opts for the network-parameters of the WLAN-interface /dev/wlan0 and /etc/pcmcia/wlan-ng.opts for the WLAN-configuration itself. Both files are commented thoroughly and the names of the variables are rather self-explaining.


This is my /etc/pcmcia/wlan-ng.opts without the Comment-lines:
(YES, I changed my WEP-keys :-) )

============ Begin of File /etc/pcmcia/wlan-ng.opts ============
WLAN_VERSION=0
WLAN_PATCHLEVEL=1
WLAN_SUBLEVEL=15
WLAN_EXTRAVERSION=

case "$ADDRESS" in
wlannoenable,*,*,*)
    WLAN_ENABLE=n
;;
*,*,*,*)
    #=======WEP===========================================
    lnxreq_hostWEPEncrypt=true
    lnxreq_hostWEPDecrypt=true
    dot11PrivacyInvoked=true
    dot11WEPDefaultKeyID=0
    dot11ExcludeUnencrypted=true
    dot11WEPDefaultKey0=01:23:45:67:89:AB:CD:EF:00:00:00:00:00
    dot11WEPDefaultKey1=CC:CC:CC:CC:CC:CC:CC:CC:CC:CC:CC:CC:CC
    dot11WEPDefaultKey2=FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:F0
    dot11WEPDefaultKey3=00:00:00:00:00:00:00:00:00:00:00:00:0F

    #=======SELECT STATION MODE===================
    IS_ADHOC=n # y|n, y - adhoc, n - infrastructure

    #=======INFRASTRUCTURE STATION START===================
    AuthType="sharedkey"
    DesiredSSID="wlan"

    #=======ADHOC STATION START============================
    SSID="adhoc-wlan"
    BCNINT=100
    CHANNEL=6
    BASICRATES="2 4"
    OPRATES="2 4 11 22"
    ;;
esac
============ End of File /etc/pcmcia/wlan-ng.opts ============

The settings for ad-hoc-mode are untested, since I have not yet found anybody for testing.

The nickname of the card can be set with the following command:
wlancfg set wlan0
p2CnfOwnName=mynewnickname


This is my /etc/pcmcia/networks.opts without the Comment-lines:

============ Begin of File /etc/pcmcia/networks.opts ============
case "$ADDRESS" in
*,*,*,*)
    BOOTP="n"
    DHCP="n"
    PPPOE="n"
    WHEREAMI="n"
    IPADDR="192.168.1.1"
    NETMASK="255.255.255.0"
    IPMASQ="n"
    start_fn () { return; }
    stop_fn () { return; }
    NO_CHECK=n
    NO_FUSER=n
    ;;
esac
============ End of File /etc/pcmcia/networks.opts ============

In my case I did not have to set a gateway because I am running a 1024bit-encrypted VPN (from www.tinc.org) over the radio-connection which is my default route.



Setting up the Access-Point

Important Note: You can configure everything under Linux. No need to boot Windows.

Some interesting facts (which took me quite some time to find in the manual):
Default-IP-address: 192.168.0.1
Default-password: public
Needed Cable: straight TwistedPair-Cable when connected to a switch or hub, a crossover cable when connecting directly to a NIC (network interface card)

Download ap-utils from http://ap-utils.polesye.net/.

Compile the programs:
./configure
make && make install

Start the program ap-config.

Enter the default-IP-address of the AP (192.168.0.1), the default-password ('public') and choose 'AP type: ATMEL'
This should connect you to the AP.
If this does not work check your network and routing settings, especially the netmask

The configuration is explained in the manual that came with the AP.


Some oddities you may encounter:

The WEP saved in the AP will never displayed, even though they were entered and saved correctly. The only thing you can to ensure encryption works is testing it with a WLAN-card and checking it with wlancfg show wlan0


One really interesting feature of ap-config is the possibility of changing the radio power output of the AP:

This scale is everything I guessed so far. If you have any more details please let me know:

decimal number in ap-config

power output

128

100% (whatever this means in W)

255/0

50%

127

0%/off


Have fun!





© 2002 by Wolfgang Fuschlberger
last update: 2002-11-24

ap-utils-1.5/Documentation/README.RPM000066400000000000000000000002731117246662700172610ustar00rootroot00000000000000After this inclusion people should be able easily build .rpm themselves with: rpmbuild -tb ap-utils-1.3.4pre1.tar.gz Red Hat users will have to edit ~/.rpmmacros and add: %make %__make ap-utils-1.5/Documentation/Ukrainian/000077500000000000000000000000001117246662700176635ustar00rootroot00000000000000ap-utils-1.5/Documentation/Ukrainian/INSTALL000066400000000000000000000016501117246662700207160ustar00rootroot00000000000000¶ÎÓÔÒÕËÃ¦Ñ ÐÏ ¦ÎÓÔÁÌÑæ§ ------------------------- 1. úÍ¦Î¦ÔØ (ÐÅÒÅצÒÔÅ) ÎÁÌÁÛÔÕ×ÁÎÎÑ × `Makefile' ÐiÄ ×ÁÛÕ ÓÉÓÔÅÍÕ. 2. äÌÑ ËÏÍЦÌÑæ§ ÐÁËÅÔÕ ÎÁÂÅÒ¦ÔØ `make' . 3. äÁÌi ×ÉËÏÎÁÊÔÅ 'make install', ÄÌÑ ¦ÎÓÔÁÌÑæ§ ÕÔ¦Ì¦Ô × ÄÉÒÅËÔÏÒ¦À '/usr/local/bin'. äÌÑ ÃØÏÇÏ ×ÁÍ ÐÏÔÒ¦ÂÎÏ ÍÁÔÉ ÐÒÁ×Á root. 4. ÷É ÍÏÖÅÔÅ ÓÔÅÒÔÉ Â¦ÎÁÒΦ ÔÁ ÏÂ'¤ËÔΦ ÆÁÊÌÉ Ú `src` ÄÉÒÅËÔÏÒ¦§ ×ÉËÏÎÁ×ÛÉ `make clean' × ÄÉÒÅËÔÏÒ¦§ `src'. îÅÏÂȦÄΦ ËÏÍÐÏÎÅÎÔÉ ------------ äÌÑ ËÏÍЦÌÑæ§ ÔÁ ÚÁÐÕÓËÕ ÐÒÏÇÒÁÍ ap-utils ×ÁÍ ÎÅÏÂȦÄÎÏ ÍÁÔÉ ¦ÎÓÔÁÌØÏ×ÁÎÕ Â¦Â̦ÏÔÅËÕ ncurses × ×ÁÛ¦Ê ÓÉÔÅͦ. â¦ÌØÛ¦ÔØ ÄÉÓÔÒÉÂÕÃ¦Ê ì¦ÎÕËÓ ÍÁÀÔØ × ÓϦ ÃÀ ¦Â̦ÏÔÅËÕ , ÑËÝÏ × ×ÁÛ¦Ê ÓÉÓÔÅͦ ÃÑ Â¦Â̦ÏÔÅËÁ צÄÓÕÔÎÑ , ×É ÍÏÖÅÔÅ ×ÚÑÔÉ §§ Ú: ftp://ftp.gnu.org/gnu/ncurses/ ftp://dickey.his.com/ncurses/ ôÁËÏÖ ×ÁÍ ÐÏÔÒ¦ÂÅÎ gcc ËÏÍЦÌÑÔÏÒ Ú GNU Compiler Collection. êÏÇÏ ÍÏÖÎÏ ×ÚÑÔÉ Ú ÎÁÓÔÕÐÎÉÈ ÓÁÊÔ¦×: ftp://gcc.gnu.org/pub/gcc/releases/ ftp://ftp.gnu.org/gnu/gcc/ http://gcc.gnu.org/mirrors.html ap-utils-1.5/Documentation/Ukrainian/README000066400000000000000000000015701117246662700205460ustar00rootroot00000000000000äÌÑ ×ÓÔÁÎÏ×ÌÅÎÎÑ ÍÁËÓÉÍÁÌØÎϧ ÐÏÔÕÖÎÏÓÔ¦ ÄÌÑ ×ÁÛÏÇÏ AP ×ÓÔÁÎÏ×¦ÔØ ÚÎÁÞÅÎÎÑ ÄÌÑ ÎÅÏÂȦÄÎÏÇÏ ËÁÎÁÌÕ × 128 (0x80). ! ðÒÏÔÅ ÞÁÓÏÍ ËÒÁÝÅ Ò¦ÛÅÎÎÑ - ÅËÓÐÅÒÅÍÅÎÔÁÌØÎÏ ×ÉÚÎÁÞÉÔÉ ÚÎÁÞÅÎÎÑ ! ÐÒÉ ËÒÁÝ¦Ê ÑËÏÓÔ¦ Ú×'ÑÚËÕ, ÎÅ ÚÁ×ÖÄÉ ×ÏÎÏ ÂÕÄÅ ÍÁËÓÉÍÁÌØÎÅ. â¦ÌØÛÅ ¦ÎÆÏÒÍÁæ§ ×É ÍÏÖÅÔŠĦÚÎÁÔÉÓÑ Ú: http://pasadena.net/aprf/; http://www.wi2600.org/mediawhore/nf0/wireless/docs/802.11/WAP11/fun_with_the_wap11.txt; http://desync.com/linksys. áÓÏæÊÏ×ÁΦ ÓÔÁÎæ§ ---------------- ú ×ÅÒÓ¦§ 0.7.3-pre1 Ú'Ñ×ÉÌÁÓØ ÍÏÖÌÉ×iÓÔØ ÚÁÐÉÓÕ×ÁÔÉ ÓÐÉÓÏË MAC ÁÄÒÅÓ ÓÔÁÎÃ¦Ê Õ ÆÁÊÌ ~/ap-nwn.stations. ÷¦ÄÏͦ AP ------------------ ÷ÉËÏÒÉÓÔÏ×ÕÀÞÉ ÃÀ ÏÐæÀ AP Ú ÍÅÎÀ ÓÔÁÔÉÓÔÉËÉ ×É ÍÏÖÅÔÅ ÂÁÞÉÔÉ ×Ó¦ Access Points Ñ˦ ×ÉÄÎÏ Ú ×ÁÛÏÇÏ AP. ! õ÷áçá!!! ÷ÉËÏÒÉÓÔÁÎÎÑ Ã¦¤§ ÏÐæ§ ÎÅÂÅÚÐÅÞÎÏ - ×É ÍÏÖÅÔÅ ÚÁÇÕÂÉÔÉ ×ÁÛ¦ ! ÎÁÌÁÛÔÕ×ÁÎÎÑ. õ SMC 2655W , ÄÌÑ ×ÉÐÒÁ×ÌÅÎÎÑ Ã¦¤§ ÓÉÔÕÁæ§ ÎÅÏÂȦÄÎÏ ! צÄÎÏ×ÉÔÉ ÚÁ×ÏÄÓØË¦ ÎÁÌÁÛÔÕ×ÁÎÎÑ. ap-utils-1.5/Documentation/ap-auth.8000066400000000000000000000033421117246662700173740ustar00rootroot00000000000000.\" Manpage for ap-auth utility .\" from Wireless Access Point Utilitess for Unix .\" .\" Copyright (c) 2002 Roman Festchook .\" .\" 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-auth 8 "Wireless Access Point Utilites for Unix" .SH NAME ap-auth \- AP authorized MAC change utility .SH SYNOPSIS .B ap-auth .B -i .IR ip .B -c .IR community .B -u .IR filename .B -d .IR filename .SH DESCRIPTION .B ap-auth A command line utility to change the list of authorised MAC addresses. It has only support for ATMEL410. .br -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 .SH OPTIONS .TP .B -i ip AP ip address .TP .B -c community SNMP community string .TP .B -d filename download list of authorised MAC addresses from AP to a file .TP .B -u filename upload list of authorised MAC addresses from a file to AP .SH AUTHOR Roman Festchook Teemu Kiviniemi teemuki at fotokone.fi .br http://ap-utils.polesye.net .SH SEE ALSO ap-config(8), ap-trapd(8), ap-gl(8), ap-mrtg(8) ap-utils-1.5/Documentation/ap-config.8000066400000000000000000000265611117246662700177100ustar00rootroot00000000000000.\" Manpage for ap-config utility .\" from Wireless Access Point Utilitess for Unix .\" .\" Copyright (c) 2002 Roman Festchook .\" .\" 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-config 8 "Wireless Access Point Utilites for Unix" .SH NAME ap-config \- configure and monitor Atmel and NWN based APs .SH SYNOPSIS .B ap-config .SH DESCRIPTION .B ap-config to config and get stats from Atmel-chipset based AP with ATMEL Private MIB support. .SH MENU .PP .B Info/ .TP .B SysInfo Get info about AP hardware and software .TP .B Ethernet This option displays the Ethernet statistics for your reference. .TP .B Wireless 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 ~/.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. .TP .B KnownAP By using option APs from info menu you may see all Access Points thats visible by your AP. * Link Quality: An indicator for the quality of the Client. If the associat ion 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'. * RSSI: An indicator for the RSSI in dBm 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. * WARNING! By reports this option my be dangerously - in some cases you may lost you AP configuration and on SMC2655W the one way to fix it - only restore factory defaults. .PP .B Config/ .TP .B Bridging IP configuration - If the server site supports DHCP function and the DHCP Enable box is ticked; the IP address of an access point will be automatically displayed and assigned; otherwise, you need to key in an IP address now. The primary port provides a wired or wireless method to change the access point setting. If the Ethernet option is ticked, the setting of an access point can be done through Ethernet. If the Wireless option is ticked, the access point function can be set through a wireless station. Wireless station means a laptop PC or a desktop PC equipped with an IEEE802.11b PCMCIA card or USB dongle. Enable SNMP Traps enables the SNMP trap function. You can view the records by using ap-trapd utility. You are allowed to set your access point to be used as Access point, Access point client, or Wireless bridge. * Access Point - An internetworking device that seamlessly connects wired and wireless networks together. * Wireless bridge Point to point - The point-to-point wireless bridge configuration uses two Wireless Bridge units to connect two separate LANs. You must to fill in the Remote MAC Address before your bridge-function-enable access point can work with it. * Point to multipoint - When connecting three to more separate LANs, each LAN located building requires a wireless bridge. This is called Multipoint wireless bridge and again requires one Master bridge unit and two or more Slave bridge units as required. If the point-to-multipoint option is selected, your bridge-function-enable access point will designate as a Mater and to work with it, others bridges need to be set as a point-to-point bridge and enter the MAC address of the mater access point. .TP .B Wireless You can give your access point a name and give it an ESSID (Extended Service Station ID), which can allow other wireless stations, which knows the ESSID, to link with it. .TP .B Privacy The Privacy options allow you to enable 64-bit or 128-bit WEP (wired equivalent privacy) encryption. If an encryption function is not needed, you can just simply tick on the Disable box to disable it. If the 64-bit or 128-bit encryption function is enabled, there are four sets of key need to be filled into the blanket boxes. For the 64-bit encryption, each key is required to enter 5 Hex digits. For example: 11 22 33 44 55. The 128-bit encryption requires each key to enter 13 Hex digits. For example: 12 34 56 78 9A BC DE F0 11 22 33 44 55. .br NOTE! The WEP keys you enter are really accepted and written to the AP, permanently if you do an Upload from the Commands menu after setting them. However, the new key values are not echoed to the user when you return to the Privacy settings under the Config menu. This is a security feature of SNMP implementation in this hardware. .TP .B Authorized MAC address For security or management purpose, you can edit a list of authorized MAC addresses, which are allowed to view or modify the setting of an access point. Authorization Table Enable option allows you to enable or disable this function. .TP .B Community The Community configuration allow you to set a phrase for administrator and manufacturer community and a phrase for user community. If a user knows the phrase of administrator, he/she is authorized to change the setting of an access point. If a user only knows about the phrase of a user community; he/she is allowed to view the setting of an access point but is not allowed to change the setting. .TP .B Radio Under the Radio user will be able to set or get the Transmitting Powervalues, for the Control Register 31 of the Baseband, for each channel. Reg CR31: Under this option user defines a value for the transmitted power (Value for the Control register 31 of the baseband) and it must be in the range 128 (max) to 255 (min) in Decimal form. Starting from version 0.6 of Access Point SNMP Config utility it's possible to set power output level for your AP. You may set signal power output in range from 0mw to 100mw by setting value for corresponding channel from 0 to 255 (0xFF). The scale is as follows: .BR Value: 00----------128--------255 .br Power: 0mw--------100mw-------0mw .br So to get maximum power output from your AP set value for corresponding channel to 128 (0x80). But sometimes better solution - experimentalli choose values for best link quality, sometimes not max. More info you can get from: http://pasadena.net/aprf/; http://www.wi2600.org/mediawhore/nf0/wireless/docs/802.11/WAP11/fun_with_the_wap11.txt. .TP .B Advanced .PP StationDBTimeout: This object specifies a timeout on entries and their state information in the Station database. For Clients the Station database is mapped on the roamTable. For Access Points, the Station database is mapped on the assocTable. The timeout is in seconds. .PP ACKWindow: The ACK frame time out defined in number of slottimes. This can be used to optimize long range links. .PP .B Commands/ .TP .B Upload After you ve changed any value or setting of an access point through the SNMP config utility. You must come back to this option to make the new changes and setting s validated. Also, only an administrator and manufacturer is allowed to do such changes. .TP .B Defaults Restore factory default configuration. .TP .B Reset Reset AP. All changed and not uploaded settings will be lost. .TP .B TestMode/ When user selects the Tests option a form will appear indicating a number of parameter needed to be set by the user in order to perform the Radio test. Antenna: Under this option we specify the antenna to be tested (A, B). Tx Filter: Under this option user needs to select the Baseband transmitting Filter to be used. There are two options (US, JPN) available since the bandwidth for Europe - USA is 11MHz and for, Japan is 14MHz. Rate: Under this option user needs to specify the rate to be used among the following options 1Mbps, 2Mbps, 5.5Mbps and 11Mbps. Channel: Under this option user needs to select the channel to be used. There are 14 channels available. After setting the parameters there are three commands available: Continuous Tx (With modulation), Continuous Tx (Witout modulation) and Continuous Rx: * Continuous Tx (with modulation): Using this command the MAC sets the transmitter in continuous mode with modulation. We can measure the output power of the radio. * Continuous Tx (without modulation): Using this command we can measure the frequency accuracy of the radio. The MAC sets the baseband Processor in test mode and turns off the spreading and scrambling codes. * Continuous Rx: With this command user can set the device in a receiving mode. Note: In order to perform the above test user needs to have a Spectrum Analyzer connected. .TP .B Connect/ In order to make a connection with Access Point user needs to set two parameters. The IP Address of the Access Point and the Community name (default 'public'). .TP .B Search/ Find connected Access Points. Search for WNW APs only works if community set to right AP community. It's useful if you know community but dont know what ip your AP got from DHCP server. You must have support for multicasting enabled in kernel. .TP .B About/ About function shows the Wireless Access Point Configurator for Unix version and short info. .TP .B Shell/ Run subshell. To return type 'exit' .SH NAVIGATION KEYS In case you unable to use cursor keys to menu navigate - try to use "h" to go left, "j" to go down, "k" to go up, "l" to go right, like vi editor. .SH AUTHOR Roman Festchook .br http://ap-utils.polesye.net .SH SEE ALSO ap-trapd(8), ap-mrtg(8) ap-utils-1.5/Documentation/ap-gl.8000066400000000000000000000260321117246662700170360ustar00rootroot00000000000000.\" Manpage for ap-gl utility .\" from Wireless Access Point Utilitess for Unix .\" .\" Copyright (c) 2002 Roman Festchook .\" .\" 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-gl 8 "Wireless Access Point Utilites for Unix" .SH NAME ap-gl \- configure and monitor ATMEL_PRISM based APs .SH SYNOPSIS .B ap-gl .SH DESCRIPTION .B ap-gl to config and get stats from Atmel-chipset based AP with ATMEL_PRISM Private MIB support. .SH MENU .PP .B Info/ .TP .B SysInfo Get info about AP hardware and software .TP .B Ethernet This option displays the Ethernet statistics for your reference. .TP .B Wireless 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 ~/.stations. 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. * Link Quality: An indicator for the quality of the Client. If the associat ion 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'. * RSSI: An indicator for the RSSI in dBm 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. * WARNING! By reports this option my be dangerously - in some cases you may lost you AP configuration and on SMC2655W the one way to fix it - only restore factory defaults. .PP .B Config/ .TP .B Bridging IP configuration - If the server site supports DHCP function and the DHCP Enable box is ticked; the IP address of an access point will be automatically displayed and assigned; otherwise, you need to key in an IP address now. The primary port provides a wired or wireless method to change the access point setting. If the Ethernet option is ticked, the setting of an access point can be done through Ethernet. If the Wireless option is ticked, the access point function can be set through a wireless station. Wireless station means a laptop PC or a desktop PC equipped with an IEEE802.11b PCMCIA card or USB dongle. Enable SNMP Traps enables the SNMP trap function. You can view the records by using ap-trapd utility. You are allowed to set your access point to be used as Access point, Access point client, or Wireless bridge. * Access Point - An internetworking device that seamlessly connects wired and wireless networks together. * Wireless bridge Point to point - The point-to-point wireless bridge configuration uses two Wireless Bridge units to connect two separate LANs. You must to fill in the Remote MAC Address before your bridge-function-enable access point can work with it. * Point to multipoint - When connecting three to more separate LANs, each LAN located building requires a wireless bridge. This is called Multipoint wireless bridge and again requires one Master bridge unit and two or more Slave bridge units as required. If the point-to-multipoint option is selected, your bridge-function-enable access point will designate as a Mater and to work with it, others bridges need to be set as a point-to-point bridge and enter the MAC address of the mater access point. .TP .B Wireless You can give your access point a name and give it an ESSID (Extended Service Station ID), which can allow other wireless stations, which knows the ESSID, to link with it. .TP .B Privacy The Privacy options allow you to enable 64-bit or 128-bit WEP (wired equivalent privacy) encryption. If an encryption function is not needed, you can just simply tick on the Disable box to disable it. If the 64-bit or 128-bit encryption function is enabled, there are four sets of key need to be filled into the blanket boxes. For the 64-bit encryption, each key is required to enter 5 Hex digits. For example: 11 22 33 44 55. The 128-bit encryption requires each key to enter 13 Hex digits. For example: 12 34 56 78 9A BC DE F0 11 22 33 44 55. .br NOTE! The WEP keys you enter are really accepted and written to the AP, permanently if you do an Upload from the Commands menu after setting them. However, the new key values are not echoed to the user when you return to the Privacy settings under the Config menu. This is a security feature of SNMP implementation in this hardware. .TP .B Authorized MAC address For security or management purpose, you can edit a list of authorized MAC addresses, which are allowed to view or modify the setting of an access point. Authorization Table Enable option allows you to enable or disable this function. .TP .B Community The Community configuration allow you to set a phrase for administrator and manufacturer community and a phrase for user community. If a user knows the phrase of administrator, he/she is authorized to change the setting of an access point. If a user only knows about the phrase of a user community; he/she is allowed to view the setting of an access point but is not allowed to change the setting. .TP .B Radio Under the Radio user will be able to set or get the Transmitting Powervalues, for the Control Register 31 of the Baseband, for each channel. Reg CR31: Under this option user defines a value for the transmitted power (Value for the Control register 31 of the baseband) and it must be in the range 128 (max) to 255 (min) in Decimal form. Starting from version 0.6 of Access Point SNMP Config utility it's possible to set power output level for your AP. You may set signal power output in range from 0mw to 100mw by setting value for corresponding channel from 0 to 255 (0xFF). The scale is as follows: .BR Value: 00----------128--------255 .br Power: 0mw--------100mw-------0mw .br So to get maximum power output from your AP set value for corresponding channel to 128 (0x80). But sometimes better solution - experimentalli choose values for best link quality, sometimes not max. More info you can get from: http://pasadena.net/aprf/; http://www.wi2600.org/mediawhore/nf0/wireless/docs/802.11/WAP11/fun_with_the_wap11.txt. .PP .B Commands/ .TP .B Upload After you ve changed any value or setting of an access point through the SNMP config utility. You must come back to this option to make the new changes and setting s validated. Also, only an administrator and manufacturer is allowed to do such changes. .TP .B Defaults Restore factory default configuration. .TP .B Reset Reset AP. All changed and not uploaded settings will be lost. .TP .B TestMode/ When user selects the Tests option a form will appear indicating a number of parameter needed to be set by the user in order to perform the Radio test. Antenna: Under this option we specify the antenna to be tested (A, B). Tx Filter: Under this option user needs to select the Baseband transmitting Filter to be used. There are two options (US, JPN) available since the bandwidth for Europe - USA is 11MHz and for, Japan is 14MHz. Rate: Under this option user needs to specify the rate to be used among the following options 1Mbps, 2Mbps, 5.5Mbps and 11Mbps. Channel: Under this option user needs to select the channel to be used. There are 14 channels available. After setting the parameters there are three commands available: Continuous Tx (With modulation), Continuous Tx (Witout modulation) and Continuous Rx: * Continuous Tx (with modulation): Using this command the MAC sets the transmitter in continuous mode with modulation. We can measure the output power of the radio. * Continuous Tx (without modulation): Using this command we can measure the frequency accuracy of the radio. The MAC sets the baseband Processor in test mode and turns off the spreading and scrambling codes. * Continuous Rx: With this command user can set the device in a receiving mode. Note: In order to perform the above test user needs to have a Spectrum Analyzer connected. .TP .B Connect/ In order to make a connection with Access Point user needs to set two parameters. The IP Address of the Access Point and the Community name (default 'public'). .TP .B Search/ Find connected Access Points. Search for WNW APs only works if community set to right AP community. It's useful if you know community but dont know what ip your AP got from DHCP server. You must have support for multicasting enabled in kernel. .TP .B About/ About function shows the Wireless Access Point Configurator for Unix version and short info. .TP .B Shell/ Run subshell. To return type 'exit' .SH NAVIGATION KEYS In case you unable to use cursor keys to menu navigate - try to use "h" to go left, "j" to go down, "k" to go up, "l" to go right, like vi editor. .SH AUTHOR Roman Festchook .br http://ap-utils.polesye.net .SH SEE ALSO ap-trapd(8), ap-mrtg(8), ap-config(8) ap-utils-1.5/Documentation/ap-mrtg.8000066400000000000000000000111301117246662700173760ustar00rootroot00000000000000.\" Manpage for ap-mrtg utility .\" from Wireless Access Point Utilitess for Unix .\" .\" Copyright (c) 2002 Roman Festchook .\" .\" 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-mrtg 8 "Wireless Access Point Utilites for Unix" .SH NAME ap-mrtg \- AP to MRTG data translator .SH SYNOPSIS .B ap-mrtg .B -i .IR ip .B -c .IR community .B -t .IR type .B [-b .IR bssid .B ] .B [-v] .B [-r] .B [-h] .SH DESCRIPTION .B ap-mrtg get stats from AP and return it in MRTG parsable format. .br The Multi Router Traffic Grapher (MRTG) is a tool to monitor the traffic load on network-links. MRTG generates HTML pages containing graphical images which provide a LIVE visual representation of this traffic. You may get it from: http://people.ee.ethz.ch/~oetiker/webtools/mrtg/. .SH OPTIONS .TP .B -i ip AP ip address .TP .B -c community SNMP community string .TP .B -t type Statistics type ireless, thernet, associated tations or ink quality in client mode; .TP .B -b bssid Mac address of the AP to which get link quality. .TP .B -v report MRTG about problems connecting to AP - if you want to get report about when AP spot work enable it .TP .B -r reset AP when getting LinkQuality stats .TP .B -h print help screen .SH MRTG Configuration Example Simple mrtg.cfg for get stats from Atmel based AP: .nf Target[ap_e]: `/usr/local/bin/ap-mrtg -i 192.168.0.1 -c "public" -t ethernet -v` Options[ap_e]: noinfo, growright, bits MaxBytes[ap_e]: 12500 Title[ap_e]: Traffic Analysis for AP Ethernet port PageTop[ap_e]:

Traffic Analysis for AP Ethernet port

Target[ap_w]: `/usr/local/bin/ap-mrtg -i 192.168.0.1 -c "public" -t wireless -v` Options[ap_w]: noinfo, growright, perminute ShortLegend[ap_w]: pkt/min MaxBytes[ap_w]: 100000000 Legend1[ap_w]: Packets In Legend2[ap_w]: Packets Out YLegend[ap_w]: packets/min Title[ap_w]: Traffic Analysis for AP Wireless port PageTop[ap_w]:

Traffic Analysis for AP Wireless port

Target[ap_s]: `/usr/local/bin/ap-mrtg -i 192.168.0.1 -c "public" -t stations -v` Options[ap_s]: growright, gauge, noinfo ShortLegend[ap_s]: stations MaxBytes[ap_s]: 10 YTics[ap_s]: 10 Legend2[ap_s]: none Legend1[ap_s]: Associated Stations YLegend[ap_s]: Associated Stations Title[ap_s]: Traffic Analysis for AP Associated Stations PageTop[ap_s]:

Traffic Analysis for AP Associated Stations

LegendO[ap_s]: none LegendI[ap_s]: Associated Stations .fi .SH Link Quality stats If the AP is not in client mode, it errors out. Grabbing the signal strength resets the ethernet and wireless stats and AP. It's .B safe do not use this type of stat. .BR Optionally you may set mac address (bssid) of the AP to which getting link quality stats, by default used first returned AP. .BR Simple mrtg.cfg for get stats from Atmel based AP with Link Quality and reset stats: .nf Target[ap_e]: `/usr/local/bin/ap-mrtg -i 192.168.0.1 -c "public" -t ethernet -v` Options[ap_e]: noinfo, growright, bits, gauge MaxBytes[ap_e]: 12500 Title[ap_e]: Traffic Analysis for AP Ethernet port PageTop[ap_e]:

Traffic Analysis for AP Ethernet port

Target[ap_w]: `/usr/local/bin//ap-mrtg -i 192.168.0.1 -c "public" -t wireless -v` Options[ap_w]: noinfo, growright, perminute, gauge ShortLegend[ap_w]: pkt/min MaxBytes[ap_w]: 100000000 Legend1[ap_w]: Packets In Legend2[ap_w]: Packets Out YLegend[ap_w]: packets/min Title[ap_w]: Traffic Analysis for AP Wireless port PageTop[ap_w]:

Traffic Analysis for AP Wireless port

Target[EdAP_s]: `/usr/local/bin/ap-mrtg -i 192.168.0.1 -c "public" -t link -b FFFFFFFF -v -r` MaxBytes[EdAP_s]: 100 Options[EdAP_s]: noinfo,growright,integer,unknaszero,nopercent,gauge Title[EdAP_s]: Signal Analysis for EdAP Wireless port YLegend[EdAP_s]: Signal Strength dBm/Quality ShortLegend[EdAP_s]: dBm PageTop[EdAP_s]:

Signal/Quality Strength for EdAP

LegendI[EdAP_s]: Signal Quality LegendO[EdAP_s]: Signal Strength in dBm .fi .SH AUTHOR Roman Festchook .br http://ap-utils.polesye.net .SH SEE ALSO ap-config(8), ap-trapd(8) ap-utils-1.5/Documentation/ap-tftp.8000066400000000000000000000311451117246662700174120ustar00rootroot00000000000000.\" Manpage for ap-tftp utility .\" from Wireless Access Point Utilitess for Unix .\" .\" Copyright (c) 2004-2005 Jan Rafaj .\" .\" 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 .br http://ap-utils.polesye.net .SH SEE ALSO ap-config(8), ap-trapd(8), ap-auth(8), ap-mrtg(8) ap-utils-1.5/Documentation/ap-trapd.8000066400000000000000000000074741117246662700175570ustar00rootroot00000000000000.\" Manpage for ap-trapd utility .\" from Wireless Access Point Utilitess for Unix .\" .\" Copyright (c) 2002 Roman Festchook .\" .\" 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-trapd 8 "Wireless Access Point Utilites for Unix" .SH NAME ap-trapd \- a SNMP trap processing daemon .SH SYNOPSIS .B ap-trapd .B [ -i .IR device .B ] [-u .IR user .B ] [-s] .SH DESCRIPTION .B ap-trapd It's a SNMP trap processing daemon that accepts traps, parse them and store useful data using syslog, at logging LEVEL0. Specify .IR device to listen for SNMP traps on the particular device (this option only works at Linux). To be running by user different from nobody you may specify .IR user. .br To correct work with Smartbridges APs specify .IR -s key (they use specific traps). .br Utility added to ap-utils from version 0.8. .SH SYSLOG To store traps to own log file you may add next string to your .B /etc/syslog.conf .br local0.* /var/log/ap-traps.log .br After doing it, just restart syslogd with command like .br killall -HUP syslogd .SH TRAPS When a trap is received, a message will be logged indicating that an action happened to the Access Point such as: .TP Trap Reassociation: This trap message is sent when a Station reassociation request is received from Access Point. .TP Trap Association: Indicates the reception of an association request packet and the sender Station's successful association with the Access Point. .TP Trap Disassociation: This trap message is sent when a disassociation notification packet is received from a Station. .TP Trap Reset: This trap message is sent when Access Point Resets. .TP Trap Setting IP Address with Ping: This trap message is sent when the Access Point IP address is set with the transmission of a ping message. .TP Trap Start Up: This trap message is sent when the Access Point Starts Up. .TP Trap Failed To Erase Flash: This trap message is sent when Access Point Failed To Erase Flash. .TP APClientScanning Access Point Client is scanning... .TP APClientAuthenticating Access Point Client is authenticating with the AP. .TP APClientAssociating Access Point Client is associating with the AP. .TP APClientReAssociating Access Point Client is reassociating with the AP. .TP APClientAuthenticationFailed Access Point Client has failed authenticating with the AP. .TP APClientAssociationFailed Access Point Client has failed associating with the AP. .TP APClientConnected Access Point Client has been connected with the AP. .TP APClientDisconnected Access Point Client has been disconnected from the AP. .TP APClientScanFailed Access Point Client has failed scanning! .TP APClientJoinFailed Access Point Client has failed joining! .TP APClientJoining Access Point Client is in join state. .SH Smartbridges specific TRAPS .TP MultiAttachedStation Multiple attached stations in the ethernet size .TP .SH SECURITY Utility ap-trapd must be running by 'root', after opening port utility change owner to 'nobody', so this user must exist in you system. You may set .IR user using -u option as described below for change default unprivileged user. .SH AUTHOR Roman Festchook .br http://ap-utils.polesye.net .SH SEE ALSO ap-config(8), ap-mrtg(8), syslogd(8) ap-utils-1.5/Documentation/mibs-atmel/000077500000000000000000000000001117246662700177745ustar00rootroot00000000000000ap-utils-1.5/Documentation/mibs-atmel/README000066400000000000000000000002021117246662700206460ustar00rootroot00000000000000This is a collection of different AP firmware "reference prototype" MIBs, that are (or are planned to be) supported by ap-utils. ap-utils-1.5/Documentation/mibs-atmel/mib-12350-ezynet/000077500000000000000000000000001117246662700225275ustar00rootroot00000000000000ap-utils-1.5/Documentation/mibs-atmel/mib-12350-ezynet/AT76C510.mib000066400000000000000000001130401117246662700242310ustar00rootroot00000000000000-- 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 "First 92 bytes of Hardware device configuration struct. HARD_CONFIGURATION_STUCT{ unsigned long StructVersion; unsigned char MacAddress[6]; unsigned char Channel; unsigned char RegulatoryDomain; unsigned long ProductType; unsigned char OEMname[32]; unsigned long OEMID; unsigned char ProductName[32]; unsigned long HardwareRevision; unsigned char PID_VID[4]; //Product ID/ Vendor ID unsigned int sysOIDSize; unsigned short sysOID[16]; unsigned char CountryCode[3]; unsigned char Reserved1; unsigned short ChannelInformation; unsigned char Reserved2[2]; char TxPower[14]; unsigned char Reserved3[10]; } " ::= {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 } sysDeviceMoreInfo OBJECT-TYPE SYNTAX OCTET STRING (SIZE (32)) ACCESS read-write STATUS mandatory DESCRIPTION "Last 32 bytes of Hardware device configuration struct. HARD_CONFIGURATION_STUCT{ unsigned long StructVersion; unsigned char MacAddress[6]; unsigned char Channel; unsigned char RegulatoryDomain; unsigned long ProductType; unsigned char OEMname[32]; unsigned long OEMID; unsigned char ProductName[32]; unsigned long HardwareRevision; unsigned char PID_VID[4]; //Product ID/ Vendor ID unsigned int sysOIDSize; unsigned short sysOID[16]; unsigned char CountryCode[3]; unsigned char Reserved1; unsigned short ChannelInformation; unsigned char Reserved2[2]; char TxPower[14]; unsigned char Reserved3[10]; } " ::= {sysCtrlGRP 8 } -----------------------------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 } operTrapPort OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "This attribute indicates the Trap port." ::= { operBridgingLevel 8 } -----------------------------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 } operBeaconPeriod OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "." ::= {OperationalSettingsGRP 14 } operDTIM OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "." ::= {OperationalSettingsGRP 15 } operSIFSTIME OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "." ::= {OperationalSettingsGRP 16 } -----------------------------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 (104)) ACCESS read-only STATUS mandatory DESCRIPTION "Wireless Statistics. 26 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; unsigned long TransmittedPackets_11Mbps; unsigned long TransmittedPackets_55Mbps; unsigned long TransmittedPackets_2Mbps; unsigned long TransmittedPackets_1Mbps; } " ::= {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 Index; unsigned char MacAddress[6]; unsigned char Status; unsigned char Port; unsigned char ParentMacAddress[6]; unsigned char RSSI; unsigned char IP[4]; unsigned char Reserved1[3]; } " ::= { AssociatedStationsGRP 2 } -------------------------------Authorized Mac Addresses---------------------- AuthorizedMacAddressesGRP OBJECT IDENTIFIER ::= {wireless 6} AuthorizationMacEnable OBJECT-TYPE SYNTAX INTEGER (1..3) ACCESS read-write STATUS mandatory DESCRIPTION "When setting this attribute to 1, the Authorization Mac Address Table will be enabled in allow mode. When setting this attribute to 3, the Authorization Mac Address Table will be enabled in deny mode." ::= {AuthorizedMacAddressesGRP 1} AuthorizedMac OBJECT-TYPE SYNTAX OCTET STRING (SIZE (12)) ACCESS read-write STATUS mandatory DESCRIPTION "The Authorized Wireless Mac Addresses AuthorizedMacTableString{ unsigned sort Action; //Set 0x01 or Get 0x02 unsigned sort NumOfAllTableAddresses; unsigned sort 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 } NetworkSettings OBJECT-TYPE SYNTAX OCTET STRING (SIZE (56)) ACCESS read-only STATUS mandatory DESCRIPTION "Network Settings. struct NETWORK_SETTINGS { 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; }" ::= {WLKnownAPGRP 4} -----------------------------Advanced Privacy----------------------------- AdvancedPrivacyGRP OBJECT IDENTIFIER ::= { wireless 8 } Dot1xEnable OBJECT-TYPE SYNTAX INTEGER {enable(1),disable(2), mixed environment(3)} ACCESS read-write STATUS mandatory DESCRIPTION "." ::= {AdvancedPrivacyGRP 1} BroadcastKeyPeriod OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "." ::= {AdvancedPrivacyGRP 2} ServerIP OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory DESCRIPTION "." ::= {AdvancedPrivacyGRP 3} ServerSecret OBJECT-TYPE SYNTAX OCTET STRING (SIZE (16)) ACCESS write-only STATUS mandatory DESCRIPTION "." ::= {AdvancedPrivacyGRP 4} -----------------------------Device Info----------------------------- DeviceInfoGRP OBJECT IDENTIFIER ::= { wireless 9 } UpTime OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The Device Uptime." ::= {DeviceInfoGRP 1 } FirmwareVersion OBJECT-TYPE SYNTAX OCTET STRING (SIZE (32)) ACCESS read-only STATUS mandatory DESCRIPTION "The Firmware Version." ::= {DeviceInfoGRP 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 that 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 disassociation 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 { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client is authenticating with the AP." ::= 11 trapAPClientAssociating TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client is associating with the AP." ::= 12 trapAPClientReAssociating TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client is reassociating with the AP." ::= 13 trapAPClientAuthenticationFailed TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client has failed authenticating with the AP." ::= 14 trapAPClientAssociationFailed TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client has failed associating with the AP." ::= 15 trapAPClientConnected TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client has been connected with the AP." ::= 16 trapAPClientDisconnected TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } 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 ENDap-utils-1.5/Documentation/mibs-atmel/mib-12350-gemtek/000077500000000000000000000000001117246662700224655ustar00rootroot00000000000000ap-utils-1.5/Documentation/mibs-atmel/mib-12350-gemtek/AT76C510.mib000066400000000000000000001101041117246662700241650ustar00rootroot00000000000000-- 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 "First 92 bytes of Hardware device configuration struct. HARD_CONFIGURATION_STUCT{ unsigned long StructVersion; unsigned char MacAddress[6]; unsigned char Channel; unsigned char RegulatoryDomain; unsigned long ProductType; unsigned char OEMname[32]; unsigned long OEMID; unsigned char ProductName[32]; unsigned long HardwareRevision; unsigned char PID_VID[4]; //Product ID/ Vendor ID unsigned int sysOIDSize; unsigned short sysOID[16]; unsigned char CountryCode[3]; unsigned char Reserved1; unsigned short ChannelInformation; unsigned char Reserved2[2]; char TxPower[14]; unsigned char Reserved3[10]; } " ::= {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 } sysDeviceMoreInfo OBJECT-TYPE SYNTAX OCTET STRING (SIZE (32)) ACCESS read-write STATUS mandatory DESCRIPTION "Last 32 bytes of Hardware device configuration struct. HARD_CONFIGURATION_STUCT{ unsigned long StructVersion; unsigned char MacAddress[6]; unsigned char Channel; unsigned char RegulatoryDomain; unsigned long ProductType; unsigned char OEMname[32]; unsigned long OEMID; unsigned char ProductName[32]; unsigned long HardwareRevision; unsigned char PID_VID[4]; //Product ID/ Vendor ID unsigned int sysOIDSize; unsigned short sysOID[16]; unsigned char CountryCode[3]; unsigned char Reserved1; unsigned short ChannelInformation; unsigned char Reserved2[2]; char TxPower[14]; unsigned char Reserved3[10]; } " ::= {sysCtrlGRP 8 } -----------------------------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 } operTrapPort OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "This attribute indicates the Trap port." ::= { operBridgingLevel 8 } -----------------------------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 } operBeaconPeriod OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "." ::= {OperationalSettingsGRP 14 } operDTIM OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "." ::= {OperationalSettingsGRP 15 } -----------------------------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 sort Num; unsigned char MacAddress[6]; } " ::= { AssociatedStationsGRP 2 } -------------------------------Authorized Mac Addresses---------------------- AuthorizedMacAddressesGRP OBJECT IDENTIFIER ::= {wireless 6} AuthorizationMacEnable OBJECT-TYPE SYNTAX INTEGER (1..3) ACCESS read-write STATUS mandatory DESCRIPTION "When setting this attribute to 1, the Authorization Mac Address Table will be enabled in allow mode. When setting this attribute to 3, the Authorization Mac Address Table will be enabled in deny mode." ::= {AuthorizedMacAddressesGRP 1} AuthorizedMac OBJECT-TYPE SYNTAX OCTET STRING (SIZE (12)) ACCESS read-write STATUS mandatory DESCRIPTION "The Authorized Wireless Mac Addresses AuthorizedMacTableString{ unsigned sort Action; //Set 0x01 or Get 0x02 unsigned sort NumOfAllTableAddresses; unsigned sort 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 } -----------------------------Advanced Privacy----------------------------- AdvancedPrivacyGRP OBJECT IDENTIFIER ::= { wireless 8 } Dot1xEnable OBJECT-TYPE SYNTAX INTEGER {enable(1),disable(2), mixed environment(3)} ACCESS read-write STATUS mandatory DESCRIPTION "." ::= {AdvancedPrivacyGRP 1} BroadcastKeyPeriod OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "." ::= {AdvancedPrivacyGRP 2} ServerIP OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory DESCRIPTION "." ::= {AdvancedPrivacyGRP 3} ServerSecret OBJECT-TYPE SYNTAX OCTET STRING (SIZE (16)) ACCESS write-only STATUS mandatory DESCRIPTION "." ::= {AdvancedPrivacyGRP 4} --*************************** Traps *************************** --************************************************************* trapSTAMacAddress OBJECT-TYPE SYNTAX OCTET STRING (SIZE (6)) ACCESS read-only STATUS mandatory DESCRIPTION "The MAC address of a station device" ::= {traps 1} BroadcastKeyPeriod 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 that 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 disassociation 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 { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client is authenticating with the AP." ::= 11 trapAPClientAssociating TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client is associating with the AP." ::= 12 trapAPClientReAssociating TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client is reassociating with the AP." ::= 13 trapAPClientAuthenticationFailed TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client has failed authenticating with the AP." ::= 14 trapAPClientAssociationFailed TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client has failed associating with the AP." ::= 15 trapAPClientConnected TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client has been connected with the AP." ::= 16 trapAPClientDisconnected TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } 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 ENDap-utils-1.5/Documentation/mibs-atmel/mib-12350-none-netgear/000077500000000000000000000000001117246662700235735ustar00rootroot00000000000000ap-utils-1.5/Documentation/mibs-atmel/mib-12350-none-netgear/AT76C510.mib000066400000000000000000001015421117246662700253010ustar00rootroot00000000000000-- 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 ENDap-utils-1.5/Documentation/mibs-atmel/mib-410-none-dlink/000077500000000000000000000000001117246662700231015ustar00rootroot00000000000000ap-utils-1.5/Documentation/mibs-atmel/mib-410-none-dlink/AT76C510.mib000066400000000000000000000605251117246662700246140ustar00rootroot00000000000000-- 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 ap-utils-1.5/Documentation/mibs-atmel/mib-410-smartbridges/000077500000000000000000000000001117246662700235315ustar00rootroot00000000000000ap-utils-1.5/Documentation/mibs-atmel/mib-410-smartbridges/AT76C510.mib000066400000000000000000001067501117246662700252450ustar00rootroot00000000000000-- 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 } 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 } -----------------------------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 } operDHCPtimeout 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 timeout." ::= { operBridgingLevel 8 } -----------------------------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, Wireless Repeater." ::= { 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 at Wireless Repeater 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 (8)) ACCESS read-write STATUS mandatory DESCRIPTION " TestModeCommandStruct{ unsigned char Channel; unsigned char Antenna; unsigned char RegCR31; unsigned char Rate; unsigned char TxFiler; //US - JPN unsigned char Command; //CMD_CONTINUOUS_TX 0x01, CMD_CONTINUOUS_RX 0x02, CMD_CARRIER_ACCURACY 0x03, CMD_IDLE 0x04 unsigned char Res1; unsigned char Res2; } " ::= {TestModeSettingsGRP 2 } TestModeRadioConfiguration OBJECT-TYPE SYNTAX OCTET STRING (SIZE (14)) ACCESS read-write STATUS mandatory DESCRIPTION "Configuration of radio derive from tests. CR31 Reg 1-14" ::= {TestModeSettingsGRP 8 } TestModeStatistics OBJECT-TYPE SYNTAX OCTET STRING (SIZE (8)) ACCESS read-only STATUS mandatory DESCRIPTION "Statistics derive from tests TestModeStatistics{ unsigned long SuccessFrames; unsigned long FailedFrames; } " ::= {TestModeSettingsGRP 9 } SleepModeOnOff OBJECT-TYPE SYNTAX INTEGER {enable(1),disable(2)} ACCESS read-write STATUS mandatory DESCRIPTION "When this attribute is set to enable(1), the device is at sleep mode." ::= {TestModeSettingsGRP 10 } -----------------------------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 } -----------------------------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 Stations--------------------- ----------------------------------------------------------------------- AssociatedStationsGRP OBJECT IDENTIFIER ::= {wireless 5} AssociatedSTAsNum OBJECT-TYPE SYNTAX INTEGER (0..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 Index; unsigned char MacAddress[6]; unsigned char Status; unsigned char Port; unsigned char ParentMacAddress[6]; unsigned char RSSI; unsigned char LinkQuality; unsigned char IP[4]; unsigned char Reserved1[2]; } " ::= { AssociatedStationsGRP 2 } -------------------------------Authorized Mac Addresses---------------------- AuthorizedMacAddressesGRP OBJECT IDENTIFIER ::= {wireless 6} AuthorizationMacEnable OBJECT-TYPE SYNTAX INTEGER (1..3) ACCESS read-write STATUS mandatory DESCRIPTION "When setting this attribute to 1, Internal MAC Authorization will be applied. When setting this attribute to 2, no MAC Authorization will be applied. When setting this attribute to 3, External MAC Authorization will be applied." ::= {AuthorizedMacAddressesGRP 1} AuthorizedMac OBJECT-TYPE SYNTAX OCTET STRING (SIZE (12)) ACCESS read-write STATUS mandatory DESCRIPTION "The Authorized Wireless Mac Addresses AuthorizedMacTableString{ unsigned sort Action; //Set 0x01 or Get 0x02 unsigned sort NumOfAllTableAddresses; unsigned sort NumOfCurrentAddress; unsigned char MacAddress[6]; } " ::= { AuthorizedMacAddressesGRP 2 } AuthRadiusIP OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory DESCRIPTION "The Radius Server IP Address." ::= {AuthorizedMacAddressesGRP 3} AuthRadiusSecret OBJECT-TYPE SYNTAX OCTET STRING (SIZE (32)) ACCESS read-write STATUS mandatory DESCRIPTION "The Radius Server Secret Key." ::= {AuthorizedMacAddressesGRP 4} AuthRadiusSecretLength OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "The Radius Server Secret Key Length." ::= {AuthorizedMacAddressesGRP 5} AuthRadiusPort OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "The source port for Radius Protocol packets." ::= {AuthorizedMacAddressesGRP 6} AuthRadiusReauthorizationTime OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "The time for Radius Server Reauthorization." ::= {AuthorizedMacAddressesGRP 7} AuthRadiusDestinPort OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "The destination port for Radius Protocol packets." ::= {AuthorizedMacAddressesGRP 8} -----------------------------KNOWN ACCESS POINTS---------------------- WLKnownAPGRP OBJECT IDENTIFIER ::= {wireless 7} wirelessKnownAPs OBJECT-TYPE SYNTAX OCTET STRING (SIZE (160)) ACCESS read-only STATUS mandatory DESCRIPTION "." ::= {WLKnownAPGRP 1 } -----------------------------Network Settings---------------------- NetworkSettingsGRP OBJECT IDENTIFIER ::= {wireless 8} NetworkSettings OBJECT-TYPE SYNTAX OCTET STRING (SIZE (53)) ACCESS read-only STATUS mandatory DESCRIPTION "Network Settings. struct NETWORK_SETTINGS { 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; }" ::= {NetworkSettingsGRP 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 that 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 disassociation 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 { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client is authenticating with the AP." ::= 11 trapAPClientAssociating TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client is associating with the AP." ::= 12 trapAPClientReAssociating TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client is reassociating with the AP." ::= 13 trapAPClientAuthenticationFailed TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client has failed authenticating with the AP." ::= 14 trapAPClientAssociationFailed TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client has failed associating with the AP." ::= 15 trapAPClientConnected TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } DESCRIPTION "Access Point Client has been connected with the AP." ::= 16 trapAPClientDisconnected TRAP-TYPE ENTERPRISE atmel VARIABLES { bridgeRemoteBridgeBSSID } 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 ENDap-utils-1.5/INSTALL000066400000000000000000000246421117246662700141720ustar00rootroot00000000000000Installation instructions ------------------------- Just run: ./configure make make install This will install programs into '/usr/local/bin', ap-trapd installed in to '/usr/local/sbin'. You must be logged as root to install. You can remove the program binaries and object files from the source directory by typing `make clean'. Requirements ------------ To build and run ap-utils you need ncurses libs installed in your system. Most distribution come with this libs installed, but if your installation lack it, you may get ncurses from: ftp://ftp.gnu.org/gnu/ncurses/ ftp://dickey.his.com/ncurses/ Also you need gcc compiler from GNU Compiler Collection that may be obtained from the following sites: ftp://gcc.gnu.org/pub/gcc/releases/ ftp://ftp.gnu.org/gnu/gcc/ http://gcc.gnu.org/mirrors.html or IBM C 5.0 for AIX. Optional Features ----------------- --disable-regdomain disable regulation domain channel restrictions 64-bit Sparc Linux ------------------ Tell your 64-bit Sparc Linux users that if they want to compile ap-utils, it must be compiled in a 32-bit environment (most of them know this already.) They should type "sparc32 bash" before running "./configure" or "make". QNX --- ap-utils compiles and runs under QNX RTP - tested with free CD version of this OS. Need to use included install program. Compiled with included gettext: ./configure --with-included-gettext make make install Basic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. (Caching is disabled by default to prevent problems with accidental use of stale cache files.) If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You only need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for variables by setting them in the environment. You can do that on the command line like this: ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix *Note Environment Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not support the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it cannot guess the host type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type. If you are _building_ compiler tools for cross-compiling, you should use the `--target=TYPE' option to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the host platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. In this case, you should also specify the build platform with `--build=TYPE', because, in this case, it may not be possible to guess the build platform (it sometimes involves compiling and running simple test programs, and this can't be done if the compiler is a cross compiler). Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Environment Variables ===================== Variables not defined in a site shell script can be set in the environment passed to configure. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc will cause the specified gcc to be used as the C compiler (unless it is overridden in the site shell script). `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of the options to `configure', and exit. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. ap-utils-1.5/Makefile.am000066400000000000000000000020751117246662700151710ustar00rootroot00000000000000# # Makefile.am from Access Point SNMP Utils for Linux # # Copyright (c) 2002 Roman Festchook # # 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 # ## Process this file with automake to produce Makefile.in SUBDIRS = lib src ap-gl Documentation intl po AUTOMAKE_OPTIONS = gnu EXTRA_DIST = config/* ap-utils.spec dist-hook: rm -f $(distdir)/po/*.gmo -chmod -R a+r $(distdir) tar chof $(distdir).tar $(distdir) bzip2 -v9f $(distdir).tar ap-utils-1.5/Makefile.in000066400000000000000000000441211117246662700152000ustar00rootroot00000000000000# Makefile.in generated by automake 1.7.8 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Makefile.am from Access Point SNMP Utils for Linux # # Copyright (c) 2002 Roman Festchook # # 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 # srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSESLIBS = @CURSESLIBS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GENCAT = @GENCAT@ GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLBISON = @INTLBISON@ INTLLIBS = @INTLLIBS@ INTLOBJS = @INTLOBJS@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ ac_ct_CC = @ac_ct_CC@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ SUBDIRS = lib src ap-gl Documentation intl po AUTOMAKE_OPTIONS = gnu EXTRA_DIST = config/* ap-utils.spec subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = intl/Makefile DIST_SOURCES = RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ ps-recursive install-info-recursive uninstall-info-recursive \ all-recursive install-data-recursive install-exec-recursive \ installdirs-recursive install-recursive uninstall-recursive \ check-recursive installcheck-recursive DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure \ ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL Makefile.am NEWS \ THANKS TODO aclocal.m4 config.h.in config/config.guess \ config/config.rpath config/config.sub config/depcomp \ config/install-sh config/missing config/mkinstalldirs configure \ configure.in DIST_SUBDIRS = $(SUBDIRS) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) $(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): configure.in cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOHEADER) touch $(srcdir)/config.h.in distclean-hdr: -rm -f config.h stamp-h1 intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ETAGS = etags ETAGSFLAGS = CTAGS = ctags CTAGSFLAGS = tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if (etags --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ else \ include_option=--include; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -f $$subdir/TAGS && \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$tags$$unique" \ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = . distdir = $(PACKAGE)-$(VERSION) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print distdir: $(DISTFILES) $(am__remove_distdir) mkdir $(distdir) $(mkinstalldirs) $(distdir)/config $(distdir)/intl $(distdir)/po @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" \ distdir=../$(distdir)/$$subdir \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist dist-all: distdir $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist $(am__remove_distdir) GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ --with-included-gettext \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ && rm -f $(distdir).tar.gz \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @echo "$(distdir).tar.gz is ready for distribution" | \ sed 'h;s/./=/g;p;x;p;x' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: info: info-recursive info-am: install-data-am: install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ clean-generic clean-recursive ctags ctags-recursive dist \ dist-all dist-gzip distcheck distclean distclean-generic \ distclean-hdr distclean-recursive distclean-tags distcleancheck \ distdir distuninstallcheck dvi dvi-am dvi-recursive info \ info-am info-recursive install install-am install-data \ install-data-am install-data-recursive install-exec \ install-exec-am install-exec-recursive install-info \ install-info-am install-info-recursive install-man \ install-recursive install-strip installcheck installcheck-am \ installdirs installdirs-am installdirs-recursive \ maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-generic \ mostlyclean-recursive pdf pdf-am pdf-recursive ps ps-am \ ps-recursive tags tags-recursive uninstall uninstall-am \ uninstall-info-am uninstall-info-recursive uninstall-recursive dist-hook: rm -f $(distdir)/po/*.gmo -chmod -R a+r $(distdir) tar chof $(distdir).tar $(distdir) bzip2 -v9f $(distdir).tar # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ap-utils-1.5/NEWS000066400000000000000000000136521117246662700136370ustar00rootroot00000000000000ap-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; * many bugfixes; * Ukrainian and French translation updates. ap-utils-1.3.3 => ap-utils-1.4 * ap-gl: added new utility for ATMEL410 AP with 1.4k.1 firmware and support for RADIUS auth, wireless clients isolation, Repeater mode, connected APs extended info (MAC, IP, RSSI, LQ, Status, Port); * big internal code movement for future easy adding new utilites to common engine; * many fixes and minor feature additions. ap-utils-1.3.2 => ap-utils-1.3.3 * many new options and better support for ATMEL12350 devices; * added AP type autodetection; * added option to choose AP to connect from AP search result; * user interface improvements; * many internal improvements to avoid memory leaks; * BSD compile fixes; * bigendian fixes; * added Romanian and Dutch translation. ap-utils-1.3.1 => ap-utils-1.3.2 * added support for new AP type - new revision Netgear ME102 and compatible; * many small bugfixes for 64bit archs such as the alpha and big endian machines. * vi-like keys to menu movement; * some updates for more faster screen handling. ap-utils-1.3 => ap-utils-1.3.1 * connect option for many APs can be stored in options file; * fixes to build on OpenBSD; * documentation updates; * many small bugfixes and code improvements. ap-utils-1.2 => ap-utils-1.3 * QNX RTOS supported; * updates to support CC&C Technologies APs; * RSSI (Signal Strenght) now returned in dBm in ap-mrtg and ap-config (ATMEL mode); * polish localization added, other localization updated; * added HOWTO use ap-utils with Ovislink hardware; * FreeBSD building fixes; * new internal functions added; * additional check for data correctness added; * documentation updates and spell checking; * small bugfixes in ap-mrtg and ap-config. ap-utils-1.1.1 => ap-utils-1.2 * ap-nwn and ap-atmel merged to one utility ap-config; * getting SNMP data drom AP optimization; * FreeBSD and NetBSD fixes; * added support for Smartbridges airBrige speciffic mib; * added option to disable saving connect options to file; * updated ukrainian and french translations; * many documentation updates. ap-utils-1.1 => ap-utils-1.1.1 * small fixes to build on MacOS-X, and under Linux on arm, powerpc and s390. * ap-atmel: after fixes WEP encryption works fine; added Repeater mode to Brige modes; now after setting master AP from displated list of Known APs also setted mode to AP client and ESSID to master AP ESSID, also now AP resets when getting stat only if brige mode = Access Point. * ap-nwn: now possible to define 4 WEP keys and choose default key; added some advanced options to optimize long range links and antenna tuning; added option to reset AP, display refreshing fixes. * ap-trapd: updated traps list with new traps from 1.4j.1 firmware; small log format changes. * ap-mrtg: fixes about link quality/ signal strenght values displaying without modyfication. * documentation: new traps description (ap-trapd.8); andvanced options description (ap-nwn.8); new supported hardware (README). ap-utils-1.0.5 => ap-utils-1.1 a lot of big-endian updates; fixes for APs under Spain and France regulatory domain; ap-nwn getting stations code rewriten to support D-Link DWL 1000AP; build system rewrited to use macros from autoconf and support IBM C compiler under AIX; in ap-atmel utility added option to connect to one of the known APs; ap-mrtg now has option to reset AP when getting link quality stats; many small bug-fixes, user interface improvements, localization and documentation updates, code cleanups. ap-utils-1.0.4 => ap-utils-1.0.5 updates to normally run on big-endian processors; ap-trapd, ap-mrtg - rewriten to use getopt(), added new options, changed synopsys (!!!) see man-pages; ap-atmel, ap-nwn - user interface when program react to neutral keys fixed; ap-atmel - testmode fallback procedure updated; french localization added. ap-utils-1.0.3 => ap-utils-1.0.4 added man-pages to all utilites; added manufacturer definition using OUI value; bus error running on Sparc fix; compile time option to disable regulation domain restriction; documentation spelling and updates. ap-utils-1.0.2 => ap-utils-1.0.3 gettext internalization support; ukrainian localization added; a lot of internal code rewrites; small interface improvements and bugfixes. ap-utils-1.0.1 => ap-utils-1.0.2 changed package name to Wireless Access Point Utilites for Unix; added port to FreeBSD; fixes in additional info from traps logging by ap-trapd; fixes in error messages in ap-nwn utulity. ap-utils-1.0 => ap-utils-1.0.1 errors procesing procedure updates; package building moved to autoconf; compile time warnings and small bugfixes fixed. ap-utils-0.9.6 => ap-utils-1.0 ap-atmel: added warnings about potentially dangerous options; added floating dropdown menus for choose from the list of options; fixed number of minor bugs. ap-nwn: added options: basic rates choose, WEP key setting; added floating dropdown menus for choose from the list of options; added option to find IP of connected APs; fixed number of non critical bugs; documentation updates. ap-trapd: option to bind listening for traps on a specific interface added; rewriten to log shorter messages without informative data lost; documentation updates; bugfixes. ap-mrtg: option to get Link Quality/Signal Strenght stat from AP in client mode added; documentation updates. SNMP engine: memory leaks fixes when parsing received packets. ap-utils-1.5/README000066400000000000000000000365061117246662700140230ustar00rootroot00000000000000About ----- Wireless Access Point Utilites for Unix - it's a set of utilites to configure and monitor Wireless Access Points in Unix using SNMP protocol. Utilites are known to compile and run under Linux, FreeBSD, NetBSD, MacOS-X, AIX, QNX and OpenBSD. The software was initially written by Roman Festchook (ÕËÒÁ§ÎÓØËÏÀ òÏÍÁÎ æÅÝÕË) without any help from manufacturers and released under the terms GNU General Public License version 2.0. A copy of the license file is included with this distribution package. The project also has a number of contributions, thanks to whose this software has grown significantly; for a list of them, see files "THANKS" and "ChangeLog". As for version 1.2 Wireless Access Point Utilites for Unix include three utils: ap-config: config and get stats from AP: setting bridging, wireless and ip options, WEP encryption, mac authorization, radio signal power, and communities to restrict access to AP, enabling/disabling antennas, hiding ESSID in broadcast messages; device test mode; getting info about AP sofware and hardware, dynamically updated ethernet and wireless ports statistics, list of associated stations and visible APs (option to save mac addresses of current associated stations to file); executing commands on AP; config and get stats from devices that support MIB-II, IEEE 802.11 MIB and NWN DOT11EXT MIB: setting bridging and wireless options, WEP encryption, mac authorization, communities to restrict access to AP, enabling/disabling antennas; getting info about AP sofware and hardware, dynamically updated wireless port statistics, information about latest events and errors, list of current associated stations with info about signal quality and station activity (option to save mac addresses of associated stations to file); search for connected APs; nice and portable ncurses-based user interface with context-help navigation menus, floating drop-down menus to choose from options list, options file to store connect options and subshell. ap-mrtg: to get stat from AP (ATMEL based) and return it in MRTG parseable format: getting ethernet statistics in bytes, wireless statistics in packets, associated stations number and Link Quality/Signal Strenght stats from AP in client mode. ap-trapd: to receive, parse and log trap messages from AP (ATMEL based): log data using standart syslogd; running by not privileged user; listening on the specified interface (only on Linux). Supported Hardware ------------------ ap-utils support Atmel chipset based Access Points with ATMEL private MIB with enterprises ID 410 (ATMEL410), Access Points with newer ATMEL private MIB with enterprises ID 12350 (ATMEL12350) such as Netgear ME102 and Tellus A14, and No Wires Needed APs with IEEE 802.11 MIB and NWN DOT11EXT MIB (NWN). You can find Known/Reported-to-work hardware in the table below. If you have had success with ap-utils working with a hardware thats not in the table below, please report. Please, if possible, include informations from the ap-config's "sysinfo" screen in your report. Also, if possible, please send the MIB file that comes with your device. This may result in supporting more options in ap-config in the future! The file may look like 'AT76C510.mib' (in case of ATMEL-based APs), and usually comes with your SNMP management utility for Windows. +------------------------------------------------------------------------------+ | Supported Access Points | +------------------------------------------------------------------------------+ | Manufacturer (OEM) | Model | AP MIB type | +-------------------------------+-----------------------+----------------------+ | 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) | | 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 | | 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 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 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. !!!!!!!!! "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. - 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. 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] 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: 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 -------------------------- I got an AP and I would like ap-utils to support it (it is not on the --------------------------------------------------------------------- list above) ----------- The device has to be either ATMEL- or NWN-based. The first good sign of a chance it could be supported by the ap-utils, is the presence of file 'AT76C510.mib', that gets installed along with the original 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 or . 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 in as broad number of its features as possible. Where to get more information ----------------------------- 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/ . 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. 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 please send a detailed description of your problem to the maillist. Include the version of the program, the operating system that you are using, the compiler and compiler flags used to compile the program (if you know them), what kind of distribution you are using (in case of a GNU/Linux system). If the program crashed and produces a core dump, please provide a stack trace of the program. You can do this by running dbx or gdb like this: gdb core (gdb) where ap-utils-1.5/THANKS000066400000000000000000000046661117246662700140600ustar00rootroot00000000000000CONTRIBUTORS Contributions to the project are not limited just to the source code and bugfixes - addititional contributions include (but are not limited to) reporting bugs, documentation, test results, helpful and enlightening discussions, kind words and feedback from users as well as commercial support and promoting the project. Below are some of the contributors to the project. Contributions are being made quite often, therefore, the list can never be considered "current" enough - it even lags behind the most current release of the project. ;-) Companies: Engineering and industrial company "VECTOR" [http://www.vector.kharkov.ua] - free hardware samples Personals: Ivan Korshun <2002_ivan at mail dot ru> - some info about Atmel APs Charles Henderson - some spelling suggestion Ryan Veety Evgeni Gechev Dominique Muller Rudy Zijlstra David M Reiger Kucherak Sergij - ukrainian translation of some docs Erik Rossen - bugfixes, big-endian port suggestions and patches Scott L. Thomas - Link Quality stats in client mode for MRTG Dan Pelleg - BSD port Lenny Cartier - Mandrake RPM/SRPM packages thisplanetsux - NetBSD package Michel Robitaille - french localization Andy Igoshin - AIX 4.3.3 and AIX native compiler port, a lot of big_endian and code fixes Rahul G - sources to encode object identifiers Wojciech Puchar - polish localization, hardware for testing Jan Rafaj - 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-mrtg changes to support ATMEL12350/ME-102 Daniel E. Eisenbud - MacOS X and Solaris porting Many, many more. If I've overlooked you and you want to be listed here, send me e-mail and I'll fix it. Thanks to all contributors and users! Have Fun! Roman Festchook ap-utils-1.5/TODO000066400000000000000000000050241117246662700136220ustar00rootroot00000000000000TODO for ap-utils: * translations (ALWAYS) * porting to other Unix'es and platforms (ALWAYS) * support new AP's (ALWAYS) * 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 * 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 * patch test.c so that it works with ATMEL12350 devices * 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 * 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 ap-utils-1.5/aclocal.m4000066400000000000000000002702531117246662700150020ustar00rootroot00000000000000# generated automatically by aclocal 1.7.8 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. # Do all the work for Automake. -*- Autoconf -*- # This macro actually does too much some checks are only needed if # your package does certain things. But this isn't really a big deal. # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # 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, 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. # serial 10 AC_PREREQ([2.54]) # Autoconf 2.50 wants to disallow AM_ names. We explicitly allow # the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AM_MISSING_PROG(AMTAR, tar) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ]) ]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $1 | $1:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) # Copyright 2002 Free Software Foundation, Inc. # 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, 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 # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION so it can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.7.8])]) # Helper functions for option handling. -*- Autoconf -*- # Copyright 2001, 2002 Free Software Foundation, Inc. # 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, 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. # serial 2 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # # Check to make sure that the build environment is sane. # # Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. # 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, 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. # serial 3 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # -*- Autoconf -*- # Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. # 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, 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. # serial 3 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # AM_AUX_DIR_EXPAND # Copyright 2001 Free Software Foundation, Inc. # 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, 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. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. # Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50]) AC_DEFUN([AM_AUX_DIR_EXPAND], [ # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. # Copyright 2001 Free Software Foundation, Inc. # 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, 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. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"$am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # AM_PROG_INSTALL_STRIP # Copyright 2001 Free Software Foundation, Inc. # 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, 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. # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # -*- Autoconf -*- # Copyright (C) 2003 Free Software Foundation, Inc. # 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, 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. # serial 1 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # serial 5 -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. # 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, 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. # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c : > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking Speeds up one-time builds --enable-dependency-tracking Do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH]) ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. # 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, 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. #serial 2 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue # Extract the definition of DEP_FILES from the Makefile without # running `make'. DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` test -z "$DEPDIR" && continue # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n -e '/^U = / s///p' < "$mf"` test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" # We invoke sed twice because it is the simplest approach to # changing $(DEPDIR) to its actual value in the expansion. for file in `sed -n -e ' /^DEP_FILES = .*\\\\$/ { s/^DEP_FILES = // :loop s/\\\\$// p n /\\\\$/ b loop p } /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. # 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, 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. # serial 2 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright 1997, 2000, 2001 Free Software Foundation, Inc. # 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, 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. # serial 5 AC_PREREQ(2.52) # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE]) AC_SUBST([$1_FALSE]) if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]) fi])]) # Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- # Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. # 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, 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. AC_PREREQ([2.52]) # serial 6 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # gettext.m4 serial 13 (gettext-0.11.1) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2002. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])]) define(gt_included_intl, ifelse([$1], [external], [no], [yes])) define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT($USE_NLS) AC_SUBST(USE_NLS) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH(included-gettext, [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. dnl Add a version number to the cache macros. define([gt_api_version], ifelse([$2], [need-ngettext], 2, 1)) define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, [AC_TRY_LINK([#include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], gt_cv_func_gnugettext_libc=yes, gt_cv_func_gnugettext_libc=no)]) if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], gt_cv_func_gnugettext_libintl, [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0)], gt_cv_func_gnugettext_libintl=yes, gt_cv_func_gnugettext_libintl=no) dnl Now see whether libintl exists and depends on libiconv. if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0)], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext_libintl=yes ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if test "$gt_cv_func_gnugettext_libc" = "yes" \ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ && test "$PACKAGE" != gettext; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. INTLOBJS="\$(GETTOBJS)" BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE(HAVE_GETTEXT, 1, [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE(HAVE_DCGETTEXT, 1, [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST(BUILD_INCLUDED_LIBINTL) AC_SUBST(USE_INCLUDED_LIBINTL) AC_SUBST(CATOBJEXT) AC_SUBST(INTLOBJS) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST(DATADIRNAME) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST(INSTOBJEXT) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST(GENCAT) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST(INTLLIBS) dnl Make all documented variables known to autoconf. AC_SUBST(LIBINTL) AC_SUBST(LTLIBINTL) AC_SUBST(POSUB) ]) dnl Checks for all prerequisites of the po subdirectory, dnl except for USE_NLS. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) dnl Search for GNU xgettext 0.11 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU msgfmt. if test "$GMSGFMT" != ":"; then dnl If it is no GNU msgfmt we define it as : so that the dnl Makefiles still can work. if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` AC_MSG_RESULT( [found $GMSGFMT program is not GNU msgfmt; ignore it]) GMSGFMT=":" fi fi dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is no GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po fi AC_OUTPUT_COMMANDS([ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' fi case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= GMOFILES= UPDATEPOFILES= DUMMYPOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done], [# Capture the value of obsolete $ALL_LINGUAS because we need it to compute # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it # from automake. eval 'ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Checks for all prerequisites of the intl subdirectory, dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. AC_DEFUN([AM_INTL_SUBDIR], [ AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_ISC_POSIX])dnl AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_C_CONST])dnl AC_REQUIRE([AC_C_INLINE])dnl AC_REQUIRE([AC_TYPE_OFF_T])dnl AC_REQUIRE([AC_TYPE_SIZE_T])dnl AC_REQUIRE([AC_FUNC_ALLOCA])dnl AC_REQUIRE([AC_FUNC_MMAP])dnl AC_REQUIRE([jm_GLIBC21])dnl AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h]) AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) AM_ICONV AM_LANGINFO_CODESET AM_LC_MESSAGES dnl intl/plural.c is generated from intl/plural.y. It requires bison, dnl because plural.y uses bison specific features. It requires at least dnl bison-1.26 because earlier versions generate a plural.c that doesn't dnl compile. dnl bison is only needed for the maintainer (who touches plural.y). But in dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put dnl the rule in general Makefile. Now, some people carelessly touch the dnl files or have a broken "make" program, hence the plural.c rule will dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not dnl present or too old. AC_CHECK_PROGS([INTLBISON], [bison]) if test -z "$INTLBISON"; then ac_verc_fail=yes else dnl Found it, now check the version. AC_MSG_CHECKING([version of bison]) changequote(<<,>>)dnl ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) changequote([,])dnl ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac AC_MSG_RESULT([$ac_prog_version]) fi if test $ac_verc_fail = yes; then INTLBISON=: fi ]) AC_DEFUN([AM_MKINSTALLDIRS], [ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but $(top_srcdir). dnl Try to locate is. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) ]) # lib-prefix.m4 serial 1 (gettext-0.11) dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) # lib-link.m4 serial 1 (gettext-0.11) dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes undefine([Name]) undefine([NAME]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. If found, it dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" LIBS="$LIBS $LIB[]NAME" AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) undefine([Name]) undefine([NAME]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, dnl hardcode_direct, hardcode_minus_L, dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec. AC_DEFUN([AC_LIB_RPATH], [ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH([lib$1-prefix], [ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib --without-lib$1-prefix don't search for lib$1 in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "X$found_dir" = "X/usr/lib"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) # lib-ld.m4 serial 1 (gettext-0.11) dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl Subroutines of libtool.m4, dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision dnl with libtool.m4. dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then acl_cv_prog_gnu_ld=yes else acl_cv_prog_gnu_ld=no fi]) with_gnu_ld=$acl_cv_prog_gnu_ld ]) dnl From libtool-1.4. Sets the variable LD. AC_DEFUN([AC_LIB_PROG_LD], [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(acl_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) # iconv.m4 serial AM3 (gettext-0.11) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_func_iconv=yes) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_lib_iconv=yes am_cv_func_iconv=yes) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST(LIBICONV) AC_SUBST(LTLIBICONV) ]) AC_DEFUN([AM_ICONV], [ AC_REQUIRE([AM_ICONV_LINK]) if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL(am_cv_proto_iconv, [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([$]{ac_t:- }[$]am_cv_proto_iconv) AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, [Define as const if the declaration of iconv() needs const.]) fi ]) # progtest.m4 serial 2 (gettext-0.10.40) dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [# Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in /*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in ifelse([$5], , $PATH, [$5]); do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) # isc-posix.m4 serial 1 (gettext-0.10.40) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. # This test replaces the one in autoconf. # Currently this macro should have the same name as the autoconf macro # because gettext's gettext.m4 (distributed in the automake package) # still uses it. Otherwise, the use in gettext.m4 makes autoheader # give these diagnostics: # configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX # configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX undefine([AC_ISC_POSIX]) AC_DEFUN([AC_ISC_POSIX], [ dnl This test replaces the obsolescent AC_ISC_POSIX kludge. AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) ] ) # glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. # Test for the GNU C Library, version 2.1 or newer. # From Bruno Haible. AC_DEFUN([jm_GLIBC21], [ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, ac_cv_gnu_library_2_1, [AC_EGREP_CPP([Lucky GNU user], [ #include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) Lucky GNU user #endif #endif ], ac_cv_gnu_library_2_1=yes, ac_cv_gnu_library_2_1=no) ] ) AC_SUBST(GLIBC21) GLIBC21="$ac_cv_gnu_library_2_1" ] ) # codeset.m4 serial AM1 (gettext-0.10.40) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([AM_LANGINFO_CODESET], [ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, [AC_TRY_LINK([#include ], [char* cs = nl_langinfo(CODESET);], am_cv_langinfo_codeset=yes, am_cv_langinfo_codeset=no) ]) if test $am_cv_langinfo_codeset = yes; then AC_DEFINE(HAVE_LANGINFO_CODESET, 1, [Define if you have and nl_langinfo(CODESET).]) fi ]) # lcmessage.m4 serial 2 (gettext-0.10.40) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995. # Check whether LC_MESSAGES is available in . AC_DEFUN([AM_LC_MESSAGES], [if test $ac_cv_header_locale_h = yes; then AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your file defines LC_MESSAGES.]) fi fi]) ap-utils-1.5/ap-gl/000077500000000000000000000000001117246662700141315ustar00rootroot00000000000000ap-utils-1.5/ap-gl/Makefile.am000066400000000000000000000020161117246662700161640ustar00rootroot00000000000000# # Makefile.am from Wireless Access Point Utilites for Unix # # Copyright (c) 2002 Roman Festchook # # 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 # DEFS = -DLOCALEDIR=\"$(datadir)/locale\" -DHAVE_CONFIG_H INCLUDES = -I../lib -I../intl -I.. LIBS = @INTLLIBS@ @LIBS@ bin_PROGRAMS = ap-gl ap_gl_SOURCES = ap-gl.c auth.c bridge.c stations.c ap_gl_LDADD = ../lib/libap.a -lmenu @CURSESLIBS@ ap-utils-1.5/ap-gl/Makefile.in000066400000000000000000000326241117246662700162050ustar00rootroot00000000000000# Makefile.in generated by automake 1.7.8 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Makefile.am from Wireless Access Point Utilites for Unix # # Copyright (c) 2002 Roman Festchook # # 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 # srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSESLIBS = @CURSESLIBS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = -DLOCALEDIR=\"$(datadir)/locale\" -DHAVE_CONFIG_H DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GENCAT = @GENCAT@ GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLBISON = @INTLBISON@ INTLLIBS = @INTLLIBS@ INTLOBJS = @INTLOBJS@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @INTLLIBS@ @LIBS@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ ac_ct_CC = @ac_ct_CC@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ INCLUDES = -I../lib -I../intl -I.. bin_PROGRAMS = ap-gl 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 CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = bin_PROGRAMS = ap-gl$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) 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 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.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/bridge.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_gl_SOURCES) DIST_COMMON = $(srcdir)/Makefile.in Makefile.am SOURCES = $(ap_gl_SOURCES) all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu ap-gl/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ rm -f $(DESTDIR)$(bindir)/$$f; \ done clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) ap-gl$(EXEEXT): $(ap_gl_OBJECTS) $(ap_gl_DEPENDENCIES) @rm -f ap-gl$(EXEEXT) $(LINK) $(ap_gl_LDFLAGS) $(ap_gl_OBJECTS) $(ap_gl_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) core *.core 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.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@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` uninstall-info-am: ETAGS = etags ETAGSFLAGS = CTAGS = ctags CTAGSFLAGS = tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$tags$$unique" \ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: $(mkinstalldirs) $(DESTDIR)$(bindir) install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: info: info-am info-am: install-data-am: install-exec-am: install-binPROGRAMS install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-info-am .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic ctags distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am info \ info-am install install-am install-binPROGRAMS install-data \ install-data-am install-exec install-exec-am install-info \ install-info-am install-man install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ap-utils-1.5/ap-gl/ap-gl.c000066400000000000000000000143451117246662700153040ustar00rootroot00000000000000/* * ap-gl.c from Wireless Access Point Utilites for Unix * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include #include #include #include "ap-utils.h" WINDOW *win_for_menu, *sub_for_menu, *win_for_help, *main_win, *main_sub; char *community, *name; 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; extern char *ap_types[]; void config_menu() { struct umitems umenu_atmel[] = { {_("Bridging"), _("Set bridging and IP-related options"), bridging, 0}, {_("Wireless"), _("Set wireless options"), atmel_wireless, 0}, {_("Privacy"), MENU_ENCRYPT, wep, 0}, {_("Auth"), MENU_AUTH, atmel_auth, 0}, {_("Community"), MENU_COMMUNITY, AuthorizedSettings, 0}, {_("Radio"), _("Set radio signal power and antenna options"), power, 0}, {"..", MAIN_MENU, NULL, 0}, {0, 0, NULL, 0} }; set_oeminfo_allowed++; uni_menu(umenu_atmel, sizeof(umenu_atmel) / sizeof(umenu_atmel[0])); set_oeminfo_allowed--; } void command_menu() { struct umitems command_umenu_atmel[] = { {_("Upload"), _("Activate current configuration"), upload, 0}, {_("Defaults"), _("Restore factory default settings"), defaults, 0}, {_("Reset"), _("Reset AP. All not uploaded configuration will be lost"), reset, 0}, {_("TestMode"), _("Put Access Point in test mode"), test, 0}, {"..", MAIN_MENU, NULL, 0}, {0, 0, NULL, 0} }; ap_types[1] = "ATMEL_PRISM"; uni_menu(command_umenu_atmel, sizeof(command_umenu_atmel) / sizeof(command_umenu_atmel[0])); } void stat_menu() { struct umitems umenu_atmel[] = { {_("SysInfo"), MENU_SYSINFO, atmel_sysinfo, 0}, {_("Ethernet"), _("Get ethernet port statistics"), EthStat, 0}, {_("Wireless"), MENU_WIRELESS, WirelessStat, 0}, {_("Stations"), MENU_STAS, atmel_stations, 0}, {_("KnownAPs"), _("Get info about known Access Points"), APs, 0}, {"..", MAIN_MENU, NULL, 0}, {0, 0, NULL, 0} }; uni_menu(umenu_atmel, sizeof(umenu_atmel) / sizeof(umenu_atmel[0])); } void _auth() { if (get_opts() == 0) connect_options((unsigned long) NULL, ATMEL410+1); } void main_menu() { struct umitems config_umenu[] = { {_("Info"), MENU_INFO, stat_menu, 1}, {_("Config"), MENU_CONFIG, config_menu, 1}, {_("Commands"), _("Execute commands on Access Point"), command_menu, 1}, {_("Connect"), MENU_CONNECT, _auth, 0}, {_("Search"), MENU_SEARCH, ap_search, 0}, {_("About"), MENU_ABOUT, about, 0}, {_("Shell"), MENU_SHELL, exit_shell, 0}, {_("Exit"), MENU_EXIT, exit_program, 0}, {0, 0, NULL, 0} }; uni_menu(config_umenu, sizeof(config_umenu) / sizeof(config_umenu[0])); } int main( /*int argc, char **argv */ ) { int i; WINDOW *win_for_title; char message[100]; ap_types[0]="ATMEL_PRISM"; #ifdef HAVE_GETTEXT /* locale support init */ setlocale(LC_ALL, ""); bindtextdomain("ap-utils", LOCALEDIR); textdomain("ap-utils"); #endif initscr(); if (has_colors()) { start_color(); /* 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(); cbreak(); noecho(); scrollok(stdscr, TRUE); idlok(stdscr, TRUE); keypad(stdscr, TRUE); refresh(); /* draw help win */ win_for_help = newwin(1, COLS, LINES - 1, 0); 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(11)); for (i = 0; i < COLS; i++) waddch(win_for_title, ' '); sprintf(message, _("Wireless Access Point Configurator ver. %s"), VERSION); mvwaddstr(win_for_title, 0, (COLS - strlen(message)) / 2, message); wrefresh(win_for_title); /* draw menu win */ win_for_menu = newwin(LINES - 2, MCOLS, 1, 0); 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(11)); /* íÁÌÀÀ ÒÁÍËÕ */ waddch(win_for_menu, ACS_BSSB); for (i = 0; i < MCOLS - 2; i++) waddch(win_for_menu, ACS_BSBS); waddch(win_for_menu, ACS_BSSS); for (i = 0; i < LINES - 4; i++) { waddch(win_for_menu, ACS_SBSB); mvwaddch(win_for_menu, i + 1, MCOLS - 1, ACS_SBSB); } waddch(win_for_menu, ACS_SSBB); for (i = 0; i < MCOLS - 2; i++) waddch(win_for_menu, ACS_BSBS); waddch(win_for_menu, ACS_SSBS); wrefresh(win_for_menu); /* draw_main_win */ main_win = newwin(LINES - 2, COLS - MCOLS, 1, MCOLS); /* íÁÌÀÀ ÒÁÍËÕ */ for (i = 0; i < COLS - MCOLS - 1; i++) waddch(main_win, ACS_BSBS); waddch(main_win, ACS_BBSS); for (i = 0; i < LINES - 4; i++) mvwaddch(main_win, i + 1, COLS - MCOLS - 1, ACS_SBSB); for (i = 0; i < COLS - MCOLS - 1; i++) waddch(main_win, ACS_BSBS); waddch(main_win, ACS_SBBS); main_sub = derwin(main_win, LINES - 4, COLS - MCOLS - 1, 1, 0); wclear(main_sub); wrefresh(main_win); about(); if (get_opts() == 0) connect_options((unsigned long) NULL, ATMEL410+1); while (1) main_menu(); /* Not reachable */ return 0; } ap-utils-1.5/ap-gl/auth.c000066400000000000000000000327131117246662700152440ustar00rootroot00000000000000/* * auth.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #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, _(""), 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); } ap-utils-1.5/ap-gl/bridge.c000066400000000000000000000327731117246662700155450ustar00rootroot00000000000000/* * bridge.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include "ap-utils.h" #define IPADDR _("[I] IP: ") #define NETMASK _("[N] Netmask: ") #define GATEWAY _("[G] Gateway: ") #define IP_FILTER _("[F] Filter non-IP traffic: ") #define PR_PORT _("[P] Primary port: ") #define SB_ATTMAC _("Attached station MAC: ") #define DHCP _("[D] DHCP client: ") #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: ") #define FW_BCAST _("[R] Forward broadcast traffic: ") //#define SB_BCAST _("[B] Isolate wireless clients (broadcast traffic): ") #define SB_UCAST _("[U] Isolate wireless clients: ") #define HELP _("INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu") 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 }; char operIPAddress[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x01, 0x00 }; char operIPMask[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x02, 0x00 }; char operEthernetAddress[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x03, 0x00 }; char operGateway[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x04, 0x00 }; char operDHCP[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x05, 0x00 }; char PrimaryPort[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x06, 0x00 }; /* char ConfigPort[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x02, 0x07, 0x00 }; */ char TrapPort[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x02, 0x08, 0x00 }; char IPFilter[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x01, 0x00 }; char ForwarbBcast[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x02, 0x00 }; char SendBackBcast[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x03, 0x00 }; char SendBackUnicast[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x04, 0x00 }; char bridgeOperationalMode[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x01, 0x00 }; char bridgeRemoteBridgeBSSID[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x02, 0x00 }; extern WINDOW *main_sub; varbind varbinds[15]; struct in_addr ip, mask, gw; unsigned char message[1024], filter, primary_port, dhcp, RemoteBSSID[6], bridge_mode, traps, fw_bcast, sb_ucast; char m_filter = 0, m_bridge_mode = 0, m_primary_port = 0, m_traps = 0, 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 *pr_ports[2] = { _("Ethernet"), _("Wireless") } /*, *cf_trap_ports[3] = { _("Ethernet"), _("Wireless"), _("Both") }*/; int i; unsigned int trap_port = 0; /* Determine the advanced MIB subtype of the device from its MAC address. */ varbinds[0].type = NULL_VALUE; varbinds[0].oid = operEthernetAddress; varbinds[0].len_oid = sizeof(operEthernetAddress); varbinds[0].len_val = 0; print_help(WAIT_RET); /* if (snmp(varbinds, 1, GET) <= 0) { print_helperr(ERR_RET); goto exit; } */ for (i = 1; i < 15; i++) { varbinds[i].type = NULL_VALUE; varbinds[i].len_val = 0; varbinds[i].len_oid = sizeof(sysTrapSwitch); } varbinds[1].oid = IPFilter; varbinds[2].oid = PrimaryPort; varbinds[3].oid = operDHCP; varbinds[4].oid = operIPAddress; varbinds[5].oid = operIPMask; varbinds[6].oid = operGateway; varbinds[7].oid = bridgeOperationalMode; varbinds[8].oid = sysTrapSwitch; varbinds[9].oid = bridgeRemoteBridgeBSSID; varbinds[10].oid = ForwarbBcast; varbinds[11].oid = SendBackUnicast; varbinds[12].oid = SendBackBcast; if (snmp(varbinds, 13, GET) < 13) { print_helperr(ERR_RET); goto exit; } print_top(NULL, _("Bridging")); sb_ucast = *(varbinds[11].value); // sb_ucast = varbinds[11].len_val; sprintf(message, "%s%s", SB_UCAST, (sb_ucast == 2) ? ON : OFF); mvwaddstr(main_sub, 10, 0, message); 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); mvwaddstr(main_sub, 0, 0, message); filter = *(varbinds[1].value); sprintf(message, "%s%s", IP_FILTER, (filter == 1) ? ON : OFF); mvwaddstr(main_sub, 3, 0, message); primary_port = *(varbinds[2].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); sprintf(message, "%s%s", DHCP, (dhcp == 1) ? ON : OFF); mvwaddstr(main_sub, 5, 0, message); memcpy(&ip.s_addr, varbinds[4].value, 4); sprintf(message, "%s%s", IPADDR, inet_ntoa(ip)); mvwaddstr(main_sub, 1, 0, message); memcpy(&mask.s_addr, varbinds[5].value, 4); sprintf(message, "%s%s", NETMASK, inet_ntoa(mask)); mvwaddstr(main_sub, 1, 24, message); memcpy(&gw.s_addr, varbinds[6].value, 4); sprintf(message, "%s%s", GATEWAY, inet_ntoa(gw)); mvwaddstr(main_sub, 2, 0, message); memcpy(RemoteBSSID, varbinds[9].value, 6); if ((bridge_mode = *(varbinds[7].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, *(RemoteBSSID + 4) & 0xFF, *(RemoteBSSID + 5) & 0xFF); mvwaddstr(main_sub, 7, 0, message); } if (bridge_mode > 5) bridge_mode = 6; sprintf(message, "%s%s", OPER, bridge_modes[bridge_mode - 1]); mvwaddstr(main_sub, 6, 0, message); traps = *(varbinds[8].value); sprintf(message, "%s%s", TRAPS, (traps == 1) ? ON : OFF); mvwaddstr(main_sub, 8, 0, message); fw_bcast = *(varbinds[10].value); sprintf(message, "%s%s", FW_BCAST, (fw_bcast == 1) ? ON : OFF); mvwaddstr(main_sub, 9, 0, message); wrefresh(main_sub); noecho(); print_help(HELP); while (1) { switch (getch()) { case 'I': case 'i': get_ip(&ip, 1, strlen(IPADDR), HELP); m_ip = 1; continue; case 'N': case 'n': get_mask(&mask, 1, strlen(IPADDR) + 16 + strlen(NETMASK), HELP); m_mask = 1; continue; case 'G': case 'g': get_ip(&gw, 2, strlen(GATEWAY), HELP); m_gw = 1; continue; case 'F': case 'f': filter = on_off(3, strlen(IP_FILTER)); clear_main_new(3, 4); print_menusel(3, 0, IP_FILTER, (filter == 1) ? ON : OFF); m_filter = 1; continue; case 'P': case 'p': 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': dhcp = on_off(5, strlen(DHCP)); clear_main_new(5, 6); print_menusel(5, 0, DHCP, (dhcp == 1) ? ON : OFF); m_dhcp = 1; continue; case 'O': case 'o': bridge_mode = menu_choose(6, strlen(OPER), bridge_modes, 5) + 1; clear_main_new(6, 8); print_menusel(6, 0, OPER, bridge_modes[bridge_mode - 1]); if (bridge_mode != 2) { sprintf(message, "%02X%02X%02X%02X%02X%02X", *(RemoteBSSID + 0) & 0xFF, *(RemoteBSSID + 1) & 0xFF, *(RemoteBSSID + 2) & 0xFF, *(RemoteBSSID + 3) & 0xFF, *(RemoteBSSID + 4) & 0xFF, *(RemoteBSSID + 5) & 0xFF); print_menusel(7, 0, REMOTE_MAC, message); } m_bridge_mode = 1; continue; case 'M': case 'm': if (bridge_mode == 2) continue; get_mac(RemoteBSSID, 7, strlen(REMOTE_MAC)); m_remote_bssid = 1; continue; case 'S': case 's': traps = on_off(8, strlen(TRAPS)); clear_main_new(8, 9); print_menusel(8, 0, TRAPS, (traps == 1) ? ON : OFF); m_traps = 1; continue; /* case 'C': case 'c': config_port = menu_choose(9, strlen(CF_PORT), cf_trap_ports, 3); clear_main_new(9, 10); print_menusel(9, 0, CF_PORT, cf_trap_ports[config_port]); m_config_port = 1; continue; */ case 'R': case 'r': fw_bcast = on_off(9, strlen(FW_BCAST)); clear_main_new(9, 10); print_menusel(9, 0, FW_BCAST, (fw_bcast == 1) ? ON : OFF); m_fw_bcast = 1; continue; /* case 'B': case 'b': sb_bcast = on_off(12, strlen(SB_BCAST)); clear_main_new(12, 13); print_menusel(12, 0, SB_BCAST, (sb_bcast == 1) ? ON : OFF); m_sb_bcast = 1; continue; */ case 'U': case 'u': sb_ucast = on_off(10, strlen(SB_UCAST)); sb_ucast = (sb_ucast == 2) ? 1 : 2; clear_main_new(10, 11); print_menusel(10, 0, SB_UCAST, (sb_ucast == 2) ? ON : OFF); m_sb_ucast = 1; continue; case 'w': case 'W': i = 0; if (m_filter) { varbinds[i].oid = IPFilter; varbinds[i].len_oid = sizeof(IPFilter); 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].type = INT_VALUE; varbinds[i].value = (char *) &primary_port; varbinds[i].len_val = 1; i++; } if (m_dhcp) { varbinds[i].oid = operDHCP; varbinds[i].len_oid = sizeof(operDHCP); varbinds[i].type = INT_VALUE; varbinds[i].value = (char *) &dhcp; varbinds[i].len_val = 1; i++; } if (m_ip) { varbinds[i].oid = operIPAddress; varbinds[i].len_oid = sizeof(operIPAddress); ip.s_addr = htonl(ip.s_addr); ip.s_addr = swap4(ip.s_addr); varbinds[i].value = (char *) &ip.s_addr; varbinds[i].len_val = 4; varbinds[i].type = INT_VALUE; i++; } if (m_mask) { varbinds[i].oid = operIPMask; varbinds[i].len_oid = sizeof(operIPMask); mask.s_addr = htonl(mask.s_addr); mask.s_addr = swap4(mask.s_addr); varbinds[i].value = (char *) &mask.s_addr; varbinds[i].len_val = 4; varbinds[i].type = INT_VALUE; i++; } if (m_gw) { varbinds[i].oid = operGateway; gw.s_addr = htonl(gw.s_addr); gw.s_addr = swap4(gw.s_addr); varbinds[i].len_oid = sizeof(operGateway); varbinds[i].value = (char *) &gw.s_addr; varbinds[i].len_val = 4; varbinds[i].type = INT_VALUE; i++; } if (m_traps) { varbinds[i].oid = sysTrapSwitch; varbinds[i].len_oid = sizeof(sysTrapSwitch); varbinds[i].value = &traps; varbinds[i].len_val = 1; varbinds[i].type = INT_VALUE; i++; } if (m_bridge_mode) { varbinds[i].oid = bridgeOperationalMode; varbinds[i].len_oid = sizeof(bridgeOperationalMode); varbinds[i].value = (char *) &bridge_mode; varbinds[i].len_val = 1; varbinds[i].type = INT_VALUE; i++; } if (m_remote_bssid) { varbinds[i].oid = bridgeRemoteBridgeBSSID; varbinds[i].len_oid = sizeof(bridgeRemoteBridgeBSSID); varbinds[i].value = RemoteBSSID; varbinds[i].len_val = 6; varbinds[i].type = STRING_VALUE; i++; } /* if (m_config_port) { varbinds[i].oid = ConfigPort; varbinds[i].len_oid = sizeof(ConfigPort); varbinds[i].type = INT_VALUE; config_port +=1; varbinds[i].value = (char *) &config_port; varbinds[i].len_val = 1; i++; } */ if (m_fw_bcast) { 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; i++; } if (m_sb_ucast) { varbinds[i].oid = SendBackBcast; varbinds[i].len_oid = sizeof(SendBackBcast); varbinds[i].type = INT_VALUE; varbinds[i].value = (char *) &sb_ucast; varbinds[i].len_val = 1; i++; varbinds[i].oid = SendBackUnicast; varbinds[i].len_oid = sizeof(SendBackUnicast); varbinds[i].type = INT_VALUE; varbinds[i].value = (char *) &sb_ucast; varbinds[i].len_val = 1; i++; } if (m_trap_port) { 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].type = STRING_VALUE; varbinds[i].value = (char *) &trap_port; varbinds[i].len_val = len_val; i++; } print_help(WAIT_SET); if (snmp(varbinds, i, SET) <= 0) { print_helperr(ERR_SET); } else { wbkgd(main_sub, A_NORMAL); wrefresh(main_sub); print_help(DONE_SET); } goto exit; case 'Q': case 'q': goto quit; } continue; } exit: getch(); quit: print_top(NULL, NULL); clear_main(0); } ap-utils-1.5/ap-gl/stations.c000066400000000000000000000117121117246662700161430ustar00rootroot00000000000000/* * stations.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include #include #include "ap-utils.h" #define MAX_LINES LINES-4 extern int LINES; extern WINDOW *main_sub; extern short ap_type; void atmel_stations() { char StasNum[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x05, 0x01, 0x00 }; char StasMac[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x05, 0x02, 0x00 }; char bridgeOperationalMode[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x01, 0x00 }; struct AssociatedSTAsInfo { unsigned short Num; unsigned char MacAddress[6]; unsigned char Status; unsigned char Port; unsigned char ParentMacAddress[6]; unsigned char RSSI; unsigned char LinkQuality; unsigned char IP[4]; unsigned char Reserved[2]; } *mac = NULL, get; struct MacListStat *first = NULL, *curr = NULL; char message[1024]; int mac_num, begin, end, total_mac; varbind varbinds[1]; print_top(NULL, ST_TITLE); 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); goto exit; } if (*(varbinds[0].value) == 3) { mvwaddstr(main_sub, 3, 1, _("AP is currently in AP Client Mode => " "no associated STAtions.")); print_help(ANY_KEY); wrefresh(main_sub); getch(); goto exit; } varbinds[0].oid = StasNum; varbinds[0].len_oid = sizeof(StasNum); varbinds[0].value = StasNum; varbinds[0].type = NULL_VALUE; varbinds[0].len_val = 0; print_help(WAIT_RET); if (snmp(varbinds, 1, GET) <= 0) { print_helperr(ERR_RET); getch(); goto exit; } total_mac = *(varbinds[0].value); mac_num = 1; sprintf(message, "%s: %d", ST_TITLE, total_mac); print_top(NULL, message); 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) { varbinds[0].oid = StasMac; varbinds[0].len_oid = sizeof(StasMac); varbinds[0].type = INT_VALUE; get.Num = swap2(mac_num); varbinds[0].value = (char *) &get; varbinds[0].len_val = sizeof(get); 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 { print_helperr(_("AssociatedSTAsInfo packet error")); goto exit; } 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, mac->MacAddress, 6); // memcpy(curr->ParentMacAddress, mac->ParentMacAddress, 6); memcpy(&(curr->IP.s_addr), mac->IP, 4); curr->quality = 100 - (minimum(mac->LinkQuality, 40)*2.5); // curr->rssi = - 96 + mac->RSSI; // curr->quality = mac->LinkQuality; curr->rssi = mac->RSSI; curr->Port = mac->Port; curr->Status = mac->Status; curr->next = NULL; mac_num++; } begin = 1; 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.")); switch (getch()) { case 'S': case 's': save_Stations(first); continue; case KEY_RIGHT: case KEY_DOWN: if (end < mac_num) { begin++; end++; scroll_rows(first, begin, end, 1, 2); } continue; case KEY_UP: case KEY_LEFT: if (begin > 1) { begin--; end--; scroll_rows(first, begin, end, 1, 2); } continue; case 'Q': case 'q': goto exit; } } exit: while ((curr = first) != 0) { first = curr->next; free(curr); } print_top(NULL, NULL); clear_main(0); } ap-utils-1.5/ap-utils.spec000066400000000000000000000031011117246662700155360ustar00rootroot00000000000000Summary: Configure and monitor Wireless Access Points Name: ap-utils Version: 1.3.4pre1 Release: 0 Source: %name-%version.tar.bz2 License: GPL Group: Networking/Other URL: http://ap-utils.polesye.net/ Buildroot: %_tmppath/%name-buildroot %description Wireless Access Point Utilities for Unix is a set of utilities to configure and monitor Wireless Access Points under Unix. %prep rm -rf $RPM_BUILD_ROOT %setup -q %build %configure %make %install %makeinstall %find_lang %name %clean rm -rf $RPM_BUILD_ROOT %files -f %name.lang %defattr (-,root,root) %doc AUTHORS INSTALL NEWS COPYING README TODO ChangeLog %doc Documentation/FAQ Documentation/*.html %_bindir/* %_sbindir/* %_mandir/man8/* %changelog * Mon Nov 24 2003 Jacek Pliszka 1.3.4-pre1 - 1.3.4-pre1 * Mon Oct 27 2003 Lenny Cartier 1.3.3-1mdk - 1.3.3 * Sat Jul 26 2003 Lenny Cartier 1.3.2-1mdk - 1.3.2 * Sat Apr 25 2003 Lenny Cartier 1.3.1-2mdk - adjust buildrequires * Fri Mar 21 2003 Lenny Cartier 1.3.1-1mdk - 1.3.1 * Sat Feb 01 2003 Lenny Cartier 1.3-2mdk - rebuild * Fri Dec 06 2002 Lenny Cartier 1.3-1mdk - 1.3 - add locales & man pages * Tue Nov 12 2002 Lenny Cartier 1.2-1mdk - 1.2 * Fri Oct 04 2002 Lenny Cartier 1.1.1-1mdk - 1.1.1 * Tue Jul 16 2002 Lenny Cartier 1.0.3-1mdk - 1.0.3 * Fri Jul 06 2002 Lenny Cartier 1.0.2-1mdk - 1.0.2 ap-utils-1.5/config.h.in000066400000000000000000000163611117246662700151630ustar00rootroot00000000000000/* config.h.in. Generated from configure.in by autoheader. */ /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ #undef CRAY_STACKSEG_END /* Define to 1 if using `alloca.c'. */ #undef C_ALLOCA /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* Define to 1 if you have the `alarm' function. */ #undef HAVE_ALARM /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA /* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H /* Define to 1 if you have the header file. */ #undef HAVE_ARGZ_H /* Define to 1 if you have the header file. */ #undef HAVE_ARPA_INET_H /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the `feof_unlocked' function. */ #undef HAVE_FEOF_UNLOCKED /* Define to 1 if you have the `fgets_unlocked' function. */ #undef HAVE_FGETS_UNLOCKED /* Define to 1 if you have the `fork' function. */ #undef HAVE_FORK /* Define to 1 if you have the `free' function. */ #undef HAVE_FREE /* Define to 1 if you have the `getcwd' function. */ #undef HAVE_GETCWD /* Define to 1 if you have the `getc_unlocked' function. */ #undef HAVE_GETC_UNLOCKED /* Define to 1 if you have the `getegid' function. */ #undef HAVE_GETEGID /* Define to 1 if you have the `geteuid' function. */ #undef HAVE_GETEUID /* Define to 1 if you have the `getgid' function. */ #undef HAVE_GETGID /* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the `getuid' function. */ #undef HAVE_GETUID /* Define if you have the iconv() function. */ #undef HAVE_ICONV /* Define to 1 if you have the `inet_ntoa' function. */ #undef HAVE_INET_NTOA /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if you have and nl_langinfo(CODESET). */ #undef HAVE_LANGINFO_CODESET /* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the `malloc' function. */ #undef HAVE_MALLOC /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `mempcpy' function. */ #undef HAVE_MEMPCPY /* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP /* Define to 1 if you have the `munmap' function. */ #undef HAVE_MUNMAP /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H /* Define to 1 if you have the header file. */ #undef HAVE_NL_TYPES_H /* Define to 1 if you have the `putenv' function. */ #undef HAVE_PUTENV /* Define if your (struct sockadr) has an sa_len member */ #undef HAVE_SA_LEN /* Define to 1 if you have the `setenv' function. */ #undef HAVE_SETENV /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE /* Define to 1 if you have the `socket' function. */ #undef HAVE_SOCKET /* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `stpcpy' function. */ #undef HAVE_STPCPY /* Define to 1 if you have the `strcasecmp' function. */ #undef HAVE_STRCASECMP /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL /* Define to 1 if you have the `strtoul' function. */ #undef HAVE_STRTOUL /* Define to 1 if you have the `sysinfo' function. */ #undef HAVE_SYSINFO /* Define to 1 if you have the header file. */ #undef HAVE_SYSLOG_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have that is POSIX.1 compatible. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the `tsearch' function. */ #undef HAVE_TSEARCH /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `__argz_count' function. */ #undef HAVE___ARGZ_COUNT /* Define to 1 if you have the `__argz_next' function. */ #undef HAVE___ARGZ_NEXT /* Define to 1 if you have the `__argz_stringify' function. */ #undef HAVE___ARGZ_STRINGIFY /* Define as const if the declaration of iconv() needs const. */ #undef ICONV_CONST /* Define for no regulation domain restrictions */ #undef NO_REG_DOMAIN /* Define if target OS is BSD */ #undef OS_BSD /* Define if target OS is Linux */ #undef OS_LINUX /* Define if target OS is Solaris */ #undef OS_SOLARIS /* Define if target OS is MacOS X */ #undef OS_X /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ #undef WORDS_BIGENDIAN /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define as `__inline' if that's what the C compiler calls it, or to nothing if it is not supported. */ #undef inline /* Define to `long' if does not define. */ #undef off_t /* Define to `int' if does not define. */ #undef pid_t /* Define to `unsigned' if does not define. */ #undef size_t ap-utils-1.5/config/000077500000000000000000000000001117246662700143765ustar00rootroot00000000000000ap-utils-1.5/config/config.guess000077500000000000000000001200111117246662700167110ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002 Free Software Foundation, Inc. timestamp='2002-11-30' # This file 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # This shell variable is my proudest work .. or something. --bje set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ; (old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old) || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ; dummy=$tmpdir/dummy ; files="$dummy.c $dummy.o $dummy.rel $dummy" ; trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; rm -f $files ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; unset files' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; arc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; macppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvmeppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; pmax:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mipseb-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sun3:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; wgrisc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} exit 0 ;; alpha:OSF1:*:*) if test $UNAME_RELEASE = "V4.0"; then UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` fi # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. eval $set_cc_for_build cat <$dummy.s .data \$Lformat: .byte 37,100,45,37,120,10,0 # "%d-%x\n" .text .globl main .align 4 .ent main main: .frame \$30,16,\$26,0 ldgp \$29,0(\$27) .prologue 1 .long 0x47e03d80 # implver \$0 lda \$2,-1 .long 0x47e20c21 # amask \$2,\$1 lda \$16,\$Lformat mov \$0,\$17 not \$1,\$18 jsr \$26,printf ldgp \$29,0(\$26) mov 0,\$16 jsr \$26,exit .end main EOF $CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null if test "$?" = 0 ; then case `$dummy` in 0-0) UNAME_MACHINE="alpha" ;; 1-0) UNAME_MACHINE="alphaev5" ;; 1-1) UNAME_MACHINE="alphaev56" ;; 1-101) UNAME_MACHINE="alphapca56" ;; 2-303) UNAME_MACHINE="alphaev6" ;; 2-307) UNAME_MACHINE="alphaev67" ;; 2-1307) UNAME_MACHINE="alphaev68" ;; 3-1307) UNAME_MACHINE="alphaev7" ;; esac fi rm -f $dummy.s $dummy && rmdir $tmpdir echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; DRS?6000:UNIX_SV:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7 && exit 0 ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c \ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 rm -f $dummy.c $dummy && rmdir $tmpdir echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 rm -f $dummy.c $dummy && rmdir $tmpdir echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi rm -f $dummy.c $dummy && rmdir $tmpdir fi ;; esac echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 rm -f $dummy.c $dummy && rmdir $tmpdir echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3D:*:*:*) echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) # Determine whether the default compiler uses glibc. eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #if __GLIBC__ >= 2 LIBC=gnu #else LIBC= #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` rm -f $dummy.c && rmdir $tmpdir echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; x86:Interix*:3*) echo i586-pc-interix3 exit 0 ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` rm -f $dummy.c && rmdir $tmpdir test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` rm -f $dummy.c && rmdir $tmpdir test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit 0 ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit 0 ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit 0 ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit 0 ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit 0 ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit 0 ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #ifdef __INTEL_COMPILER LIBC=gnu #else LIBC=gnuaout #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` rm -f $dummy.c && rmdir $tmpdir test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; i*86:*:5:[78]*) case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit 0 ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4.3${OS_REL} && exit 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) echo `uname -p`-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit 0 ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit 0 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit 0 ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit 0 ;; *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 rm -f $dummy.c $dummy && rmdir $tmpdir # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ap-utils-1.5/config/config.rpath000066400000000000000000000334341117246662700167120ustar00rootroot00000000000000#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2002 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a shlibext= host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix3* | aix4* | aix5*) wl='-Wl,' ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6*) wl='-Wl,' ;; linux*) echo '__INTEL_COMPILER' > conftest.$ac_ext if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null then : else # Intel icc wl='-Qoption,ld,' fi ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) if test "x$host_vendor" = xsni; then wl='-LD' else wl='-Wl,' fi ;; esac fi hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then case "$host_os" in aix3* | aix4* | aix5*) # On AIX, the GNU linker is very broken ld_shlibs=no ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' ;; solaris* | sysv5*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac fi if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=yes ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9* | hpux10* | hpux11*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. ;; irix5* | irix6*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) if test "x$host_vendor" = xsno; then hardcode_direct=yes # is this really true??? else hardcode_direct=no # Motorola manual says yes, but my tests say they lie fi ;; sysv4.3*) ;; sysv5*) hardcode_libdir_flag_spec= ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4.2uw2*) hardcode_direct=yes hardcode_minus_L=no ;; sysv5uw7* | unixware7*) ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics libname_spec='lib$name' sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" case "$host_os" in aix3*) shlibext=so ;; aix4* | aix5*) shlibext=so ;; amigaos*) shlibext=ixlibrary ;; beos*) shlibext=so ;; bsdi4*) shlibext=so sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ;; cygwin* | mingw* | pw32*) case $GCC,$host_os in yes,cygwin*) shlibext=dll.a ;; yes,mingw*) shlibext=dll sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` ;; yes,pw32*) shlibext=dll ;; *) shlibext=dll ;; esac ;; darwin* | rhapsody*) shlibext=dylib ;; freebsd1*) ;; freebsd*) shlibext=so ;; gnu*) shlibext=so ;; hpux9* | hpux10* | hpux11*) shlibext=sl ;; irix5* | irix6*) shlibext=so case "$host_os" in irix5*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 ") libsuff= shlibsuff= ;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ;; linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) ;; linux-gnu*) shlibext=so ;; netbsd*) shlibext=so ;; newsos6) shlibext=so ;; openbsd*) shlibext=so ;; os2*) libname_spec='$name' shlibext=dll ;; osf3* | osf4* | osf5*) shlibext=so sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) shlibext=so ;; solaris*) shlibext=so ;; sunos4*) shlibext=so ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) shlibext=so case "$host_vendor" in motorola) sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; uts4*) shlibext=so ;; dgux*) shlibext=so ;; sysv4*MP*) if test -d /usr/nec; then shlibext=so fi ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_sys_lib_search_path_spec=`echo "X$sys_lib_search_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_sys_lib_dlsearch_path_spec=`echo "X$sys_lib_dlsearch_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit 0;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | clipper \ | d10v | d30v | dlx | dsp16xx \ | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k \ | m32r | m68000 | m68k | m88k | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mipsisa32 | mipsisa32el \ | mipsisa64 | mipsisa64el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | ns16k | ns32k \ | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xscale | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \ | clipper-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* \ | m32r-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39 | mipstx39el \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; crds | unos) basic_machine=m68k-crds ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; mmix*) basic_machine=mmix-knuth os=-mmixware ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; or32 | or32-*) basic_machine=or32-unknown os=-coff ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2) basic_machine=i686-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3d) basic_machine=alpha-cray os=-unicos ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic4x | c4x*) basic_machine=tic4x-unknown os=-coff ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele) basic_machine=sh-unknown ;; sh64) basic_machine=sh64-unknown ;; sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -ptx*) vendor=sequent ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ap-utils-1.5/config/depcomp000077500000000000000000000330521117246662700157560ustar00rootroot00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects # Copyright 1999, 2000, 2003 Free Software Foundation, Inc. # 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, 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. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # `libtool' can also be set to `yes' or `no'. if test -z "$depfile"; then base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` dir=`echo "$object" | sed 's,/.*$,/,'` if test "$dir" = "$object"; then dir= fi # FIXME: should be _deps on DOS. depfile="$dir.deps/$base" fi tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` tmpdepfile="$stripped.u" if test "$libtool" = yes; then "$@" -Wc,-M else "$@" -M fi stat=$? if test -f "$tmpdepfile"; then : else stripped=`echo "$stripped" | sed 's,^.*/,,'` tmpdepfile="$stripped.u" fi if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi if test -f "$tmpdepfile"; then outname="$stripped.o" # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1="$dir.libs/$base.lo.d" tmpdepfile2="$dir.libs/$base.d" "$@" -Wc,-MD else tmpdepfile1="$dir$base.o.d" tmpdepfile2="$dir$base.d" "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi if test -f "$tmpdepfile1"; then tmpdepfile="$tmpdepfile1" else tmpdepfile="$tmpdepfile2" fi if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 ap-utils-1.5/config/install-sh000077500000000000000000000142531117246662700164070ustar00rootroot00000000000000#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd=$cpprog shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd=$stripprog shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "$0: no input file specified" >&2 exit 1 else : fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d "$dst" ]; then instcmd=: chmodcmd="" else instcmd=$mkdirprog fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f "$src" ] || [ -d "$src" ] then : else echo "$0: $src does not exist" >&2 exit 1 fi if [ x"$dst" = x ] then echo "$0: no destination specified" >&2 exit 1 else : fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d "$dst" ] then dst=$dst/`basename "$src"` else : fi fi ## this sed command emulates the dirname command dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-$defaultIFS}" oIFS=$IFS # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` IFS=$oIFS pathcomp='' while [ $# -ne 0 ] ; do pathcomp=$pathcomp$1 shift if [ ! -d "$pathcomp" ] ; then $mkdirprog "$pathcomp" else : fi pathcomp=$pathcomp/ done fi if [ x"$dir_arg" != x ] then $doit $instcmd "$dst" && if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename "$dst"` else dstfile=`basename "$dst" $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename "$dst"` else : fi # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/#inst.$$# rmtmp=$dstdir/#rm.$$# # Trap to clean up temp files at exit. trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 trap '(exit $?); exit' 1 2 13 15 # Move or copy the file name to the temp name $doit $instcmd "$src" "$dsttmp" && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && # Now remove or move aside any old file at destination location. We try this # two ways since rm can't unlink itself on some systems and the destination # file might be busy for other reasons. In this case, the final cleanup # might fail but the new file should still install successfully. { if [ -f "$dstdir/$dstfile" ] then $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || { echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 (exit 1); exit } else : fi } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" fi && # The final little trick to "correctly" pass the exit status to the exit trap. { (exit 0); exit } ap-utils-1.5/config/missing000077500000000000000000000240361117246662700160020ustar00rootroot00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. # Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # 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, 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. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi case "$1" in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case "$1" in -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch]" ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing 0.4 - GNU automake" ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; aclocal*) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is needed, and you do not seem to have it handy on your system. You might have modified some files without having the proper tools for further handling them. You can get \`$1Help2man' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` fi if [ -f "$file" ]; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then # We have makeinfo, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` fi touch $file ;; tar) shift if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 fi # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case "$firstarg" in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case "$firstarg" in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and you do not seem to have it handy on your system. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequirements for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 ap-utils-1.5/config/mkinstalldirs000077500000000000000000000037041117246662700172100ustar00rootroot00000000000000#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain errstatus=0 dirmode="" usage="\ Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" 1>&2 exit 0 ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac case $dirmode in '') if mkdir -p -- . 2>/dev/null; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" fi ;; *) if mkdir -m "$dirmode" -p -- . 2>/dev/null; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" fi ;; esac for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr="" chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp="$pathcomp/" done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # End: # mkinstalldirs ends here ap-utils-1.5/configure000077500000000000000000010052211117246662700150410ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.57. # # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="lib/snmp.c" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #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 CURSESLIBS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking Speeds up one-time builds --enable-dependency-tracking Do not reject slow dependency extractors --disable-nls do not use Native Language Support --disable-regdomain disable regulation domain channel restrictions Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld default=no --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-included-gettext use the GNU gettext library included here --with-libintl-prefix=DIR search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.57. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------- ## ## Output files. ## ## ------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core core.* *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in config $srcdir/config; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config $srcdir/config" >&5 echo "$as_me: error: cannot find install-sh or install.sh in config $srcdir/config" >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. am__api_version="1.7" # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 test "$program_prefix" != NONE && program_transform_name="s,^,$program_prefix,;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s,\$,$program_suffix,;$program_transform_name" # Double any \ or $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=ap-utils VERSION=1.5 cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} AMTAR=${AMTAR-"${am_missing_run}tar"} install_sh=${install_sh-"$am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. ac_config_headers="$ac_config_headers config.h" ac_aux_dir=config ac_config_guess=config/config.guess ac_config_sub=config/config.sub # Checks for programs. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:$LINENO: checking for C compiler default output" >&5 echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ ''\ '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6 rm -f confinc confmf # Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval="$enable_dependency_tracking" fi; if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c : > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi # Checks for header files. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6 if test "${ac_cv_header_sys_wait_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif int main () { int s; wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_sys_wait_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_sys_wait_h=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 if test $ac_cv_header_sys_wait_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_WAIT_H 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in arpa/inet.h fcntl.h malloc.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h syslog.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ( cat <<\_ASBOX ## ------------------------------------ ## ## Report this to bug-autoconf@gnu.org. ## ## ------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ( cat <<\_ASBOX ## ------------------------------------ ## ## Report this to bug-autoconf@gnu.org. ## ## ------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset x; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++ccp; p = (char**) ccp; ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF #define const _ACEOF fi echo "$as_me:$LINENO: checking for pid_t" >&5 echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 if test "${ac_cv_type_pid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { if ((pid_t *) 0) return 0; if (sizeof (pid_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_pid_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_pid_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 echo "${ECHO_T}$ac_cv_type_pid_t" >&6 if test $ac_cv_type_pid_t = yes; then : else cat >>confdefs.h <<_ACEOF #define pid_t int _ACEOF fi echo "$as_me:$LINENO: checking for size_t" >&5 echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { if ((size_t *) 0) return 0; if (sizeof (size_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_size_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned _ACEOF fi echo "$as_me:$LINENO: checking for struct sockaddr.sa_len" >&5 echo $ECHO_N "checking for struct sockaddr.sa_len... $ECHO_C" >&6 if test "${ac_cv_member_struct_sockaddr_sa_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { static struct sockaddr ac_aggr; if (ac_aggr.sa_len) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_member_struct_sockaddr_sa_len=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { static struct sockaddr ac_aggr; if (sizeof ac_aggr.sa_len) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_member_struct_sockaddr_sa_len=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_member_struct_sockaddr_sa_len=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_member_struct_sockaddr_sa_len" >&5 echo "${ECHO_T}$ac_cv_member_struct_sockaddr_sa_len" >&6 if test $ac_cv_member_struct_sockaddr_sa_len = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SA_LEN 1 _ACEOF fi # Checks for library functions. echo "$as_me:$LINENO: checking for working memcmp" >&5 echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6 if test "${ac_cv_func_memcmp_working+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_memcmp_working=no else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* Some versions of memcmp are not 8-bit clean. */ char c0 = 0x40, c1 = 0x80, c2 = 0x81; if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) exit (1); /* The Next x86 OpenStep bug shows up only when comparing 16 bytes or more and with at least one buffer not starting on a 4-byte boundary. William Lewis provided this test program. */ { char foo[21]; char bar[21]; int i; for (i = 0; i < 4; i++) { char *a = foo + i; char *b = bar + i; strcpy (a, "--------01111111"); strcpy (b, "--------10000000"); if (memcmp (a, b, 16) >= 0) exit (1); } exit (0); } ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_memcmp_working=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_memcmp_working=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6 test $ac_cv_func_memcmp_working = no && LIBOBJS="$LIBOBJS memcmp.$ac_objext" echo "$as_me:$LINENO: checking return type of signal handlers" >&5 echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 if test "${ac_cv_type_signal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #ifdef signal # undef signal #endif #ifdef __cplusplus extern "C" void (*signal (int, void (*)(int)))(int); #else void (*signal ()) (); #endif int main () { int i; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_signal=void else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_signal=int fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 echo "${ECHO_T}$ac_cv_type_signal" >&6 cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF for ac_func in alarm inet_ntoa socket strtol sysinfo fork malloc free do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done ALL_LINGUAS="uk fr pl ro nl tr" MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$MSGFMT" in /*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then echo "$as_me:$LINENO: result: $MSGFMT" >&5 echo "${ECHO_T}$MSGFMT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then echo "$as_me:$LINENO: result: $GMSGFMT" >&5 echo "${ECHO_T}$GMSGFMT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$XGETTEXT" in /*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then echo "$as_me:$LINENO: result: $XGETTEXT" >&5 echo "${ECHO_T}$XGETTEXT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f messages.po # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MSGMERGE+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$MSGMERGE" in /*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then echo "$as_me:$LINENO: result: $MSGMERGE" >&5 echo "${ECHO_T}$MSGMERGE" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$GMSGFMT" != ":"; then if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 GMSGFMT=":" fi fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 XGETTEXT=":" fi rm -f messages.po fi ac_config_commands="$ac_config_commands default-1" # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 if test "${ac_cv_lib_cposix_strerror+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcposix $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char strerror (); int main () { strerror (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_cposix_strerror=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_cposix_strerror=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 if test $ac_cv_lib_cposix_strerror = yes; then LIBS="$LIBS -lcposix" fi echo "$as_me:$LINENO: checking for inline" >&5 echo $ECHO_N "checking for inline... $ECHO_C" >&6 if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_inline=$ac_kw; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done fi echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 echo "${ECHO_T}$ac_cv_c_inline" >&6 case $ac_cv_c_inline in inline | yes) ;; no) cat >>confdefs.h <<\_ACEOF #define inline _ACEOF ;; *) cat >>confdefs.h <<_ACEOF #define inline $ac_cv_c_inline _ACEOF ;; esac echo "$as_me:$LINENO: checking for off_t" >&5 echo $ECHO_N "checking for off_t... $ECHO_C" >&6 if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { if ((off_t *) 0) return 0; if (sizeof (off_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_off_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_off_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 echo "${ECHO_T}$ac_cv_type_off_t" >&6 if test $ac_cv_type_off_t = yes; then : else cat >>confdefs.h <<_ACEOF #define off_t long _ACEOF fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo "$as_me:$LINENO: checking for working alloca.h" >&5 echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { char *p = (char *) alloca (2 * sizeof (int)); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_working_alloca_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_working_alloca_h=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ALLOCA_H 1 _ACEOF fi echo "$as_me:$LINENO: checking for alloca" >&5 echo $ECHO_N "checking for alloca... $ECHO_C" >&6 if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __GNUC__ # define alloca __builtin_alloca #else # ifdef _MSC_VER # include # define alloca _alloca # else # if HAVE_ALLOCA_H # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ char *alloca (); # endif # endif # endif # endif #endif int main () { char *p = (char *) alloca (1); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_alloca_works=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_alloca_works=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 if test $ac_cv_func_alloca_works = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ALLOCA 1 _ACEOF else # The SVR3 libPW and SVR4 libucb both contain incompatible functions # that cause trouble. Some versions do not even contain alloca or # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. ALLOCA=alloca.$ac_objext cat >>confdefs.h <<\_ACEOF #define C_ALLOCA 1 _ACEOF echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if defined(CRAY) && ! defined(CRAY2) webecray #else wenotbecray #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "webecray" >/dev/null 2>&1; then ac_cv_os_cray=yes else ac_cv_os_cray=no fi rm -f conftest* fi echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 echo "${ECHO_T}$ac_cv_os_cray" >&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define CRAY_STACKSEG_END $ac_func _ACEOF break fi done fi echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_c_stack_direction=0 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int find_stack_direction () { static char *addr = 0; auto char dummy; if (addr == 0) { addr = &dummy; return find_stack_direction (); } else return (&dummy > addr) ? 1 : -1; } int main () { exit (find_stack_direction () < 0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_stack_direction=1 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction _ACEOF fi for ac_header in stdlib.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ( cat <<\_ASBOX ## ------------------------------------ ## ## Report this to bug-autoconf@gnu.org. ## ## ------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ( cat <<\_ASBOX ## ------------------------------------ ## ## Report this to bug-autoconf@gnu.org. ## ## ------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in getpagesize do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done echo "$as_me:$LINENO: checking for working mmap" >&5 echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_mmap_fixed_mapped=no else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default /* malloc might have been renamed as rpl_malloc. */ #undef malloc /* Thanks to Mike Haertel and Jim Avera for this test. Here is a matrix of mmap possibilities: mmap private not fixed mmap private fixed at somewhere currently unmapped mmap private fixed at somewhere already mapped mmap shared not fixed mmap shared fixed at somewhere currently unmapped mmap shared fixed at somewhere already mapped For private mappings, we should verify that changes cannot be read() back from the file, nor mmap's back from the file at a different address. (There have been systems where private was not correctly implemented like the infamous i386 svr4.0, and systems where the VM page cache was not coherent with the file system buffer cache like early versions of FreeBSD and possibly contemporary NetBSD.) For shared mappings, we should conversely verify that changes get propagated back to all the places they're supposed to be. Grep wants private fixed already mapped. The main things grep needs to know about mmap are: * does it exist and is it safe to write into the mmap'd area * how to use it (BSD variants) */ #include #include #if !STDC_HEADERS && !HAVE_STDLIB_H char *malloc (); #endif /* This mess was copied from the GNU getpagesize.h. */ #if !HAVE_GETPAGESIZE /* Assume that all systems that can run configure have sys/param.h. */ # if !HAVE_SYS_PARAM_H # define HAVE_SYS_PARAM_H 1 # endif # ifdef _SC_PAGESIZE # define getpagesize() sysconf(_SC_PAGESIZE) # else /* no _SC_PAGESIZE */ # if HAVE_SYS_PARAM_H # include # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE # else /* no EXEC_PAGESIZE */ # ifdef NBPG # define getpagesize() NBPG * CLSIZE # ifndef CLSIZE # define CLSIZE 1 # endif /* no CLSIZE */ # else /* no NBPG */ # ifdef NBPC # define getpagesize() NBPC # else /* no NBPC */ # ifdef PAGESIZE # define getpagesize() PAGESIZE # endif /* PAGESIZE */ # endif /* no NBPC */ # endif /* no NBPG */ # endif /* no EXEC_PAGESIZE */ # else /* no HAVE_SYS_PARAM_H */ # define getpagesize() 8192 /* punt totally */ # endif /* no HAVE_SYS_PARAM_H */ # endif /* no _SC_PAGESIZE */ #endif /* no HAVE_GETPAGESIZE */ int main () { char *data, *data2, *data3; int i, pagesize; int fd; pagesize = getpagesize (); /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) exit (1); for (i = 0; i < pagesize; ++i) *(data + i) = rand (); umask (0); fd = creat ("conftest.mmap", 0600); if (fd < 0) exit (1); if (write (fd, data, pagesize) != pagesize) exit (1); close (fd); /* Next, try to mmap the file at a fixed address which already has something else allocated at it. If we can, also make sure that we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) exit (1); data2 = (char *) malloc (2 * pagesize); if (!data2) exit (1); data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, fd, 0L)) exit (1); for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data2 + i)) exit (1); /* Finally, make sure that changes to the mapped area do not percolate back to the file as seen by read(). (This is a bug on some variants of i386 svr4.0.) */ for (i = 0; i < pagesize; ++i) *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) exit (1); if (read (fd, data3, pagesize) != pagesize) exit (1); for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data3 + i)) exit (1); close (fd); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_mmap_fixed_mapped=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_mmap_fixed_mapped=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 if test $ac_cv_func_mmap_fixed_mapped = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_MMAP 1 _ACEOF fi rm -f conftest.mmap echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 if test "${ac_cv_gnu_library_2_1+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) Lucky GNU user #endif #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Lucky GNU user" >/dev/null 2>&1; then ac_cv_gnu_library_2_1=yes else ac_cv_gnu_library_2_1=no fi rm -f conftest* fi echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 GLIBC21="$ac_cv_gnu_library_2_1" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by GCC" >&5 echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${acl_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$acl_cv_path_LD" if test -n "$LD"; then echo "$as_me:$LINENO: result: $LD" >&5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${acl_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then acl_cv_prog_gnu_ld=yes else acl_cv_prog_gnu_ld=no fi fi echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 with_gnu_ld=$acl_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for shared library run path origin" >&5 echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 if test "${acl_cv_rpath+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 echo "${ECHO_T}$acl_cv_rpath" >&6 wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then withval="$with_libiconv_prefix" if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi; LIBICONV= LTLIBICONV= INCICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "X$found_dir" = "X/usr/lib"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done echo "$as_me:$LINENO: checking for iconv" >&5 echo $ECHO_N "checking for iconv... $ECHO_C" >&6 if test "${am_cv_func_iconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_func_iconv=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_lib_iconv=yes am_cv_func_iconv=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 echo "${ECHO_T}$am_cv_func_iconv" >&6 if test "$am_cv_func_iconv" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ICONV 1 _ACEOF fi if test "$am_cv_lib_iconv" = yes; then echo "$as_me:$LINENO: checking how to link with libiconv" >&5 echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $LIBICONV" >&5 echo "${ECHO_T}$LIBICONV" >&6 else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ( cat <<\_ASBOX ## ------------------------------------ ## ## Report this to bug-autoconf@gnu.org. ## ## ------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ( cat <<\_ASBOX ## ------------------------------------ ## ## Report this to bug-autoconf@gnu.org. ## ## ------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if test "$am_cv_func_iconv" = yes; then echo "$as_me:$LINENO: checking for iconv declaration" >&5 echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 if test "${am_cv_proto_iconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_proto_iconv_arg1="" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 am_cv_proto_iconv_arg1="const" fi rm -f conftest.$ac_objext conftest.$ac_ext am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" fi am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` echo "$as_me:$LINENO: result: ${ac_t:- }$am_cv_proto_iconv" >&5 echo "${ECHO_T}${ac_t:- }$am_cv_proto_iconv" >&6 cat >>confdefs.h <<_ACEOF #define ICONV_CONST $am_cv_proto_iconv_arg1 _ACEOF fi echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 if test "${am_cv_langinfo_codeset+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { char* cs = nl_langinfo(CODESET); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_langinfo_codeset=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 am_cv_langinfo_codeset=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 if test $am_cv_langinfo_codeset = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LANGINFO_CODESET 1 _ACEOF fi if test $ac_cv_header_locale_h = yes; then echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 if test "${am_cv_val_LC_MESSAGES+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { return LC_MESSAGES ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_val_LC_MESSAGES=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 am_cv_val_LC_MESSAGES=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 if test $am_cv_val_LC_MESSAGES = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LC_MESSAGES 1 _ACEOF fi fi for ac_prog in bison do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_INTLBISON+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$INTLBISON"; then ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_INTLBISON="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi INTLBISON=$ac_cv_prog_INTLBISON if test -n "$INTLBISON"; then echo "$as_me:$LINENO: result: $INTLBISON" >&5 echo "${ECHO_T}$INTLBISON" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$INTLBISON" && break done if test -z "$INTLBISON"; then ac_verc_fail=yes else echo "$as_me:$LINENO: checking version of bison" >&5 echo $ECHO_N "checking version of bison... $ECHO_C" >&6 ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac echo "$as_me:$LINENO: result: $ac_prog_version" >&5 echo "${ECHO_T}$ac_prog_version" >&6 fi if test $ac_verc_fail = yes; then INTLBISON=: fi echo "$as_me:$LINENO: checking whether NLS is requested" >&5 echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" USE_NLS=$enableval else USE_NLS=yes fi; echo "$as_me:$LINENO: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6 BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no LIBINTL= LTLIBINTL= POSUB= if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" nls_cv_force_use_gnu_gettext=$withval else nls_cv_force_use_gnu_gettext=no fi; echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext1_libc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_func_gnugettext1_libc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_gnugettext1_libc=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 if test "$gt_cv_func_gnugettext1_libc" != "yes"; then use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix or --without-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then withval="$with_libintl_prefix" if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi; LIBINTL= LTLIBINTL= INCINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "X$found_dir" = "X/usr/lib"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_func_gnugettext1_libintl=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_gnugettext1_libintl=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext1_libintl=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 fi if test "$gt_cv_func_gnugettext1_libc" = "yes" \ || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ && test "$PACKAGE" != gettext; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test "$gt_use_preinstalled_gnugettext" != "yes"; then nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then INTLOBJS="\$(GETTOBJS)" BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV" LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then CATOBJEXT=.gmo fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then cat >>confdefs.h <<\_ACEOF #define ENABLE_NLS 1 _ACEOF else USE_NLS=no fi fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then echo "$as_me:$LINENO: checking how to link with libintl" >&5 echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $LIBINTL" >&5 echo "${ECHO_T}$LIBINTL" >&6 for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi cat >>confdefs.h <<\_ACEOF #define HAVE_GETTEXT 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi POSUB=po fi if test "$PACKAGE" = gettext; then BUILD_INCLUDED_LIBINTL=yes fi nls_cv_header_intl= nls_cv_header_libgt= DATADIRNAME=share INSTOBJEXT=.mo GENCAT=gencat INTL_LIBTOOL_SUFFIX_PREFIX= INTLLIBS="$LIBINTL" 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 echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lncurses $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char initscr (); int main () { initscr (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ncurses_initscr=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ncurses_initscr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS 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 CURSESLIBS="-lncurses" else NOCURSES=yes fi if test "$NOCURSES" = yes; then 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 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcurses $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char initscr (); int main () { initscr (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_curses_initscr=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_curses_initscr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS 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 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;} { (exit 1); exit 1; }; } fi fi LIBS="$aputils_save_LIBS" # Check for OS and make OS define OS specific variables case "$host_os" in *bsd*|*darwin* ) cat >>confdefs.h <<\_ACEOF #define OS_BSD 1 _ACEOF case "$host_os" in netbsd* ) ap_config_LDADD="-lncurses" CC="$CC -R/usr/pkg/lib -L/usr/pkg/lib -I/usr/pkg/include" ;; openbsd* ) ;; *darwin* ) cat >>confdefs.h <<\_ACEOF #define OS_X 1 _ACEOF ;; esac ;; *qnx ) LIBS="$LIBS -lsocket" INSTALL="config/install-sh" ;; aix4* ) case "$CC" in cc* | xlc* ) CC="$CC -qcpluscmt -qmaxmem=16384" esac ;; solaris* ) cat >>confdefs.h <<\_ACEOF #define OS_SOLARIS 1 _ACEOF LIBS="$LIBS -lresolv -lnls" ;; gnu*|*linux* ) cat >>confdefs.h <<\_ACEOF #define OS_LINUX 1 _ACEOF CFLAGS="$CFLAGS -Wall -W" ;; esac echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 if test "${ac_cv_c_bigendian+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # See if sys/param.h defines the BYTE_ORDER macro. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN bogus endian macros #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # It does; now see whether it defined to BIG_ENDIAN or not. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_bigendian=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_bigendian=no fi rm -f conftest.$ac_objext conftest.$ac_ext else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # It does not; compile a test program. if test "$cross_compiling" = yes; then # try to guess the endianness by grepping values into an object file ac_cv_c_bigendian=unknown cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } int main () { _ascii (); _ebcdic (); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long l; char c[sizeof (long)]; } u; u.l = 1; exit (u.c[sizeof (long) - 1] == 1); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_bigendian=no else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_bigendian=yes fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 echo "${ECHO_T}$ac_cv_c_bigendian" >&6 case $ac_cv_c_bigendian in yes) cat >>confdefs.h <<\_ACEOF #define WORDS_BIGENDIAN 1 _ACEOF ;; no) ;; *) { { echo "$as_me:$LINENO: error: unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" >&5 echo "$as_me: error: unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} { (exit 1); exit 1; }; } ;; esac # Check whether --enable-regdomain or --disable-regdomain was given. if test "${enable_regdomain+set}" = set; then enableval="$enable_regdomain" case "$enableval" in no) cat >>confdefs.h <<\_ACEOF #define NO_REG_DOMAIN 1 _ACEOF ;; esac 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 # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by $as_me, which was generated by GNU Autoconf 2.57. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.57, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS section. # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # Capture the value of obsolete $ALL_LINGUAS because we need it to compute # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it # from automake. eval 'ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "ap-gl/Makefile" ) CONFIG_FILES="$CONFIG_FILES ap-gl/Makefile" ;; "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;; "Documentation/Makefile" ) CONFIG_FILES="$CONFIG_FILES Documentation/Makefile" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@CYGPATH_W@,$CYGPATH_W,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@ACLOCAL@,$ACLOCAL,;t t s,@AUTOCONF@,$AUTOCONF,;t t s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@AMTAR@,$AMTAR,;t t s,@install_sh@,$install_sh,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t s,@AWK@,$AWK,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@am__leading_dot@,$am__leading_dot,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@DEPDIR@,$DEPDIR,;t t s,@am__include@,$am__include,;t t s,@am__quote@,$am__quote,;t t s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t s,@CCDEPMODE@,$CCDEPMODE,;t t s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@CPP@,$CPP,;t t s,@EGREP@,$EGREP,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t s,@MSGFMT@,$MSGFMT,;t t s,@GMSGFMT@,$GMSGFMT,;t t s,@XGETTEXT@,$XGETTEXT,;t t s,@MSGMERGE@,$MSGMERGE,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@ALLOCA@,$ALLOCA,;t t s,@GLIBC21@,$GLIBC21,;t t s,@LIBICONV@,$LIBICONV,;t t s,@LTLIBICONV@,$LTLIBICONV,;t t s,@INTLBISON@,$INTLBISON,;t t s,@USE_NLS@,$USE_NLS,;t t s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t s,@CATOBJEXT@,$CATOBJEXT,;t t s,@INTLOBJS@,$INTLOBJS,;t t s,@DATADIRNAME@,$DATADIRNAME,;t t s,@INSTOBJEXT@,$INSTOBJEXT,;t t s,@GENCAT@,$GENCAT,;t t s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t 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 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; *) # Relative if test -f "$f"; then # Build tree echo $f elif test -f "$srcdir/$f"; then # Source tree echo $srcdir/$f else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; *) # Relative if test -f "$f"; then # Build tree echo $f elif test -f "$srcdir/$f"; then # Source tree echo $srcdir/$f else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # grep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $ac_file | $ac_file:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X$ac_file : 'X\(//\)[^/]' \| \ X$ac_file : 'X\(//\)$' \| \ X$ac_file : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X$ac_file | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'`/stamp-h$_am_stamp_count done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`(dirname "$mf") 2>/dev/null || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` else continue fi grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue # Extract the definition of DEP_FILES from the Makefile without # running `make'. DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` test -z "$DEPDIR" && continue # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n -e '/^U = / s///p' < "$mf"` test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" # We invoke sed twice because it is the simplest approach to # changing $(DEPDIR) to its actual value in the expansion. for file in `sed -n -e ' /^DEP_FILES = .*\\\\$/ { s/^DEP_FILES = // :loop s/\\\\$// p n /\\\\$/ b loop p } /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`(dirname "$file") 2>/dev/null || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p $dirpart/$fdir else as_dir=$dirpart/$fdir as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; default-1 ) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' fi case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= GMOFILES= UPDATEPOFILES= DUMMYPOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi echo " Thank you for using ap-utils. " ap-utils-1.5/configure.in000066400000000000000000000061651117246662700154520ustar00rootroot00000000000000# # configure.in from Wireless Access Point Utilites for Unix # # Copyright (c) 2002 Roman Festchook # # 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 # AC_INIT([lib/snmp.c]) AC_CONFIG_AUX_DIR(config) AM_INIT_AUTOMAKE(ap-utils, 1.5) AM_CONFIG_HEADER(config.h) ac_aux_dir=config ac_config_guess=config/config.guess ac_config_sub=config/config.sub # Checks for programs. AC_PROG_CC AC_PROG_RANLIB # Checks for header files. AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_CHECK_HEADERS([arpa/inet.h fcntl.h malloc.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h syslog.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_PID_T AC_TYPE_SIZE_T AC_CHECK_MEMBER(struct sockaddr.sa_len, AC_DEFINE(HAVE_SA_LEN, 1, Define if your (struct sockadr) has an sa_len member),, [ #include #include ]) # Checks for library functions. AC_FUNC_MEMCMP AC_TYPE_SIGNAL AC_CHECK_FUNCS([alarm inet_ntoa socket strtol sysinfo fork malloc free]) ALL_LINGUAS="uk fr pl ro nl tr" AM_GNU_GETTEXT aputils_save_LIBS="$LIBS" AC_CHECK_LIB(ncurses, initscr, CURSESLIBS="-lncurses", NOCURSES=yes) if test "$NOCURSES" = yes; then 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 *bsd*|*darwin* ) AC_DEFINE(OS_BSD, 1, Define if target OS is BSD) case "$host_os" in netbsd* ) ap_config_LDADD="-lncurses" CC="$CC -R/usr/pkg/lib -L/usr/pkg/lib -I/usr/pkg/include" ;; openbsd* ) ;; *darwin* ) AC_DEFINE(OS_X, 1, Define if target OS is MacOS X) ;; esac ;; *qnx ) LIBS="$LIBS -lsocket" INSTALL="config/install-sh" ;; aix4* ) case "$CC" in cc* | xlc* ) CC="$CC -qcpluscmt -qmaxmem=16384" esac ;; solaris* ) AC_DEFINE(OS_SOLARIS, 1, Define if target OS is Solaris) LIBS="$LIBS -lresolv -lnls" ;; gnu*|*linux* ) AC_DEFINE(OS_LINUX, 1, Define if target OS is Linux) CFLAGS="$CFLAGS -Wall -W" ;; esac AC_C_BIGENDIAN AC_ARG_ENABLE(regdomain, [ --disable-regdomain disable regulation domain channel restrictions], [ case "$enableval" in no) AC_DEFINE(NO_REG_DOMAIN, 1, Define for no regulation domain restrictions) ;; esac ]) AC_SUBST(CURSESLIBS) AC_OUTPUT([Makefile src/Makefile ap-gl/Makefile lib/Makefile po/Makefile.in intl/Makefile Documentation/Makefile]) echo " Thank you for using ap-utils. " ap-utils-1.5/intl/000077500000000000000000000000001117246662700140775ustar00rootroot00000000000000ap-utils-1.5/intl/ChangeLog000066400000000000000000000001111117246662700156420ustar00rootroot000000000000002002-03-12 GNU * Version 0.11.1 released. ap-utils-1.5/intl/Makefile.in000066400000000000000000000251541117246662700161530ustar00rootroot00000000000000# Makefile for directory with message catalog handling in GNU NLS Utilities. # Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published # by the Free Software Foundation; either version 2, 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 # Library General Public License for more details. # # You should have received a copy of the GNU Library 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. PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = /bin/sh srcdir = @srcdir@ top_srcdir = @top_srcdir@ top_builddir = .. VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ transform = @program_transform_name@ libdir = @libdir@ includedir = @includedir@ datadir = @datadir@ localedir = $(datadir)/locale gettextsrcdir = $(datadir)/gettext/intl aliaspath = $(localedir) subdir = intl INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ MKINSTALLDIRS = @MKINSTALLDIRS@ mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` l = @INTL_LIBTOOL_SUFFIX_PREFIX@ AR = ar CC = @CC@ LIBTOOL = @LIBTOOL@ RANLIB = @RANLIB@ YACC = @INTLBISON@ -y -d YFLAGS = --name-prefix=__gettext DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ -DLIBDIR=\"$(libdir)\" -DIN_LIBINTL @DEFS@ CPPFLAGS = @CPPFLAGS@ CFLAGS = @CFLAGS@ LDFLAGS = @LDFLAGS@ COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) HEADERS = $(COMHDRS) libgnuintl.h loadinfo.h COMHDRS = gmo.h gettextP.h hash-string.h plural-exp.h eval-plural.h os2compat.h SOURCES = $(COMSRCS) intl-compat.c COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ explodename.c dcigettext.c dcngettext.c dngettext.c ngettext.c plural.y \ plural-exp.c localcharset.c localename.c osdep.c os2compat.c OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ explodename.$lo dcigettext.$lo dcngettext.$lo dngettext.$lo ngettext.$lo \ plural.$lo plural-exp.$lo localcharset.$lo localename.$lo osdep.$lo GETTOBJS = intl-compat.$lo DISTFILES.common = Makefile.in \ config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES) DISTFILES.generated = plural.c DISTFILES.normal = VERSION DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \ COPYING.LIB-2 gettext.h libgettext.h plural-eval.c # Libtool's library version information for libintl. # Before making a gettext release, the gettext maintainer must change this # according to the libtool documentation, section "Library interface versions". # Maintainers of other packages that include the intl directory must *not* # change these values. LTV_CURRENT=2 LTV_REVISION=0 LTV_AGE=0 .SUFFIXES: .SUFFIXES: .c .y .o .lo .sin .sed .c.o: $(COMPILE) $< .c.lo: $(LIBTOOL) --mode=compile $(COMPILE) $< .y.c: $(YACC) $(YFLAGS) --output $@ $< rm -f $*.h .sin.sed: sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@ mv t-$@ $@ INCLUDES = -I.. -I. -I$(top_srcdir)/intl all: all-@USE_INCLUDED_LIBINTL@ all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed all-no: all-no-@BUILD_INCLUDED_LIBINTL@ all-no-yes: libgnuintl.$la all-no-no: libintl.a libgnuintl.a: $(OBJECTS) rm -f $@ $(AR) cru $@ $(OBJECTS) $(RANLIB) $@ libintl.la libgnuintl.la: $(OBJECTS) $(LIBTOOL) --mode=link \ $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \ $(OBJECTS) @LTLIBICONV@ -lc \ -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ -rpath $(libdir) \ -no-undefined libintl.h: libgnuintl.h cp $(srcdir)/libgnuintl.h libintl.h charset.alias: config.charset $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ mv t-$@ $@ check: all # This installation goal is only used in GNU gettext. Packages which # only use the library should use install instead. # We must not install the libintl.h/libintl.a files if we are on a # system which has the GNU gettext() function in its C library or in a # separate library. # If you want to use the one which comes with this version of the # package, you have to use `configure --with-included-gettext'. install: install-exec install-data install-exec: all if test "$(PACKAGE)" = "gettext" \ && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \ $(LIBTOOL) --mode=install \ $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \ else \ : ; \ fi if test '@USE_INCLUDED_LIBINTL@' = yes; then \ test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \ temp=$(DESTDIR)$(libdir)/t-charset.alias; \ dest=$(DESTDIR)$(libdir)/charset.alias; \ if test -f $(DESTDIR)$(libdir)/charset.alias; then \ orig=$(DESTDIR)$(libdir)/charset.alias; \ sed -f ref-add.sed $$orig > $$temp; \ $(INSTALL_DATA) $$temp $$dest; \ rm -f $$temp; \ else \ if test @GLIBC21@ = no; then \ orig=charset.alias; \ sed -f ref-add.sed $$orig > $$temp; \ $(INSTALL_DATA) $$temp $$dest; \ rm -f $$temp; \ fi; \ fi; \ $(mkinstalldirs) $(DESTDIR)$(localedir); \ test -f $(DESTDIR)$(localedir)/locale.alias \ && orig=$(DESTDIR)$(localedir)/locale.alias \ || orig=$(srcdir)/locale.alias; \ temp=$(DESTDIR)$(localedir)/t-locale.alias; \ dest=$(DESTDIR)$(localedir)/locale.alias; \ sed -f ref-add.sed $$orig > $$temp; \ $(INSTALL_DATA) $$temp $$dest; \ rm -f $$temp; \ else \ : ; \ fi install-data: all if test "$(PACKAGE)" = "gettext"; then \ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \ dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \ for file in $$dists; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \ dists="$(DISTFILES.generated)"; \ for file in $$dists; do \ if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ $(INSTALL_DATA) $$dir/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ dists="$(DISTFILES.obsolete)"; \ for file in $$dists; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-strip: install installdirs: if test "$(PACKAGE)" = "gettext" \ && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ else \ : ; \ fi if test '@USE_INCLUDED_LIBINTL@' = yes; then \ test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \ $(mkinstalldirs) $(DESTDIR)$(localedir); \ else \ : ; \ fi if test "$(PACKAGE)" = "gettext"; then \ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi # Define this as empty until I found a useful application. installcheck: uninstall: if test "$(PACKAGE)" = "gettext" \ && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ rm -f $(DESTDIR)$(includedir)/libintl.h; \ $(LIBTOOL) --mode=uninstall \ rm -f $(DESTDIR)$(libdir)/libintl.$la; \ else \ : ; \ fi if test '@USE_INCLUDED_LIBINTL@' = yes; then \ if test -f $(DESTDIR)$(libdir)/charset.alias; then \ temp=$(DESTDIR)$(libdir)/t-charset.alias; \ dest=$(DESTDIR)$(libdir)/charset.alias; \ sed -f ref-del.sed $$dest > $$temp; \ if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ rm -f $$dest; \ else \ $(INSTALL_DATA) $$temp $$dest; \ fi; \ rm -f $$temp; \ fi; \ if test -f $(DESTDIR)$(localedir)/locale.alias; then \ temp=$(DESTDIR)$(localedir)/t-locale.alias; \ dest=$(DESTDIR)$(localedir)/locale.alias; \ sed -f ref-del.sed $$dest > $$temp; \ if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ rm -f $$dest; \ else \ $(INSTALL_DATA) $$temp $$dest; \ fi; \ rm -f $$temp; \ fi; \ else \ : ; \ fi if test "$(PACKAGE)" = "gettext"; then \ for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi info dvi: $(OBJECTS): ../config.h libgnuintl.h bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: gettextP.h gmo.h loadinfo.h dcigettext.$lo: hash-string.h explodename.$lo l10nflist.$lo: loadinfo.h dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: plural-exp.h dcigettext.$lo: eval-plural.h tags: TAGS TAGS: $(HEADERS) $(SOURCES) here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) id: ID ID: $(HEADERS) $(SOURCES) here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) mostlyclean: rm -f *.a *.la *.o *.lo core core.* rm -f libintl.h charset.alias ref-add.sed ref-del.sed rm -f -r .libs _libs clean: mostlyclean distclean: clean rm -f Makefile ID TAGS if test "$(PACKAGE)" = gettext; then \ rm -f ChangeLog.inst $(DISTFILES.normal); \ else \ : ; \ fi maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." # GNU gettext needs not contain the file `VERSION' but contains some # other files which should not be distributed in other packages. distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: Makefile if test "$(PACKAGE)" = gettext; then \ additional="$(DISTFILES.gettext)"; \ else \ additional="$(DISTFILES.normal)"; \ fi; \ $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \ for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \ if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ cp -p $$dir/$$file $(distdir); \ done Makefile: Makefile.in ../config.status cd .. \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ap-utils-1.5/intl/VERSION000066400000000000000000000000501117246662700151420ustar00rootroot00000000000000GNU gettext library from gettext-0.11.1 ap-utils-1.5/intl/bindtextdom.c000066400000000000000000000231631117246662700165710ustar00rootroot00000000000000/* Implementation of the bindtextdomain(3) function Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #ifdef _LIBC # include #else # include "libgnuintl.h" #endif #include "gettextP.h" #ifdef _LIBC /* We have to handle multi-threaded applications. */ # include #else /* Provide dummy implementation if this is outside glibc. */ # define __libc_rwlock_define(CLASS, NAME) # define __libc_rwlock_wrlock(NAME) # define __libc_rwlock_unlock(NAME) #endif /* The internal variables in the standalone libintl.a must have different names than the internal variables in GNU libc, otherwise programs using libintl.a cannot be linked statically. */ #if !defined _LIBC # define _nl_default_dirname _nl_default_dirname__ # define _nl_domain_bindings _nl_domain_bindings__ #endif /* Some compilers, like SunOS4 cc, don't have offsetof in . */ #ifndef offsetof # define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) #endif /* @@ end of prolog @@ */ /* Contains the default location of the message catalogs. */ extern const char _nl_default_dirname[]; /* List with bindings of specific domains. */ extern struct binding *_nl_domain_bindings; /* Lock variable to protect the global data in the gettext implementation. */ __libc_rwlock_define (extern, _nl_state_lock) /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define BINDTEXTDOMAIN __bindtextdomain # define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset # ifndef strdup # define strdup(str) __strdup (str) # endif #else # define BINDTEXTDOMAIN bindtextdomain__ # define BIND_TEXTDOMAIN_CODESET bind_textdomain_codeset__ #endif /* Prototypes for local functions. */ static void set_binding_values PARAMS ((const char *domainname, const char **dirnamep, const char **codesetp)); /* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP to be used for the DOMAINNAME message catalog. If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not modified, only the current value is returned. If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither modified nor returned. */ static void set_binding_values (domainname, dirnamep, codesetp) const char *domainname; const char **dirnamep; const char **codesetp; { struct binding *binding; int modified; /* Some sanity checks. */ if (domainname == NULL || domainname[0] == '\0') { if (dirnamep) *dirnamep = NULL; if (codesetp) *codesetp = NULL; return; } __libc_rwlock_wrlock (_nl_state_lock); modified = 0; for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) { int compare = strcmp (domainname, binding->domainname); if (compare == 0) /* We found it! */ break; if (compare < 0) { /* It is not in the list. */ binding = NULL; break; } } if (binding != NULL) { if (dirnamep) { const char *dirname = *dirnamep; if (dirname == NULL) /* The current binding has be to returned. */ *dirnamep = binding->dirname; else { /* The domain is already bound. If the new value and the old one are equal we simply do nothing. Otherwise replace the old binding. */ char *result = binding->dirname; if (strcmp (dirname, result) != 0) { if (strcmp (dirname, _nl_default_dirname) == 0) result = (char *) _nl_default_dirname; else { #if defined _LIBC || defined HAVE_STRDUP result = strdup (dirname); #else size_t len = strlen (dirname) + 1; result = (char *) malloc (len); if (__builtin_expect (result != NULL, 1)) memcpy (result, dirname, len); #endif } if (__builtin_expect (result != NULL, 1)) { if (binding->dirname != _nl_default_dirname) free (binding->dirname); binding->dirname = result; modified = 1; } } *dirnamep = result; } } if (codesetp) { const char *codeset = *codesetp; if (codeset == NULL) /* The current binding has be to returned. */ *codesetp = binding->codeset; else { /* The domain is already bound. If the new value and the old one are equal we simply do nothing. Otherwise replace the old binding. */ char *result = binding->codeset; if (result == NULL || strcmp (codeset, result) != 0) { #if defined _LIBC || defined HAVE_STRDUP result = strdup (codeset); #else size_t len = strlen (codeset) + 1; result = (char *) malloc (len); if (__builtin_expect (result != NULL, 1)) memcpy (result, codeset, len); #endif if (__builtin_expect (result != NULL, 1)) { if (binding->codeset != NULL) free (binding->codeset); binding->codeset = result; binding->codeset_cntr++; modified = 1; } } *codesetp = result; } } } else if ((dirnamep == NULL || *dirnamep == NULL) && (codesetp == NULL || *codesetp == NULL)) { /* Simply return the default values. */ if (dirnamep) *dirnamep = _nl_default_dirname; if (codesetp) *codesetp = NULL; } else { /* We have to create a new binding. */ size_t len = strlen (domainname) + 1; struct binding *new_binding = (struct binding *) malloc (offsetof (struct binding, domainname) + len); if (__builtin_expect (new_binding == NULL, 0)) goto failed; memcpy (new_binding->domainname, domainname, len); if (dirnamep) { const char *dirname = *dirnamep; if (dirname == NULL) /* The default value. */ dirname = _nl_default_dirname; else { if (strcmp (dirname, _nl_default_dirname) == 0) dirname = _nl_default_dirname; else { char *result; #if defined _LIBC || defined HAVE_STRDUP result = strdup (dirname); if (__builtin_expect (result == NULL, 0)) goto failed_dirname; #else size_t len = strlen (dirname) + 1; result = (char *) malloc (len); if (__builtin_expect (result == NULL, 0)) goto failed_dirname; memcpy (result, dirname, len); #endif dirname = result; } } *dirnamep = dirname; new_binding->dirname = (char *) dirname; } else /* The default value. */ new_binding->dirname = (char *) _nl_default_dirname; new_binding->codeset_cntr = 0; if (codesetp) { const char *codeset = *codesetp; if (codeset != NULL) { char *result; #if defined _LIBC || defined HAVE_STRDUP result = strdup (codeset); if (__builtin_expect (result == NULL, 0)) goto failed_codeset; #else size_t len = strlen (codeset) + 1; result = (char *) malloc (len); if (__builtin_expect (result == NULL, 0)) goto failed_codeset; memcpy (result, codeset, len); #endif codeset = result; new_binding->codeset_cntr++; } *codesetp = codeset; new_binding->codeset = (char *) codeset; } else new_binding->codeset = NULL; /* Now enqueue it. */ if (_nl_domain_bindings == NULL || strcmp (domainname, _nl_domain_bindings->domainname) < 0) { new_binding->next = _nl_domain_bindings; _nl_domain_bindings = new_binding; } else { binding = _nl_domain_bindings; while (binding->next != NULL && strcmp (domainname, binding->next->domainname) > 0) binding = binding->next; new_binding->next = binding->next; binding->next = new_binding; } modified = 1; /* Here we deal with memory allocation failures. */ if (0) { failed_codeset: if (new_binding->dirname != _nl_default_dirname) free (new_binding->dirname); failed_dirname: free (new_binding); failed: if (dirnamep) *dirnamep = NULL; if (codesetp) *codesetp = NULL; } } /* If we modified any binding, we flush the caches. */ if (modified) ++_nl_msg_cat_cntr; __libc_rwlock_unlock (_nl_state_lock); } /* Specify that the DOMAINNAME message catalog will be found in DIRNAME rather than in the system locale data base. */ char * BINDTEXTDOMAIN (domainname, dirname) const char *domainname; const char *dirname; { set_binding_values (domainname, &dirname, NULL); return (char *) dirname; } /* Specify the character encoding in which the messages from the DOMAINNAME message catalog will be returned. */ char * BIND_TEXTDOMAIN_CODESET (domainname, codeset) const char *domainname; const char *codeset; { set_binding_values (domainname, NULL, &codeset); return (char *) codeset; } #ifdef _LIBC /* Aliases for function names in GNU C Library. */ weak_alias (__bindtextdomain, bindtextdomain); weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset); #endif ap-utils-1.5/intl/config.charset000066400000000000000000000326141117246662700167250ustar00rootroot00000000000000#! /bin/sh # Output a system dependent table of character encoding aliases. # # Copyright (C) 2000-2002 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published # by the Free Software Foundation; either version 2, 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 # Library General Public License for more details. # # You should have received a copy of the GNU Library 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. # # The table consists of lines of the form # ALIAS CANONICAL # # ALIAS is the (system dependent) result of "nl_langinfo (CODESET)". # ALIAS is compared in a case sensitive way. # # CANONICAL is the GNU canonical name for this character encoding. # It must be an encoding supported by libiconv. Support by GNU libc is # also desirable. CANONICAL is case insensitive. Usually an upper case # MIME charset name is preferred. # The current list of GNU canonical charset names is as follows. # # name used by which systems a MIME name? # ASCII, ANSI_X3.4-1968 glibc solaris freebsd # ISO-8859-1 glibc aix hpux irix osf solaris freebsd yes # ISO-8859-2 glibc aix hpux irix osf solaris freebsd yes # ISO-8859-3 glibc yes # ISO-8859-4 osf solaris freebsd yes # ISO-8859-5 glibc aix hpux irix osf solaris freebsd yes # ISO-8859-6 glibc aix hpux solaris yes # ISO-8859-7 glibc aix hpux irix osf solaris yes # ISO-8859-8 glibc aix hpux osf solaris yes # ISO-8859-9 glibc aix hpux irix osf solaris yes # ISO-8859-13 glibc # ISO-8859-15 glibc aix osf solaris freebsd # KOI8-R glibc solaris freebsd yes # KOI8-U glibc freebsd yes # CP437 dos # CP775 dos # CP850 aix osf dos # CP852 dos # CP855 dos # CP856 aix # CP857 dos # CP861 dos # CP862 dos # CP864 dos # CP865 dos # CP866 freebsd dos # CP869 dos # CP874 win32 dos # CP922 aix # CP932 aix win32 dos # CP943 aix # CP949 osf win32 dos # CP950 win32 dos # CP1046 aix # CP1124 aix # CP1129 aix # CP1250 win32 # CP1251 glibc win32 # CP1252 aix win32 # CP1253 win32 # CP1254 win32 # CP1255 win32 # CP1256 win32 # CP1257 win32 # GB2312 glibc aix hpux irix solaris freebsd yes # EUC-JP glibc aix hpux irix osf solaris freebsd yes # EUC-KR glibc aix hpux irix osf solaris freebsd yes # EUC-TW glibc aix hpux irix osf solaris # BIG5 glibc aix hpux osf solaris freebsd yes # BIG5-HKSCS glibc # GBK aix osf win32 dos # GB18030 glibc # SHIFT_JIS hpux osf solaris freebsd yes # JOHAB glibc win32 # TIS-620 glibc aix hpux osf solaris # VISCII glibc yes # HP-ROMAN8 hpux # HP-ARABIC8 hpux # HP-GREEK8 hpux # HP-HEBREW8 hpux # HP-TURKISH8 hpux # HP-KANA8 hpux # DEC-KANJI osf # DEC-HANYU osf # UTF-8 glibc aix hpux osf solaris yes # # Note: Names which are not marked as being a MIME name should not be used in # Internet protocols for information interchange (mail, news, etc.). # # Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications # must understand both names and treat them as equivalent. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM host="$1" os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'` echo "# This file contains a table of character encoding aliases," echo "# suitable for operating system '${os}'." echo "# It was automatically generated from config.charset." # List of references, updated during installation: echo "# Packages using this file: " case "$os" in linux* | *-gnu*) # With glibc-2.1 or newer, we don't need any canonicalization, # because glibc has iconv and both glibc and libiconv support all # GNU canonical names directly. Therefore, the Makefile does not # need to install the alias file at all. # The following applies only to glibc-2.0.x and older libcs. echo "ISO_646.IRV:1983 ASCII" ;; aix*) echo "ISO8859-1 ISO-8859-1" echo "ISO8859-2 ISO-8859-2" echo "ISO8859-5 ISO-8859-5" echo "ISO8859-6 ISO-8859-6" echo "ISO8859-7 ISO-8859-7" echo "ISO8859-8 ISO-8859-8" echo "ISO8859-9 ISO-8859-9" echo "ISO8859-15 ISO-8859-15" echo "IBM-850 CP850" echo "IBM-856 CP856" echo "IBM-921 ISO-8859-13" echo "IBM-922 CP922" echo "IBM-932 CP932" echo "IBM-943 CP943" echo "IBM-1046 CP1046" echo "IBM-1124 CP1124" echo "IBM-1129 CP1129" echo "IBM-1252 CP1252" echo "IBM-eucCN GB2312" echo "IBM-eucJP EUC-JP" echo "IBM-eucKR EUC-KR" echo "IBM-eucTW EUC-TW" echo "big5 BIG5" echo "GBK GBK" echo "TIS-620 TIS-620" echo "UTF-8 UTF-8" ;; hpux*) echo "iso88591 ISO-8859-1" echo "iso88592 ISO-8859-2" echo "iso88595 ISO-8859-5" echo "iso88596 ISO-8859-6" echo "iso88597 ISO-8859-7" echo "iso88598 ISO-8859-8" echo "iso88599 ISO-8859-9" echo "iso885915 ISO-8859-15" echo "roman8 HP-ROMAN8" echo "arabic8 HP-ARABIC8" echo "greek8 HP-GREEK8" echo "hebrew8 HP-HEBREW8" echo "turkish8 HP-TURKISH8" echo "kana8 HP-KANA8" echo "tis620 TIS-620" echo "big5 BIG5" echo "eucJP EUC-JP" echo "eucKR EUC-KR" echo "eucTW EUC-TW" echo "hp15CN GB2312" #echo "ccdc ?" # what is this? echo "SJIS SHIFT_JIS" echo "utf8 UTF-8" ;; irix*) echo "ISO8859-1 ISO-8859-1" echo "ISO8859-2 ISO-8859-2" echo "ISO8859-5 ISO-8859-5" echo "ISO8859-7 ISO-8859-7" echo "ISO8859-9 ISO-8859-9" echo "eucCN GB2312" echo "eucJP EUC-JP" echo "eucKR EUC-KR" echo "eucTW EUC-TW" ;; osf*) echo "ISO8859-1 ISO-8859-1" echo "ISO8859-2 ISO-8859-2" echo "ISO8859-4 ISO-8859-4" echo "ISO8859-5 ISO-8859-5" echo "ISO8859-7 ISO-8859-7" echo "ISO8859-8 ISO-8859-8" echo "ISO8859-9 ISO-8859-9" echo "ISO8859-15 ISO-8859-15" echo "cp850 CP850" echo "big5 BIG5" echo "dechanyu DEC-HANYU" echo "dechanzi GB2312" echo "deckanji DEC-KANJI" echo "deckorean EUC-KR" echo "eucJP EUC-JP" echo "eucKR EUC-KR" echo "eucTW EUC-TW" echo "GBK GBK" echo "KSC5601 CP949" echo "sdeckanji EUC-JP" echo "SJIS SHIFT_JIS" echo "TACTIS TIS-620" echo "UTF-8 UTF-8" ;; solaris*) echo "646 ASCII" echo "ISO8859-1 ISO-8859-1" echo "ISO8859-2 ISO-8859-2" echo "ISO8859-4 ISO-8859-4" echo "ISO8859-5 ISO-8859-5" echo "ISO8859-6 ISO-8859-6" echo "ISO8859-7 ISO-8859-7" echo "ISO8859-8 ISO-8859-8" echo "ISO8859-9 ISO-8859-9" echo "ISO8859-15 ISO-8859-15" echo "koi8-r KOI8-R" echo "BIG5 BIG5" echo "gb2312 GB2312" echo "cns11643 EUC-TW" echo "5601 EUC-KR" echo "eucJP EUC-JP" echo "PCK SHIFT_JIS" echo "TIS620.2533 TIS-620" #echo "sun_eu_greek ?" # what is this? echo "UTF-8 UTF-8" ;; freebsd* | os2*) # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore # localcharset.c falls back to using the full locale name # from the environment variables. # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just # reuse FreeBSD's locale data for OS/2. echo "C ASCII" echo "US-ASCII ASCII" for l in la_LN lt_LN; do echo "$l.ASCII ASCII" done for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \ lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do echo "$l.ISO_8859-1 ISO-8859-1" echo "$l.DIS_8859-15 ISO-8859-15" done for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do echo "$l.ISO_8859-2 ISO-8859-2" done for l in la_LN lt_LT; do echo "$l.ISO_8859-4 ISO-8859-4" done for l in ru_RU ru_SU; do echo "$l.KOI8-R KOI8-R" echo "$l.ISO_8859-5 ISO-8859-5" echo "$l.CP866 CP866" done echo "uk_UA.KOI8-U KOI8-U" echo "zh_TW.BIG5 BIG5" echo "zh_TW.Big5 BIG5" echo "zh_CN.EUC GB2312" echo "ja_JP.EUC EUC-JP" echo "ja_JP.SJIS SHIFT_JIS" echo "ja_JP.Shift_JIS SHIFT_JIS" echo "ko_KR.EUC EUC-KR" ;; netbsd*) echo "646 ASCII" echo "ISO8859-1 ISO-8859-1" echo "ISO8859-2 ISO-8859-2" echo "ISO8859-4 ISO-8859-4" echo "ISO8859-5 ISO-8859-5" echo "ISO8859-15 ISO-8859-15" echo "eucCN GB2312" echo "eucJP EUC-JP" echo "eucKR EUC-KR" echo "eucTW EUC-TW" echo "BIG5 BIG5" echo "SJIS SHIFT_JIS" ;; beos*) # BeOS has a single locale, and it has UTF-8 encoding. echo "* UTF-8" ;; msdosdjgpp*) # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore # localcharset.c falls back to using the full locale name # from the environment variables. echo "#" echo "# The encodings given here may not all be correct." echo "# If you find that the encoding given for your language and" echo "# country is not the one your DOS machine actually uses, just" echo "# correct it in this file, and send a mail to" echo "# Juan Manuel Guerrero " echo "# and Bruno Haible ." echo "#" echo "C ASCII" # ISO-8859-1 languages echo "ca CP850" echo "ca_ES CP850" echo "da CP865" # not CP850 ?? echo "da_DK CP865" # not CP850 ?? echo "de CP850" echo "de_AT CP850" echo "de_CH CP850" echo "de_DE CP850" echo "en CP850" echo "en_AU CP850" # not CP437 ?? echo "en_CA CP850" echo "en_GB CP850" echo "en_NZ CP437" echo "en_US CP437" echo "en_ZA CP850" # not CP437 ?? echo "es CP850" echo "es_AR CP850" echo "es_BO CP850" echo "es_CL CP850" echo "es_CO CP850" echo "es_CR CP850" echo "es_CU CP850" echo "es_DO CP850" echo "es_EC CP850" echo "es_ES CP850" echo "es_GT CP850" echo "es_HN CP850" echo "es_MX CP850" echo "es_NI CP850" echo "es_PA CP850" echo "es_PY CP850" echo "es_PE CP850" echo "es_SV CP850" echo "es_UY CP850" echo "es_VE CP850" echo "et CP850" echo "et_EE CP850" echo "eu CP850" echo "eu_ES CP850" echo "fi CP850" echo "fi_FI CP850" echo "fr CP850" echo "fr_BE CP850" echo "fr_CA CP850" echo "fr_CH CP850" echo "fr_FR CP850" echo "ga CP850" echo "ga_IE CP850" echo "gd CP850" echo "gd_GB CP850" echo "gl CP850" echo "gl_ES CP850" echo "id CP850" # not CP437 ?? echo "id_ID CP850" # not CP437 ?? echo "is CP861" # not CP850 ?? echo "is_IS CP861" # not CP850 ?? echo "it CP850" echo "it_CH CP850" echo "it_IT CP850" echo "lt CP775" echo "lt_LT CP775" echo "lv CP775" echo "lv_LV CP775" echo "nb CP865" # not CP850 ?? echo "nb_NO CP865" # not CP850 ?? echo "nl CP850" echo "nl_BE CP850" echo "nl_NL CP850" echo "nn CP865" # not CP850 ?? echo "nn_NO CP865" # not CP850 ?? echo "no CP865" # not CP850 ?? echo "no_NO CP865" # not CP850 ?? echo "pt CP850" echo "pt_BR CP850" echo "pt_PT CP850" echo "sv CP850" echo "sv_SE CP850" # ISO-8859-2 languages echo "cs CP852" echo "cs_CZ CP852" echo "hr CP852" echo "hr_HR CP852" echo "hu CP852" echo "hu_HU CP852" echo "pl CP852" echo "pl_PL CP852" echo "ro CP852" echo "ro_RO CP852" echo "sk CP852" echo "sk_SK CP852" echo "sl CP852" echo "sl_SI CP852" echo "sq CP852" echo "sq_AL CP852" echo "sr CP852" # CP852 or CP866 or CP855 ?? echo "sr_YU CP852" # CP852 or CP866 or CP855 ?? # ISO-8859-3 languages echo "mt CP850" echo "mt_MT CP850" # ISO-8859-5 languages echo "be CP866" echo "be_BE CP866" echo "bg CP866" # not CP855 ?? echo "bg_BG CP866" # not CP855 ?? echo "mk CP866" # not CP855 ?? echo "mk_MK CP866" # not CP855 ?? echo "ru CP866" echo "ru_RU CP866" # ISO-8859-6 languages echo "ar CP864" echo "ar_AE CP864" echo "ar_DZ CP864" echo "ar_EG CP864" echo "ar_IQ CP864" echo "ar_IR CP864" echo "ar_JO CP864" echo "ar_KW CP864" echo "ar_MA CP864" echo "ar_OM CP864" echo "ar_QA CP864" echo "ar_SA CP864" echo "ar_SY CP864" # ISO-8859-7 languages echo "el CP869" echo "el_GR CP869" # ISO-8859-8 languages echo "he CP862" echo "he_IL CP862" # ISO-8859-9 languages echo "tr CP857" echo "tr_TR CP857" # Japanese echo "ja CP932" echo "ja_JP CP932" # Chinese echo "zh_CN GBK" echo "zh_TW CP950" # not CP938 ?? # Korean echo "kr CP949" # not CP934 ?? echo "kr_KR CP949" # not CP934 ?? # Thai echo "th CP874" echo "th_TH CP874" # Other echo "eo CP850" echo "eo_EO CP850" ;; esac ap-utils-1.5/intl/dcgettext.c000066400000000000000000000034321117246662700162400ustar00rootroot00000000000000/* Implementation of the dcgettext(3) function. Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifdef HAVE_CONFIG_H # include #endif #include "gettextP.h" #ifdef _LIBC # include #else # include "libgnuintl.h" #endif /* @@ end of prolog @@ */ /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define DCGETTEXT __dcgettext # define DCIGETTEXT __dcigettext #else # define DCGETTEXT dcgettext__ # define DCIGETTEXT dcigettext__ #endif /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY locale. */ char * DCGETTEXT (domainname, msgid, category) const char *domainname; const char *msgid; int category; { return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category); } #ifdef _LIBC /* Alias for function name in GNU C Library. */ weak_alias (__dcgettext, dcgettext); #endif ap-utils-1.5/intl/dcigettext.c000066400000000000000000000763271117246662700164260ustar00rootroot00000000000000/* Implementation of the internal dcigettext function. Copyright (C) 1995-1999, 2000-2002 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ /* Tell glibc's to provide a prototype for mempcpy(). This must come before because may include , and once has been included, it's too late. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif #ifdef HAVE_CONFIG_H # include #endif #include #ifdef __GNUC__ # define alloca __builtin_alloca # define HAVE_ALLOCA 1 #else # if defined HAVE_ALLOCA_H || defined _LIBC # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca char *alloca (); # endif # endif # endif #endif #include #ifndef errno extern int errno; #endif #ifndef __set_errno # define __set_errno(val) errno = (val) #endif #include #include #include #if defined HAVE_UNISTD_H || defined _LIBC # include #endif #include #if defined HAVE_SYS_PARAM_H || defined _LIBC # include #endif #include "gettextP.h" #include "plural-exp.h" #ifdef _LIBC # include #else # include "libgnuintl.h" #endif #include "hash-string.h" /* Thread safetyness. */ #ifdef _LIBC # include #else /* Provide dummy implementation if this is outside glibc. */ # define __libc_lock_define_initialized(CLASS, NAME) # define __libc_lock_lock(NAME) # define __libc_lock_unlock(NAME) # define __libc_rwlock_define_initialized(CLASS, NAME) # define __libc_rwlock_rdlock(NAME) # define __libc_rwlock_unlock(NAME) #endif /* Alignment of types. */ #if defined __GNUC__ && __GNUC__ >= 2 # define alignof(TYPE) __alignof__ (TYPE) #else # define alignof(TYPE) \ ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2) #endif /* The internal variables in the standalone libintl.a must have different names than the internal variables in GNU libc, otherwise programs using libintl.a cannot be linked statically. */ #if !defined _LIBC # define _nl_default_default_domain _nl_default_default_domain__ # define _nl_current_default_domain _nl_current_default_domain__ # define _nl_default_dirname _nl_default_dirname__ # define _nl_domain_bindings _nl_domain_bindings__ #endif /* Some compilers, like SunOS4 cc, don't have offsetof in . */ #ifndef offsetof # define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) #endif /* @@ end of prolog @@ */ #ifdef _LIBC /* Rename the non ANSI C functions. This is required by the standard because some ANSI C functions will require linking with this object file and the name space must not be polluted. */ # define getcwd __getcwd # ifndef stpcpy # define stpcpy __stpcpy # endif # define tfind __tfind #else # if !defined HAVE_GETCWD char *getwd (); # define getcwd(buf, max) getwd (buf) # else char *getcwd (); # endif # ifndef HAVE_STPCPY static char *stpcpy PARAMS ((char *dest, const char *src)); # endif # ifndef HAVE_MEMPCPY static void *mempcpy PARAMS ((void *dest, const void *src, size_t n)); # endif #endif /* Amount to increase buffer size by in each try. */ #define PATH_INCR 32 /* The following is from pathmax.h. */ /* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define PATH_MAX but might cause redefinition warnings when sys/param.h is later included (as on MORE/BSD 4.3). */ #if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__) # include #endif #ifndef _POSIX_PATH_MAX # define _POSIX_PATH_MAX 255 #endif #if !defined PATH_MAX && defined _PC_PATH_MAX # define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) #endif /* Don't include sys/param.h if it already has been. */ #if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN # include #endif #if !defined PATH_MAX && defined MAXPATHLEN # define PATH_MAX MAXPATHLEN #endif #ifndef PATH_MAX # define PATH_MAX _POSIX_PATH_MAX #endif /* Pathname support. ISSLASH(C) tests whether C is a directory separator character. IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, it may be concatenated to a directory pathname. IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. */ #if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ /* Win32, OS/2, DOS */ # define ISSLASH(C) ((C) == '/' || (C) == '\\') # define HAS_DEVICE(P) \ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ && (P)[1] == ':') # define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) # define IS_PATH_WITH_DIR(P) \ (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) #else /* Unix */ # define ISSLASH(C) ((C) == '/') # define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) # define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) #endif /* This is the type used for the search tree where known translations are stored. */ struct known_translation_t { /* Domain in which to search. */ char *domainname; /* The category. */ int category; /* State of the catalog counter at the point the string was found. */ int counter; /* Catalog where the string was found. */ struct loaded_l10nfile *domain; /* And finally the translation. */ const char *translation; size_t translation_length; /* Pointer to the string in question. */ char msgid[ZERO]; }; /* Root of the search tree with known translations. We can use this only if the system provides the `tsearch' function family. */ #if defined HAVE_TSEARCH || defined _LIBC # include static void *root; # ifdef _LIBC # define tsearch __tsearch # endif /* Function to compare two entries in the table of known translations. */ static int transcmp PARAMS ((const void *p1, const void *p2)); static int transcmp (p1, p2) const void *p1; const void *p2; { const struct known_translation_t *s1; const struct known_translation_t *s2; int result; s1 = (const struct known_translation_t *) p1; s2 = (const struct known_translation_t *) p2; result = strcmp (s1->msgid, s2->msgid); if (result == 0) { result = strcmp (s1->domainname, s2->domainname); if (result == 0) /* We compare the category last (though this is the cheapest operation) since it is hopefully always the same (namely LC_MESSAGES). */ result = s1->category - s2->category; } return result; } #endif /* Name of the default domain used for gettext(3) prior any call to textdomain(3). The default value for this is "messages". */ const char _nl_default_default_domain[] = "messages"; /* Value used as the default domain for gettext(3). */ const char *_nl_current_default_domain = _nl_default_default_domain; /* Contains the default location of the message catalogs. */ #if defined __EMX__ extern const char _nl_default_dirname[]; #else const char _nl_default_dirname[] = LOCALEDIR; #endif /* List with bindings of specific domains created by bindtextdomain() calls. */ struct binding *_nl_domain_bindings; /* Prototypes for local functions. */ static char *plural_lookup PARAMS ((struct loaded_l10nfile *domain, unsigned long int n, const char *translation, size_t translation_len)) internal_function; static const char *category_to_name PARAMS ((int category)) internal_function; static const char *guess_category_value PARAMS ((int category, const char *categoryname)) internal_function; /* For those loosing systems which don't have `alloca' we have to add some additional code emulating it. */ #ifdef HAVE_ALLOCA /* Nothing has to be done. */ # define ADD_BLOCK(list, address) /* nothing */ # define FREE_BLOCKS(list) /* nothing */ #else struct block_list { void *address; struct block_list *next; }; # define ADD_BLOCK(list, addr) \ do { \ struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ /* If we cannot get a free block we cannot add the new element to \ the list. */ \ if (newp != NULL) { \ newp->address = (addr); \ newp->next = (list); \ (list) = newp; \ } \ } while (0) # define FREE_BLOCKS(list) \ do { \ while (list != NULL) { \ struct block_list *old = list; \ list = list->next; \ free (old); \ } \ } while (0) # undef alloca # define alloca(size) (malloc (size)) #endif /* have alloca */ #ifdef _LIBC /* List of blocks allocated for translations. */ typedef struct transmem_list { struct transmem_list *next; char data[ZERO]; } transmem_block_t; static struct transmem_list *transmem_list; #else typedef unsigned char transmem_block_t; #endif /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define DCIGETTEXT __dcigettext #else # define DCIGETTEXT dcigettext__ #endif /* Lock variable to protect the global data in the gettext implementation. */ #ifdef _LIBC __libc_rwlock_define_initialized (, _nl_state_lock) #endif /* Checking whether the binaries runs SUID must be done and glibc provides easier methods therefore we make a difference here. */ #ifdef _LIBC # define ENABLE_SECURE __libc_enable_secure # define DETERMINE_SECURE #else # ifndef HAVE_GETUID # define getuid() 0 # endif # ifndef HAVE_GETGID # define getgid() 0 # endif # ifndef HAVE_GETEUID # define geteuid() getuid() # endif # ifndef HAVE_GETEGID # define getegid() getgid() # endif static int enable_secure; # define ENABLE_SECURE (enable_secure == 1) # define DETERMINE_SECURE \ if (enable_secure == 0) \ { \ if (getuid () != geteuid () || getgid () != getegid ()) \ enable_secure = 1; \ else \ enable_secure = -1; \ } #endif /* Get the function to evaluate the plural expression. */ #include "eval-plural.h" /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY locale and, if PLURAL is nonzero, search over string depending on the plural form determined by N. */ char * DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category) const char *domainname; const char *msgid1; const char *msgid2; int plural; unsigned long int n; int category; { #ifndef HAVE_ALLOCA struct block_list *block_list = NULL; #endif struct loaded_l10nfile *domain; struct binding *binding; const char *categoryname; const char *categoryvalue; char *dirname, *xdomainname; char *single_locale; char *retval; size_t retlen; int saved_errno; #if defined HAVE_TSEARCH || defined _LIBC struct known_translation_t *search; struct known_translation_t **foundp = NULL; size_t msgid_len; #endif size_t domainname_len; /* If no real MSGID is given return NULL. */ if (msgid1 == NULL) return NULL; __libc_rwlock_rdlock (_nl_state_lock); /* If DOMAINNAME is NULL, we are interested in the default domain. If CATEGORY is not LC_MESSAGES this might not make much sense but the definition left this undefined. */ if (domainname == NULL) domainname = _nl_current_default_domain; /* OS/2 specific: backward compatibility with older libintl versions */ #ifdef LC_MESSAGES_COMPAT if (category == LC_MESSAGES_COMPAT) category = LC_MESSAGES; #endif #if defined HAVE_TSEARCH || defined _LIBC msgid_len = strlen (msgid1) + 1; /* Try to find the translation among those which we found at some time. */ search = (struct known_translation_t *) alloca (offsetof (struct known_translation_t, msgid) + msgid_len); memcpy (search->msgid, msgid1, msgid_len); search->domainname = (char *) domainname; search->category = category; foundp = (struct known_translation_t **) tfind (search, &root, transcmp); if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr) { /* Now deal with plural. */ if (plural) retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation, (*foundp)->translation_length); else retval = (char *) (*foundp)->translation; __libc_rwlock_unlock (_nl_state_lock); return retval; } #endif /* Preserve the `errno' value. */ saved_errno = errno; /* See whether this is a SUID binary or not. */ DETERMINE_SECURE; /* First find matching binding. */ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) { int compare = strcmp (domainname, binding->domainname); if (compare == 0) /* We found it! */ break; if (compare < 0) { /* It is not in the list. */ binding = NULL; break; } } if (binding == NULL) dirname = (char *) _nl_default_dirname; else if (IS_ABSOLUTE_PATH (binding->dirname)) dirname = binding->dirname; else { /* We have a relative path. Make it absolute now. */ size_t dirname_len = strlen (binding->dirname) + 1; size_t path_max; char *ret; path_max = (unsigned int) PATH_MAX; path_max += 2; /* The getcwd docs say to do this. */ for (;;) { dirname = (char *) alloca (path_max + dirname_len); ADD_BLOCK (block_list, dirname); __set_errno (0); ret = getcwd (dirname, path_max); if (ret != NULL || errno != ERANGE) break; path_max += path_max / 2; path_max += PATH_INCR; } if (ret == NULL) { /* We cannot get the current working directory. Don't signal an error but simply return the default string. */ FREE_BLOCKS (block_list); __libc_rwlock_unlock (_nl_state_lock); __set_errno (saved_errno); return (plural == 0 ? (char *) msgid1 /* Use the Germanic plural rule. */ : n == 1 ? (char *) msgid1 : (char *) msgid2); } stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname); } /* Now determine the symbolic name of CATEGORY and its value. */ categoryname = category_to_name (category); categoryvalue = guess_category_value (category, categoryname); domainname_len = strlen (domainname); xdomainname = (char *) alloca (strlen (categoryname) + domainname_len + 5); ADD_BLOCK (block_list, xdomainname); stpcpy (mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), domainname, domainname_len), ".mo"); /* Creating working area. */ single_locale = (char *) alloca (strlen (categoryvalue) + 1); ADD_BLOCK (block_list, single_locale); /* Search for the given string. This is a loop because we perhaps got an ordered list of languages to consider for the translation. */ while (1) { /* Make CATEGORYVALUE point to the next element of the list. */ while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') ++categoryvalue; if (categoryvalue[0] == '\0') { /* The whole contents of CATEGORYVALUE has been searched but no valid entry has been found. We solve this situation by implicitly appending a "C" entry, i.e. no translation will take place. */ single_locale[0] = 'C'; single_locale[1] = '\0'; } else { char *cp = single_locale; while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') *cp++ = *categoryvalue++; *cp = '\0'; /* When this is a SUID binary we must not allow accessing files outside the dedicated directories. */ if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale)) /* Ingore this entry. */ continue; } /* If the current locale value is C (or POSIX) we don't load a domain. Return the MSGID. */ if (strcmp (single_locale, "C") == 0 || strcmp (single_locale, "POSIX") == 0) { FREE_BLOCKS (block_list); __libc_rwlock_unlock (_nl_state_lock); __set_errno (saved_errno); return (plural == 0 ? (char *) msgid1 /* Use the Germanic plural rule. */ : n == 1 ? (char *) msgid1 : (char *) msgid2); } /* Find structure describing the message catalog matching the DOMAINNAME and CATEGORY. */ domain = _nl_find_domain (dirname, single_locale, xdomainname, binding); if (domain != NULL) { retval = _nl_find_msg (domain, binding, msgid1, &retlen); if (retval == NULL) { int cnt; for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) { retval = _nl_find_msg (domain->successor[cnt], binding, msgid1, &retlen); if (retval != NULL) { domain = domain->successor[cnt]; break; } } } if (retval != NULL) { /* Found the translation of MSGID1 in domain DOMAIN: starting at RETVAL, RETLEN bytes. */ FREE_BLOCKS (block_list); __set_errno (saved_errno); #if defined HAVE_TSEARCH || defined _LIBC if (foundp == NULL) { /* Create a new entry and add it to the search tree. */ struct known_translation_t *newp; newp = (struct known_translation_t *) malloc (offsetof (struct known_translation_t, msgid) + msgid_len + domainname_len + 1); if (newp != NULL) { newp->domainname = mempcpy (newp->msgid, msgid1, msgid_len); memcpy (newp->domainname, domainname, domainname_len + 1); newp->category = category; newp->counter = _nl_msg_cat_cntr; newp->domain = domain; newp->translation = retval; newp->translation_length = retlen; /* Insert the entry in the search tree. */ foundp = (struct known_translation_t **) tsearch (newp, &root, transcmp); if (foundp == NULL || __builtin_expect (*foundp != newp, 0)) /* The insert failed. */ free (newp); } } else { /* We can update the existing entry. */ (*foundp)->counter = _nl_msg_cat_cntr; (*foundp)->domain = domain; (*foundp)->translation = retval; (*foundp)->translation_length = retlen; } #endif /* Now deal with plural. */ if (plural) retval = plural_lookup (domain, n, retval, retlen); __libc_rwlock_unlock (_nl_state_lock); return retval; } } } /* NOTREACHED */ } char * internal_function _nl_find_msg (domain_file, domainbinding, msgid, lengthp) struct loaded_l10nfile *domain_file; struct binding *domainbinding; const char *msgid; size_t *lengthp; { struct loaded_domain *domain; size_t act; char *result; size_t resultlen; if (domain_file->decided == 0) _nl_load_domain (domain_file, domainbinding); if (domain_file->data == NULL) return NULL; domain = (struct loaded_domain *) domain_file->data; /* Locate the MSGID and its translation. */ if (domain->hash_size > 2 && domain->hash_tab != NULL) { /* Use the hashing table. */ nls_uint32 len = strlen (msgid); nls_uint32 hash_val = hash_string (msgid); nls_uint32 idx = hash_val % domain->hash_size; nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); while (1) { nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]); if (nstr == 0) /* Hash table entry is empty. */ return NULL; /* Compare msgid with the original string at index nstr-1. We compare the lengths with >=, not ==, because plural entries are represented by strings with an embedded NUL. */ if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) >= len && (strcmp (msgid, domain->data + W (domain->must_swap, domain->orig_tab[nstr - 1].offset)) == 0)) { act = nstr - 1; goto found; } if (idx >= domain->hash_size - incr) idx -= domain->hash_size - incr; else idx += incr; } /* NOTREACHED */ } else { /* Try the default method: binary search in the sorted array of messages. */ size_t top, bottom; bottom = 0; top = domain->nstrings; while (bottom < top) { int cmp_val; act = (bottom + top) / 2; cmp_val = strcmp (msgid, (domain->data + W (domain->must_swap, domain->orig_tab[act].offset))); if (cmp_val < 0) top = act; else if (cmp_val > 0) bottom = act + 1; else goto found; } /* No translation was found. */ return NULL; } found: /* The translation was found at index ACT. If we have to convert the string to use a different character set, this is the time. */ result = ((char *) domain->data + W (domain->must_swap, domain->trans_tab[act].offset)); resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1; #if defined _LIBC || HAVE_ICONV if (domain->codeset_cntr != (domainbinding != NULL ? domainbinding->codeset_cntr : 0)) { /* The domain's codeset has changed through bind_textdomain_codeset() since the message catalog was initialized or last accessed. We have to reinitialize the converter. */ _nl_free_domain_conv (domain); _nl_init_domain_conv (domain_file, domain, domainbinding); } if ( # ifdef _LIBC domain->conv != (__gconv_t) -1 # else # if HAVE_ICONV domain->conv != (iconv_t) -1 # endif # endif ) { /* We are supposed to do a conversion. First allocate an appropriate table with the same structure as the table of translations in the file, where we can put the pointers to the converted strings in. There is a slight complication with plural entries. They are represented by consecutive NUL terminated strings. We handle this case by converting RESULTLEN bytes, including NULs. */ if (domain->conv_tab == NULL && ((domain->conv_tab = (char **) calloc (domain->nstrings, sizeof (char *))) == NULL)) /* Mark that we didn't succeed allocating a table. */ domain->conv_tab = (char **) -1; if (__builtin_expect (domain->conv_tab == (char **) -1, 0)) /* Nothing we can do, no more memory. */ goto converted; if (domain->conv_tab[act] == NULL) { /* We haven't used this string so far, so it is not translated yet. Do this now. */ /* We use a bit more efficient memory handling. We allocate always larger blocks which get used over time. This is faster than many small allocations. */ __libc_lock_define_initialized (static, lock) # define INITIAL_BLOCK_SIZE 4080 static unsigned char *freemem; static size_t freemem_size; const unsigned char *inbuf; unsigned char *outbuf; int malloc_count; # ifndef _LIBC transmem_block_t *transmem_list = NULL; # endif __libc_lock_lock (lock); inbuf = (const unsigned char *) result; outbuf = freemem + sizeof (size_t); malloc_count = 0; while (1) { transmem_block_t *newmem; # ifdef _LIBC size_t non_reversible; int res; if (freemem_size < sizeof (size_t)) goto resize_freemem; res = __gconv (domain->conv, &inbuf, inbuf + resultlen, &outbuf, outbuf + freemem_size - sizeof (size_t), &non_reversible); if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT) break; if (res != __GCONV_FULL_OUTPUT) { __libc_lock_unlock (lock); goto converted; } inbuf = result; # else # if HAVE_ICONV const char *inptr = (const char *) inbuf; size_t inleft = resultlen; char *outptr = (char *) outbuf; size_t outleft; if (freemem_size < sizeof (size_t)) goto resize_freemem; outleft = freemem_size - sizeof (size_t); if (iconv (domain->conv, (ICONV_CONST char **) &inptr, &inleft, &outptr, &outleft) != (size_t) (-1)) { outbuf = (unsigned char *) outptr; break; } if (errno != E2BIG) { __libc_lock_unlock (lock); goto converted; } # endif # endif resize_freemem: /* We must allocate a new buffer or resize the old one. */ if (malloc_count > 0) { ++malloc_count; freemem_size = malloc_count * INITIAL_BLOCK_SIZE; newmem = (transmem_block_t *) realloc (transmem_list, freemem_size); # ifdef _LIBC if (newmem != NULL) transmem_list = transmem_list->next; else { struct transmem_list *old = transmem_list; transmem_list = transmem_list->next; free (old); } # endif } else { malloc_count = 1; freemem_size = INITIAL_BLOCK_SIZE; newmem = (transmem_block_t *) malloc (freemem_size); } if (__builtin_expect (newmem == NULL, 0)) { freemem = NULL; freemem_size = 0; __libc_lock_unlock (lock); goto converted; } # ifdef _LIBC /* Add the block to the list of blocks we have to free at some point. */ newmem->next = transmem_list; transmem_list = newmem; freemem = newmem->data; freemem_size -= offsetof (struct transmem_list, data); # else transmem_list = newmem; freemem = newmem; # endif outbuf = freemem + sizeof (size_t); } /* We have now in our buffer a converted string. Put this into the table of conversions. */ *(size_t *) freemem = outbuf - freemem - sizeof (size_t); domain->conv_tab[act] = (char *) freemem; /* Shrink freemem, but keep it aligned. */ freemem_size -= outbuf - freemem; freemem = outbuf; freemem += freemem_size & (alignof (size_t) - 1); freemem_size = freemem_size & ~ (alignof (size_t) - 1); __libc_lock_unlock (lock); } /* Now domain->conv_tab[act] contains the translation of all the plural variants. */ result = domain->conv_tab[act] + sizeof (size_t); resultlen = *(size_t *) domain->conv_tab[act]; } converted: /* The result string is converted. */ #endif /* _LIBC || HAVE_ICONV */ *lengthp = resultlen; return result; } /* Look up a plural variant. */ static char * internal_function plural_lookup (domain, n, translation, translation_len) struct loaded_l10nfile *domain; unsigned long int n; const char *translation; size_t translation_len; { struct loaded_domain *domaindata = (struct loaded_domain *) domain->data; unsigned long int index; const char *p; index = plural_eval (domaindata->plural, n); if (index >= domaindata->nplurals) /* This should never happen. It means the plural expression and the given maximum value do not match. */ index = 0; /* Skip INDEX strings at TRANSLATION. */ p = translation; while (index-- > 0) { #ifdef _LIBC p = __rawmemchr (p, '\0'); #else p = strchr (p, '\0'); #endif /* And skip over the NUL byte. */ p++; if (p >= translation + translation_len) /* This should never happen. It means the plural expression evaluated to a value larger than the number of variants available for MSGID1. */ return (char *) translation; } return (char *) p; } /* Return string representation of locale CATEGORY. */ static const char * internal_function category_to_name (category) int category; { const char *retval; switch (category) { #ifdef LC_COLLATE case LC_COLLATE: retval = "LC_COLLATE"; break; #endif #ifdef LC_CTYPE case LC_CTYPE: retval = "LC_CTYPE"; break; #endif #ifdef LC_MONETARY case LC_MONETARY: retval = "LC_MONETARY"; break; #endif #ifdef LC_NUMERIC case LC_NUMERIC: retval = "LC_NUMERIC"; break; #endif #ifdef LC_TIME case LC_TIME: retval = "LC_TIME"; break; #endif #ifdef LC_MESSAGES case LC_MESSAGES: retval = "LC_MESSAGES"; break; #endif #ifdef LC_RESPONSE case LC_RESPONSE: retval = "LC_RESPONSE"; break; #endif #ifdef LC_ALL case LC_ALL: /* This might not make sense but is perhaps better than any other value. */ retval = "LC_ALL"; break; #endif default: /* If you have a better idea for a default value let me know. */ retval = "LC_XXX"; } return retval; } /* Guess value of current locale from value of the environment variables. */ static const char * internal_function guess_category_value (category, categoryname) int category; const char *categoryname; { const char *language; const char *retval; /* The highest priority value is the `LANGUAGE' environment variable. But we don't use the value if the currently selected locale is the C locale. This is a GNU extension. */ language = getenv ("LANGUAGE"); if (language != NULL && language[0] == '\0') language = NULL; /* We have to proceed with the POSIX methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some systems this can be done by the `setlocale' function itself. */ #ifdef _LIBC retval = setlocale (category, NULL); #else retval = _nl_locale_name (category, categoryname); #endif /* Ignore LANGUAGE if the locale is set to "C" because 1. "C" locale usually uses the ASCII encoding, and most international messages use non-ASCII characters. These characters get displayed as question marks (if using glibc's iconv()) or as invalid 8-bit characters (because other iconv()s refuse to convert most non-ASCII characters to ASCII). In any case, the output is ugly. 2. The precise output of some programs in the "C" locale is specified by POSIX and should not depend on environment variables like "LANGUAGE". We allow such programs to use gettext(). */ return language != NULL && strcmp (retval, "C") != 0 ? language : retval; } /* @@ begin of epilog @@ */ /* We don't want libintl.a to depend on any other library. So we avoid the non-standard function stpcpy. In GNU C Library this function is available, though. Also allow the symbol HAVE_STPCPY to be defined. */ #if !_LIBC && !HAVE_STPCPY static char * stpcpy (dest, src) char *dest; const char *src; { while ((*dest++ = *src++) != '\0') /* Do nothing. */ ; return dest - 1; } #endif #if !_LIBC && !HAVE_MEMPCPY static void * mempcpy (dest, src, n) void *dest; const void *src; size_t n; { return (void *) ((char *) memcpy (dest, src, n) + n); } #endif #ifdef _LIBC /* If we want to free all resources we have to do some work at program's end. */ static void __attribute__ ((unused)) free_mem (void) { void *old; while (_nl_domain_bindings != NULL) { struct binding *oldp = _nl_domain_bindings; _nl_domain_bindings = _nl_domain_bindings->next; if (oldp->dirname != _nl_default_dirname) /* Yes, this is a pointer comparison. */ free (oldp->dirname); free (oldp->codeset); free (oldp); } if (_nl_current_default_domain != _nl_default_default_domain) /* Yes, again a pointer comparison. */ free ((char *) _nl_current_default_domain); /* Remove the search tree with the known translations. */ __tdestroy (root, free); root = NULL; while (transmem_list != NULL) { old = transmem_list; transmem_list = transmem_list->next; free (old); } } text_set_element (__libc_subfreeres, free_mem); #endif ap-utils-1.5/intl/dcngettext.c000066400000000000000000000035451117246662700164230ustar00rootroot00000000000000/* Implementation of the dcngettext(3) function. Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifdef HAVE_CONFIG_H # include #endif #include "gettextP.h" #ifdef _LIBC # include #else # include "libgnuintl.h" #endif /* @@ end of prolog @@ */ /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define DCNGETTEXT __dcngettext # define DCIGETTEXT __dcigettext #else # define DCNGETTEXT dcngettext__ # define DCIGETTEXT dcigettext__ #endif /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY locale. */ char * DCNGETTEXT (domainname, msgid1, msgid2, n, category) const char *domainname; const char *msgid1; const char *msgid2; unsigned long int n; int category; { return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category); } #ifdef _LIBC /* Alias for function name in GNU C Library. */ weak_alias (__dcngettext, dcngettext); #endif ap-utils-1.5/intl/dgettext.c000066400000000000000000000033761117246662700161040ustar00rootroot00000000000000/* Implementation of the dgettext(3) function. Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifdef HAVE_CONFIG_H # include #endif #include #include "gettextP.h" #ifdef _LIBC # include #else # include "libgnuintl.h" #endif /* @@ end of prolog @@ */ /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define DGETTEXT __dgettext # define DCGETTEXT __dcgettext #else # define DGETTEXT dgettext__ # define DCGETTEXT dcgettext__ #endif /* Look up MSGID in the DOMAINNAME message catalog of the current LC_MESSAGES locale. */ char * DGETTEXT (domainname, msgid) const char *domainname; const char *msgid; { return DCGETTEXT (domainname, msgid, LC_MESSAGES); } #ifdef _LIBC /* Alias for function name in GNU C Library. */ weak_alias (__dgettext, dgettext); #endif ap-utils-1.5/intl/dngettext.c000066400000000000000000000036051117246662700162550ustar00rootroot00000000000000/* Implementation of the dngettext(3) function. Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifdef HAVE_CONFIG_H # include #endif #include #include "gettextP.h" #ifdef _LIBC # include #else # include "libgnuintl.h" #endif /* @@ end of prolog @@ */ /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define DNGETTEXT __dngettext # define DCNGETTEXT __dcngettext #else # define DNGETTEXT dngettext__ # define DCNGETTEXT dcngettext__ #endif /* Look up MSGID in the DOMAINNAME message catalog of the current LC_MESSAGES locale and skip message according to the plural form. */ char * DNGETTEXT (domainname, msgid1, msgid2, n) const char *domainname; const char *msgid1; const char *msgid2; unsigned long int n; { return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES); } #ifdef _LIBC /* Alias for function name in GNU C Library. */ weak_alias (__dngettext, dngettext); #endif ap-utils-1.5/intl/eval-plural.h000066400000000000000000000053201117246662700164740ustar00rootroot00000000000000/* Plural expression evaluation. Copyright (C) 2000-2002 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifndef STATIC #define STATIC static #endif /* Evaluate the plural expression and return an index value. */ STATIC unsigned long int plural_eval PARAMS ((struct expression *pexp, unsigned long int n)) internal_function; STATIC unsigned long int internal_function plural_eval (pexp, n) struct expression *pexp; unsigned long int n; { switch (pexp->nargs) { case 0: switch (pexp->operation) { case var: return n; case num: return pexp->val.num; default: break; } /* NOTREACHED */ break; case 1: { /* pexp->operation must be lnot. */ unsigned long int arg = plural_eval (pexp->val.args[0], n); return ! arg; } case 2: { unsigned long int leftarg = plural_eval (pexp->val.args[0], n); if (pexp->operation == lor) return leftarg || plural_eval (pexp->val.args[1], n); else if (pexp->operation == land) return leftarg && plural_eval (pexp->val.args[1], n); else { unsigned long int rightarg = plural_eval (pexp->val.args[1], n); switch (pexp->operation) { case mult: return leftarg * rightarg; case divide: return leftarg / rightarg; case module: return leftarg % rightarg; case plus: return leftarg + rightarg; case minus: return leftarg - rightarg; case less_than: return leftarg < rightarg; case greater_than: return leftarg > rightarg; case less_or_equal: return leftarg <= rightarg; case greater_or_equal: return leftarg >= rightarg; case equal: return leftarg == rightarg; case not_equal: return leftarg != rightarg; default: break; } } /* NOTREACHED */ break; } case 3: { /* pexp->operation must be qmop. */ unsigned long int boolarg = plural_eval (pexp->val.args[0], n); return plural_eval (pexp->val.args[boolarg ? 1 : 2], n); } } /* NOTREACHED */ return 0; } ap-utils-1.5/intl/explodename.c000066400000000000000000000110501117246662700165410ustar00rootroot00000000000000/* Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. Contributed by Ulrich Drepper , 1995. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include "loadinfo.h" /* On some strange systems still no definition of NULL is found. Sigh! */ #ifndef NULL # if defined __STDC__ && __STDC__ # define NULL ((void *) 0) # else # define NULL 0 # endif #endif /* @@ end of prolog @@ */ char * _nl_find_language (name) const char *name; { while (name[0] != '\0' && name[0] != '_' && name[0] != '@' && name[0] != '+' && name[0] != ',') ++name; return (char *) name; } int _nl_explode_name (name, language, modifier, territory, codeset, normalized_codeset, special, sponsor, revision) char *name; const char **language; const char **modifier; const char **territory; const char **codeset; const char **normalized_codeset; const char **special; const char **sponsor; const char **revision; { enum { undecided, xpg, cen } syntax; char *cp; int mask; *modifier = NULL; *territory = NULL; *codeset = NULL; *normalized_codeset = NULL; *special = NULL; *sponsor = NULL; *revision = NULL; /* Now we determine the single parts of the locale name. First look for the language. Termination symbols are `_' and `@' if we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ mask = 0; syntax = undecided; *language = cp = name; cp = _nl_find_language (*language); if (*language == cp) /* This does not make sense: language has to be specified. Use this entry as it is without exploding. Perhaps it is an alias. */ cp = strchr (*language, '\0'); else if (cp[0] == '_') { /* Next is the territory. */ cp[0] = '\0'; *territory = ++cp; while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@' && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') ++cp; mask |= TERRITORY; if (cp[0] == '.') { /* Next is the codeset. */ syntax = xpg; cp[0] = '\0'; *codeset = ++cp; while (cp[0] != '\0' && cp[0] != '@') ++cp; mask |= XPG_CODESET; if (*codeset != cp && (*codeset)[0] != '\0') { *normalized_codeset = _nl_normalize_codeset (*codeset, cp - *codeset); if (strcmp (*codeset, *normalized_codeset) == 0) free ((char *) *normalized_codeset); else mask |= XPG_NORM_CODESET; } } } if (cp[0] == '@' || (syntax != xpg && cp[0] == '+')) { /* Next is the modifier. */ syntax = cp[0] == '@' ? xpg : cen; cp[0] = '\0'; *modifier = ++cp; while (syntax == cen && cp[0] != '\0' && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') ++cp; mask |= XPG_MODIFIER | CEN_AUDIENCE; } if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_')) { syntax = cen; if (cp[0] == '+') { /* Next is special application (CEN syntax). */ cp[0] = '\0'; *special = ++cp; while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_') ++cp; mask |= CEN_SPECIAL; } if (cp[0] == ',') { /* Next is sponsor (CEN syntax). */ cp[0] = '\0'; *sponsor = ++cp; while (cp[0] != '\0' && cp[0] != '_') ++cp; mask |= CEN_SPONSOR; } if (cp[0] == '_') { /* Next is revision (CEN syntax). */ cp[0] = '\0'; *revision = ++cp; mask |= CEN_REVISION; } } /* For CEN syntax values it might be important to have the separator character in the file name, not for XPG syntax. */ if (syntax == xpg) { if (*territory != NULL && (*territory)[0] == '\0') mask &= ~TERRITORY; if (*codeset != NULL && (*codeset)[0] == '\0') mask &= ~XPG_CODESET; if (*modifier != NULL && (*modifier)[0] == '\0') mask &= ~XPG_MODIFIER; } return mask; } ap-utils-1.5/intl/finddomain.c000066400000000000000000000131461117246662700163600ustar00rootroot00000000000000/* Handle list of needed message catalogs Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. Written by Ulrich Drepper , 1995. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #if defined HAVE_UNISTD_H || defined _LIBC # include #endif #include "gettextP.h" #ifdef _LIBC # include #else # include "libgnuintl.h" #endif /* @@ end of prolog @@ */ /* List of already loaded domains. */ static struct loaded_l10nfile *_nl_loaded_domains; /* Return a data structure describing the message catalog described by the DOMAINNAME and CATEGORY parameters with respect to the currently established bindings. */ struct loaded_l10nfile * internal_function _nl_find_domain (dirname, locale, domainname, domainbinding) const char *dirname; char *locale; const char *domainname; struct binding *domainbinding; { struct loaded_l10nfile *retval; const char *language; const char *modifier; const char *territory; const char *codeset; const char *normalized_codeset; const char *special; const char *sponsor; const char *revision; const char *alias_value; int mask; /* LOCALE can consist of up to four recognized parts for the XPG syntax: language[_territory[.codeset]][@modifier] and six parts for the CEN syntax: language[_territory][+audience][+special][,[sponsor][_revision]] Beside the first part all of them are allowed to be missing. If the full specified locale is not found, the less specific one are looked for. The various parts will be stripped off according to the following order: (1) revision (2) sponsor (3) special (4) codeset (5) normalized codeset (6) territory (7) audience/modifier */ /* If we have already tested for this locale entry there has to be one data set in the list of loaded domains. */ retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, strlen (dirname) + 1, 0, locale, NULL, NULL, NULL, NULL, NULL, NULL, NULL, domainname, 0); if (retval != NULL) { /* We know something about this locale. */ int cnt; if (retval->decided == 0) _nl_load_domain (retval, domainbinding); if (retval->data != NULL) return retval; for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) { if (retval->successor[cnt]->decided == 0) _nl_load_domain (retval->successor[cnt], domainbinding); if (retval->successor[cnt]->data != NULL) break; } return cnt >= 0 ? retval : NULL; /* NOTREACHED */ } /* See whether the locale value is an alias. If yes its value *overwrites* the alias name. No test for the original value is done. */ alias_value = _nl_expand_alias (locale); if (alias_value != NULL) { #if defined _LIBC || defined HAVE_STRDUP locale = strdup (alias_value); if (locale == NULL) return NULL; #else size_t len = strlen (alias_value) + 1; locale = (char *) malloc (len); if (locale == NULL) return NULL; memcpy (locale, alias_value, len); #endif } /* Now we determine the single parts of the locale name. First look for the language. Termination symbols are `_' and `@' if we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ mask = _nl_explode_name (locale, &language, &modifier, &territory, &codeset, &normalized_codeset, &special, &sponsor, &revision); /* Create all possible locale entries which might be interested in generalization. */ retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, strlen (dirname) + 1, mask, language, territory, codeset, normalized_codeset, modifier, special, sponsor, revision, domainname, 1); if (retval == NULL) /* This means we are out of core. */ return NULL; if (retval->decided == 0) _nl_load_domain (retval, domainbinding); if (retval->data == NULL) { int cnt; for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) { if (retval->successor[cnt]->decided == 0) _nl_load_domain (retval->successor[cnt], domainbinding); if (retval->successor[cnt]->data != NULL) break; } } /* The room for an alias was dynamically allocated. Free it now. */ if (alias_value != NULL) free (locale); /* The space for normalized_codeset is dynamically allocated. Free it. */ if (mask & XPG_NORM_CODESET) free ((void *) normalized_codeset); return retval; } #ifdef _LIBC static void __attribute__ ((unused)) free_mem (void) { struct loaded_l10nfile *runp = _nl_loaded_domains; while (runp != NULL) { struct loaded_l10nfile *here = runp; if (runp->data != NULL) _nl_unload_domain ((struct loaded_domain *) runp->data); runp = runp->next; free ((char *) here->filename); free (here); } } text_set_element (__libc_subfreeres, free_mem); #endif ap-utils-1.5/intl/gettext.c000066400000000000000000000035411117246662700157320ustar00rootroot00000000000000/* Implementation of gettext(3) function. Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifdef HAVE_CONFIG_H # include #endif #ifdef _LIBC # define __need_NULL # include #else # include /* Just for NULL. */ #endif #include "gettextP.h" #ifdef _LIBC # include #else # include "libgnuintl.h" #endif /* @@ end of prolog @@ */ /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define GETTEXT __gettext # define DCGETTEXT __dcgettext #else # define GETTEXT gettext__ # define DCGETTEXT dcgettext__ #endif /* Look up MSGID in the current default message catalog for the current LC_MESSAGES locale. If not found, returns MSGID itself (the default text). */ char * GETTEXT (msgid) const char *msgid; { return DCGETTEXT (NULL, msgid, LC_MESSAGES); } #ifdef _LIBC /* Alias for function name in GNU C Library. */ weak_alias (__gettext, gettext); #endif ap-utils-1.5/intl/gettextP.h000066400000000000000000000142461117246662700160630ustar00rootroot00000000000000/* Header describing internals of libintl library. Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. Written by Ulrich Drepper , 1995. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifndef _GETTEXTP_H #define _GETTEXTP_H #include /* Get size_t. */ #ifdef _LIBC # include "../iconv/gconv_int.h" #else # if HAVE_ICONV # include # endif #endif #include "loadinfo.h" #include "gmo.h" /* Get nls_uint32. */ /* @@ end of prolog @@ */ #ifndef PARAMS # if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES # define PARAMS(args) args # else # define PARAMS(args) () # endif #endif #ifndef internal_function # define internal_function #endif /* Tell the compiler when a conditional or integer expression is almost always true or almost always false. */ #ifndef HAVE_BUILTIN_EXPECT # define __builtin_expect(expr, val) (expr) #endif #ifndef W # define W(flag, data) ((flag) ? SWAP (data) : (data)) #endif #ifdef _LIBC # include # define SWAP(i) bswap_32 (i) #else static inline nls_uint32 SWAP (i) nls_uint32 i; { return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); } #endif /* The representation of an opened message catalog. */ struct loaded_domain { const char *data; int use_mmap; size_t mmap_size; int must_swap; nls_uint32 nstrings; struct string_desc *orig_tab; struct string_desc *trans_tab; nls_uint32 hash_size; nls_uint32 *hash_tab; int codeset_cntr; #ifdef _LIBC __gconv_t conv; #else # if HAVE_ICONV iconv_t conv; # endif #endif char **conv_tab; struct expression *plural; unsigned long int nplurals; }; /* We want to allocate a string at the end of the struct. But ISO C doesn't allow zero sized arrays. */ #ifdef __GNUC__ # define ZERO 0 #else # define ZERO 1 #endif /* A set of settings bound to a message domain. Used to store settings from bindtextdomain() and bind_textdomain_codeset(). */ struct binding { struct binding *next; char *dirname; int codeset_cntr; /* Incremented each time codeset changes. */ char *codeset; char domainname[ZERO]; }; /* A counter which is incremented each time some previous translations become invalid. This variable is part of the external ABI of the GNU libintl. */ extern int _nl_msg_cat_cntr; #ifndef _LIBC const char *_nl_locale_name PARAMS ((int category, const char *categoryname)); #endif struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname, char *__locale, const char *__domainname, struct binding *__domainbinding)) internal_function; void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain, struct binding *__domainbinding)) internal_function; void _nl_unload_domain PARAMS ((struct loaded_domain *__domain)) internal_function; const char *_nl_init_domain_conv PARAMS ((struct loaded_l10nfile *__domain_file, struct loaded_domain *__domain, struct binding *__domainbinding)) internal_function; void _nl_free_domain_conv PARAMS ((struct loaded_domain *__domain)) internal_function; char *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file, struct binding *domainbinding, const char *msgid, size_t *lengthp)) internal_function; #ifdef _LIBC extern char *__gettext PARAMS ((const char *__msgid)); extern char *__dgettext PARAMS ((const char *__domainname, const char *__msgid)); extern char *__dcgettext PARAMS ((const char *__domainname, const char *__msgid, int __category)); extern char *__ngettext PARAMS ((const char *__msgid1, const char *__msgid2, unsigned long int __n)); extern char *__dngettext PARAMS ((const char *__domainname, const char *__msgid1, const char *__msgid2, unsigned long int n)); extern char *__dcngettext PARAMS ((const char *__domainname, const char *__msgid1, const char *__msgid2, unsigned long int __n, int __category)); extern char *__dcigettext PARAMS ((const char *__domainname, const char *__msgid1, const char *__msgid2, int __plural, unsigned long int __n, int __category)); extern char *__textdomain PARAMS ((const char *__domainname)); extern char *__bindtextdomain PARAMS ((const char *__domainname, const char *__dirname)); extern char *__bind_textdomain_codeset PARAMS ((const char *__domainname, const char *__codeset)); #else extern char *gettext__ PARAMS ((const char *__msgid)); extern char *dgettext__ PARAMS ((const char *__domainname, const char *__msgid)); extern char *dcgettext__ PARAMS ((const char *__domainname, const char *__msgid, int __category)); extern char *ngettext__ PARAMS ((const char *__msgid1, const char *__msgid2, unsigned long int __n)); extern char *dngettext__ PARAMS ((const char *__domainname, const char *__msgid1, const char *__msgid2, unsigned long int __n)); extern char *dcngettext__ PARAMS ((const char *__domainname, const char *__msgid1, const char *__msgid2, unsigned long int __n, int __category)); extern char *dcigettext__ PARAMS ((const char *__domainname, const char *__msgid1, const char *__msgid2, int __plural, unsigned long int __n, int __category)); extern char *textdomain__ PARAMS ((const char *__domainname)); extern char *bindtextdomain__ PARAMS ((const char *__domainname, const char *__dirname)); extern char *bind_textdomain_codeset__ PARAMS ((const char *__domainname, const char *__codeset)); #endif /* @@ begin of epilog @@ */ #endif /* gettextP.h */ ap-utils-1.5/intl/gmo.h000066400000000000000000000057751117246662700150500ustar00rootroot00000000000000/* Description of GNU message catalog format: general file layout. Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifndef _GETTEXT_H #define _GETTEXT_H 1 #include /* @@ end of prolog @@ */ /* The magic number of the GNU message catalog format. */ #define _MAGIC 0x950412de #define _MAGIC_SWAPPED 0xde120495 /* Revision number of the currently used .mo (binary) file format. */ #define MO_REVISION_NUMBER 0 /* The following contortions are an attempt to use the C preprocessor to determine an unsigned integral type that is 32 bits wide. An alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work when cross-compiling. */ #if __STDC__ # define UINT_MAX_32_BITS 4294967295U #else # define UINT_MAX_32_BITS 0xFFFFFFFF #endif /* If UINT_MAX isn't defined, assume it's a 32-bit type. This should be valid for all systems GNU cares about because that doesn't include 16-bit systems, and only modern systems (that certainly have ) have 64+-bit integral types. */ #ifndef UINT_MAX # define UINT_MAX UINT_MAX_32_BITS #endif #if UINT_MAX == UINT_MAX_32_BITS typedef unsigned nls_uint32; #else # if USHRT_MAX == UINT_MAX_32_BITS typedef unsigned short nls_uint32; # else # if ULONG_MAX == UINT_MAX_32_BITS typedef unsigned long nls_uint32; # else /* The following line is intended to throw an error. Using #error is not portable enough. */ "Cannot determine unsigned 32-bit data type." # endif # endif #endif /* Header for binary .mo file format. */ struct mo_file_header { /* The magic number. */ nls_uint32 magic; /* The revision number of the file format. */ nls_uint32 revision; /* The number of strings pairs. */ nls_uint32 nstrings; /* Offset of table with start offsets of original strings. */ nls_uint32 orig_tab_offset; /* Offset of table with start offsets of translation strings. */ nls_uint32 trans_tab_offset; /* Size of hashing table. */ nls_uint32 hash_tab_size; /* Offset of first hashing entry. */ nls_uint32 hash_tab_offset; }; struct string_desc { /* Length of addressed string. */ nls_uint32 length; /* Offset of string in file. */ nls_uint32 offset; }; /* @@ begin of epilog @@ */ #endif /* gettext.h */ ap-utils-1.5/intl/hash-string.h000066400000000000000000000035741117246662700165100ustar00rootroot00000000000000/* Description of GNU message catalog format: string hashing function. Copyright (C) 1995, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ /* @@ end of prolog @@ */ #ifndef PARAMS # if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES # define PARAMS(Args) Args # else # define PARAMS(Args) () # endif #endif /* We assume to have `unsigned long int' value with at least 32 bits. */ #define HASHWORDBITS 32 /* Defines the so called `hashpjw' function by P.J. Weinberger [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, 1986, 1987 Bell Telephone Laboratories, Inc.] */ static unsigned long int hash_string PARAMS ((const char *__str_param)); static inline unsigned long int hash_string (str_param) const char *str_param; { unsigned long int hval, g; const char *str = str_param; /* Compute the hash value for the given string. */ hval = 0; while (*str != '\0') { hval <<= 4; hval += (unsigned long int) *str++; g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4)); if (g != 0) { hval ^= g >> (HASHWORDBITS - 8); hval ^= g; } } return hval; } ap-utils-1.5/intl/intl-compat.c000066400000000000000000000112311117246662700164700ustar00rootroot00000000000000/* intl-compat.c - Stub functions to call gettext functions from GNU gettext Library. Copyright (C) 1995, 2000, 2001 Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifdef HAVE_CONFIG_H # include #endif #include "libgnuintl.h" #include "gettextP.h" /* @@ end of prolog @@ */ /* This file redirects the gettext functions (without prefix or suffix) to those defined in the included GNU gettext library (with "__" suffix). It is compiled into libintl when the included GNU gettext library is configured --with-included-gettext. This redirection works also in the case that the system C library or the system libintl library contain gettext/textdomain/... functions. If it didn't, we would need to add preprocessor level redirections to libgnuintl.h of the following form: # define gettext gettext__ # define dgettext dgettext__ # define dcgettext dcgettext__ # define ngettext ngettext__ # define dngettext dngettext__ # define dcngettext dcngettext__ # define textdomain textdomain__ # define bindtextdomain bindtextdomain__ # define bind_textdomain_codeset bind_textdomain_codeset__ How does this redirection work? There are two cases. A. When libintl.a is linked into an executable, it works because functions defined in the executable always override functions in the shared libraries. B. When libintl.so is used, it works because 1. those systems defining gettext/textdomain/... in the C library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer) are ELF systems and define these symbols as weak, thus explicitly letting other shared libraries override it. 2. those systems defining gettext/textdomain/... in a standalone libintl.so library (namely, Solaris 2.3 and newer) have this shared library in /usr/lib, and the linker will search /usr/lib *after* the directory where the GNU gettext library is installed. A third case, namely when libintl.a is linked into a shared library whose name is not libintl.so, is not supported. In this case, on Solaris, when -lintl precedes the linker option for the shared library containing GNU gettext, the system's gettext would indeed override the GNU gettext. Anyone doing this kind of stuff must be clever enough to 1. compile libintl.a with -fPIC, 2. remove -lintl from his linker command line. */ #undef gettext #undef dgettext #undef dcgettext #undef ngettext #undef dngettext #undef dcngettext #undef textdomain #undef bindtextdomain #undef bind_textdomain_codeset char * gettext (msgid) const char *msgid; { return gettext__ (msgid); } char * dgettext (domainname, msgid) const char *domainname; const char *msgid; { return dgettext__ (domainname, msgid); } char * dcgettext (domainname, msgid, category) const char *domainname; const char *msgid; int category; { return dcgettext__ (domainname, msgid, category); } char * ngettext (msgid1, msgid2, n) const char *msgid1; const char *msgid2; unsigned long int n; { return ngettext__ (msgid1, msgid2, n); } char * dngettext (domainname, msgid1, msgid2, n) const char *domainname; const char *msgid1; const char *msgid2; unsigned long int n; { return dngettext__ (domainname, msgid1, msgid2, n); } char * dcngettext (domainname, msgid1, msgid2, n, category) const char *domainname; const char *msgid1; const char *msgid2; unsigned long int n; int category; { return dcngettext__ (domainname, msgid1, msgid2, n, category); } char * textdomain (domainname) const char *domainname; { return textdomain__ (domainname); } char * bindtextdomain (domainname, dirname) const char *domainname; const char *dirname; { return bindtextdomain__ (domainname, dirname); } char * bind_textdomain_codeset (domainname, codeset) const char *domainname; const char *codeset; { return bind_textdomain_codeset__ (domainname, codeset); } ap-utils-1.5/intl/l10nflist.c000066400000000000000000000243411117246662700160630ustar00rootroot00000000000000/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. Contributed by Ulrich Drepper , 1995. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ /* Tell glibc's to provide a prototype for stpcpy(). This must come before because may include , and once has been included, it's too late. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif #ifdef HAVE_CONFIG_H # include #endif #include #if defined _LIBC || defined HAVE_ARGZ_H # include #endif #include #include #include #include "loadinfo.h" /* On some strange systems still no definition of NULL is found. Sigh! */ #ifndef NULL # if defined __STDC__ && __STDC__ # define NULL ((void *) 0) # else # define NULL 0 # endif #endif /* @@ end of prolog @@ */ #ifdef _LIBC /* Rename the non ANSI C functions. This is required by the standard because some ANSI C functions will require linking with this object file and the name space must not be polluted. */ # ifndef stpcpy # define stpcpy(dest, src) __stpcpy(dest, src) # endif #else # ifndef HAVE_STPCPY static char *stpcpy PARAMS ((char *dest, const char *src)); # endif #endif /* Define function which are usually not available. */ #if !defined _LIBC && !defined HAVE___ARGZ_COUNT /* Returns the number of strings in ARGZ. */ static size_t argz_count__ PARAMS ((const char *argz, size_t len)); static size_t argz_count__ (argz, len) const char *argz; size_t len; { size_t count = 0; while (len > 0) { size_t part_len = strlen (argz); argz += part_len + 1; len -= part_len + 1; count++; } return count; } # undef __argz_count # define __argz_count(argz, len) argz_count__ (argz, len) #endif /* !_LIBC && !HAVE___ARGZ_COUNT */ #if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY /* Make '\0' separated arg vector ARGZ printable by converting all the '\0's except the last into the character SEP. */ static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep)); static void argz_stringify__ (argz, len, sep) char *argz; size_t len; int sep; { while (len > 0) { size_t part_len = strlen (argz); argz += part_len; len -= part_len + 1; if (len > 0) *argz++ = sep; } } # undef __argz_stringify # define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) #endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */ #if !defined _LIBC && !defined HAVE___ARGZ_NEXT static char *argz_next__ PARAMS ((char *argz, size_t argz_len, const char *entry)); static char * argz_next__ (argz, argz_len, entry) char *argz; size_t argz_len; const char *entry; { if (entry) { if (entry < argz + argz_len) entry = strchr (entry, '\0') + 1; return entry >= argz + argz_len ? NULL : (char *) entry; } else if (argz_len > 0) return argz; else return 0; } # undef __argz_next # define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) #endif /* !_LIBC && !HAVE___ARGZ_NEXT */ /* Return number of bits set in X. */ static int pop PARAMS ((int x)); static inline int pop (x) int x; { /* We assume that no more than 16 bits are used. */ x = ((x & ~0x5555) >> 1) + (x & 0x5555); x = ((x & ~0x3333) >> 2) + (x & 0x3333); x = ((x >> 4) + x) & 0x0f0f; x = ((x >> 8) + x) & 0xff; return x; } struct loaded_l10nfile * _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language, territory, codeset, normalized_codeset, modifier, special, sponsor, revision, filename, do_allocate) struct loaded_l10nfile **l10nfile_list; const char *dirlist; size_t dirlist_len; int mask; const char *language; const char *territory; const char *codeset; const char *normalized_codeset; const char *modifier; const char *special; const char *sponsor; const char *revision; const char *filename; int do_allocate; { char *abs_filename; struct loaded_l10nfile *last = NULL; struct loaded_l10nfile *retval; char *cp; size_t entries; int cnt; /* Allocate room for the full file name. */ abs_filename = (char *) malloc (dirlist_len + strlen (language) + ((mask & TERRITORY) != 0 ? strlen (territory) + 1 : 0) + ((mask & XPG_CODESET) != 0 ? strlen (codeset) + 1 : 0) + ((mask & XPG_NORM_CODESET) != 0 ? strlen (normalized_codeset) + 1 : 0) + (((mask & XPG_MODIFIER) != 0 || (mask & CEN_AUDIENCE) != 0) ? strlen (modifier) + 1 : 0) + ((mask & CEN_SPECIAL) != 0 ? strlen (special) + 1 : 0) + (((mask & CEN_SPONSOR) != 0 || (mask & CEN_REVISION) != 0) ? (1 + ((mask & CEN_SPONSOR) != 0 ? strlen (sponsor) + 1 : 0) + ((mask & CEN_REVISION) != 0 ? strlen (revision) + 1 : 0)) : 0) + 1 + strlen (filename) + 1); if (abs_filename == NULL) return NULL; retval = NULL; last = NULL; /* Construct file name. */ memcpy (abs_filename, dirlist, dirlist_len); __argz_stringify (abs_filename, dirlist_len, PATH_SEPARATOR); cp = abs_filename + (dirlist_len - 1); *cp++ = '/'; cp = stpcpy (cp, language); if ((mask & TERRITORY) != 0) { *cp++ = '_'; cp = stpcpy (cp, territory); } if ((mask & XPG_CODESET) != 0) { *cp++ = '.'; cp = stpcpy (cp, codeset); } if ((mask & XPG_NORM_CODESET) != 0) { *cp++ = '.'; cp = stpcpy (cp, normalized_codeset); } if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0) { /* This component can be part of both syntaces but has different leading characters. For CEN we use `+', else `@'. */ *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@'; cp = stpcpy (cp, modifier); } if ((mask & CEN_SPECIAL) != 0) { *cp++ = '+'; cp = stpcpy (cp, special); } if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0) { *cp++ = ','; if ((mask & CEN_SPONSOR) != 0) cp = stpcpy (cp, sponsor); if ((mask & CEN_REVISION) != 0) { *cp++ = '_'; cp = stpcpy (cp, revision); } } *cp++ = '/'; stpcpy (cp, filename); /* Look in list of already loaded domains whether it is already available. */ last = NULL; for (retval = *l10nfile_list; retval != NULL; retval = retval->next) if (retval->filename != NULL) { int compare = strcmp (retval->filename, abs_filename); if (compare == 0) /* We found it! */ break; if (compare < 0) { /* It's not in the list. */ retval = NULL; break; } last = retval; } if (retval != NULL || do_allocate == 0) { free (abs_filename); return retval; } retval = (struct loaded_l10nfile *) malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len) * (1 << pop (mask)) * sizeof (struct loaded_l10nfile *))); if (retval == NULL) return NULL; retval->filename = abs_filename; retval->decided = (__argz_count (dirlist, dirlist_len) != 1 || ((mask & XPG_CODESET) != 0 && (mask & XPG_NORM_CODESET) != 0)); retval->data = NULL; if (last == NULL) { retval->next = *l10nfile_list; *l10nfile_list = retval; } else { retval->next = last->next; last->next = retval; } entries = 0; /* If the DIRLIST is a real list the RETVAL entry corresponds not to a real file. So we have to use the DIRLIST separation mechanism of the inner loop. */ cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask; for (; cnt >= 0; --cnt) if ((cnt & ~mask) == 0 && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0) && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0)) { /* Iterate over all elements of the DIRLIST. */ char *dir = NULL; while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) != NULL) retval->successor[entries++] = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt, language, territory, codeset, normalized_codeset, modifier, special, sponsor, revision, filename, 1); } retval->successor[entries] = NULL; return retval; } /* Normalize codeset name. There is no standard for the codeset names. Normalization allows the user to use any of the common names. The return value is dynamically allocated and has to be freed by the caller. */ const char * _nl_normalize_codeset (codeset, name_len) const char *codeset; size_t name_len; { int len = 0; int only_digit = 1; char *retval; char *wp; size_t cnt; for (cnt = 0; cnt < name_len; ++cnt) if (isalnum ((unsigned char) codeset[cnt])) { ++len; if (isalpha ((unsigned char) codeset[cnt])) only_digit = 0; } retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); if (retval != NULL) { if (only_digit) wp = stpcpy (retval, "iso"); else wp = retval; for (cnt = 0; cnt < name_len; ++cnt) if (isalpha ((unsigned char) codeset[cnt])) *wp++ = tolower ((unsigned char) codeset[cnt]); else if (isdigit ((unsigned char) codeset[cnt])) *wp++ = codeset[cnt]; *wp = '\0'; } return (const char *) retval; } /* @@ begin of epilog @@ */ /* We don't want libintl.a to depend on any other library. So we avoid the non-standard function stpcpy. In GNU C Library this function is available, though. Also allow the symbol HAVE_STPCPY to be defined. */ #if !_LIBC && !HAVE_STPCPY static char * stpcpy (dest, src) char *dest; const char *src; { while ((*dest++ = *src++) != '\0') /* Do nothing. */ ; return dest - 1; } #endif ap-utils-1.5/intl/libgnuintl.h000066400000000000000000000112361117246662700164220ustar00rootroot00000000000000/* Message catalogs for internationalization. Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifndef _LIBINTL_H #define _LIBINTL_H 1 #include /* The LC_MESSAGES locale category is the category used by the functions gettext() and dgettext(). It is specified in POSIX, but not in ANSI C. On systems that don't define it, use an arbitrary value instead. On Solaris, defines __LOCALE_H then includes (i.e. this file!) and then only defines LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES in this case. */ #if !defined LC_MESSAGES && !defined __LOCALE_H # define LC_MESSAGES 1729 #endif /* We define an additional symbol to signal that we use the GNU implementation of gettext. */ #define __USE_GNU_GETTEXT 1 /* Resolve a platform specific conflict on DJGPP. GNU gettext takes precedence over _conio_gettext. */ #ifdef __DJGPP__ # undef gettext # define gettext gettext #endif /* Use _INTL_PARAMS, not PARAMS, in order to avoid clashes with identifiers used by programs. Similarly, test __PROTOTYPES, not PROTOTYPES. */ #ifndef _INTL_PARAMS # if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES # define _INTL_PARAMS(args) args # else # define _INTL_PARAMS(args) () # endif #endif #ifdef __cplusplus extern "C" { #endif /* Look up MSGID in the current default message catalog for the current LC_MESSAGES locale. If not found, returns MSGID itself (the default text). */ extern char *gettext _INTL_PARAMS ((const char *__msgid)); /* Look up MSGID in the DOMAINNAME message catalog for the current LC_MESSAGES locale. */ extern char *dgettext _INTL_PARAMS ((const char *__domainname, const char *__msgid)); /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY locale. */ extern char *dcgettext _INTL_PARAMS ((const char *__domainname, const char *__msgid, int __category)); /* Similar to `gettext' but select the plural form corresponding to the number N. */ extern char *ngettext _INTL_PARAMS ((const char *__msgid1, const char *__msgid2, unsigned long int __n)); /* Similar to `dgettext' but select the plural form corresponding to the number N. */ extern char *dngettext _INTL_PARAMS ((const char *__domainname, const char *__msgid1, const char *__msgid2, unsigned long int __n)); /* Similar to `dcgettext' but select the plural form corresponding to the number N. */ extern char *dcngettext _INTL_PARAMS ((const char *__domainname, const char *__msgid1, const char *__msgid2, unsigned long int __n, int __category)); /* Set the current default message catalog to DOMAINNAME. If DOMAINNAME is null, return the current default. If DOMAINNAME is "", reset to the default of "messages". */ extern char *textdomain _INTL_PARAMS ((const char *__domainname)); /* Specify that the DOMAINNAME message catalog will be found in DIRNAME rather than in the system locale data base. */ extern char *bindtextdomain _INTL_PARAMS ((const char *__domainname, const char *__dirname)); /* Specify the character encoding in which the messages from the DOMAINNAME message catalog will be returned. */ extern char *bind_textdomain_codeset _INTL_PARAMS ((const char *__domainname, const char *__codeset)); /* Optimized version of the functions above. */ #if defined __OPTIMIZED /* These are macros, but could also be inline functions. */ # define gettext(msgid) \ dgettext (NULL, msgid) # define dgettext(domainname, msgid) \ dcgettext (domainname, msgid, LC_MESSAGES) # define ngettext(msgid1, msgid2, n) \ dngettext (NULL, msgid1, msgid2, n) # define dngettext(domainname, msgid1, msgid2, n) \ dcngettext (domainname, msgid1, msgid2, n, LC_MESSAGES) #endif /* Optimizing. */ #ifdef __cplusplus } #endif #endif /* libintl.h */ ap-utils-1.5/intl/loadinfo.h000066400000000000000000000075111117246662700160470ustar00rootroot00000000000000/* Copyright (C) 1996-1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifndef _LOADINFO_H #define _LOADINFO_H 1 /* Declarations of locale dependent catalog lookup functions. Implemented in localealias.c Possibly replace a locale name by another. explodename.c Split a locale name into its various fields. l10nflist.c Generate a list of filenames of possible message catalogs. finddomain.c Find and open the relevant message catalogs. The main function _nl_find_domain() in finddomain.c is declared in gettextP.h. */ #ifndef PARAMS # if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES # define PARAMS(args) args # else # define PARAMS(args) () # endif #endif #ifndef internal_function # define internal_function #endif /* Tell the compiler when a conditional or integer expression is almost always true or almost always false. */ #ifndef HAVE_BUILTIN_EXPECT # define __builtin_expect(expr, val) (expr) #endif /* Separator in PATH like lists of pathnames. */ #if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ /* Win32, OS/2, DOS */ # define PATH_SEPARATOR ';' #else /* Unix */ # define PATH_SEPARATOR ':' #endif /* Encoding of locale name parts. */ #define CEN_REVISION 1 #define CEN_SPONSOR 2 #define CEN_SPECIAL 4 #define XPG_NORM_CODESET 8 #define XPG_CODESET 16 #define TERRITORY 32 #define CEN_AUDIENCE 64 #define XPG_MODIFIER 128 #define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE) #define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER) struct loaded_l10nfile { const char *filename; int decided; const void *data; struct loaded_l10nfile *next; struct loaded_l10nfile *successor[1]; }; /* Normalize codeset name. There is no standard for the codeset names. Normalization allows the user to use any of the common names. The return value is dynamically allocated and has to be freed by the caller. */ extern const char *_nl_normalize_codeset PARAMS ((const char *codeset, size_t name_len)); extern struct loaded_l10nfile * _nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list, const char *dirlist, size_t dirlist_len, int mask, const char *language, const char *territory, const char *codeset, const char *normalized_codeset, const char *modifier, const char *special, const char *sponsor, const char *revision, const char *filename, int do_allocate)); extern const char *_nl_expand_alias PARAMS ((const char *name)); /* normalized_codeset is dynamically allocated and has to be freed by the caller. */ extern int _nl_explode_name PARAMS ((char *name, const char **language, const char **modifier, const char **territory, const char **codeset, const char **normalized_codeset, const char **special, const char **sponsor, const char **revision)); extern char *_nl_find_language PARAMS ((const char *name)); #endif /* loadinfo.h */ ap-utils-1.5/intl/loadmsgcat.c000066400000000000000000000275051117246662700163720ustar00rootroot00000000000000/* Load needed message catalogs. Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ /* Tell glibc's to provide a prototype for mempcpy(). This must come before because may include , and once has been included, it's too late. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #ifdef __GNUC__ # define alloca __builtin_alloca # define HAVE_ALLOCA 1 #else # if defined HAVE_ALLOCA_H || defined _LIBC # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca char *alloca (); # endif # endif # endif #endif #include #include #if defined HAVE_UNISTD_H || defined _LIBC # include #endif #ifdef _LIBC # include # include #endif #if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ || (defined _LIBC && defined _POSIX_MAPPED_FILES) # include # undef HAVE_MMAP # define HAVE_MMAP 1 #else # undef HAVE_MMAP #endif #include "gmo.h" #include "gettextP.h" #include "plural-exp.h" #ifdef _LIBC # include "../locale/localeinfo.h" #endif /* @@ end of prolog @@ */ #ifdef _LIBC /* Rename the non ISO C functions. This is required by the standard because some ISO C functions will require linking with this object file and the name space must not be polluted. */ # define open __open # define close __close # define read __read # define mmap __mmap # define munmap __munmap #endif /* For those losing systems which don't have `alloca' we have to add some additional code emulating it. */ #ifdef HAVE_ALLOCA # define freea(p) /* nothing */ #else # define alloca(n) malloc (n) # define freea(p) free (p) #endif /* For systems that distinguish between text and binary I/O. O_BINARY is usually declared in . */ #if !defined O_BINARY && defined _O_BINARY /* For MSC-compatible compilers. */ # define O_BINARY _O_BINARY # define O_TEXT _O_TEXT #endif #ifdef __BEOS__ /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */ # undef O_BINARY # undef O_TEXT #endif /* On reasonable systems, binary I/O is the default. */ #ifndef O_BINARY # define O_BINARY 0 #endif /* We need a sign, whether a new catalog was loaded, which can be associated with all translations. This is important if the translations are cached by one of GCC's features. */ int _nl_msg_cat_cntr; /* Initialize the codeset dependent parts of an opened message catalog. Return the header entry. */ const char * internal_function _nl_init_domain_conv (domain_file, domain, domainbinding) struct loaded_l10nfile *domain_file; struct loaded_domain *domain; struct binding *domainbinding; { /* Find out about the character set the file is encoded with. This can be found (in textual form) in the entry "". If this entry does not exist or if this does not contain the `charset=' information, we will assume the charset matches the one the current locale and we don't have to perform any conversion. */ char *nullentry; size_t nullentrylen; /* Preinitialize fields, to avoid recursion during _nl_find_msg. */ domain->codeset_cntr = (domainbinding != NULL ? domainbinding->codeset_cntr : 0); #ifdef _LIBC domain->conv = (__gconv_t) -1; #else # if HAVE_ICONV domain->conv = (iconv_t) -1; # endif #endif domain->conv_tab = NULL; /* Get the header entry. */ nullentry = _nl_find_msg (domain_file, domainbinding, "", &nullentrylen); if (nullentry != NULL) { #if defined _LIBC || HAVE_ICONV const char *charsetstr; charsetstr = strstr (nullentry, "charset="); if (charsetstr != NULL) { size_t len; char *charset; const char *outcharset; charsetstr += strlen ("charset="); len = strcspn (charsetstr, " \t\n"); charset = (char *) alloca (len + 1); # if defined _LIBC || HAVE_MEMPCPY *((char *) mempcpy (charset, charsetstr, len)) = '\0'; # else memcpy (charset, charsetstr, len); charset[len] = '\0'; # endif /* The output charset should normally be determined by the locale. But sometimes the locale is not used or not correctly set up, so we provide a possibility for the user to override this. Moreover, the value specified through bind_textdomain_codeset overrides both. */ if (domainbinding != NULL && domainbinding->codeset != NULL) outcharset = domainbinding->codeset; else { outcharset = getenv ("OUTPUT_CHARSET"); if (outcharset == NULL || outcharset[0] == '\0') { # ifdef _LIBC outcharset = (*_nl_current[LC_CTYPE])->values[_NL_ITEM_INDEX (CODESET)].string; # else # if HAVE_ICONV extern const char *locale_charset PARAMS ((void)); outcharset = locale_charset (); # endif # endif } } # ifdef _LIBC /* We always want to use transliteration. */ outcharset = norm_add_slashes (outcharset, "TRANSLIT"); charset = norm_add_slashes (charset, NULL); if (__gconv_open (outcharset, charset, &domain->conv, GCONV_AVOID_NOCONV) != __GCONV_OK) domain->conv = (__gconv_t) -1; # else # if HAVE_ICONV /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5, we want to use transliteration. */ # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \ || _LIBICONV_VERSION >= 0x0105 len = strlen (outcharset); { char *tmp = (char *) alloca (len + 10 + 1); memcpy (tmp, outcharset, len); memcpy (tmp + len, "//TRANSLIT", 10 + 1); outcharset = tmp; } # endif domain->conv = iconv_open (outcharset, charset); # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \ || _LIBICONV_VERSION >= 0x0105 freea (outcharset); # endif # endif # endif freea (charset); } #endif /* _LIBC || HAVE_ICONV */ } return nullentry; } /* Frees the codeset dependent parts of an opened message catalog. */ void internal_function _nl_free_domain_conv (domain) struct loaded_domain *domain; { if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1) free (domain->conv_tab); #ifdef _LIBC if (domain->conv != (__gconv_t) -1) __gconv_close (domain->conv); #else # if HAVE_ICONV if (domain->conv != (iconv_t) -1) iconv_close (domain->conv); # endif #endif } /* Load the message catalogs specified by FILENAME. If it is no valid message catalog do nothing. */ void internal_function _nl_load_domain (domain_file, domainbinding) struct loaded_l10nfile *domain_file; struct binding *domainbinding; { int fd; size_t size; #ifdef _LIBC struct stat64 st; #else struct stat st; #endif struct mo_file_header *data = (struct mo_file_header *) -1; int use_mmap = 0; struct loaded_domain *domain; const char *nullentry; domain_file->decided = 1; domain_file->data = NULL; /* Note that it would be useless to store domainbinding in domain_file because domainbinding might be == NULL now but != NULL later (after a call to bind_textdomain_codeset). */ /* If the record does not represent a valid locale the FILENAME might be NULL. This can happen when according to the given specification the locale file name is different for XPG and CEN syntax. */ if (domain_file->filename == NULL) return; /* Try to open the addressed file. */ fd = open (domain_file->filename, O_RDONLY | O_BINARY); if (fd == -1) return; /* We must know about the size of the file. */ if ( #ifdef _LIBC __builtin_expect (fstat64 (fd, &st) != 0, 0) #else __builtin_expect (fstat (fd, &st) != 0, 0) #endif || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0) || __builtin_expect (size < sizeof (struct mo_file_header), 0)) { /* Something went wrong. */ close (fd); return; } #ifdef HAVE_MMAP /* Now we are ready to load the file. If mmap() is available we try this first. If not available or it failed we try to load it. */ data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, MAP_PRIVATE, fd, 0); if (__builtin_expect (data != (struct mo_file_header *) -1, 1)) { /* mmap() call was successful. */ close (fd); use_mmap = 1; } #endif /* If the data is not yet available (i.e. mmap'ed) we try to load it manually. */ if (data == (struct mo_file_header *) -1) { size_t to_read; char *read_ptr; data = (struct mo_file_header *) malloc (size); if (data == NULL) return; to_read = size; read_ptr = (char *) data; do { long int nb = (long int) read (fd, read_ptr, to_read); if (nb <= 0) { #ifdef EINTR if (nb == -1 && errno == EINTR) continue; #endif close (fd); return; } read_ptr += nb; to_read -= nb; } while (to_read > 0); close (fd); } /* Using the magic number we can test whether it really is a message catalog file. */ if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED, 0)) { /* The magic number is wrong: not a message catalog file. */ #ifdef HAVE_MMAP if (use_mmap) munmap ((caddr_t) data, size); else #endif free (data); return; } domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); if (domain == NULL) return; domain_file->data = domain; domain->data = (char *) data; domain->use_mmap = use_mmap; domain->mmap_size = size; domain->must_swap = data->magic != _MAGIC; /* Fill in the information about the available tables. */ switch (W (domain->must_swap, data->revision)) { case 0: domain->nstrings = W (domain->must_swap, data->nstrings); domain->orig_tab = (struct string_desc *) ((char *) data + W (domain->must_swap, data->orig_tab_offset)); domain->trans_tab = (struct string_desc *) ((char *) data + W (domain->must_swap, data->trans_tab_offset)); domain->hash_size = W (domain->must_swap, data->hash_tab_size); domain->hash_tab = (nls_uint32 *) ((char *) data + W (domain->must_swap, data->hash_tab_offset)); break; default: /* This is an invalid revision. */ #ifdef HAVE_MMAP if (use_mmap) munmap ((caddr_t) data, size); else #endif free (data); free (domain); domain_file->data = NULL; return; } /* Now initialize the character set converter from the character set the file is encoded with (found in the header entry) to the domain's specified character set or the locale's character set. */ nullentry = _nl_init_domain_conv (domain_file, domain, domainbinding); /* Also look for a plural specification. */ EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals); } #ifdef _LIBC void internal_function _nl_unload_domain (domain) struct loaded_domain *domain; { if (domain->plural != &__gettext_germanic_plural) __gettext_free_exp (domain->plural); _nl_free_domain_conv (domain); # ifdef _POSIX_MAPPED_FILES if (domain->use_mmap) munmap ((caddr_t) domain->data, domain->mmap_size); else # endif /* _POSIX_MAPPED_FILES */ free ((void *) domain->data); free (domain); } #endif ap-utils-1.5/intl/localcharset.c000066400000000000000000000207001117246662700167060ustar00rootroot00000000000000/* Determine a canonical name for the current locale's character encoding. Copyright (C) 2000-2002 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ /* Written by Bruno Haible . */ #ifdef HAVE_CONFIG_H # include #endif #if HAVE_STDDEF_H # include #endif #include #if HAVE_STRING_H # include #else # include #endif #if HAVE_STDLIB_H # include #endif #if defined _WIN32 || defined __WIN32__ # undef WIN32 /* avoid warning on mingw32 */ # define WIN32 #endif #if defined __EMX__ /* Assume EMX program runs on OS/2, even if compiled under DOS. */ # define OS2 #endif #if !defined WIN32 # if HAVE_LANGINFO_CODESET # include # else # if HAVE_SETLOCALE # include # endif # endif #elif defined WIN32 # define WIN32_LEAN_AND_MEAN # include #endif #if defined OS2 # define INCL_DOS # include #endif #if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ /* Win32, OS/2, DOS */ # define ISSLASH(C) ((C) == '/' || (C) == '\\') #endif #ifndef DIRECTORY_SEPARATOR # define DIRECTORY_SEPARATOR '/' #endif #ifndef ISSLASH # define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) #endif #ifdef HAVE_GETC_UNLOCKED # undef getc # define getc getc_unlocked #endif /* The following static variable is declared 'volatile' to avoid a possible multithread problem in the function get_charset_aliases. If we are running in a threaded environment, and if two threads initialize 'charset_aliases' simultaneously, both will produce the same value, and everything will be ok if the two assignments to 'charset_aliases' are atomic. But I don't know what will happen if the two assignments mix. */ #if __STDC__ != 1 # define volatile /* empty */ #endif /* Pointer to the contents of the charset.alias file, if it has already been read, else NULL. Its format is: ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */ static const char * volatile charset_aliases; /* Return a pointer to the contents of the charset.alias file. */ static const char * get_charset_aliases () { const char *cp; cp = charset_aliases; if (cp == NULL) { #if !defined WIN32 FILE *fp; const char *dir = LIBDIR; const char *base = "charset.alias"; char *file_name; /* Concatenate dir and base into freshly allocated file_name. */ { size_t dir_len = strlen (dir); size_t base_len = strlen (base); int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1])); file_name = (char *) malloc (dir_len + add_slash + base_len + 1); if (file_name != NULL) { memcpy (file_name, dir, dir_len); if (add_slash) file_name[dir_len] = DIRECTORY_SEPARATOR; memcpy (file_name + dir_len + add_slash, base, base_len + 1); } } if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL) /* Out of memory or file not found, treat it as empty. */ cp = ""; else { /* Parse the file's contents. */ int c; char buf1[50+1]; char buf2[50+1]; char *res_ptr = NULL; size_t res_size = 0; size_t l1, l2; for (;;) { c = getc (fp); if (c == EOF) break; if (c == '\n' || c == ' ' || c == '\t') continue; if (c == '#') { /* Skip comment, to end of line. */ do c = getc (fp); while (!(c == EOF || c == '\n')); if (c == EOF) break; continue; } ungetc (c, fp); if (fscanf (fp, "%50s %50s", buf1, buf2) < 2) break; l1 = strlen (buf1); l2 = strlen (buf2); if (res_size == 0) { res_size = l1 + 1 + l2 + 1; res_ptr = (char *) malloc (res_size + 1); } else { res_size += l1 + 1 + l2 + 1; res_ptr = (char *) realloc (res_ptr, res_size + 1); } if (res_ptr == NULL) { /* Out of memory. */ res_size = 0; break; } strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1); strcpy (res_ptr + res_size - (l2 + 1), buf2); } fclose (fp); if (res_size == 0) cp = ""; else { *(res_ptr + res_size) = '\0'; cp = res_ptr; } } if (file_name != NULL) free (file_name); #else /* To avoid the troubles of installing a separate file in the same directory as the DLL and of retrieving the DLL's directory at runtime, simply inline the aliases here. */ # if defined WIN32 cp = "CP936" "\0" "GBK" "\0" "CP1361" "\0" "JOHAB" "\0"; # endif #endif charset_aliases = cp; } return cp; } /* Determine the current locale's character encoding, and canonicalize it into one of the canonical names listed in config.charset. The result must not be freed; it is statically allocated. If the canonical name cannot be determined, the result is a non-canonical name. */ #ifdef STATIC STATIC #endif const char * locale_charset () { const char *codeset; const char *aliases; #if !(defined WIN32 || defined OS2) # if HAVE_LANGINFO_CODESET /* Most systems support nl_langinfo (CODESET) nowadays. */ codeset = nl_langinfo (CODESET); # else /* On old systems which lack it, use setlocale or getenv. */ const char *locale = NULL; /* But most old systems don't have a complete set of locales. Some (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't use setlocale here; it would return "C" when it doesn't support the locale name the user has set. */ # if HAVE_SETLOCALE && 0 locale = setlocale (LC_CTYPE, NULL); # endif if (locale == NULL || locale[0] == '\0') { locale = getenv ("LC_ALL"); if (locale == NULL || locale[0] == '\0') { locale = getenv ("LC_CTYPE"); if (locale == NULL || locale[0] == '\0') locale = getenv ("LANG"); } } /* On some old systems, one used to set locale = "iso8859_1". On others, you set it to "language_COUNTRY.charset". In any case, we resolve it through the charset.alias file. */ codeset = locale; # endif #elif defined WIN32 static char buf[2 + 10 + 1]; /* Win32 has a function returning the locale's codepage as a number. */ sprintf (buf, "CP%u", GetACP ()); codeset = buf; #elif defined OS2 const char *locale; static char buf[2 + 10 + 1]; ULONG cp[3]; ULONG cplen; /* Allow user to override the codeset, as set in the operating system, with standard language environment variables. */ locale = getenv ("LC_ALL"); if (locale == NULL || locale[0] == '\0') { locale = getenv ("LC_CTYPE"); if (locale == NULL || locale[0] == '\0') locale = getenv ("LANG"); } if (locale != NULL && locale[0] != '\0') { /* If the locale name contains an encoding after the dot, return it. */ const char *dot = strchr (locale, '.'); if (dot != NULL) { const char *modifier; dot++; /* Look for the possible @... trailer and remove it, if any. */ modifier = strchr (dot, '@'); if (modifier == NULL) return dot; if (modifier - dot < sizeof (buf)) { memcpy (buf, dot, modifier - dot); buf [modifier - dot] = '\0'; return buf; } } /* Resolve through the charset.alias file. */ codeset = locale; } else { /* OS/2 has a function returning the locale's codepage as a number. */ if (DosQueryCp (sizeof (cp), cp, &cplen)) codeset = ""; else { sprintf (buf, "CP%u", cp[0]); codeset = buf; } } #endif if (codeset == NULL) /* The canonical name cannot be determined. */ codeset = ""; /* Resolve alias. */ for (aliases = get_charset_aliases (); *aliases != '\0'; aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1) if (strcmp (codeset, aliases) == 0 || (aliases[0] == '*' && aliases[1] == '\0')) { codeset = aliases + strlen (aliases) + 1; break; } return codeset; } ap-utils-1.5/intl/locale.alias000066400000000000000000000051411117246662700163520ustar00rootroot00000000000000# Locale name alias data base. # Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published # by the Free Software Foundation; either version 2, 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 # Library General Public License for more details. # # You should have received a copy of the GNU Library 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. # The format of this file is the same as for the corresponding file of # the X Window System, which normally can be found in # /usr/lib/X11/locale/locale.alias # A single line contains two fields: an alias and a substitution value. # All entries are case independent. # Note: This file is far from being complete. If you have a value for # your own site which you think might be useful for others too, share # it with the rest of us. Send it using the `glibcbug' script to # bugs@gnu.org. # Packages using this file: bokmal no_NO.ISO-8859-1 bokmål no_NO.ISO-8859-1 catalan ca_ES.ISO-8859-1 croatian hr_HR.ISO-8859-2 czech cs_CZ.ISO-8859-2 danish da_DK.ISO-8859-1 dansk da_DK.ISO-8859-1 deutsch de_DE.ISO-8859-1 dutch nl_NL.ISO-8859-1 eesti et_EE.ISO-8859-1 estonian et_EE.ISO-8859-1 finnish fi_FI.ISO-8859-1 français fr_FR.ISO-8859-1 french fr_FR.ISO-8859-1 galego gl_ES.ISO-8859-1 galician gl_ES.ISO-8859-1 german de_DE.ISO-8859-1 greek el_GR.ISO-8859-7 hebrew he_IL.ISO-8859-8 hrvatski hr_HR.ISO-8859-2 hungarian hu_HU.ISO-8859-2 icelandic is_IS.ISO-8859-1 italian it_IT.ISO-8859-1 japanese ja_JP.eucJP japanese.euc ja_JP.eucJP ja_JP ja_JP.eucJP ja_JP.ujis ja_JP.eucJP japanese.sjis ja_JP.SJIS korean ko_KR.eucKR korean.euc ko_KR.eucKR ko_KR ko_KR.eucKR lithuanian lt_LT.ISO-8859-13 nb_NO no_NO.ISO-8859-1 nb_NO.ISO-8859-1 no_NO.ISO-8859-1 norwegian no_NO.ISO-8859-1 nynorsk nn_NO.ISO-8859-1 polish pl_PL.ISO-8859-2 portuguese pt_PT.ISO-8859-1 romanian ro_RO.ISO-8859-2 russian ru_RU.ISO-8859-5 slovak sk_SK.ISO-8859-2 slovene sl_SI.ISO-8859-2 slovenian sl_SI.ISO-8859-2 spanish es_ES.ISO-8859-1 swedish sv_SE.ISO-8859-1 thai th_TH.TIS-620 turkish tr_TR.ISO-8859-9 ap-utils-1.5/intl/localealias.c000066400000000000000000000233031117246662700165150ustar00rootroot00000000000000/* Handle aliases for locale names. Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ /* Tell glibc's to provide a prototype for mempcpy(). This must come before because may include , and once has been included, it's too late. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif #ifdef HAVE_CONFIG_H # include #endif #include #include #if defined _LIBC || defined HAVE___FSETLOCKING # include #endif #include #ifdef __GNUC__ # define alloca __builtin_alloca # define HAVE_ALLOCA 1 #else # if defined HAVE_ALLOCA_H || defined _LIBC # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca char *alloca (); # endif # endif # endif #endif #include #include #include "gettextP.h" /* @@ end of prolog @@ */ #ifdef _LIBC /* Rename the non ANSI C functions. This is required by the standard because some ANSI C functions will require linking with this object file and the name space must not be polluted. */ # define strcasecmp __strcasecmp # ifndef mempcpy # define mempcpy __mempcpy # endif # define HAVE_MEMPCPY 1 # define HAVE___FSETLOCKING 1 /* We need locking here since we can be called from different places. */ # include __libc_lock_define_initialized (static, lock); #endif #ifndef internal_function # define internal_function #endif /* Some optimizations for glibc. */ #ifdef _LIBC # define FEOF(fp) feof_unlocked (fp) # define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp) #else # define FEOF(fp) feof (fp) # define FGETS(buf, n, fp) fgets (buf, n, fp) #endif /* For those losing systems which don't have `alloca' we have to add some additional code emulating it. */ #ifdef HAVE_ALLOCA # define freea(p) /* nothing */ #else # define alloca(n) malloc (n) # define freea(p) free (p) #endif #if defined _LIBC_REENTRANT || defined HAVE_FGETS_UNLOCKED # undef fgets # define fgets(buf, len, s) fgets_unlocked (buf, len, s) #endif #if defined _LIBC_REENTRANT || defined HAVE_FEOF_UNLOCKED # undef feof # define feof(s) feof_unlocked (s) #endif struct alias_map { const char *alias; const char *value; }; static char *string_space; static size_t string_space_act; static size_t string_space_max; static struct alias_map *map; static size_t nmap; static size_t maxmap; /* Prototypes for local functions. */ static size_t read_alias_file PARAMS ((const char *fname, int fname_len)) internal_function; static int extend_alias_table PARAMS ((void)); static int alias_compare PARAMS ((const struct alias_map *map1, const struct alias_map *map2)); const char * _nl_expand_alias (name) const char *name; { static const char *locale_alias_path; struct alias_map *retval; const char *result = NULL; size_t added; #ifdef _LIBC __libc_lock_lock (lock); #endif if (locale_alias_path == NULL) locale_alias_path = LOCALE_ALIAS_PATH; do { struct alias_map item; item.alias = name; if (nmap > 0) retval = (struct alias_map *) bsearch (&item, map, nmap, sizeof (struct alias_map), (int (*) PARAMS ((const void *, const void *)) ) alias_compare); else retval = NULL; /* We really found an alias. Return the value. */ if (retval != NULL) { result = retval->value; break; } /* Perhaps we can find another alias file. */ added = 0; while (added == 0 && locale_alias_path[0] != '\0') { const char *start; while (locale_alias_path[0] == PATH_SEPARATOR) ++locale_alias_path; start = locale_alias_path; while (locale_alias_path[0] != '\0' && locale_alias_path[0] != PATH_SEPARATOR) ++locale_alias_path; if (start < locale_alias_path) added = read_alias_file (start, locale_alias_path - start); } } while (added != 0); #ifdef _LIBC __libc_lock_unlock (lock); #endif return result; } static size_t internal_function read_alias_file (fname, fname_len) const char *fname; int fname_len; { FILE *fp; char *full_fname; size_t added; static const char aliasfile[] = "/locale.alias"; full_fname = (char *) alloca (fname_len + sizeof aliasfile); #ifdef HAVE_MEMPCPY mempcpy (mempcpy (full_fname, fname, fname_len), aliasfile, sizeof aliasfile); #else memcpy (full_fname, fname, fname_len); memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); #endif fp = fopen (full_fname, "r"); freea (full_fname); if (fp == NULL) return 0; #ifdef HAVE___FSETLOCKING /* No threads present. */ __fsetlocking (fp, FSETLOCKING_BYCALLER); #endif added = 0; while (!FEOF (fp)) { /* It is a reasonable approach to use a fix buffer here because a) we are only interested in the first two fields b) these fields must be usable as file names and so must not be that long */ char buf[BUFSIZ]; char *alias; char *value; char *cp; if (FGETS (buf, sizeof buf, fp) == NULL) /* EOF reached. */ break; /* Possibly not the whole line fits into the buffer. Ignore the rest of the line. */ if (strchr (buf, '\n') == NULL) { char altbuf[BUFSIZ]; do if (FGETS (altbuf, sizeof altbuf, fp) == NULL) /* Make sure the inner loop will be left. The outer loop will exit at the `feof' test. */ break; while (strchr (altbuf, '\n') == NULL); } cp = buf; /* Ignore leading white space. */ while (isspace ((unsigned char) cp[0])) ++cp; /* A leading '#' signals a comment line. */ if (cp[0] != '\0' && cp[0] != '#') { alias = cp++; while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) ++cp; /* Terminate alias name. */ if (cp[0] != '\0') *cp++ = '\0'; /* Now look for the beginning of the value. */ while (isspace ((unsigned char) cp[0])) ++cp; if (cp[0] != '\0') { size_t alias_len; size_t value_len; value = cp++; while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) ++cp; /* Terminate value. */ if (cp[0] == '\n') { /* This has to be done to make the following test for the end of line possible. We are looking for the terminating '\n' which do not overwrite here. */ *cp++ = '\0'; *cp = '\n'; } else if (cp[0] != '\0') *cp++ = '\0'; if (nmap >= maxmap) if (__builtin_expect (extend_alias_table (), 0)) return added; alias_len = strlen (alias) + 1; value_len = strlen (value) + 1; if (string_space_act + alias_len + value_len > string_space_max) { /* Increase size of memory pool. */ size_t new_size = (string_space_max + (alias_len + value_len > 1024 ? alias_len + value_len : 1024)); char *new_pool = (char *) realloc (string_space, new_size); if (new_pool == NULL) return added; if (__builtin_expect (string_space != new_pool, 0)) { size_t i; for (i = 0; i < nmap; i++) { map[i].alias += new_pool - string_space; map[i].value += new_pool - string_space; } } string_space = new_pool; string_space_max = new_size; } map[nmap].alias = memcpy (&string_space[string_space_act], alias, alias_len); string_space_act += alias_len; map[nmap].value = memcpy (&string_space[string_space_act], value, value_len); string_space_act += value_len; ++nmap; ++added; } } } /* Should we test for ferror()? I think we have to silently ignore errors. --drepper */ fclose (fp); if (added > 0) qsort (map, nmap, sizeof (struct alias_map), (int (*) PARAMS ((const void *, const void *))) alias_compare); return added; } static int extend_alias_table () { size_t new_size; struct alias_map *new_map; new_size = maxmap == 0 ? 100 : 2 * maxmap; new_map = (struct alias_map *) realloc (map, (new_size * sizeof (struct alias_map))); if (new_map == NULL) /* Simply don't extend: we don't have any more core. */ return -1; map = new_map; maxmap = new_size; return 0; } #ifdef _LIBC static void __attribute__ ((unused)) free_mem (void) { if (string_space != NULL) free (string_space); if (map != NULL) free (map); } text_set_element (__libc_subfreeres, free_mem); #endif static int alias_compare (map1, map2) const struct alias_map *map1; const struct alias_map *map2; { #if defined _LIBC || defined HAVE_STRCASECMP return strcasecmp (map1->alias, map2->alias); #else const unsigned char *p1 = (const unsigned char *) map1->alias; const unsigned char *p2 = (const unsigned char *) map2->alias; unsigned char c1, c2; if (p1 == p2) return 0; do { /* I know this seems to be odd but the tolower() function in some systems libc cannot handle nonalpha characters. */ c1 = isupper (*p1) ? tolower (*p1) : *p1; c2 = isupper (*p2) ? tolower (*p2) : *p2; if (c1 == '\0') break; ++p1; ++p2; } while (c1 == c2); return c1 - c2; #endif } ap-utils-1.5/intl/localename.c000066400000000000000000000464401117246662700163530ustar00rootroot00000000000000/* Determine the current selected locale. Copyright (C) 1995-1999, 2000-2002 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ /* Written by Ulrich Drepper , 1995. */ /* Win32 code written by Tor Lillqvist . */ #ifdef HAVE_CONFIG_H # include #endif #include #include #if defined _WIN32 || defined __WIN32__ # undef WIN32 /* avoid warning on mingw32 */ # define WIN32 #endif #ifdef WIN32 # define WIN32_LEAN_AND_MEAN # include /* Mingw headers don't have latest language and sublanguage codes. */ # ifndef LANG_AFRIKAANS # define LANG_AFRIKAANS 0x36 # endif # ifndef LANG_ALBANIAN # define LANG_ALBANIAN 0x1c # endif # ifndef LANG_ARABIC # define LANG_ARABIC 0x01 # endif # ifndef LANG_ARMENIAN # define LANG_ARMENIAN 0x2b # endif # ifndef LANG_ASSAMESE # define LANG_ASSAMESE 0x4d # endif # ifndef LANG_AZERI # define LANG_AZERI 0x2c # endif # ifndef LANG_BASQUE # define LANG_BASQUE 0x2d # endif # ifndef LANG_BELARUSIAN # define LANG_BELARUSIAN 0x23 # endif # ifndef LANG_BENGALI # define LANG_BENGALI 0x45 # endif # ifndef LANG_CATALAN # define LANG_CATALAN 0x03 # endif # ifndef LANG_ESTONIAN # define LANG_ESTONIAN 0x25 # endif # ifndef LANG_FAEROESE # define LANG_FAEROESE 0x38 # endif # ifndef LANG_FARSI # define LANG_FARSI 0x29 # endif # ifndef LANG_GEORGIAN # define LANG_GEORGIAN 0x37 # endif # ifndef LANG_GUJARATI # define LANG_GUJARATI 0x47 # endif # ifndef LANG_HEBREW # define LANG_HEBREW 0x0d # endif # ifndef LANG_HINDI # define LANG_HINDI 0x39 # endif # ifndef LANG_INDONESIAN # define LANG_INDONESIAN 0x21 # endif # ifndef LANG_KANNADA # define LANG_KANNADA 0x4b # endif # ifndef LANG_KASHMIRI # define LANG_KASHMIRI 0x60 # endif # ifndef LANG_KAZAK # define LANG_KAZAK 0x3f # endif # ifndef LANG_KONKANI # define LANG_KONKANI 0x57 # endif # ifndef LANG_LATVIAN # define LANG_LATVIAN 0x26 # endif # ifndef LANG_LITHUANIAN # define LANG_LITHUANIAN 0x27 # endif # ifndef LANG_MACEDONIAN # define LANG_MACEDONIAN 0x2f # endif # ifndef LANG_MALAY # define LANG_MALAY 0x3e # endif # ifndef LANG_MALAYALAM # define LANG_MALAYALAM 0x4c # endif # ifndef LANG_MANIPURI # define LANG_MANIPURI 0x58 # endif # ifndef LANG_MARATHI # define LANG_MARATHI 0x4e # endif # ifndef LANG_NEPALI # define LANG_NEPALI 0x61 # endif # ifndef LANG_ORIYA # define LANG_ORIYA 0x48 # endif # ifndef LANG_PUNJABI # define LANG_PUNJABI 0x46 # endif # ifndef LANG_SANSKRIT # define LANG_SANSKRIT 0x4f # endif # ifndef LANG_SERBIAN # define LANG_SERBIAN 0x1a # endif # ifndef LANG_SINDHI # define LANG_SINDHI 0x59 # endif # ifndef LANG_SLOVAK # define LANG_SLOVAK 0x1b # endif # ifndef LANG_SWAHILI # define LANG_SWAHILI 0x41 # endif # ifndef LANG_TAMIL # define LANG_TAMIL 0x49 # endif # ifndef LANG_TATAR # define LANG_TATAR 0x44 # endif # ifndef LANG_TELUGU # define LANG_TELUGU 0x4a # endif # ifndef LANG_THAI # define LANG_THAI 0x1e # endif # ifndef LANG_UKRAINIAN # define LANG_UKRAINIAN 0x22 # endif # ifndef LANG_URDU # define LANG_URDU 0x20 # endif # ifndef LANG_UZBEK # define LANG_UZBEK 0x43 # endif # ifndef LANG_VIETNAMESE # define LANG_VIETNAMESE 0x2a # endif # ifndef SUBLANG_ARABIC_SAUDI_ARABIA # define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 # endif # ifndef SUBLANG_ARABIC_IRAQ # define SUBLANG_ARABIC_IRAQ 0x02 # endif # ifndef SUBLANG_ARABIC_EGYPT # define SUBLANG_ARABIC_EGYPT 0x03 # endif # ifndef SUBLANG_ARABIC_LIBYA # define SUBLANG_ARABIC_LIBYA 0x04 # endif # ifndef SUBLANG_ARABIC_ALGERIA # define SUBLANG_ARABIC_ALGERIA 0x05 # endif # ifndef SUBLANG_ARABIC_MOROCCO # define SUBLANG_ARABIC_MOROCCO 0x06 # endif # ifndef SUBLANG_ARABIC_TUNISIA # define SUBLANG_ARABIC_TUNISIA 0x07 # endif # ifndef SUBLANG_ARABIC_OMAN # define SUBLANG_ARABIC_OMAN 0x08 # endif # ifndef SUBLANG_ARABIC_YEMEN # define SUBLANG_ARABIC_YEMEN 0x09 # endif # ifndef SUBLANG_ARABIC_SYRIA # define SUBLANG_ARABIC_SYRIA 0x0a # endif # ifndef SUBLANG_ARABIC_JORDAN # define SUBLANG_ARABIC_JORDAN 0x0b # endif # ifndef SUBLANG_ARABIC_LEBANON # define SUBLANG_ARABIC_LEBANON 0x0c # endif # ifndef SUBLANG_ARABIC_KUWAIT # define SUBLANG_ARABIC_KUWAIT 0x0d # endif # ifndef SUBLANG_ARABIC_UAE # define SUBLANG_ARABIC_UAE 0x0e # endif # ifndef SUBLANG_ARABIC_BAHRAIN # define SUBLANG_ARABIC_BAHRAIN 0x0f # endif # ifndef SUBLANG_ARABIC_QATAR # define SUBLANG_ARABIC_QATAR 0x10 # endif # ifndef SUBLANG_AZERI_LATIN # define SUBLANG_AZERI_LATIN 0x01 # endif # ifndef SUBLANG_AZERI_CYRILLIC # define SUBLANG_AZERI_CYRILLIC 0x02 # endif # ifndef SUBLANG_CHINESE_MACAU # define SUBLANG_CHINESE_MACAU 0x05 # endif # ifndef SUBLANG_ENGLISH_SOUTH_AFRICA # define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 # endif # ifndef SUBLANG_ENGLISH_JAMAICA # define SUBLANG_ENGLISH_JAMAICA 0x08 # endif # ifndef SUBLANG_ENGLISH_CARIBBEAN # define SUBLANG_ENGLISH_CARIBBEAN 0x09 # endif # ifndef SUBLANG_ENGLISH_BELIZE # define SUBLANG_ENGLISH_BELIZE 0x0a # endif # ifndef SUBLANG_ENGLISH_TRINIDAD # define SUBLANG_ENGLISH_TRINIDAD 0x0b # endif # ifndef SUBLANG_ENGLISH_ZIMBABWE # define SUBLANG_ENGLISH_ZIMBABWE 0x0c # endif # ifndef SUBLANG_ENGLISH_PHILIPPINES # define SUBLANG_ENGLISH_PHILIPPINES 0x0d # endif # ifndef SUBLANG_FRENCH_LUXEMBOURG # define SUBLANG_FRENCH_LUXEMBOURG 0x05 # endif # ifndef SUBLANG_FRENCH_MONACO # define SUBLANG_FRENCH_MONACO 0x06 # endif # ifndef SUBLANG_GERMAN_LUXEMBOURG # define SUBLANG_GERMAN_LUXEMBOURG 0x04 # endif # ifndef SUBLANG_GERMAN_LIECHTENSTEIN # define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 # endif # ifndef SUBLANG_KASHMIRI_INDIA # define SUBLANG_KASHMIRI_INDIA 0x02 # endif # ifndef SUBLANG_MALAY_MALAYSIA # define SUBLANG_MALAY_MALAYSIA 0x01 # endif # ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM # define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 # endif # ifndef SUBLANG_NEPALI_INDIA # define SUBLANG_NEPALI_INDIA 0x02 # endif # ifndef SUBLANG_SERBIAN_LATIN # define SUBLANG_SERBIAN_LATIN 0x02 # endif # ifndef SUBLANG_SERBIAN_CYRILLIC # define SUBLANG_SERBIAN_CYRILLIC 0x03 # endif # ifndef SUBLANG_SPANISH_GUATEMALA # define SUBLANG_SPANISH_GUATEMALA 0x04 # endif # ifndef SUBLANG_SPANISH_COSTA_RICA # define SUBLANG_SPANISH_COSTA_RICA 0x05 # endif # ifndef SUBLANG_SPANISH_PANAMA # define SUBLANG_SPANISH_PANAMA 0x06 # endif # ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC # define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 # endif # ifndef SUBLANG_SPANISH_VENEZUELA # define SUBLANG_SPANISH_VENEZUELA 0x08 # endif # ifndef SUBLANG_SPANISH_COLOMBIA # define SUBLANG_SPANISH_COLOMBIA 0x09 # endif # ifndef SUBLANG_SPANISH_PERU # define SUBLANG_SPANISH_PERU 0x0a # endif # ifndef SUBLANG_SPANISH_ARGENTINA # define SUBLANG_SPANISH_ARGENTINA 0x0b # endif # ifndef SUBLANG_SPANISH_ECUADOR # define SUBLANG_SPANISH_ECUADOR 0x0c # endif # ifndef SUBLANG_SPANISH_CHILE # define SUBLANG_SPANISH_CHILE 0x0d # endif # ifndef SUBLANG_SPANISH_URUGUAY # define SUBLANG_SPANISH_URUGUAY 0x0e # endif # ifndef SUBLANG_SPANISH_PARAGUAY # define SUBLANG_SPANISH_PARAGUAY 0x0f # endif # ifndef SUBLANG_SPANISH_BOLIVIA # define SUBLANG_SPANISH_BOLIVIA 0x10 # endif # ifndef SUBLANG_SPANISH_EL_SALVADOR # define SUBLANG_SPANISH_EL_SALVADOR 0x11 # endif # ifndef SUBLANG_SPANISH_HONDURAS # define SUBLANG_SPANISH_HONDURAS 0x12 # endif # ifndef SUBLANG_SPANISH_NICARAGUA # define SUBLANG_SPANISH_NICARAGUA 0x13 # endif # ifndef SUBLANG_SPANISH_PUERTO_RICO # define SUBLANG_SPANISH_PUERTO_RICO 0x14 # endif # ifndef SUBLANG_SWEDISH_FINLAND # define SUBLANG_SWEDISH_FINLAND 0x02 # endif # ifndef SUBLANG_URDU_PAKISTAN # define SUBLANG_URDU_PAKISTAN 0x01 # endif # ifndef SUBLANG_URDU_INDIA # define SUBLANG_URDU_INDIA 0x02 # endif # ifndef SUBLANG_UZBEK_LATIN # define SUBLANG_UZBEK_LATIN 0x01 # endif # ifndef SUBLANG_UZBEK_CYRILLIC # define SUBLANG_UZBEK_CYRILLIC 0x02 # endif #endif /* XPG3 defines the result of 'setlocale (category, NULL)' as: "Directs 'setlocale()' to query 'category' and return the current setting of 'local'." However it does not specify the exact format. Neither do SUSV2 and ISO C 99. So we can use this feature only on selected systems (e.g. those using GNU C Library). */ #if defined _LIBC || (defined __GNU_LIBRARY__ && __GNU_LIBRARY__ >= 2) # define HAVE_LOCALE_NULL #endif /* Determine the current locale's name, and canonicalize it into XPG syntax language[_territory[.codeset]][@modifier] The codeset part in the result is not reliable; the locale_charset() should be used for codeset information instead. The result must not be freed; it is statically allocated. */ const char * _nl_locale_name (category, categoryname) int category; const char *categoryname; { const char *retval; #ifndef WIN32 /* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'. On some systems this can be done by the 'setlocale' function itself. */ # if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL retval = setlocale (category, NULL); # else /* Setting of LC_ALL overwrites all other. */ retval = getenv ("LC_ALL"); if (retval == NULL || retval[0] == '\0') { /* Next comes the name of the desired category. */ retval = getenv (categoryname); if (retval == NULL || retval[0] == '\0') { /* Last possibility is the LANG environment variable. */ retval = getenv ("LANG"); if (retval == NULL || retval[0] == '\0') /* We use C as the default domain. POSIX says this is implementation defined. */ retval = "C"; } } # endif return retval; #else /* WIN32 */ /* Return an XPG style locale name language[_territory][@modifier]. Don't even bother determining the codeset; it's not useful in this context, because message catalogs are not specific to a single codeset. */ LCID lcid; LANGID langid; int primary, sub; /* Let the user override the system settings through environment variables, as on POSIX systems. */ retval = getenv ("LC_ALL"); if (retval != NULL && retval[0] != '\0') return retval; retval = getenv (categoryname); if (retval != NULL && retval[0] != '\0') return retval; retval = getenv ("LANG"); if (retval != NULL && retval[0] != '\0') return retval; /* Use native Win32 API locale ID. */ lcid = GetThreadLocale (); /* Strip off the sorting rules, keep only the language part. */ langid = LANGIDFROMLCID (lcid); /* Split into language and territory part. */ primary = PRIMARYLANGID (langid); sub = SUBLANGID (langid); switch (primary) { case LANG_AFRIKAANS: return "af_ZA"; case LANG_ALBANIAN: return "sq_AL"; case LANG_ARABIC: switch (sub) { case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA"; case SUBLANG_ARABIC_IRAQ: return "ar_IQ"; case SUBLANG_ARABIC_EGYPT: return "ar_EG"; case SUBLANG_ARABIC_LIBYA: return "ar_LY"; case SUBLANG_ARABIC_ALGERIA: return "ar_DZ"; case SUBLANG_ARABIC_MOROCCO: return "ar_MA"; case SUBLANG_ARABIC_TUNISIA: return "ar_TN"; case SUBLANG_ARABIC_OMAN: return "ar_OM"; case SUBLANG_ARABIC_YEMEN: return "ar_YE"; case SUBLANG_ARABIC_SYRIA: return "ar_SY"; case SUBLANG_ARABIC_JORDAN: return "ar_JO"; case SUBLANG_ARABIC_LEBANON: return "ar_LB"; case SUBLANG_ARABIC_KUWAIT: return "ar_KW"; case SUBLANG_ARABIC_UAE: return "ar_AE"; case SUBLANG_ARABIC_BAHRAIN: return "ar_BH"; case SUBLANG_ARABIC_QATAR: return "ar_QA"; } return "ar"; case LANG_ARMENIAN: return "hy_AM"; case LANG_ASSAMESE: return "as_IN"; case LANG_AZERI: switch (sub) { /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */ case SUBLANG_AZERI_LATIN: return "az_AZ@latin"; case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic"; } return "az"; case LANG_BASQUE: return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */ case LANG_BELARUSIAN: return "be_BY"; case LANG_BENGALI: return "bn_IN"; case LANG_BULGARIAN: return "bg_BG"; case LANG_CATALAN: return "ca_ES"; case LANG_CHINESE: switch (sub) { case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW"; case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN"; case SUBLANG_CHINESE_HONGKONG: return "zh_HK"; case SUBLANG_CHINESE_SINGAPORE: return "zh_SG"; case SUBLANG_CHINESE_MACAU: return "zh_MO"; } return "zh"; case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN * What used to be called Serbo-Croatian * should really now be two separate * languages because of political reasons. * (Says tml, who knows nothing about Serbian * or Croatian.) * (I can feel those flames coming already.) */ switch (sub) { /* FIXME: How to distinguish Croatian and Latin Serbian locales? */ case SUBLANG_SERBIAN_LATIN: return "sr_YU"; case SUBLANG_SERBIAN_CYRILLIC: return "sr_YU@cyrillic"; default: return "hr_HR"; } case LANG_CZECH: return "cs_CZ"; case LANG_DANISH: return "da_DK"; case LANG_DUTCH: switch (sub) { case SUBLANG_DUTCH: return "nl_NL"; case SUBLANG_DUTCH_BELGIAN: return "nl_BE"; } return "nl"; case LANG_ENGLISH: switch (sub) { /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought * English was the language spoken in England. * Oh well. */ case SUBLANG_ENGLISH_US: return "en_US"; case SUBLANG_ENGLISH_UK: return "en_GB"; case SUBLANG_ENGLISH_AUS: return "en_AU"; case SUBLANG_ENGLISH_CAN: return "en_CA"; case SUBLANG_ENGLISH_NZ: return "en_NZ"; case SUBLANG_ENGLISH_EIRE: return "en_IE"; case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA"; case SUBLANG_ENGLISH_JAMAICA: return "en_JM"; case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */ case SUBLANG_ENGLISH_BELIZE: return "en_BZ"; case SUBLANG_ENGLISH_TRINIDAD: return "en_TT"; case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW"; case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH"; } return "en"; case LANG_ESTONIAN: return "et_EE"; case LANG_FAEROESE: return "fo_FO"; case LANG_FARSI: return "fa_IR"; case LANG_FINNISH: return "fi_FI"; case LANG_FRENCH: switch (sub) { case SUBLANG_FRENCH: return "fr_FR"; case SUBLANG_FRENCH_BELGIAN: return "fr_BE"; case SUBLANG_FRENCH_CANADIAN: return "fr_CA"; case SUBLANG_FRENCH_SWISS: return "fr_CH"; case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU"; case SUBLANG_FRENCH_MONACO: return "fr_MC"; } return "fr"; case LANG_GEORGIAN: return "ka_GE"; case LANG_GERMAN: switch (sub) { case SUBLANG_GERMAN: return "de_DE"; case SUBLANG_GERMAN_SWISS: return "de_CH"; case SUBLANG_GERMAN_AUSTRIAN: return "de_AT"; case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU"; case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI"; } return "de"; case LANG_GREEK: return "el_GR"; case LANG_GUJARATI: return "gu_IN"; case LANG_HEBREW: return "he_IL"; case LANG_HINDI: return "hi_IN"; case LANG_HUNGARIAN: return "hu_HU"; case LANG_ICELANDIC: return "is_IS"; case LANG_INDONESIAN: return "id_ID"; case LANG_ITALIAN: switch (sub) { case SUBLANG_ITALIAN: return "it_IT"; case SUBLANG_ITALIAN_SWISS: return "it_CH"; } return "it"; case LANG_JAPANESE: return "ja_JP"; case LANG_KANNADA: return "kn_IN"; case LANG_KASHMIRI: switch (sub) { case SUBLANG_DEFAULT: return "ks_PK"; case SUBLANG_KASHMIRI_INDIA: return "ks_IN"; } return "ks"; case LANG_KAZAK: return "kk_KZ"; case LANG_KONKANI: /* FIXME: Adjust this when such locales appear on Unix. */ return "kok_IN"; case LANG_KOREAN: return "ko_KR"; case LANG_LATVIAN: return "lv_LV"; case LANG_LITHUANIAN: return "lt_LT"; case LANG_MACEDONIAN: return "mk_MK"; case LANG_MALAY: switch (sub) { case SUBLANG_MALAY_MALAYSIA: return "ms_MY"; case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN"; } return "ms"; case LANG_MALAYALAM: return "ml_IN"; case LANG_MANIPURI: /* FIXME: Adjust this when such locales appear on Unix. */ return "mni_IN"; case LANG_MARATHI: return "mr_IN"; case LANG_NEPALI: switch (sub) { case SUBLANG_DEFAULT: return "ne_NP"; case SUBLANG_NEPALI_INDIA: return "ne_IN"; } return "ne"; case LANG_NORWEGIAN: switch (sub) { case SUBLANG_NORWEGIAN_BOKMAL: return "no_NO"; case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO"; } return "no"; case LANG_ORIYA: return "or_IN"; case LANG_POLISH: return "pl_PL"; case LANG_PORTUGUESE: switch (sub) { case SUBLANG_PORTUGUESE: return "pt_PT"; /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT. Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */ case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR"; } return "pt"; case LANG_PUNJABI: return "pa_IN"; case LANG_ROMANIAN: return "ro_RO"; case LANG_RUSSIAN: return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA". */ case LANG_SANSKRIT: return "sa_IN"; case LANG_SINDHI: return "sd"; case LANG_SLOVAK: return "sk_SK"; case LANG_SLOVENIAN: return "sl_SI"; case LANG_SORBIAN: /* FIXME: Adjust this when such locales appear on Unix. */ return "wen_DE"; case LANG_SPANISH: switch (sub) { case SUBLANG_SPANISH: return "es_ES"; case SUBLANG_SPANISH_MEXICAN: return "es_MX"; case SUBLANG_SPANISH_MODERN: return "es_ES@modern"; /* not seen on Unix */ case SUBLANG_SPANISH_GUATEMALA: return "es_GT"; case SUBLANG_SPANISH_COSTA_RICA: return "es_CR"; case SUBLANG_SPANISH_PANAMA: return "es_PA"; case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO"; case SUBLANG_SPANISH_VENEZUELA: return "es_VE"; case SUBLANG_SPANISH_COLOMBIA: return "es_CO"; case SUBLANG_SPANISH_PERU: return "es_PE"; case SUBLANG_SPANISH_ARGENTINA: return "es_AR"; case SUBLANG_SPANISH_ECUADOR: return "es_EC"; case SUBLANG_SPANISH_CHILE: return "es_CL"; case SUBLANG_SPANISH_URUGUAY: return "es_UY"; case SUBLANG_SPANISH_PARAGUAY: return "es_PY"; case SUBLANG_SPANISH_BOLIVIA: return "es_BO"; case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV"; case SUBLANG_SPANISH_HONDURAS: return "es_HN"; case SUBLANG_SPANISH_NICARAGUA: return "es_NI"; case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR"; } return "es"; case LANG_SWAHILI: return "sw"; case LANG_SWEDISH: switch (sub) { case SUBLANG_DEFAULT: return "sv_SE"; case SUBLANG_SWEDISH_FINLAND: return "sv_FI"; } return "sv"; case LANG_TAMIL: return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */ case LANG_TATAR: return "tt"; case LANG_TELUGU: return "te_IN"; case LANG_THAI: return "th_TH"; case LANG_TURKISH: return "tr_TR"; case LANG_UKRAINIAN: return "uk_UA"; case LANG_URDU: switch (sub) { case SUBLANG_URDU_PAKISTAN: return "ur_PK"; case SUBLANG_URDU_INDIA: return "ur_IN"; } return "ur"; case LANG_UZBEK: switch (sub) { /* FIXME: Adjust this when Uzbek locales appear on Unix. */ case SUBLANG_UZBEK_LATIN: return "uz_UZ@latin"; case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic"; } return "uz"; case LANG_VIETNAMESE: return "vi_VN"; default: return "C"; } #endif } ap-utils-1.5/intl/ngettext.c000066400000000000000000000037171117246662700161150ustar00rootroot00000000000000/* Implementation of ngettext(3) function. Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifdef HAVE_CONFIG_H # include #endif #ifdef _LIBC # define __need_NULL # include #else # include /* Just for NULL. */ #endif #include "gettextP.h" #ifdef _LIBC # include #else # include "libgnuintl.h" #endif #include /* @@ end of prolog @@ */ /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define NGETTEXT __ngettext # define DCNGETTEXT __dcngettext #else # define NGETTEXT ngettext__ # define DCNGETTEXT dcngettext__ #endif /* Look up MSGID in the current default message catalog for the current LC_MESSAGES locale. If not found, returns MSGID itself (the default text). */ char * NGETTEXT (msgid1, msgid2, n) const char *msgid1; const char *msgid2; unsigned long int n; { return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES); } #ifdef _LIBC /* Alias for function name in GNU C Library. */ weak_alias (__ngettext, ngettext); #endif ap-utils-1.5/intl/os2compat.c000066400000000000000000000055151117246662700161600ustar00rootroot00000000000000/* OS/2 compatibility functions. Copyright (C) 2001-2002 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #define OS2_AWARE #ifdef HAVE_CONFIG_H #include #endif #include #include /* A version of getenv() that works from DLLs */ extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue); char * _nl_getenv (const char *name) { unsigned char *value; if (DosScanEnv (name, &value)) return NULL; else return value; } /* A fixed size buffer. */ #define LOCALEDIR_MAX 260 char _nl_default_dirname__[LOCALEDIR_MAX+1]; char *_os2_libdir = NULL; char *_os2_localealiaspath = NULL; char *_os2_localedir = NULL; static __attribute__((constructor)) void os2_initialize () { char *root = getenv ("UNIXROOT"); char *gnulocaledir = getenv ("GNULOCALEDIR"); _os2_libdir = gnulocaledir; if (!_os2_libdir) { if (root) { size_t sl = strlen (root); _os2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1); memcpy (_os2_libdir, root, sl); memcpy (_os2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1); } else _os2_libdir = LIBDIR; } _os2_localealiaspath = gnulocaledir; if (!_os2_localealiaspath) { if (root) { size_t sl = strlen (root); _os2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1); memcpy (_os2_localealiaspath, root, sl); memcpy (_os2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1); } else _os2_localealiaspath = LOCALE_ALIAS_PATH; } _os2_localedir = gnulocaledir; if (!_os2_localedir) { if (root) { size_t sl = strlen (root); _os2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1); memcpy (_os2_localedir, root, sl); memcpy (_os2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1); } else _os2_localedir = LOCALEDIR; } { extern const char _nl_default_dirname__[]; if (strlen (_os2_localedir) <= LOCALEDIR_MAX) strcpy (_nl_default_dirname__, _os2_localedir); } } ap-utils-1.5/intl/os2compat.h000066400000000000000000000030061117246662700161560ustar00rootroot00000000000000/* OS/2 compatibility defines. This file is intended to be included from config.h Copyright (C) 2001-2002 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ /* When included from os2compat.h we need all the original definitions */ #ifndef OS2_AWARE #undef LIBDIR #define LIBDIR _os2_libdir extern char *_os2_libdir; #undef LOCALEDIR #define LOCALEDIR _os2_localedir extern char *_os2_localedir; #undef LOCALE_ALIAS_PATH #define LOCALE_ALIAS_PATH _os2_localealiaspath extern char *_os2_localealiaspath; #endif #undef HAVE_STRCASECMP #define HAVE_STRCASECMP 1 #define strcasecmp stricmp #define strncasecmp strnicmp /* We have our own getenv() which works even if library is compiled as DLL */ #define getenv _nl_getenv /* Older versions of gettext used -1 as the value of LC_MESSAGES */ #define LC_MESSAGES_COMPAT (-1) ap-utils-1.5/intl/osdep.c000066400000000000000000000016431117246662700153610ustar00rootroot00000000000000/* OS dependent parts of libintl. Copyright (C) 2001-2002 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #if defined __EMX__ # include "os2compat.c" #else /* Avoid AIX compiler warning. */ typedef int dummy; #endif ap-utils-1.5/intl/plural-exp.c000066400000000000000000000077141117246662700163450ustar00rootroot00000000000000/* Expression parsing for plural form selection. Copyright (C) 2000, 2001 Free Software Foundation, Inc. Written by Ulrich Drepper , 2000. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include "plural-exp.h" #if (defined __GNUC__ && !defined __APPLE_CC__) \ || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) /* These structs are the constant expression for the germanic plural form determination. It represents the expression "n != 1". */ static const struct expression plvar = { .nargs = 0, .operation = var, }; static const struct expression plone = { .nargs = 0, .operation = num, .val = { .num = 1 } }; struct expression GERMANIC_PLURAL = { .nargs = 2, .operation = not_equal, .val = { .args = { [0] = (struct expression *) &plvar, [1] = (struct expression *) &plone } } }; # define INIT_GERMANIC_PLURAL() #else /* For compilers without support for ISO C 99 struct/union initializers: Initialization at run-time. */ static struct expression plvar; static struct expression plone; struct expression GERMANIC_PLURAL; static void init_germanic_plural () { if (plone.val.num == 0) { plvar.nargs = 0; plvar.operation = var; plone.nargs = 0; plone.operation = num; plone.val.num = 1; GERMANIC_PLURAL.nargs = 2; GERMANIC_PLURAL.operation = not_equal; GERMANIC_PLURAL.val.args[0] = &plvar; GERMANIC_PLURAL.val.args[1] = &plone; } } # define INIT_GERMANIC_PLURAL() init_germanic_plural () #endif void internal_function EXTRACT_PLURAL_EXPRESSION (nullentry, pluralp, npluralsp) const char *nullentry; struct expression **pluralp; unsigned long int *npluralsp; { if (nullentry != NULL) { const char *plural; const char *nplurals; plural = strstr (nullentry, "plural="); nplurals = strstr (nullentry, "nplurals="); if (plural == NULL || nplurals == NULL) goto no_plural; else { char *endp; unsigned long int n; struct parse_args args; /* First get the number. */ nplurals += 9; while (*nplurals != '\0' && isspace ((unsigned char) *nplurals)) ++nplurals; if (!(*nplurals >= '0' && *nplurals <= '9')) goto no_plural; #if defined HAVE_STRTOUL || defined _LIBC n = strtoul (nplurals, &endp, 10); #else for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++) n = n * 10 + (*endp - '0'); #endif if (nplurals == endp) goto no_plural; *npluralsp = n; /* Due to the restrictions bison imposes onto the interface of the scanner function we have to put the input string and the result passed up from the parser into the same structure which address is passed down to the parser. */ plural += 7; args.cp = plural; if (PLURAL_PARSE (&args) != 0) goto no_plural; *pluralp = args.res; } } else { /* By default we are using the Germanic form: singular form only for `one', the plural form otherwise. Yes, this is also what English is using since English is a Germanic language. */ no_plural: INIT_GERMANIC_PLURAL (); *pluralp = &GERMANIC_PLURAL; *npluralsp = 2; } } ap-utils-1.5/intl/plural-exp.h000066400000000000000000000101321117246662700163360ustar00rootroot00000000000000/* Expression parsing and evaluation for plural form selection. Copyright (C) 2000, 2001 Free Software Foundation, Inc. Written by Ulrich Drepper , 2000. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifndef _PLURAL_EXP_H #define _PLURAL_EXP_H #ifndef PARAMS # if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES # define PARAMS(args) args # else # define PARAMS(args) () # endif #endif #ifndef internal_function # define internal_function #endif /* This is the representation of the expressions to determine the plural form. */ struct expression { int nargs; /* Number of arguments. */ enum operator { /* Without arguments: */ var, /* The variable "n". */ num, /* Decimal number. */ /* Unary operators: */ lnot, /* Logical NOT. */ /* Binary operators: */ mult, /* Multiplication. */ divide, /* Division. */ module, /* Modulo operation. */ plus, /* Addition. */ minus, /* Subtraction. */ less_than, /* Comparison. */ greater_than, /* Comparison. */ less_or_equal, /* Comparison. */ greater_or_equal, /* Comparison. */ equal, /* Comparison for equality. */ not_equal, /* Comparison for inequality. */ land, /* Logical AND. */ lor, /* Logical OR. */ /* Ternary operators: */ qmop /* Question mark operator. */ } operation; union { unsigned long int num; /* Number value for `num'. */ struct expression *args[3]; /* Up to three arguments. */ } val; }; /* This is the data structure to pass information to the parser and get the result in a thread-safe way. */ struct parse_args { const char *cp; struct expression *res; }; /* Names for the libintl functions are a problem. This source code is used 1. in the GNU C Library library, 2. in the GNU libintl library, 3. in the GNU gettext tools. The function names in each situation must be different, to allow for binary incompatible changes in 'struct expression'. Furthermore, 1. in the GNU C Library library, the names have a __ prefix, 2.+3. in the GNU libintl library and in the GNU gettext tools, the names must follow ANSI C and not start with __. So we have to distinguish the three cases. */ #ifdef _LIBC # define FREE_EXPRESSION __gettext_free_exp # define PLURAL_PARSE __gettextparse # define GERMANIC_PLURAL __gettext_germanic_plural # define EXTRACT_PLURAL_EXPRESSION __gettext_extract_plural #elif defined (IN_LIBINTL) # define FREE_EXPRESSION gettext_free_exp__ # define PLURAL_PARSE gettextparse__ # define GERMANIC_PLURAL gettext_germanic_plural__ # define EXTRACT_PLURAL_EXPRESSION gettext_extract_plural__ #else # define FREE_EXPRESSION free_plural_expression # define PLURAL_PARSE parse_plural_expression # define GERMANIC_PLURAL germanic_plural # define EXTRACT_PLURAL_EXPRESSION extract_plural_expression #endif extern void FREE_EXPRESSION PARAMS ((struct expression *exp)) internal_function; extern int PLURAL_PARSE PARAMS ((void *arg)); extern struct expression GERMANIC_PLURAL; extern void EXTRACT_PLURAL_EXPRESSION PARAMS ((const char *nullentry, struct expression **pluralp, unsigned long int *npluralsp)) internal_function; #if !defined (_LIBC) && !defined (IN_LIBINTL) extern unsigned long int plural_eval PARAMS ((struct expression *pexp, unsigned long int n)); #endif #endif /* _PLURAL_EXP_H */ ap-utils-1.5/intl/plural.c000066400000000000000000000774701117246662700155610ustar00rootroot00000000000000 /* A Bison parser, made from plural.y by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ #define yyparse __gettextparse #define yylex __gettextlex #define yyerror __gettexterror #define yylval __gettextlval #define yychar __gettextchar #define yydebug __gettextdebug #define yynerrs __gettextnerrs #define EQUOP2 257 #define CMPOP2 258 #define ADDOP2 259 #define MULOP2 260 #define NUMBER 261 #line 1 "plural.y" /* Expression parsing for plural form selection. Copyright (C) 2000, 2001 Free Software Foundation, Inc. Written by Ulrich Drepper , 2000. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ /* The bison generated parser uses alloca. AIX 3 forces us to put this declaration at the beginning of the file. The declaration in bison's skeleton file comes too late. This must come before because may include arbitrary system headers. */ #if defined _AIX && !defined __GNUC__ #pragma alloca #endif #ifdef HAVE_CONFIG_H # include #endif #include #include #include "plural-exp.h" /* The main function generated by the parser is called __gettextparse, but we want it to be called PLURAL_PARSE. */ #ifndef _LIBC # define __gettextparse PLURAL_PARSE #endif #define YYLEX_PARAM &((struct parse_args *) arg)->cp #define YYPARSE_PARAM arg #line 49 "plural.y" typedef union { unsigned long int num; enum operator op; struct expression *exp; } YYSTYPE; #line 55 "plural.y" /* Prototypes for local functions. */ static struct expression *new_exp PARAMS ((int nargs, enum operator op, struct expression * const *args)); static inline struct expression *new_exp_0 PARAMS ((enum operator op)); static inline struct expression *new_exp_1 PARAMS ((enum operator op, struct expression *right)); static struct expression *new_exp_2 PARAMS ((enum operator op, struct expression *left, struct expression *right)); static inline struct expression *new_exp_3 PARAMS ((enum operator op, struct expression *bexp, struct expression *tbranch, struct expression *fbranch)); static int yylex PARAMS ((YYSTYPE *lval, const char **pexp)); static void yyerror PARAMS ((const char *str)); /* Allocation of expressions. */ static struct expression * new_exp (nargs, op, args) int nargs; enum operator op; struct expression * const *args; { int i; struct expression *newp; /* If any of the argument could not be malloc'ed, just return NULL. */ for (i = nargs - 1; i >= 0; i--) if (args[i] == NULL) goto fail; /* Allocate a new expression. */ newp = (struct expression *) malloc (sizeof (*newp)); if (newp != NULL) { newp->nargs = nargs; newp->operation = op; for (i = nargs - 1; i >= 0; i--) newp->val.args[i] = args[i]; return newp; } fail: for (i = nargs - 1; i >= 0; i--) FREE_EXPRESSION (args[i]); return NULL; } static inline struct expression * new_exp_0 (op) enum operator op; { return new_exp (0, op, NULL); } static inline struct expression * new_exp_1 (op, right) enum operator op; struct expression *right; { struct expression *args[1]; args[0] = right; return new_exp (1, op, args); } static struct expression * new_exp_2 (op, left, right) enum operator op; struct expression *left; struct expression *right; { struct expression *args[2]; args[0] = left; args[1] = right; return new_exp (2, op, args); } static inline struct expression * new_exp_3 (op, bexp, tbranch, fbranch) enum operator op; struct expression *bexp; struct expression *tbranch; struct expression *fbranch; { struct expression *args[3]; args[0] = bexp; args[1] = tbranch; args[2] = fbranch; return new_exp (3, op, args); } #include #ifndef __cplusplus #ifndef __STDC__ #define const #endif #endif #define YYFINAL 27 #define YYFLAG -32768 #define YYNTBASE 16 #define YYTRANSLATE(x) ((unsigned)(x) <= 261 ? yytranslate[x] : 18) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 10, 2, 2, 2, 2, 5, 2, 14, 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 12, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 6, 7, 8, 9, 11 }; #if YYDEBUG != 0 static const short yyprhs[] = { 0, 0, 2, 8, 12, 16, 20, 24, 28, 32, 35, 37, 39 }; static const short yyrhs[] = { 17, 0, 17, 3, 17, 12, 17, 0, 17, 4, 17, 0, 17, 5, 17, 0, 17, 6, 17, 0, 17, 7, 17, 0, 17, 8, 17, 0, 17, 9, 17, 0, 10, 17, 0, 13, 0, 11, 0, 14, 17, 15, 0 }; #endif #if YYDEBUG != 0 static const short yyrline[] = { 0, 174, 182, 186, 190, 194, 198, 202, 206, 210, 214, 218, 223 }; #endif #if YYDEBUG != 0 || defined (YYERROR_VERBOSE) static const char * const yytname[] = { "$","error","$undefined.","'?'","'|'", "'&'","EQUOP2","CMPOP2","ADDOP2","MULOP2","'!'","NUMBER","':'","'n'","'('","')'", "start","exp", NULL }; #endif static const short yyr1[] = { 0, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17 }; static const short yyr2[] = { 0, 1, 5, 3, 3, 3, 3, 3, 3, 2, 1, 1, 3 }; static const short yydefact[] = { 0, 0, 11, 10, 0, 1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 3, 4, 5, 6, 7, 8, 0, 2, 0, 0, 0 }; static const short yydefgoto[] = { 25, 5 }; static const short yypact[] = { -9, -9,-32768,-32768, -9, 34,-32768, 11, -9, -9, -9, -9, -9, -9, -9,-32768, 24, 39, 43, 16, 26, -3,-32768, -9, 34, 21, 53,-32768 }; static const short yypgoto[] = {-32768, -1 }; #define YYLAST 53 static const short yytable[] = { 6, 1, 2, 7, 3, 4, 14, 16, 17, 18, 19, 20, 21, 22, 8, 9, 10, 11, 12, 13, 14, 26, 24, 12, 13, 14, 15, 8, 9, 10, 11, 12, 13, 14, 13, 14, 23, 8, 9, 10, 11, 12, 13, 14, 10, 11, 12, 13, 14, 11, 12, 13, 14, 27 }; static const short yycheck[] = { 1, 10, 11, 4, 13, 14, 9, 8, 9, 10, 11, 12, 13, 14, 3, 4, 5, 6, 7, 8, 9, 0, 23, 7, 8, 9, 15, 3, 4, 5, 6, 7, 8, 9, 8, 9, 12, 3, 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, 9, 6, 7, 8, 9, 0 }; #define YYPURE 1 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/local/share/bison.simple" /* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. 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, 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. */ /* As a special exception, when this file is copied by Bison into a Bison output file, you may use that output file without restriction. This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ /* This is the parser code that is written into each bison parser when the %semantic_parser declaration is not specified in the grammar. It was written by Richard Stallman by simplifying the hairy parser used when %semantic_parser is specified. */ #ifndef YYSTACK_USE_ALLOCA #ifdef alloca #define YYSTACK_USE_ALLOCA #else /* alloca not defined */ #ifdef __GNUC__ #define YYSTACK_USE_ALLOCA #define alloca __builtin_alloca #else /* not GNU C. */ #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) #define YYSTACK_USE_ALLOCA #include #else /* not sparc */ /* We think this test detects Watcom and Microsoft C. */ /* This used to test MSDOS, but that is a bad idea since that symbol is in the user namespace. */ #if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) #if 0 /* No need for malloc.h, which pollutes the namespace; instead, just don't use alloca. */ #include #endif #else /* not MSDOS, or __TURBOC__ */ #if defined(_AIX) /* I don't know what this was needed for, but it pollutes the namespace. So I turned it off. rms, 2 May 1997. */ /* #include */ #pragma alloca #define YYSTACK_USE_ALLOCA #else /* not MSDOS, or __TURBOC__, or _AIX */ #if 0 #ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, and on HPUX 10. Eventually we can turn this on. */ #define YYSTACK_USE_ALLOCA #define alloca __builtin_alloca #endif /* __hpux */ #endif #endif /* not _AIX */ #endif /* not MSDOS, or __TURBOC__ */ #endif /* not sparc */ #endif /* not GNU C */ #endif /* alloca not defined */ #endif /* YYSTACK_USE_ALLOCA not defined */ #ifdef YYSTACK_USE_ALLOCA #define YYSTACK_ALLOC alloca #else #define YYSTACK_ALLOC malloc #endif /* Note: there must be only one dollar sign in this file. It is replaced by the list of actions, each action as one case of the switch. */ #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY -2 #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrlab1 /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(token, value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { yychar = (token), yylval = (value); \ yychar1 = YYTRANSLATE (yychar); \ YYPOPSTACK; \ goto yybackup; \ } \ else \ { yyerror ("syntax error: cannot back up"); YYERROR; } \ while (0) #define YYTERROR 1 #define YYERRCODE 256 #ifndef YYPURE #define YYLEX yylex() #endif #ifdef YYPURE #ifdef YYLSP_NEEDED #ifdef YYLEX_PARAM #define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) #else #define YYLEX yylex(&yylval, &yylloc) #endif #else /* not YYLSP_NEEDED */ #ifdef YYLEX_PARAM #define YYLEX yylex(&yylval, YYLEX_PARAM) #else #define YYLEX yylex(&yylval) #endif #endif /* not YYLSP_NEEDED */ #endif /* If nonreentrant, generate the variables here */ #ifndef YYPURE int yychar; /* the lookahead symbol */ YYSTYPE yylval; /* the semantic value of the */ /* lookahead symbol */ #ifdef YYLSP_NEEDED YYLTYPE yylloc; /* location data for the lookahead */ /* symbol */ #endif int yynerrs; /* number of parse errors so far */ #endif /* not YYPURE */ #if YYDEBUG != 0 int yydebug; /* nonzero means print parse trace */ /* Since this is uninitialized, it does not stop multiple parsers from coexisting. */ #endif /* YYINITDEPTH indicates the initial size of the parser's stacks */ #ifndef YYINITDEPTH #define YYINITDEPTH 200 #endif /* YYMAXDEPTH is the maximum size the stacks can grow to (effective only if the built-in stack extension method is used). */ #if YYMAXDEPTH == 0 #undef YYMAXDEPTH #endif #ifndef YYMAXDEPTH #define YYMAXDEPTH 10000 #endif /* Define __yy_memcpy. Note that the size argument should be passed with type unsigned int, because that is what the non-GCC definitions require. With GCC, __builtin_memcpy takes an arg of type size_t, but it can handle unsigned int. */ #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) #else /* not GNU C or C++ */ #ifndef __cplusplus /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void __yy_memcpy (to, from, count) char *to; char *from; unsigned int count; { register char *f = from; register char *t = to; register int i = count; while (i-- > 0) *t++ = *f++; } #else /* __cplusplus */ /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void __yy_memcpy (char *to, char *from, unsigned int count) { register char *t = to; register char *f = from; register int i = count; while (i-- > 0) *t++ = *f++; } #endif #endif #line 217 "/usr/local/share/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. It should actually point to an object. Grammar actions can access the variable by casting it to the proper pointer type. */ #ifdef YYPARSE_PARAM #ifdef __cplusplus #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM #define YYPARSE_PARAM_DECL #else /* not __cplusplus */ #define YYPARSE_PARAM_ARG YYPARSE_PARAM #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; #endif /* not __cplusplus */ #else /* not YYPARSE_PARAM */ #define YYPARSE_PARAM_ARG #define YYPARSE_PARAM_DECL #endif /* not YYPARSE_PARAM */ /* Prevent warning if -Wstrict-prototypes. */ #ifdef __GNUC__ #ifdef YYPARSE_PARAM int yyparse (void *); #else int yyparse (void); #endif #endif int yyparse(YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL { register int yystate; register int yyn; register short *yyssp; register YYSTYPE *yyvsp; int yyerrstatus; /* number of tokens to shift before error messages enabled */ int yychar1 = 0; /* lookahead token as an internal (translated) token number */ short yyssa[YYINITDEPTH]; /* the state stack */ YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ short *yyss = yyssa; /* refer to the stacks thru separate pointers */ YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ #ifdef YYLSP_NEEDED YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ YYLTYPE *yyls = yylsa; YYLTYPE *yylsp; #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) #else #define YYPOPSTACK (yyvsp--, yyssp--) #endif int yystacksize = YYINITDEPTH; int yyfree_stacks = 0; #ifdef YYPURE int yychar; YYSTYPE yylval; int yynerrs; #ifdef YYLSP_NEEDED YYLTYPE yylloc; #endif #endif YYSTYPE yyval; /* the variable used to return */ /* semantic values from the action */ /* routines */ int yylen; #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Starting parse\n"); #endif yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss - 1; yyvsp = yyvs; #ifdef YYLSP_NEEDED yylsp = yyls; #endif /* Push a new state, which is found in yystate . */ /* In all cases, when you get here, the value and location stacks have just been pushed. so pushing a state here evens the stacks. */ yynewstate: *++yyssp = yystate; if (yyssp >= yyss + yystacksize - 1) { /* Give user a chance to reallocate the stack */ /* Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; short *yyss1 = yyss; #ifdef YYLSP_NEEDED YYLTYPE *yyls1 = yyls; #endif /* Get the current used size of the three stacks, in elements. */ int size = yyssp - yyss + 1; #ifdef yyoverflow /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. */ #ifdef YYLSP_NEEDED /* This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow("parser stack overflow", &yyss1, size * sizeof (*yyssp), &yyvs1, size * sizeof (*yyvsp), &yyls1, size * sizeof (*yylsp), &yystacksize); #else yyoverflow("parser stack overflow", &yyss1, size * sizeof (*yyssp), &yyvs1, size * sizeof (*yyvsp), &yystacksize); #endif yyss = yyss1; yyvs = yyvs1; #ifdef YYLSP_NEEDED yyls = yyls1; #endif #else /* no yyoverflow */ /* Extend the stack our own way. */ if (yystacksize >= YYMAXDEPTH) { yyerror("parser stack overflow"); if (yyfree_stacks) { free (yyss); free (yyvs); #ifdef YYLSP_NEEDED free (yyls); #endif } return 2; } yystacksize *= 2; if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; #ifndef YYSTACK_USE_ALLOCA yyfree_stacks = 1; #endif yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); __yy_memcpy ((char *)yyss, (char *)yyss1, size * (unsigned int) sizeof (*yyssp)); yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * (unsigned int) sizeof (*yyvsp)); #ifdef YYLSP_NEEDED yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); __yy_memcpy ((char *)yyls, (char *)yyls1, size * (unsigned int) sizeof (*yylsp)); #endif #endif /* no yyoverflow */ yyssp = yyss + size - 1; yyvsp = yyvs + size - 1; #ifdef YYLSP_NEEDED yylsp = yyls + size - 1; #endif #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Stack size increased to %d\n", yystacksize); #endif if (yyssp >= yyss + yystacksize - 1) YYABORT; } #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Entering state %d\n", yystate); #endif goto yybackup; yybackup: /* Do appropriate processing given the current state. */ /* Read a lookahead token if we need one and don't already have one. */ /* yyresume: */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yyn == YYFLAG) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* yychar is either YYEMPTY or YYEOF or a valid token in external form. */ if (yychar == YYEMPTY) { #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Reading a token: "); #endif yychar = YYLEX; } /* Convert token to internal form (in yychar1) for indexing tables with */ if (yychar <= 0) /* This means end of input. */ { yychar1 = 0; yychar = YYEOF; /* Don't call YYLEX any more */ #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Now at end of input.\n"); #endif } else { yychar1 = YYTRANSLATE(yychar); #if YYDEBUG != 0 if (yydebug) { fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); /* Give the individual parser a way to print the precise meaning of a token, for further debugging info. */ #ifdef YYPRINT YYPRINT (stderr, yychar, yylval); #endif fprintf (stderr, ")\n"); } #endif } yyn += yychar1; if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) goto yydefault; yyn = yytable[yyn]; /* yyn is what to do for this token type in this state. Negative => reduce, -yyn is rule number. Positive => shift, yyn is new state. New state is final state => don't bother to shift, just return success. 0, or most negative number => error. */ if (yyn < 0) { if (yyn == YYFLAG) goto yyerrlab; yyn = -yyn; goto yyreduce; } else if (yyn == 0) goto yyerrlab; if (yyn == YYFINAL) YYACCEPT; /* Shift the lookahead token. */ #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); #endif /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; *++yyvsp = yylval; #ifdef YYLSP_NEEDED *++yylsp = yylloc; #endif /* count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; yystate = yyn; goto yynewstate; /* Do the default action for the current state. */ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; /* Do a reduction. yyn is the number of a rule to reduce with. */ yyreduce: yylen = yyr2[yyn]; if (yylen > 0) yyval = yyvsp[1-yylen]; /* implement default value of the action */ #if YYDEBUG != 0 if (yydebug) { int i; fprintf (stderr, "Reducing via rule %d (line %d), ", yyn, yyrline[yyn]); /* Print the symbols being reduced, and their result. */ for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) fprintf (stderr, "%s ", yytname[yyrhs[i]]); fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); } #endif switch (yyn) { case 1: #line 175 "plural.y" { if (yyvsp[0].exp == NULL) YYABORT; ((struct parse_args *) arg)->res = yyvsp[0].exp; ; break;} case 2: #line 183 "plural.y" { yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp); ; break;} case 3: #line 187 "plural.y" { yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp); ; break;} case 4: #line 191 "plural.y" { yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp); ; break;} case 5: #line 195 "plural.y" { yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); ; break;} case 6: #line 199 "plural.y" { yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); ; break;} case 7: #line 203 "plural.y" { yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); ; break;} case 8: #line 207 "plural.y" { yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); ; break;} case 9: #line 211 "plural.y" { yyval.exp = new_exp_1 (lnot, yyvsp[0].exp); ; break;} case 10: #line 215 "plural.y" { yyval.exp = new_exp_0 (var); ; break;} case 11: #line 219 "plural.y" { if ((yyval.exp = new_exp_0 (num)) != NULL) yyval.exp->val.num = yyvsp[0].num; ; break;} case 12: #line 224 "plural.y" { yyval.exp = yyvsp[-1].exp; ; break;} } /* the action file gets copied in in place of this dollarsign */ #line 543 "/usr/local/share/bison.simple" yyvsp -= yylen; yyssp -= yylen; #ifdef YYLSP_NEEDED yylsp -= yylen; #endif #if YYDEBUG != 0 if (yydebug) { short *ssp1 = yyss - 1; fprintf (stderr, "state stack now"); while (ssp1 != yyssp) fprintf (stderr, " %d", *++ssp1); fprintf (stderr, "\n"); } #endif *++yyvsp = yyval; #ifdef YYLSP_NEEDED yylsp++; if (yylen == 0) { yylsp->first_line = yylloc.first_line; yylsp->first_column = yylloc.first_column; yylsp->last_line = (yylsp-1)->last_line; yylsp->last_column = (yylsp-1)->last_column; yylsp->text = 0; } else { yylsp->last_line = (yylsp+yylen-1)->last_line; yylsp->last_column = (yylsp+yylen-1)->last_column; } #endif /* Now "shift" the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTBASE] + *yyssp; if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTBASE]; goto yynewstate; yyerrlab: /* here on detecting error */ if (! yyerrstatus) /* If not already recovering from an error, report this error. */ { ++yynerrs; #ifdef YYERROR_VERBOSE yyn = yypact[yystate]; if (yyn > YYFLAG && yyn < YYLAST) { int size = 0; char *msg; int x, count; count = 0; /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ for (x = (yyn < 0 ? -yyn : 0); x < (sizeof(yytname) / sizeof(char *)); x++) if (yycheck[x + yyn] == x) size += strlen(yytname[x]) + 15, count++; msg = (char *) malloc(size + 15); if (msg != 0) { strcpy(msg, "parse error"); if (count < 5) { count = 0; for (x = (yyn < 0 ? -yyn : 0); x < (sizeof(yytname) / sizeof(char *)); x++) if (yycheck[x + yyn] == x) { strcat(msg, count == 0 ? ", expecting `" : " or `"); strcat(msg, yytname[x]); strcat(msg, "'"); count++; } } yyerror(msg); free(msg); } else yyerror ("parse error; also virtual memory exceeded"); } else #endif /* YYERROR_VERBOSE */ yyerror("parse error"); } goto yyerrlab1; yyerrlab1: /* here on error raised explicitly by an action */ if (yyerrstatus == 3) { /* if just tried and failed to reuse lookahead token after an error, discard it. */ /* return failure if at end of input */ if (yychar == YYEOF) YYABORT; #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); #endif yychar = YYEMPTY; } /* Else will try to reuse lookahead token after shifting the error token. */ yyerrstatus = 3; /* Each real token shifted decrements this */ goto yyerrhandle; yyerrdefault: /* current state does not do anything special for the error token. */ #if 0 /* This is wrong; only states that explicitly want error tokens should shift them. */ yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ if (yyn) goto yydefault; #endif yyerrpop: /* pop the current state because it cannot handle the error token */ if (yyssp == yyss) YYABORT; yyvsp--; yystate = *--yyssp; #ifdef YYLSP_NEEDED yylsp--; #endif #if YYDEBUG != 0 if (yydebug) { short *ssp1 = yyss - 1; fprintf (stderr, "Error: state stack now"); while (ssp1 != yyssp) fprintf (stderr, " %d", *++ssp1); fprintf (stderr, "\n"); } #endif yyerrhandle: yyn = yypact[yystate]; if (yyn == YYFLAG) goto yyerrdefault; yyn += YYTERROR; if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) goto yyerrdefault; yyn = yytable[yyn]; if (yyn < 0) { if (yyn == YYFLAG) goto yyerrpop; yyn = -yyn; goto yyreduce; } else if (yyn == 0) goto yyerrpop; if (yyn == YYFINAL) YYACCEPT; #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Shifting error token, "); #endif *++yyvsp = yylval; #ifdef YYLSP_NEEDED *++yylsp = yylloc; #endif yystate = yyn; goto yynewstate; yyacceptlab: /* YYACCEPT comes here. */ if (yyfree_stacks) { free (yyss); free (yyvs); #ifdef YYLSP_NEEDED free (yyls); #endif } return 0; yyabortlab: /* YYABORT comes here. */ if (yyfree_stacks) { free (yyss); free (yyvs); #ifdef YYLSP_NEEDED free (yyls); #endif } return 1; } #line 229 "plural.y" void internal_function FREE_EXPRESSION (exp) struct expression *exp; { if (exp == NULL) return; /* Handle the recursive case. */ switch (exp->nargs) { case 3: FREE_EXPRESSION (exp->val.args[2]); /* FALLTHROUGH */ case 2: FREE_EXPRESSION (exp->val.args[1]); /* FALLTHROUGH */ case 1: FREE_EXPRESSION (exp->val.args[0]); /* FALLTHROUGH */ default: break; } free (exp); } static int yylex (lval, pexp) YYSTYPE *lval; const char **pexp; { const char *exp = *pexp; int result; while (1) { if (exp[0] == '\0') { *pexp = exp; return YYEOF; } if (exp[0] != ' ' && exp[0] != '\t') break; ++exp; } result = *exp++; switch (result) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { unsigned long int n = result - '0'; while (exp[0] >= '0' && exp[0] <= '9') { n *= 10; n += exp[0] - '0'; ++exp; } lval->num = n; result = NUMBER; } break; case '=': if (exp[0] == '=') { ++exp; lval->op = equal; result = EQUOP2; } else result = YYERRCODE; break; case '!': if (exp[0] == '=') { ++exp; lval->op = not_equal; result = EQUOP2; } break; case '&': case '|': if (exp[0] == result) ++exp; else result = YYERRCODE; break; case '<': if (exp[0] == '=') { ++exp; lval->op = less_or_equal; } else lval->op = less_than; result = CMPOP2; break; case '>': if (exp[0] == '=') { ++exp; lval->op = greater_or_equal; } else lval->op = greater_than; result = CMPOP2; break; case '*': lval->op = mult; result = MULOP2; break; case '/': lval->op = divide; result = MULOP2; break; case '%': lval->op = module; result = MULOP2; break; case '+': lval->op = plus; result = ADDOP2; break; case '-': lval->op = minus; result = ADDOP2; break; case 'n': case '?': case ':': case '(': case ')': /* Nothing, just return the character. */ break; case ';': case '\n': case '\0': /* Be safe and let the user call this function again. */ --exp; result = YYEOF; break; default: result = YYERRCODE; #if YYDEBUG != 0 --exp; #endif break; } *pexp = exp; return result; } static void yyerror (str) const char *str; { /* Do nothing. We don't print error messages here. */ } ap-utils-1.5/intl/plural.y000066400000000000000000000177341117246662700156040ustar00rootroot00000000000000%{ /* Expression parsing for plural form selection. Copyright (C) 2000, 2001 Free Software Foundation, Inc. Written by Ulrich Drepper , 2000. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ /* The bison generated parser uses alloca. AIX 3 forces us to put this declaration at the beginning of the file. The declaration in bison's skeleton file comes too late. This must come before because may include arbitrary system headers. */ #if defined _AIX && !defined __GNUC__ #pragma alloca #endif #ifdef HAVE_CONFIG_H # include #endif #include #include #include "plural-exp.h" /* The main function generated by the parser is called __gettextparse, but we want it to be called PLURAL_PARSE. */ #ifndef _LIBC # define __gettextparse PLURAL_PARSE #endif #define YYLEX_PARAM &((struct parse_args *) arg)->cp #define YYPARSE_PARAM arg %} %pure_parser %expect 7 %union { unsigned long int num; enum operator op; struct expression *exp; } %{ /* Prototypes for local functions. */ static struct expression *new_exp PARAMS ((int nargs, enum operator op, struct expression * const *args)); static inline struct expression *new_exp_0 PARAMS ((enum operator op)); static inline struct expression *new_exp_1 PARAMS ((enum operator op, struct expression *right)); static struct expression *new_exp_2 PARAMS ((enum operator op, struct expression *left, struct expression *right)); static inline struct expression *new_exp_3 PARAMS ((enum operator op, struct expression *bexp, struct expression *tbranch, struct expression *fbranch)); static int yylex PARAMS ((YYSTYPE *lval, const char **pexp)); static void yyerror PARAMS ((const char *str)); /* Allocation of expressions. */ static struct expression * new_exp (nargs, op, args) int nargs; enum operator op; struct expression * const *args; { int i; struct expression *newp; /* If any of the argument could not be malloc'ed, just return NULL. */ for (i = nargs - 1; i >= 0; i--) if (args[i] == NULL) goto fail; /* Allocate a new expression. */ newp = (struct expression *) malloc (sizeof (*newp)); if (newp != NULL) { newp->nargs = nargs; newp->operation = op; for (i = nargs - 1; i >= 0; i--) newp->val.args[i] = args[i]; return newp; } fail: for (i = nargs - 1; i >= 0; i--) FREE_EXPRESSION (args[i]); return NULL; } static inline struct expression * new_exp_0 (op) enum operator op; { return new_exp (0, op, NULL); } static inline struct expression * new_exp_1 (op, right) enum operator op; struct expression *right; { struct expression *args[1]; args[0] = right; return new_exp (1, op, args); } static struct expression * new_exp_2 (op, left, right) enum operator op; struct expression *left; struct expression *right; { struct expression *args[2]; args[0] = left; args[1] = right; return new_exp (2, op, args); } static inline struct expression * new_exp_3 (op, bexp, tbranch, fbranch) enum operator op; struct expression *bexp; struct expression *tbranch; struct expression *fbranch; { struct expression *args[3]; args[0] = bexp; args[1] = tbranch; args[2] = fbranch; return new_exp (3, op, args); } %} /* This declares that all operators have the same associativity and the precedence order as in C. See [Harbison, Steele: C, A Reference Manual]. There is no unary minus and no bitwise operators. Operators with the same syntactic behaviour have been merged into a single token, to save space in the array generated by bison. */ %right '?' /* ? */ %left '|' /* || */ %left '&' /* && */ %left EQUOP2 /* == != */ %left CMPOP2 /* < > <= >= */ %left ADDOP2 /* + - */ %left MULOP2 /* * / % */ %right '!' /* ! */ %token EQUOP2 CMPOP2 ADDOP2 MULOP2 %token NUMBER %type exp %% start: exp { if ($1 == NULL) YYABORT; ((struct parse_args *) arg)->res = $1; } ; exp: exp '?' exp ':' exp { $$ = new_exp_3 (qmop, $1, $3, $5); } | exp '|' exp { $$ = new_exp_2 (lor, $1, $3); } | exp '&' exp { $$ = new_exp_2 (land, $1, $3); } | exp EQUOP2 exp { $$ = new_exp_2 ($2, $1, $3); } | exp CMPOP2 exp { $$ = new_exp_2 ($2, $1, $3); } | exp ADDOP2 exp { $$ = new_exp_2 ($2, $1, $3); } | exp MULOP2 exp { $$ = new_exp_2 ($2, $1, $3); } | '!' exp { $$ = new_exp_1 (lnot, $2); } | 'n' { $$ = new_exp_0 (var); } | NUMBER { if (($$ = new_exp_0 (num)) != NULL) $$->val.num = $1; } | '(' exp ')' { $$ = $2; } ; %% void internal_function FREE_EXPRESSION (exp) struct expression *exp; { if (exp == NULL) return; /* Handle the recursive case. */ switch (exp->nargs) { case 3: FREE_EXPRESSION (exp->val.args[2]); /* FALLTHROUGH */ case 2: FREE_EXPRESSION (exp->val.args[1]); /* FALLTHROUGH */ case 1: FREE_EXPRESSION (exp->val.args[0]); /* FALLTHROUGH */ default: break; } free (exp); } static int yylex (lval, pexp) YYSTYPE *lval; const char **pexp; { const char *exp = *pexp; int result; while (1) { if (exp[0] == '\0') { *pexp = exp; return YYEOF; } if (exp[0] != ' ' && exp[0] != '\t') break; ++exp; } result = *exp++; switch (result) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { unsigned long int n = result - '0'; while (exp[0] >= '0' && exp[0] <= '9') { n *= 10; n += exp[0] - '0'; ++exp; } lval->num = n; result = NUMBER; } break; case '=': if (exp[0] == '=') { ++exp; lval->op = equal; result = EQUOP2; } else result = YYERRCODE; break; case '!': if (exp[0] == '=') { ++exp; lval->op = not_equal; result = EQUOP2; } break; case '&': case '|': if (exp[0] == result) ++exp; else result = YYERRCODE; break; case '<': if (exp[0] == '=') { ++exp; lval->op = less_or_equal; } else lval->op = less_than; result = CMPOP2; break; case '>': if (exp[0] == '=') { ++exp; lval->op = greater_or_equal; } else lval->op = greater_than; result = CMPOP2; break; case '*': lval->op = mult; result = MULOP2; break; case '/': lval->op = divide; result = MULOP2; break; case '%': lval->op = module; result = MULOP2; break; case '+': lval->op = plus; result = ADDOP2; break; case '-': lval->op = minus; result = ADDOP2; break; case 'n': case '?': case ':': case '(': case ')': /* Nothing, just return the character. */ break; case ';': case '\n': case '\0': /* Be safe and let the user call this function again. */ --exp; result = YYEOF; break; default: result = YYERRCODE; #if YYDEBUG != 0 --exp; #endif break; } *pexp = exp; return result; } static void yyerror (str) const char *str; { /* Do nothing. We don't print error messages here. */ } ap-utils-1.5/intl/ref-add.sin000066400000000000000000000021011117246662700161060ustar00rootroot00000000000000# Add this package to a list of references stored in a text file. # # Copyright (C) 2000 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published # by the Free Software Foundation; either version 2, 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 # Library General Public License for more details. # # You should have received a copy of the GNU Library 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. # # Written by Bruno Haible . # /^# Packages using this file: / { s/# Packages using this file:// ta :a s/ @PACKAGE@ / @PACKAGE@ / tb s/ $/ @PACKAGE@ / :b s/^/# Packages using this file:/ } ap-utils-1.5/intl/ref-del.sin000066400000000000000000000020241117246662700161260ustar00rootroot00000000000000# Remove this package from a list of references stored in a text file. # # Copyright (C) 2000 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published # by the Free Software Foundation; either version 2, 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 # Library General Public License for more details. # # You should have received a copy of the GNU Library 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. # # Written by Bruno Haible . # /^# Packages using this file: / { s/# Packages using this file:// s/ @PACKAGE@ / / s/^/# Packages using this file:/ } ap-utils-1.5/intl/textdomain.c000066400000000000000000000105771117246662700164310ustar00rootroot00000000000000/* Implementation of the textdomain(3) function. Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #ifdef _LIBC # include #else # include "libgnuintl.h" #endif #include "gettextP.h" #ifdef _LIBC /* We have to handle multi-threaded applications. */ # include #else /* Provide dummy implementation if this is outside glibc. */ # define __libc_rwlock_define(CLASS, NAME) # define __libc_rwlock_wrlock(NAME) # define __libc_rwlock_unlock(NAME) #endif /* The internal variables in the standalone libintl.a must have different names than the internal variables in GNU libc, otherwise programs using libintl.a cannot be linked statically. */ #if !defined _LIBC # define _nl_default_default_domain _nl_default_default_domain__ # define _nl_current_default_domain _nl_current_default_domain__ #endif /* @@ end of prolog @@ */ /* Name of the default text domain. */ extern const char _nl_default_default_domain[]; /* Default text domain in which entries for gettext(3) are to be found. */ extern const char *_nl_current_default_domain; /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define TEXTDOMAIN __textdomain # ifndef strdup # define strdup(str) __strdup (str) # endif #else # define TEXTDOMAIN textdomain__ #endif /* Lock variable to protect the global data in the gettext implementation. */ __libc_rwlock_define (extern, _nl_state_lock) /* Set the current default message catalog to DOMAINNAME. If DOMAINNAME is null, return the current default. If DOMAINNAME is "", reset to the default of "messages". */ char * TEXTDOMAIN (domainname) const char *domainname; { char *new_domain; char *old_domain; /* A NULL pointer requests the current setting. */ if (domainname == NULL) return (char *) _nl_current_default_domain; __libc_rwlock_wrlock (_nl_state_lock); old_domain = (char *) _nl_current_default_domain; /* If domain name is the null string set to default domain "messages". */ if (domainname[0] == '\0' || strcmp (domainname, _nl_default_default_domain) == 0) { _nl_current_default_domain = _nl_default_default_domain; new_domain = (char *) _nl_current_default_domain; } else if (strcmp (domainname, old_domain) == 0) /* This can happen and people will use it to signal that some environment variable changed. */ new_domain = old_domain; else { /* If the following malloc fails `_nl_current_default_domain' will be NULL. This value will be returned and so signals we are out of core. */ #if defined _LIBC || defined HAVE_STRDUP new_domain = strdup (domainname); #else size_t len = strlen (domainname) + 1; new_domain = (char *) malloc (len); if (new_domain != NULL) memcpy (new_domain, domainname, len); #endif if (new_domain != NULL) _nl_current_default_domain = new_domain; } /* We use this possibility to signal a change of the loaded catalogs since this is most likely the case and there is no other easy we to do it. Do it only when the call was successful. */ if (new_domain != NULL) { ++_nl_msg_cat_cntr; if (old_domain != new_domain && old_domain != _nl_default_default_domain) free (old_domain); } __libc_rwlock_unlock (_nl_state_lock); return new_domain; } #ifdef _LIBC /* Alias for function name in GNU C Library. */ weak_alias (__textdomain, textdomain); #endif ap-utils-1.5/lib/000077500000000000000000000000001117246662700136775ustar00rootroot00000000000000ap-utils-1.5/lib/Makefile.am000066400000000000000000000020401117246662700157270ustar00rootroot00000000000000# # Makefile.am from Wireless Access Point Utilites for Unix # Copyright (c) 2002-2003 Roman Festchook # # 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 # INCLUDES = -I../intl noinst_LIBRARIES = libap.a libap_a_SOURCES = ap-utils.h ap-curses.h reset.c snmp.c oui.c input.c menu.c scr.c wep.c wlan.c test.c stat.c set_community.c cmd.c radio.c aps.c ap_search.c sysinfo.c set_oeminfo.c common.c file.c EXTRA_libap_a_SOURCES = ber.c ap-utils-1.5/lib/Makefile.in000066400000000000000000000346061117246662700157550ustar00rootroot00000000000000# Makefile.in generated by automake 1.7.8 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Makefile.am from Wireless Access Point Utilites for Unix # Copyright (c) 2002-2003 Roman Festchook # # 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 # srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSESLIBS = @CURSESLIBS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GENCAT = @GENCAT@ GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLBISON = @INTLBISON@ INTLLIBS = @INTLLIBS@ INTLOBJS = @INTLOBJS@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ ac_ct_CC = @ac_ct_CC@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ INCLUDES = -I../intl noinst_LIBRARIES = libap.a libap_a_SOURCES = ap-utils.h ap-curses.h reset.c snmp.c oui.c input.c menu.c scr.c wep.c wlan.c test.c stat.c set_community.c cmd.c radio.c aps.c ap_search.c sysinfo.c set_oeminfo.c common.c file.c EXTRA_libap_a_SOURCES = ber.c subdir = lib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = LIBRARIES = $(noinst_LIBRARIES) libap_a_AR = $(AR) cru libap_a_LIBADD = am_libap_a_OBJECTS = reset.$(OBJEXT) snmp.$(OBJEXT) oui.$(OBJEXT) \ input.$(OBJEXT) menu.$(OBJEXT) scr.$(OBJEXT) wep.$(OBJEXT) \ wlan.$(OBJEXT) test.$(OBJEXT) stat.$(OBJEXT) \ set_community.$(OBJEXT) cmd.$(OBJEXT) radio.$(OBJEXT) \ aps.$(OBJEXT) ap_search.$(OBJEXT) sysinfo.$(OBJEXT) \ set_oeminfo.$(OBJEXT) common.$(OBJEXT) file.$(OBJEXT) libap_a_OBJECTS = $(am_libap_a_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ap_search.Po ./$(DEPDIR)/aps.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/ber.Po ./$(DEPDIR)/cmd.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/common.Po ./$(DEPDIR)/file.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/input.Po ./$(DEPDIR)/menu.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/oui.Po ./$(DEPDIR)/radio.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/reset.Po ./$(DEPDIR)/scr.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/set_community.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/set_oeminfo.Po ./$(DEPDIR)/snmp.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/stat.Po ./$(DEPDIR)/sysinfo.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/test.Po ./$(DEPDIR)/wep.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/wlan.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 = $(libap_a_SOURCES) $(EXTRA_libap_a_SOURCES) DIST_COMMON = $(srcdir)/Makefile.in Makefile.am SOURCES = $(libap_a_SOURCES) $(EXTRA_libap_a_SOURCES) all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) AR = ar clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libap.a: $(libap_a_OBJECTS) $(libap_a_DEPENDENCIES) -rm -f libap.a $(libap_a_AR) libap.a $(libap_a_OBJECTS) $(libap_a_LIBADD) $(RANLIB) libap.a mostlyclean-compile: -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ap_search.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aps.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ber.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/radio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reset.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_community.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_oeminfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sysinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wep.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wlan.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` uninstall-info-am: ETAGS = etags ETAGSFLAGS = CTAGS = ctags CTAGSFLAGS = tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$tags$$unique" \ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: info: info-am info-am: install-data-am: install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am info \ info-am install install-am install-data install-data-am \ install-exec install-exec-am install-info install-info-am \ install-man install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ ps ps-am tags uninstall uninstall-am uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ap-utils-1.5/lib/ap-curses.h000066400000000000000000000016611117246662700157560ustar00rootroot00000000000000/* * ap-curses.h from Access Point SNMP Utils for Linux * definitions common for programs that use ncurses or curses libs * * Copyright (c) 2004 Roman Festchook * * 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 * */ #ifdef HAVE_LIBNCURSES #include #else #include #endif ap-utils-1.5/lib/ap-utils.h000066400000000000000000000326301117246662700156120ustar00rootroot00000000000000/* * ap-utils.h from Wireless Access Point Utilites for Unix * Copyright (c) 2002 Roman Festchook * * 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 */ #ifndef _AP_CNF #define _AP_CNF 1 #include "config.h" #ifdef OS_BSD #include #ifdef OS_X #include #endif /* ifdef OS_X */ #else #ifdef OS_SOLARIS #include #else #include #if defined (__GLIBC__) #include #else typedef unsigned short uint16_t; typedef unsigned int uint32_t; #endif /* if defined (__GLIBC__) */ #endif /* ifdef OS_SOLARIS */ #endif /* ifdef OS_BSD */ #include "ap-curses.h" #define TITLE "Wireless Access Point Utilites for Unix" #define VIEW "View: " #define minimum(x, y) x <= y ? x : y #ifdef HAVE_GETTEXT /* GNU gettext stuff*/ #include #include #define _(String) gettext (String) #else #define _(String) (String) #endif #include #include #include #ifdef WORDS_BIGENDIAN /* * a quick-and-dirty macros to unconditionally swap bytes in 2 and 4-byte * integers between big-endian and little-endian ordering */ #define swap2(d) ((((d) >> 8) & 0x00ff) | (((d) << 8) & 0xff00)) #define swap4(d) ((((d) >> 24) & 0x000000ff) | (((d) >> 8) & 0x0000ff00) | (((d) << 8) & 0x00ff0000) | (((d) << 24) & 0xff000000)) #else #define swap2(d) d #define swap4(d) d #endif #define rlong(a) ((a) = swap4(a)) #define wlong(a) ((a) = swap4(a)) #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: ") #define CHANNEL _("[C] Frequency channel: ") #define ANTENNA_RX _("Receive antenna:") #define ANTENNA_RX_LEFT _("[U] Left") #define ANTENNA_RX_RIGHT _("[I] Right") #define ANTENNA_TX _("Transmit antenna:") #define ANTENNA_TX_LEFT _("[O] Left") #define ANTENNA_TX_RIGHT _("[P] Right") #define ANTENNA_DV _("Diversity select:") #define ANTENNA_DV_LEFT _("[T] Left") #define ANTENNA_DV_RIGHT _("[Y] Right") #define YES _("Yes") #define NO _("No") #define ON _("On") #define OFF _("Off") #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 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 (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 ERR_SELECT _("select() function error. Press any key.") #define ERR_SOCKET _("socket() or bind() function 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_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 ST_TITLE _("Associated stations") #define AP_TITLE _("AP Client link state") #define POLL_ON _("Polling: on") #define POLL_OFF _("Polling: off") #define INT_VALUE 0x02 #define STRING_VALUE 0x04 #define NULL_VALUE 0x05 #define OID_VALUE 0x06 #define GET 0xA0 #define GET_NEXT 0xA1 #define RESPONSE 0xA2 #define SET 0xA3 #define TRAP 0xA4 #define ASN_HEADER 0x30 #define INT_STRING 0x01 #define HEX_STRING 0x02 #define ANY_STRING 0x03 #define SIZE sizeof(struct sockaddr_in) #define basic(i) (i & 0x80) ? BASIC : (i) ? ON : OFF #define MCOLS 15 /* width of menu window */ #define LAST_ROW LINES-5 #define WAIT_TIMEOUT 1 #define WAIT_FOREVER 0 /* Basic distinguished MIB (and AP) types */ /* Numbering with respect to order in ap_types */ #define ATMEL410 0 #define NWN 1 #define ATMEL12350 2 /* Vendor distinguished MIB subtypes */ /* Numbering with respect to order in ap_vendorexts */ #define NONE 0 #define SBRIDGES 1 #define GEMTEK 1 #define EZYNET 2 typedef struct { unsigned char *oid; int len_oid; unsigned char *value; int len_val; unsigned char type; } varbind; typedef struct { char code; char *desc; unsigned short first_ch; unsigned short chans; } rdprops; struct umitems { char *item; char *help; void (*func)(); int is_menu; }; struct EthRxStatistics_s { uint32_t TotalBytesRx; uint32_t TotalPacketsRx; uint32_t PacketCRCErrorRx; uint32_t MulticastPacketRx; uint32_t BroadcastPacketRx; uint32_t ControlFramesRx; uint32_t PauseFramesRx; uint32_t UnknownOPCodeRx; uint32_t AlignmentRxError; uint32_t LengthOutOfRangeRx; uint32_t CodeErrorRx; uint32_t FalseCarrierRx; uint32_t UndersizePacketsRx; uint32_t OversizePacketsRx; uint32_t TotalFragmentsRx; uint32_t TotalJabberRx; }; struct EthTxStatistics_s { uint32_t TotalBytesTx; uint32_t TotalPacketsTx; uint32_t PacketCRCErrorTx; uint32_t MulticastPacketTx; uint32_t BroadcastPacketTx; uint32_t UnicastPacketTx; uint32_t PauseFramesTx; uint32_t SingleDeferPacketTx; uint32_t MultiDeferPacketsTx; uint32_t SingleCollisionsTx; uint32_t MultiCollisionsTx; uint32_t LateCollisionsTx; uint32_t ExcessiveCollisionTx; uint32_t TotalCollisionsTx; }; struct wirelessStatistics_s { uint32_t UnicastTransmittedPackets; uint32_t BroadcastTransmittedPackets; uint32_t MulticastTransmittedPackets; uint32_t TransmittedBeacon; uint32_t TransmittedACK; uint32_t TransmittedRTS; uint32_t TransmittedCTS; uint32_t UnicastReceivedPackets; uint32_t BroadcastReceivedPackets; uint32_t MulticastReceivedPackets; uint32_t ReceivedBeacon; uint32_t ReceivedACK; uint32_t ReceivedRTS; uint32_t ReceivedCTS; uint32_t ACKFailure; uint32_t CTSFailure; uint32_t RetryPackets; uint32_t ReceivedDuplicate; uint32_t FailedPackets; uint32_t AgedPackets; uint32_t FCSError; uint32_t InvalidPLCP; /* 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_128 { /* sysDeviceInfo OID struct - version 128 bytes long */ uint32_t StructVersion; unsigned char MacAddress[6]; unsigned short Reserved; uint32_t RegulatoryDomain; uint32_t ProductType; unsigned char OEMName[32]; 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_160 { /* sysDeviceInfo OID struct - version 160 bytes long */ uint32_t StructVersion; unsigned char MacAddress[6]; unsigned char Channel; unsigned char RegulatoryDomain; uint32_t ProductType; unsigned char OEMName[32]; uint32_t OEMID; unsigned char ProductName[32]; uint32_t HardwareRevision; /* The rest is mostly dormant. */ unsigned char PID_VID[4]; uint32_t sysOIDSize; uint16_t sysOID[16]; unsigned char CountryCode[3]; unsigned char Reserved1; uint16_t ChannelInformation; unsigned char Reserved2[2]; unsigned char TxPower[14]; 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; int quality; int idle; int rssi; unsigned char Status; unsigned char Port; unsigned char ParentMacAddress[6]; 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 */ extern char * oui2manufacturer(char *); extern int regdom_idx(char); extern int ch_list(int, char **); extern void connect_options(unsigned long int, int); extern int get_mib_details(void); extern void about(void); extern void draw_menu_win(void); extern void main_menu(void); extern void print_bold(WINDOW *, char *); extern void print_menusel(int, int, char *, char *); extern void print_bottom(char *); extern void print_top(char *, char *); extern void print_top_rssi(char *); extern void print_help(char *); extern void print_helperr(char *); extern void clear_main(int); extern void clear_main_new(int, int); extern int conv_rssi(int); extern void get_mac(char *, int, int); extern void get_ip(struct in_addr *, int, int, char *); extern void get_mask(struct in_addr *, int, int, char *); extern void get_value(char *, int, int, int, char, unsigned int, unsigned int, char *); 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(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); /* AP */ extern void AuthorizedSettings(void); 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); */ /* function prototypes specific for ATMEL utility */ extern void reset(void); extern void defaults(void); extern void upload(void); extern int SysUpload(void); extern int SysReset(void); extern void EthStat(void); extern void APs(void); extern void power(void); extern void test(void); extern void atmel_wireless(void); extern void atmel_auth(void); /* function prototypes specific for NWN utility */ extern void latest(void); extern int get_RegDomain(void); extern void advanced(void); extern void command_menu(void); extern void nwn_sysinfo(void); extern void nwn_wep(void); extern void nwn_stations(void); extern void nwn_wireless_stat(void); extern void nwn_wireless(void); extern void nwn_auth_mac(void); #endif ap-utils-1.5/lib/ap_search.c000066400000000000000000000350331117246662700157740ustar00rootroot00000000000000/* * ap_search.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * Copyright (c) 2003 Jan Rafaj * * 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 #include #include #include #include #include #include #ifdef OS_SOLARIS #include #endif #ifdef OS_X #include #endif #include #include #include #include #include "ap-utils.h" #include "config.h" #if defined (__GLIBC__) #include #endif #define SEARCH_COMMUNITY _("Community name: ") #define SEARCH_HEADER _(" NUM IP ADDRESS MIB TYPE FW TYPE (VERSION) AP NAME") #define MAX_APS LAST_ROW-7 extern int atmel410_filter; extern char *community; char q_pressed = 0; int i, f_ifctr; struct faps { struct in_addr ip; int type; } *fapsa; void scan_local_segment (struct sockaddr_in *from, struct sockaddr_in *to, char *ifname) { extern WINDOW *main_sub; extern char *ap_types[]; unsigned char message[1024], *start; /* unsigned char name_fw[256], *name_p, *fwver_p; */ extern int atmel410_filter; /* if called from ap-gl utility */ /* * operAccessPointName OIDs used to detect AP MIB type [in order * of appearance in the 'for' loop below: ATMEL410, NWN, ATMEL12350] */ /* 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} }; */ /* * 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 { int broad; } opts = { 1 }; struct ip_mreq mult = { {0}, {INADDR_ANY} }; varbind varbinds[1]; fd_set rds; struct timeval timeout, starttime, curtime; struct timezone tz; if (!i) print_help(_("Please wait while scanning, or press 'Q' to quit.")); if ((s2 = socket(PF_INET, SOCK_DGRAM, 0)) == -1) { print_helperr(ERR_SOCKET); getch(); return; } if (bind(s2, (struct sockaddr *) from, SIZE) == -1) { print_helperr(ERR_SOCKET); getch(); goto close_ret; } if (setsockopt (s2, SOL_SOCKET, SO_BROADCAST, &opts, sizeof(struct sopts)) == -1) { print_helperr(_("Can't set broadcast option on socket. " "Press any key.")); getch(); goto close_ret; } inet_aton("224.0.1.43", &mult.imr_multiaddr); if (setsockopt(s2, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mult, sizeof(struct ip_mreq)) == -1) { print_helperr(_("Can't set multicast membership on socket. " "Press any key.")); getch(); goto close_ret; } mvwaddstr(main_sub, LAST_ROW - 5, 1, _("Scanning via network interface:")); sprintf(message, _(" Index: %i"), f_ifctr); mvwaddstr(main_sub, LAST_ROW - 4, 1, message); sprintf(message, _(" Name: %s"), ifname); mvwaddstr(main_sub, LAST_ROW - 3, 1, message); sprintf(message, _(" IP: %s"), inet_ntoa(from->sin_addr)); mvwaddstr(main_sub, LAST_ROW - 2, 1, message); if(atmel410_filter) { last_searched_type = ATMEL410; } for (scd_ap_type = ATMEL410; scd_ap_type <= last_searched_type; scd_ap_type++) { clear_main_new(LAST_ROW - 1, LAST_ROW); sprintf(message, _("Scanning for AP with MIB type: %s"), ap_types[scd_ap_type]); mvwaddstr(main_sub, LAST_ROW - 1, 1, message); wrefresh(main_sub); /* varbinds[0].oid = operAccessPointName[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(sysDescr[scd_ap_type])); varbinds[0].len_val = 0; varbinds[0].type = NULL_VALUE; len = ber(message, varbinds, 1, GET); if (scd_ap_type == NWN) { to_addr_reserv = to->sin_addr; to->sin_addr = mult.imr_multiaddr; } errno = 0; if (sendto(s2, message, len, 0, (struct sockaddr *) to, SIZE) == -1) { sprintf(message, _("Failure in sendto(): %s. Press any key."), strerror(errno)); print_helperr(message); getch(); continue; } timeout.tv_sec = 2; timeout.tv_usec = 0; gettimeofday(&starttime, &tz); while (1) { FD_ZERO(&rds); FD_SET(s2, &rds); FD_SET(0, &rds); /* * Compute time difference. Note that for portability reasons, * we may not rely on select() below setting up timeout to * remaining time upon its return, although this works on Linux. */ gettimeofday(&curtime, &tz); c = (curtime.tv_sec * 1000000 + curtime.tv_usec) - (starttime.tv_sec * 1000000 + starttime.tv_usec); if (c < (2 * 1000000 + 0)) { c = (2 * 1000000 + 0) - c; timeout.tv_sec = c / 1000000; timeout.tv_usec = c - timeout.tv_sec * 1000000; } else /* Return if nothing has been received after timeout secs. */ break; c = select(s2 + 1, &rds, NULL, NULL, &timeout); /* error occured */ if (c == -1) break; /* timed out */ if (c == 0) continue; /* Key pressed. If it is 'Q', return. */ if (FD_ISSET(0, &rds)) { c = getc(stdin); if (c == 'q' || c == 'Q') { q_pressed = 1; goto close_ret; } } /* If data are available for reading on s2, try to read them now. */ if (FD_ISSET(s2, &rds)) if ((len = recvfrom(s2, message, 512, 0, (struct sockaddr *) from, &client_len)) == -1) continue; start = message; if (*start != ASN_HEADER) continue; start += (start[1] & 0x80) ? (start[1] & 0x7F) + 2 : 2; start += *(start + 4) + 5; if (*start != RESPONSE) continue; start += (start[1] & 0x80) ? (start[1] & 0x7F) + 2 : 2; if (*(start + 5) || *(start + 9) != ASN_HEADER) continue; start += (start[10] & 0x80) ? (start[10] & 0x7F) + 11 : 11; if (*(start) != ASN_HEADER) continue; start += (start[1] & 0x80) ? (start[1] & 0x7F) + 2 : 2; start += *(start + 1) + 2; if (start[1] & 0x80) { varbinds[0].len_val = start[2]; start += (start[1] & 0x7F) + 2; } else { varbinds[0].len_val = start[1]; start += 2; } /* * Dupe check. There are 2 reasons why to do this: * 1. If interface-based IP aliases are used (f.e. on Linux), * it may well happen that their broadcast addresses may * inadvertedly overlap each other, so the same AP IPs would * answer twice (for a specific interface and its alias * device pass). * 2. ATMEL410 devices are capable to answer both queries with * 410 as well as 12350 IDs, while ATMEL12350 device only * answers queries with 12350 ID. Hence, we need to check * for duplicate responses from ATMEL410 devices, when * ATMEL410 check has already performed and ATMEL12350 one * is pending. * Note, that ATMEL410 devices may, under certain circumstances, * fail to pass the ATMEL410 check, and can be accidentally * marked as an ATMEL12350 device. This is a known bug and * should be eventually solved in any of upcomming releases (TODO). */ if (i) { int dupcnt = 0, j = i - 1; do { if (from->sin_addr.s_addr == fapsa[j].ip.s_addr) dupcnt++; } while (--j >= 0); if (dupcnt) continue; } /* new AP (unique IP/APtype pair) found */ fapsa = realloc(fapsa, (i + 1) * sizeof(struct faps)); fapsa[i].ip = from->sin_addr; fapsa[i].type = scd_ap_type; for (len = 0; len < varbinds[0].len_val && start[len]; len++); start[len + 1] = '\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++; mvwaddstr(main_sub, i, 0, message); wrefresh(main_sub); /* Bail out if the number of found devices exceeds sane limit. */ if (i == MAX_APS) goto close_ret; } if (scd_ap_type == NWN) to->sin_addr = to_addr_reserv; } close_ret: close(s2); return; } void ap_search() { extern WINDOW *main_sub; int s1, ac; unsigned int ilen = 256; struct sockaddr_in from, to; struct ifconf ifc; struct ifreq *ifr; char *ifbuf_ptr = NULL, *ifrec_ptr; /* char *old_community; char buf[16]; print_help(_("Please enter SNMP community name that will be used for AP " "detection.")); mvwaddstr(main_sub, 0, 2, SEARCH_COMMUNITY); wrefresh(main_sub); get_pass(buf, 0, 2 + strlen(SEARCH_COMMUNITY), sizeof(buf)); old_community = community; community = malloc(strlen(buf) + 1); 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(ERR_SOCKET); goto wait_quit; } i = f_ifctr = 0; fapsa = NULL; /* * Find all IPs of locally available IPv4 interfaces and corresponding * broadcast and/or point-to-point addresses. */ for (;;) { if (!(ifbuf_ptr = realloc(ifbuf_ptr, ilen))) { print_helperr(_("realloc() error.")); goto wait_quit; } ifc.ifc_buf = ifbuf_ptr; ifc.ifc_len = ilen; if (ioctl(s1, SIOCGIFCONF, &ifc) >= 0) /* Stupid condition thx to BSD and 2 SIOCGIFCONF implementations */ if (ifc.ifc_len + sizeof(struct ifreq) + 64 < ilen) break; if (ilen > 200000) { print_helperr(_("Network interface discovery error.")); goto wait_quit; } ilen += 100 + (ilen >> 2); } ifrec_ptr = ifbuf_ptr; while (ifrec_ptr < ifbuf_ptr + ifc.ifc_len) { memset(&from.sin_addr, 0, sizeof(struct in_addr)); memset(&to.sin_addr, 0, sizeof(struct in_addr)); ifr = (struct ifreq *) ifrec_ptr; #ifdef HAVE_SA_LEN ilen = sizeof(ifr->ifr_name) + ifr->ifr_addr.sa_len; if (ilen < sizeof(*ifr)) ilen = sizeof(*ifr); if (ifr->ifr_addr.sa_family == AF_INET) if (ioctl(s1, SIOCGIFFLAGS, ifrec_ptr) == 0) if (ifr->ifr_flags & IFF_UP) if (!(ifr->ifr_flags & IFF_LOOPBACK)) { from.sin_addr = ((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr; if (ifr->ifr_flags & IFF_POINTOPOINT) { ioctl(s1, SIOCGIFDSTADDR, ifrec_ptr); to.sin_addr = ((struct sockaddr_in *)&ifr->ifr_dstaddr)->sin_addr; } else { ioctl(s1, SIOCGIFBRDADDR, ifrec_ptr); to.sin_addr = ((struct sockaddr_in *)&ifr->ifr_broadaddr)->sin_addr; } } #else ilen = sizeof(*ifr); if (ioctl(s1, SIOCGIFFLAGS, ifrec_ptr) == 0) if (ifr->ifr_flags & IFF_UP) if (!(ifr->ifr_flags & IFF_LOOPBACK)) { if (ifr->ifr_flags & IFF_POINTOPOINT) { ioctl(s1, SIOCGIFDSTADDR, ifrec_ptr); to.sin_addr = ((struct sockaddr_in *)&ifr->ifr_dstaddr)->sin_addr; } else { ioctl(s1, SIOCGIFBRDADDR, ifrec_ptr); to.sin_addr = ((struct sockaddr_in *)&ifr->ifr_broadaddr)->sin_addr; } if (ioctl(s1, SIOCGIFADDR, ifrec_ptr) == 0) if (ifr->ifr_addr.sa_family == AF_INET) from.sin_addr = ((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr; } #endif if (from.sin_addr.s_addr && to.sin_addr.s_addr) { f_ifctr++; from.sin_family = to.sin_family = AF_INET; from.sin_port = INADDR_ANY; to.sin_port = htons(161); scan_local_segment(&from, &to, ifr->ifr_name); clear_main_new(LAST_ROW - 5, LAST_ROW); } ifrec_ptr += ilen; /* No need to process next interfaces if the table is already full, */ if (i == MAX_APS) break; /* or if someone pressed 'Q'. */ if (q_pressed) { q_pressed = 0; break; } } close(s1); if (!f_ifctr) { print_helperr(_("No local network interfaces found. Press any key.")); } else if (!i) { print_help(_("No directly reachable Access Points found. " "Press any key.")); } else { if (i == MAX_APS) mvwaddstr(main_sub, LAST_ROW - 1, 1, _("Single-screen maximum number of APs found.")); wrefresh(main_sub); print_help(_("# - connect to AP; Q - quit")); while (1) switch (ac = getch()) { case 'Q': case 'q': goto quit; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (ac - '0' > (i - 1)) continue; print_top(NULL, NULL); clear_main(0); /* free(old_community); */ connect_options(fapsa[ac - '0'].ip.s_addr, fapsa[ac - '0'].type + 1); free(fapsa); return; } } wait_quit: getch(); quit: if (ifbuf_ptr) free(ifbuf_ptr); if (fapsa) free(fapsa); /* free(community); community = old_community; */ print_help(""); print_top(NULL, NULL); clear_main(0); } ap-utils-1.5/lib/aps.c000066400000000000000000000410421117246662700146270ustar00rootroot00000000000000/* * aps.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * Copyright (c) 2004 Jan Rafaj * * 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 #include #include #include #include #include #include #include "ap-utils.h" #define KNOWN_APS _("Known Access Points") extern WINDOW *main_win, *main_sub /* *win_for_menu */; extern short ap_type, ap_vendorext; extern int sockfd, atmel410_filter; extern struct in_addr ap_ip; int ap_viewtype = 1; void APs() { /* * Structure of single record in the KnownAP table. */ struct ap { unsigned 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; /* * Structure used to preserve important values of AP records learnt * by KnownAP scan. Used to connect to a specific AP. */ struct known_ap { char mac[6]; int essid_len; char channel; char essid[32]; enum { Infrastructure, AdHoc } nettype; } ap[16]; /* this one is ATMEL12350 specific */ char SiteSurveyCommand[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x01, 0x07, 0x00 }; char bridgeOperationalMode[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x01, 0x00 }; char bridgeRemoteBridgeBSSID[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x02, 0x00 }; char operChannelID[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x01, 0x00 }; char operESSIDLength[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x02, 0x00 }; char operESSID[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x03, 0x00 }; char KnownAP[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x07, 0x01, 0x00 }; char value[] = "", c, bridge_mode; char essid[33], bssid[13], message[65]; int i, j, errno, aps_num = 0, needs_opmode_restore = 0; varbind varbinds[4]; if (ap_type == ATMEL12350) { operESSIDLength[5] = 0xE0; operESSIDLength[6] = 0x3E; operESSID[5] = 0xE0; operESSID[6] = 0x3E; operChannelID[5] = 0xE0; operChannelID[6] = 0x3E; KnownAP[5] = 0xE0; KnownAP[6] = 0x3E; bridgeOperationalMode[5] = 0xE0; bridgeOperationalMode[6] = 0x3E; bridgeRemoteBridgeBSSID[5] = 0xE0; bridgeRemoteBridgeBSSID[6] = 0x3E; } noecho(); print_help(WAIT_RET); varbinds[0].oid = bridgeOperationalMode; varbinds[0].len_oid = sizeof(bridgeOperationalMode); varbinds[0].value = bridgeOperationalMode; varbinds[0].len_val = 0; varbinds[0].type = NULL_VALUE; if (snmp(varbinds, 1, GET) <= 0) { print_helperr(ERR_RET); goto exit; } bridge_mode = *(varbinds[0].value); /* ATMEL410 firmware KnownAP scan is active in AP Client mode only */ if (ap_type == ATMEL410 && bridge_mode != 3) { mvwaddstr(main_sub, 3, 1, _ ("Your Access Point is not in \"AP client\" mode => getting")); mvwaddstr(main_sub, 4, 1, _ ("up-to-date \"Known APs\" info requires your AP to be")); mvwaddstr(main_sub, 5, 1, _ ("temporarily configured into \"AP client\" mode and rebooted.")); mvwaddstr(main_sub, 6, 1, _ ("Your AP will be reconfigured back to original mode by this")); mvwaddstr(main_sub, 7, 1, _ ("utility once you quit the \"KnownAP\" view. This, in turn, may")); mvwaddstr(main_sub, 8, 1, _ ("cause loss of Access Point's current configuration.")); wattrset(main_sub, A_BOLD); mvwaddstr(main_sub, 9, 1, _ ("Do NOT answer \"Yes\" if you're connected to the Access Point")); mvwaddstr(main_sub, 10, 1, _ ("via its wireless port.")); wattrset(main_sub, A_NORMAL); mvwaddstr(main_sub, 12, 20, _("Do you want to continue? ")); wrefresh(main_sub); if (help_ysn()) goto quit; needs_opmode_restore = 1; print_help(WAIT_RET); varbinds[0].oid = bridgeOperationalMode; varbinds[0].len_oid = sizeof(bridgeOperationalMode); varbinds[0].type = INT_VALUE; c = 3; varbinds[0].value = &c; varbinds[0].len_val = 1; if (snmp(varbinds, 1, SET) <= 0) { print_helperr(ERR_RET); goto exit; } if (SysUpload()) { print_helperr(ERR_RET); goto restore_before_exit; } sleep(7); } sprintf(message, "%s%c", VIEW, ap_viewtype + '0'); print_top(message, KNOWN_APS); get_stats: varbinds[0].oid = KnownAP; varbinds[0].len_oid = sizeof(KnownAP); varbinds[0].type = NULL_VALUE; varbinds[0].value = value; varbinds[0].len_val = sizeof(value); if (snmp(varbinds, 1, GET) <= 0) { print_helperr(ERR_RET); goto restore_before_exit; } show_stats: /* display column info in main_sub */ mvwin(main_sub, 0, 0); wattrset(main_sub, COLOR_PAIR(13)); for (i = 0; i < 64; i++) waddch(main_sub, ' '); switch (ap_viewtype) { case 1: case 2: mvwaddstr(main_sub, 0, 0, "#"); mvwaddstr(main_sub, 0, 2, "ESSID"); mvwaddstr(main_sub, 0, 18, "BSSID (MAC)"); mvwaddstr(main_sub, 0, 31, "CN"); mvwaddstr(main_sub, 0, 34, _("NetworkType")); mvwaddstr(main_sub, 0, 49, "P"); mvwaddstr(main_sub, 0, 51, "WEP"); mvwaddstr(main_sub, 0, 55, "RSSI"); if (ap_type == ATMEL410) mvwaddstr(main_sub, 0, 62, "LQ"); break; case 3: mvwaddstr(main_sub, 0, 0, "#"); mvwaddstr(main_sub, 0, 2, "ESSID"); mvwaddstr(main_sub, 0, 35, "BSSID (MAC)"); mvwaddstr(main_sub, 0, 48, "CN"); mvwaddstr(main_sub, 0, 51, "P"); mvwaddstr(main_sub, 0, 53, "WEP"); mvwaddstr(main_sub, 0, 57, "RSSI"); if (ap_type == ATMEL410) mvwaddstr(main_sub, 0, 62, "LQ"); break; case 4: mvwaddstr(main_sub, 0, 0, "#"); mvwaddstr(main_sub, 0, 2, "BSSID (MAC)"); mvwaddstr(main_sub, 0, 15, "Manufacturer OUI"); break; } wattrset(main_sub, A_NORMAL); /* main loop */ i = aps_num = 0; while (1) { app = (struct ap *) &varbinds[0].value[i]; j = app->mac[0] | app->mac[1] | app->mac[2] | app->mac[3] | app->mac[4] | app->mac[5]; if (!app->channel || app->channel>14 || app->mac[0] == 0xFF || j == 0 || aps_num == 16) break; i += sizeof(struct ap); aps_num++; /* display number */ sprintf(message, "%c", (aps_num < 10) ? aps_num + '0' : aps_num + 55); mvwaddstr(main_sub, aps_num+1, 0, message); /* get BSSID */ sprintf(bssid, "%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); bssid[13] = '\0'; /* get ESSID and its length */ for (j = 0; j < 32 && app->essid[j]; j++) { essid[j] = app->essid[j]; } essid[j] = '\0'; /* * fill up ap[] field member to preserve ESSID, BSSID, Channel and * Network type of current AP record, so we may use it later * to connect to this very AP */ memcpy(ap[aps_num-1].mac, app->mac, 6); memcpy(ap[aps_num-1].essid, essid, j); ap[aps_num-1].essid_len = j; ap[aps_num-1].channel = app->channel; ap[aps_num-1].nettype = (app->options & 1) ? Infrastructure : AdHoc; /* display ESSID, BSSID, Channel, NetworkType, Preambule and WEP */ switch (ap_viewtype) { case 1: case 2: mvwaddnstr(main_sub, aps_num+1, 2, essid, 15); mvwaddstr(main_sub, aps_num+1, 18, bssid); sprintf(message, "%2u", app->channel); mvwaddstr(main_sub, aps_num+1, 31, message); mvwaddstr(main_sub, aps_num+1, 34, (app->options & 1) ? _("Infrastructure") : "Ad-Hoc"); mvwaddstr(main_sub, aps_num+1, 49, (app->options & 32) ? "S" : "L"); mvwaddstr(main_sub, aps_num+1, 51, (app->options & 16) ? ON : OFF); break; case 3: mvwaddstr(main_sub, aps_num+1, 2, essid); mvwaddstr(main_sub, aps_num+1, 35, bssid); sprintf(message, "%2u", app->channel); mvwaddstr(main_sub, aps_num+1, 48, message); mvwaddstr(main_sub, aps_num+1, 51, (app->options & 32) ? "S" : "L"); mvwaddstr(main_sub, aps_num+1, 53, (app->options & 16) ? ON : OFF); break; case 4: mvwaddstr(main_sub, aps_num+1, 2, bssid); mvwaddnstr(main_sub, aps_num+1, 15, oui2manufacturer(app->mac), 48); break; } /* display RSSI and LQ indicators */ switch (ap_viewtype) { case 1: sprintf(message, "%3d%%", (int)((minimum (app->q1, 40)) * (float)2.5)); mvwaddstr(main_sub, aps_num+1, 55, message); if (ap_type == ATMEL410) { sprintf(message, "%3d%%", (int)(100 - (minimum (app->q2, 40)) * (float)2.5) ); mvwaddstr(main_sub, aps_num+1, 60, message); } break; case 2: sprintf(message, "%3d", dbmconv(app->q1)); mvwaddstr(main_sub, aps_num+1, 56, message); if (ap_type == ATMEL410) { sprintf(message, "%3d%%", (int)(100 - (minimum (app->q2, 40)) * (float)2.5) ); mvwaddstr(main_sub, aps_num+1, 60, message); } break; case 3: sprintf(message, "%3d", app->q1); mvwaddstr(main_sub, aps_num+1, 57, message); if (ap_type == ATMEL410) { sprintf(message, "%3d", app->q2); mvwaddstr(main_sub, aps_num+1, 61, message); } break; } } /* display legend in main_sub */ switch (ap_viewtype) { case 1: mvwaddstr(main_sub, LINES - 6, 0, _("CN: Channel Name; P: Preambule Type (S: Short; L: Long);")); mvwaddstr(main_sub, LINES - 5, 0, _("RSSI: Radio Signal Strength Indicator [%]")); if (ap_type == ATMEL410) waddstr(main_sub, _("; LQ: Link Quality [%]")); break; case 2: mvwaddstr(main_sub, LINES - 6, 0, _("CN: Channel Name; P: Preambule Type (S: Short; L: Long);")); mvwaddstr(main_sub, LINES - 5, 0, _("RSSI: Radio Signal Strength Indicator [dBm]")); if (ap_type == ATMEL410) waddstr(main_sub, _("; LQ: Link Quality [%]")); break; case 3: mvwaddstr(main_sub, LINES - 6, 0, _("CN: Channel Name; P: Preambule Type (S: Short; L: Long);")); mvwaddstr(main_sub, LINES - 5, 0, _("RSSI: Radio Signal Strength Indicator [raw]")); if (ap_type == ATMEL410) waddstr(main_sub, _("; LQ: Link Q. [raw]")); break; } wrefresh(main_sub); if (ap_type == ATMEL410) print_help(_("# con. to AP #; R refresh with reset; T toggle; Q quit; Other = refr. w/o reset")); else /* ATMEL12350 */ print_help(_("# con. to AP #; R initiate AP scan; T toggle view; Q quit; Other = refresh view")); while (1) switch (i = getch()) { case 'Q': case 'q': goto restore_before_exit; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'a': case 'A': case 'b': case 'B': case 'c': case 'C': case 'd': case 'D': case 'e': case 'E': case 'f': case 'F': case 'g': case 'G': if (i >= 'a') j = i - 87; else if (i >= 'A') j = i - 55; else j = i - '0'; if(j > aps_num) break; /* don't attempt to connect to remote AP in Ad-Hoc net */ if(ap[j-1].nettype == AdHoc) break; print_help(WAIT_SET); varbinds[3].oid = operChannelID; varbinds[3].len_oid = sizeof(operChannelID); varbinds[3].value = &ap[j-1].channel; varbinds[3].len_val = 1; varbinds[3].type = INT_VALUE; varbinds[2].oid = bridgeRemoteBridgeBSSID; varbinds[2].len_oid = sizeof(bridgeRemoteBridgeBSSID); varbinds[2].value = ap[j-1].mac; varbinds[2].len_val = 6; varbinds[2].type = STRING_VALUE; varbinds[1].oid = operESSIDLength; varbinds[1].len_oid = sizeof(operESSIDLength); varbinds[1].value = (char *) &ap[j-1].essid_len; varbinds[1].len_val = 1; varbinds[1].type = INT_VALUE; varbinds[0].oid = operESSID; varbinds[0].len_oid = sizeof(operESSID); varbinds[0].value = ap[j-1].essid; varbinds[0].len_val = ap[j-1].essid_len; varbinds[0].type = STRING_VALUE; if (snmp(varbinds, 4, SET) <= 0) { print_helperr(ERR_SET); goto restore_before_exit; } if (bridge_mode != 3) { bridge_mode = 3; needs_opmode_restore = 1; } if (SysUpload() < 0 ) { print_helperr(ERR_SET); getch(); goto restore_before_exit; } print_help(DONE_SET); getch(); goto restore_before_exit; case 'R': case 'r': if (ap_type == ATMEL410) { /* force KnownAP scan by reset */ print_help(WAIT_RET); if (SysReset() < 0) { print_helperr(ERR_RET); getch(); goto restore_before_exit; } clear_main(0); sleep(7); } else { /* ATMEL12350 */ /* * Init KnownAP scan by issuing SiteSurveyCommand. * Unfortunately, we may not use snmp() here becouse * it would time out, as buggy firmware in ATMEL12350 * devices does not confirm our query reception * received via wireless port, in a reasonable * time frame. So we rather use sendto() here. */ struct sockaddr_in toip; struct timeval tv; fd_set rfd; varbinds[0].oid = SiteSurveyCommand; varbinds[0].len_oid = sizeof(SiteSurveyCommand); c = 1; varbinds[0].value = &c; varbinds[0].len_val = 1; varbinds[0].type = INT_VALUE; memset(&toip, 0, sizeof toip); toip.sin_family = AF_INET; toip.sin_port = htons(161); toip.sin_addr.s_addr = ap_ip.s_addr; /* if (snmp(varbinds, 1, SET) <= 0) { print_helperr(ERR_SET); goto exit; } */ errno = 0; i = ber(message, varbinds, 1, SET); if (sendto(sockfd, message, i, 0, (struct sockaddr *) &toip, SIZE) == -1) { sprintf(message, _("Failure in sendto(): %s. " "Press any key."), strerror(errno)); print_helperr(message); goto exit; } clear_main(0); mvwaddstr(main_sub, 3, 1, _ ("You have just initiated the AP scan. Be advised that it may")); mvwaddstr(main_sub, 4, 1, _ ("take a few seconds for your Access Point to find out some")); mvwaddstr(main_sub, 5, 1, _ ("values, so expect finishing the scan in about 5 seconds.")); mvwaddstr(main_sub, 6, 1, _ ("Also note that your Access Point stops forwarding the network")); mvwaddstr(main_sub, 7, 1, _ ("traffic while the scan is in progress, but restores itself")); mvwaddstr(main_sub, 8, 1, _ ("to normal operation in time ranging up to 1 minute.")); mvwaddstr(main_sub, 9, 1, _ ("Hence, if you are connected to target Access Point via its")); mvwaddstr(main_sub, 10, 1, _ ("wireless port, you need to wait a bit longer")); mvwaddstr(main_sub, 11, 1, _ ("after pressing 'S'.")); wrefresh(main_sub); print_help(""); /* * Eat the confirmation packet from socket, if it * has been sent by the AP. This only happens * if we issued KnownAP scan via its ethernet * interface. */ tv.tv_sec = 2; tv.tv_usec = 0; FD_ZERO(&rfd); FD_SET(sockfd, &rfd); if (select(sockfd + 1, &rfd, NULL, NULL, &tv) > 0) recv(sockfd, message, 65, 0); print_help("Now, you can try pressing 'S' repeatedly " "to watch the progress."); getch(); } goto get_stats; case 'T': case 't': ap_viewtype += 1; if (ap_viewtype > 4) ap_viewtype = 1; clear_main(0); sprintf(message, "%s%c", VIEW, ap_viewtype + '0'); print_top(message, KNOWN_APS); goto show_stats; default: print_help(WAIT_RET); clear_main(0); goto get_stats; } restore_before_exit: if (needs_opmode_restore) { print_help(WAIT_SET); varbinds[0].oid = bridgeOperationalMode; varbinds[0].len_oid = sizeof(bridgeOperationalMode); varbinds[0].value = (char *) &bridge_mode; varbinds[0].len_val = 1; varbinds[0].type = INT_VALUE; if (snmp(varbinds, 1, SET) <= 0) { print_helperr(ERR_RET); goto exit; } if (SysUpload()) { print_helperr(ERR_RET); goto exit; } } goto quit; exit: getch(); quit: print_top(NULL, NULL); clear_main(0); } ap-utils-1.5/lib/ber.c000066400000000000000000000033541117246662700146200ustar00rootroot00000000000000/* Author : Rahul G rahul@smartbridges.com */ #include #include #include /* This function takes the oid in dot format ( 1.3.6.1.4.410.... ) and encodes * the oid using ber rules. oid_out should be allocated by the application.. * encode_oid returns the length of the encoded buffer. */ int encode_oid(char* oid, unsigned char* oid_out) { char* ptr; int count=0, oct_count=2; int num_val=0, oct1=0; char val[32]; int last=0,len=0; oid_out[0]=0x06 ; /* 00000110 */ while(( (ptr=strchr(oid,'.')) != 0) || last == 0 ) { if(ptr != 0) len=ptr-oid; else len=strlen(oid); strncpy(val,oid,len); val[len]='\0'; num_val=atoi(val); /*get the first two sub id's*/ if(count == 0) { oct1=40* num_val; count++; oid=ptr+1; continue; } if(count == 1) { oct1+=num_val; oid_out[oct_count]=oct1; oct_count++; oid=ptr+1; count++; continue; } else { int i, loop, j; for(i=31;i>= 0; i--) { unsigned int mask= (num_val>>(i)) & ~(~0x0000<<1); if(mask) { i++; break; } } loop= i/ 7; for(j=loop; j>= 0; j--) { oid_out[oct_count]= (num_val >> (j*7)) & ~(~0x0000 << 7); oid_out[oct_count] |= 0x80; /* turn the msb to 1 */ oct_count++; } oid_out[oct_count - 1] &= 0x7f; /* turn the msb back to zero for the last octect */ } if(ptr != 0) { oid=ptr+1; } else { last=1; } } //Insert the octect length oid_out[1]=oct_count-2; return oct_count; } /* int main() { unsigned char oid_ut[512]; int k,ret; // ret=encode_oid("1.3.6.1.4.1.410.1.1.1.1.0",oid_ut); ret=encode_oid("1.2.840.113549.1",oid_ut); for(k=0; k< ret; k++) printf("%.2x ",oid_ut[k]); printf("\n"); return 0; } */ ap-utils-1.5/lib/cmd.c000066400000000000000000000070011117246662700146040ustar00rootroot00000000000000/* * cmd.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include "ap-utils.h" extern WINDOW *main_sub; extern short ap_type; void defaults() { char sysLoadDefaults[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x04, 0x00 }, enable = 1; varbind varbinds[1]; if (ap_type == ATMEL12350) { sysLoadDefaults[5] = 0xE0; sysLoadDefaults[6] = 0x3E; } print_top(NULL, _("Restore factory default configuration")); mvwaddstr(main_sub, 3, 2, _ ("After restoring factory defaults your current configuration")); mvwaddstr(main_sub, 4, 2, _("will be lost.")); mvwaddstr(main_sub, 6, 20, _("Do you want to continue? ")); wrefresh(main_sub); if (help_ysn()) goto quit; print_help(WAIT_SET); varbinds[0].oid = sysLoadDefaults; varbinds[0].len_oid = sizeof(sysLoadDefaults); varbinds[0].value = &enable; varbinds[0].len_val = 1; varbinds[0].type = INT_VALUE; if (snmp(varbinds, 1, SET) <= 0) print_helperr(ERR_SET); else print_help (_ ("Factory default settings loaded. Press any key to continue.")); getch(); quit: print_top(NULL, NULL); } void reset() { print_top(NULL, _("Reset Access Point")); if(ap_type == ATMEL410) mvwaddstr(main_sub, 3, 5, _("By reset you'll lose all non-uploaded configuration.")); mvwaddstr(main_sub, 5, 20, _("Do you want to continue? ")); wrefresh(main_sub); if (help_ysn()) goto quit; print_help(WAIT_SET); if (SysReset()) print_helperr(ERR_SET); else print_help(_("Access Point reset. Press any key to continue.")); getch(); quit: print_top(NULL, NULL); } int SysUpload() { char sysUpload[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x06, 0x00 }, enable = 1; varbind varbinds[1]; if (ap_type == ATMEL12350) { sysUpload[5] = 0xE0; sysUpload[6] = 0x3E; } varbinds[0].oid = sysUpload; varbinds[0].len_oid = sizeof(sysUpload); varbinds[0].value = &enable; varbinds[0].len_val = 1; varbinds[0].type = INT_VALUE; if (snmp(varbinds, 1, SET) <= 0) return -1; else return 0; } void upload() { print_top(NULL, _("Upload configuration")); mvwaddstr(main_sub, 3, 2, _("You may need to upload the configuration only if you've")); mvwaddstr(main_sub, 4, 2, _("changed some option values before. Using this option may")); mvwaddstr(main_sub, 5, 2, _("cause loss of your current configuration.")); mvwaddstr(main_sub, 7, 20, ("Do you want to continue? ")); wrefresh(main_sub); if (help_ysn()) goto quit; print_help(WAIT_SET); if (SysUpload()) print_helperr(ERR_SET); else print_help (_("Configuration uploaded. Press any key to continue.")); getch(); quit: print_top(NULL, NULL); } ap-utils-1.5/lib/common.c000066400000000000000000000347601117246662700153450ustar00rootroot00000000000000/* * common.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * Copyright (c) 2005 Jan Rafaj * * 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 #include #include #include #include #include #include #include #include "ap-utils.h" #define APIP _("Access Point IP-address: ") #define APPASS _("Password (community): ") #define AUTODETECT _("Autodetect AP MIB properties? ") #define APTYPE _("AP MIB type: ") #define APVENDOREXT _("AP MIB vendor extensions: ") #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", "NWN", "ATMEL12350" }; char *ap_vendorexts[][3] = { { "NONE", "SBRIDGES" }, /* ATMEL410 exts */ { "NONE" }, /* NWN exts */ { "NONE", "GEMTEK", "EZYNET" }, /* ATMEL12350 exts */ { 0 } /* do not delete! */ }; rdprops regdom_types[] = { { 0x10, "FCC (USA)", 1, 11 }, { 0x20, "DOC (Canada)", 1, 11 }, { 0x30, "ETSI (Europe)", 1, 13 }, { 0x31, "Spain", 10, 2 }, { 0x32, "France", 10, 4 }, { 0x40, "MKK (Japan)", 14, 1 }, { 0x41, "MKK1 (Japan)", 1, 14 }, { 0x42, "Israel", 3, 7 }, { 0x00, "unknown", 1, 14 } /* hopefully 0x00 is not taken by any? */ }; char *channels[] = { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14" }; extern WINDOW *main_sub; extern char *community, *prog_title; 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 = (COLS - MCOLS - 2 - ncol) / 2, i; char message[100]; noecho(); curs_set(0); print_top(NULL, _("About")); /* drawing the box */ mvwaddch(main_sub, brow, bcol, ACS_ULCORNER); mvwaddch(main_sub, brow, bcol + ncol, ACS_URCORNER); mvwaddch(main_sub, brow + nrow, bcol, ACS_LLCORNER); mvwaddch(main_sub, brow + nrow, bcol + ncol, ACS_LRCORNER); for (i = 1; i < ncol; i++) { mvwaddch(main_sub, brow, bcol + i, ACS_HLINE); mvwaddch(main_sub, brow + nrow, bcol + i, ACS_HLINE); } for (i = 1; i < nrow; i++) { mvwaddch(main_sub, brow + i, bcol, ACS_VLINE); mvwaddch(main_sub, brow + i, bcol + ncol, ACS_VLINE); } mvwaddstr(main_sub, brow + 1, bcol + 2, prog_title); sprintf(message, _("From %s"), TITLE); mvwaddstr(main_sub, brow + 2, bcol + 2, message); 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")); mvwaddstr(main_sub, brow + 6, bcol + 2, _("and Jan Rafaj jr-aputils@cedric.unob.cz")); mvwaddstr(main_sub, brow + 7, bcol + 2, _("Copyright (c) 2001-2005")); mvwaddstr(main_sub, brow + 8, bcol + 2, _("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")); mvwaddstr(main_sub, brow +12, bcol + 2, _("of the GNU General Public License version 2.")); mvwaddstr(main_sub, brow + 13, bcol + 2, _("See the included COPYING file for details.")); wrefresh(main_sub); print_help(ANY_KEY); getch(); print_help(""); print_top(NULL, NULL); clear_main(0); return; } void connect_options(unsigned long int ip, int type) { /* * operAccessPointName OIDs used to retrieve AP NAME [in order of * corresponding AP MIB types: ATMEL410, NWN, ATMEL12350] */ 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} }; extern int atmel410_filter; /* boolean; = 1 if we call from ap-gl utility */ unsigned char message[256]; unsigned char label[17]; int fd, i; char *home_dir; char save_settings=1; varbind varbinds[1]; if (reopen_sockfd() == -1) { print_helperr(ERR_SOCKET); getch(); goto exit; } noecho(); curs_set(0); print_top(NULL, _("Connect options")); get_all_again: mvwaddstr(main_sub, 1, 1, APIP); if (ip) { ap_ip.s_addr = ip; mvwaddstr(main_sub, 1, 1 + strlen(APIP), inet_ntoa(ap_ip)); } else { print_help(_("Enter IP address of your Access Point.")); get_ip(&ap_ip, 1, 1 + strlen(APIP), NULL); } mvwaddstr(main_sub, 2, 1, APPASS); 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); if (type && !atmel410_filter) { /* entered from ap_search() */ /* community already exists */ /* wattrset(main_sub, A_BOLD); for(i = 0; community[i++]; waddch(main_sub, '*')); wattrset(main_sub, A_NORMAL); */ ap_type = --type; print_menusel(3, 1, APTYPE, ap_types[ap_type]); /* well, we already know the MIB type, but lets find out MIB ext */ get_mib_details(); /* marks that we want offer AP name -> AP label later */ i = 1; 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); } 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 */ 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; } print_bold(main_sub, ap_types[ap_type]); mvwaddstr(main_sub, 4, 1, APVENDOREXT); } } } print_bold(main_sub, ap_vendorexts[ap_type][ap_vendorext]); print_help( _("This label will be stored on HDD (independently on AP name!).")); if (i == 1) { /* * (being called from ap_search()) or (YES for AP type autodetection) * => offer possibility to use AP's name as the label */ mvwaddstr(main_sub, 5, 1, WANT_SYS_APLABEL); wrefresh(main_sub); if (yes_no(5, 1 + strlen(WANT_SYS_APLABEL)) == 1) { /* YES */ varbinds[0].oid = operAccessPointName[ap_type]; varbinds[0].len_oid = (ap_type == NWN ? 8 : sizeof(operAccessPointName[ap_type])); varbinds[0].type = NULL_VALUE; varbinds[0].len_val = 0; print_help(WAIT_RET); if (snmp(varbinds, i, GET) <= 0) { print_helperr(ERR_RET); getch(); } else { clear_main_new(5, 6); mvwaddstr(main_sub, 5, 1, APLABEL); wattrset(main_sub, A_BOLD); for (i = 0; i < varbinds[0].len_val && i < 16 && *(varbinds[0].value + i); i++) { label[i] = *(varbinds[0].value + i); waddch(main_sub, label[i]); } 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."); getch(); } } print_help(""); i = -1; } } if (i != -1) { /* we have NOT been asked with WANT_SYS_APLABEL */ clear_main_new(5, 6); mvwaddstr(main_sub, 5, 1, APLABEL); get_value(message, 5, 1 + strlen(APLABEL), -sizeof(label), ANY_STRING, 0, 0, NULL); strncpy(label, message, strlen(message) + 1); } 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)); if(save_settings == 1) { if ((home_dir = getenv("HOME"))) { sprintf(message, "%s/.ap-config", home_dir); if ((fd = open(message, O_CREAT|O_WRONLY|O_APPEND, 0600)) != -1) { sprintf(message, "%s:%s:%s:%d:%d\n", inet_ntoa(ap_ip), 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: print_help(""); print_top(NULL, NULL); clear_main(0); return; } /* * 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() { 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 }; /* * 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 }; /* 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]; int i; print_help(_("Trying to probe AP for MIB properties. Please wait...")); /* first, determine the private MIB types 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 { print_helperr(_("Unable to determine AP MIB properties " "(no response from AP). Press any key.")); getch(); return -1; } } } /* * It is best to do the following HERE and FOR ONCE ONLY: find out more * about specific MIB vendor extensions - we'll check against them * on different places later. */ ap_vendorext = NONE; 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) { 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 (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); } void exit_shell() { def_prog_mode(); endwin(); system("sh"); curs_set(0); 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. */ int regdom_idx(char regdom) { int i; for (i = 0; ®dom_types[i]; i++) if (regdom_types[i].code == regdom) return i; return i; } ap-utils-1.5/lib/file.c000066400000000000000000000233171117246662700147700ustar00rootroot00000000000000/* * file.c from Access Point SNMP Utils for Linux * file accessing functions * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include #include #include #include "ap-utils.h" extern WINDOW *main_sub, *win_for_help, *main_win; 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 { char *ip; char *passwd; int type; int vendorext; char *label; struct APList * next; }; void _scroll_rows(struct APList *first, int begin, int end) { int i = 1; struct APList *curr = first; char message[80]; clear_main(3); while (i++ < begin) curr = curr->next; i = 0; while (end-- > begin) { sprintf(message, " %3u %-15s %-10s %-8s %-16s", begin + i, curr->ip, ap_types[curr->type], ap_vendorexts[curr->type][curr->vendorext], curr->label); mvwaddstr(main_sub, 2 + i, 0, message); i++; curr = curr->next; } wrefresh(main_sub); } struct APList *parse_db_str(char *str) { struct APList *curr=NULL; char *ip=NULL, *passwd=NULL, *label=NULL, *aptype=NULL, mess[1024]; int i=0, pos=0, j=0; while(str[i] != '\0') { if(str[i] == ':') { switch (pos) { case 0: ip = (char *) malloc(j+1); memcpy(ip, mess, j+1); ip[j] = '\0'; break; case 1: passwd = (char *) malloc(j+1); memcpy(passwd, mess, j+1); passwd[j] = '\0'; break; case 2: label = (char *) malloc(j+1); memcpy(label, mess, j+1); label[j > 16 ? 16 : j] = '\0'; break; case 3: aptype = (char *) malloc(j+1); memcpy(aptype, mess, j+1); aptype[j] = '\0'; break; } i++; j=0; pos++; } else mess[j++] = str[i++]; } mess[j]='\0'; if (pos==4 && ip && passwd && ((atmel410_filter && atoi(aptype) == ATMEL410) || !atmel410_filter)) { curr = (struct APList *) malloc(sizeof(struct APList)); curr->type = atoi(aptype); curr->vendorext = atoi(mess); curr->next = NULL; curr->ip = (char *) malloc(strlen(ip) + 1); strcpy(curr->ip, ip); curr->passwd = (char *) malloc(strlen(passwd) + 1); strcpy(curr->passwd, passwd); curr->label = (char *) malloc(strlen(label) + 1); strcpy(curr->label, label); } if (ip) free(ip); if (passwd) free(passwd); if (label) free(label); if (aptype) free(aptype); return curr; } int get_opts() { extern char *community; extern struct in_addr ap_ip; 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; if ((home_dir = getenv("HOME")) == NULL) return 0; sprintf(buf, "%s/.ap-config", home_dir); if ((fd = open(buf, O_RDONLY)) == -1) return 0; pos=0; while((j = read(fd, buf, sizeof(buf))) > 0) for(i=0; i < j; i++) { if (buf[i] == 0x0a) { mess[pos]='\0'; if (first == NULL) { if ((first = parse_db_str(mess)) != NULL) { curr = first; record_num = 1; } } else { if ((curr->next = parse_db_str(mess)) != NULL) { curr = curr->next; record_num++; } } pos=0; } else mess[pos++] = buf[i]; } mess[pos]='\0'; if (first == NULL) { if ((first = parse_db_str(mess)) != NULL) { curr = first; record_num = 1; } } else { if ((curr->next = parse_db_str(mess)) != NULL) curr = curr->next; record_num++; } close(fd); if (!record_num) return 0; mvwaddstr(main_sub, 0, 2, _("NUM IP ADDRESS MIB TYPE MIB EXT. LABEL")); print_top(NULL, _("Choose an AP to connect to")); begin = 1; end = (MAX_LINES < record_num) ? MAX_LINES : record_num; _scroll_rows(first, begin, end); noecho(); while (1) { print_help(_("1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll")); switch (c = getch()) { case 'q': case 'Q': exit_program(); case 'n': case 'N': goto quit; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': i = c - '0'; if (record_num <= i || i <= 0) goto wrong_num; curr = first; while (--i > 0) curr = curr->next; inet_aton(curr->ip, &ap_ip); if (community) free(community); i = strlen(curr->passwd) + 1; community = (char *) malloc(i); strncpy(community, curr->passwd, i); ap_type = curr->type; ap_vendorext = curr->vendorext; rval = 1; if (reopen_sockfd() == -1) rval = 0; print_bottom(inet_ntoa(ap_ip)); goto quit; case 'c': case 'C': /* Nothing to connect */ if (record_num == 1) continue; mvwaddstr(main_sub, 1, 1, _("Connect to AP num:")); get_value(message, 1, 20, 6, INT_STRING, 1, record_num - 1, NULL); i = atoi(message); curr = first; while (--i > 0) curr = curr->next; inet_aton(curr->ip, &ap_ip); if (community) free(community); i = strlen(curr->passwd) + 1; community = (char *) malloc(i); strncpy(community, curr->passwd, i); ap_type = curr->type; ap_vendorext = curr->vendorext; rval = 1; if (reopen_sockfd() == -1) rval = 0; print_bottom(inet_ntoa(ap_ip)); goto quit; case 'd': case 'D': /* Nothing to delete */ if (record_num == 1) continue; mvwaddstr(main_sub, 1, 0, _("Delete num:")); get_value(message, 1, 15, 6, INT_STRING, 1, (record_num == 1 ? 1 : record_num - 1), NULL); i = atoi(message); if (i == 1) { curr = first; first = first->next; free(curr->ip); free(curr->passwd); free(curr->label); free(curr); } else { curr = first; while (--i > 1) curr = curr->next; pmac = curr->next; curr->next = pmac->next; free(pmac->ip); free(pmac->passwd); free(pmac->label); free(pmac); } record_num--; /* Clear incl. line with last AP record */ if (record_num == 1) { clear_main_new(1, 3); continue; } begin = 1; end = (MAX_LINES < record_num) ? MAX_LINES : record_num; _scroll_rows(first, begin, end); wrong_num: clear_main_new(1, 2); continue; case KEY_DOWN: case KEY_RIGHT: if (end < record_num) { begin++; end++; _scroll_rows(first, begin, end); } continue; case KEY_UP: case KEY_LEFT: if (begin > 1) { begin--; end--; _scroll_rows(first, begin, end); } 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); if ((fd = creat(buf, 0600)) != -1) { curr=first; while (curr) { sprintf(buf, "%s:%s:%s:%d:%d\n", curr->ip, curr->passwd, curr->label,curr->type, curr->vendorext); write(fd, buf, strlen(buf)); curr = curr->next; } close(fd); print_help(DONE_WRITING_APCONF); } else print_helperr(ERR_WRITING_APCONF); getch(); continue; } } /* print_help(ANY_KEY); getch(); */ quit: while ((curr = first)) { first = curr->next; free(curr->ip); free(curr->passwd); free(curr->label); free(curr); } print_help(""); print_top(NULL, NULL); wclear(main_sub); wrefresh(main_sub); return rval; } void save_Stations(struct MacListStat *curr) { int fd, err_f = 0; char *home_dir; char message[1024]; if ((home_dir = getenv("HOME"))) { sprintf(message, "%s/ap-%s-%s-%s.stations", home_dir, inet_ntoa(ap_ip), ap_types[ap_type],ap_vendorexts[ap_type][ap_vendorext]); if ((fd = creat(message, 0600)) != -1) { while (curr) { sprintf(message, "%02X%02X%02X%02X%02X%02X\n", curr->addr[0] & 0xFF, curr->addr[1] & 0xFF, curr->addr[2] & 0xFF, curr->addr[3] & 0xFF, curr->addr[4] & 0xFF, curr->addr[5] & 0xFF); write(fd, message, 13); curr = curr->next; } close(fd); } else { err_f = 1; } } else { err_f = 1; } if (err_f) print_helperr(_("Unable to write stations file. Press any key.")); else print_help(_("Stations file succesfully written. Press any key.")); getch(); print_help(""); } ap-utils-1.5/lib/input.c000066400000000000000000000255521117246662700152130ustar00rootroot00000000000000/* * input.c from Access Point SNMP Utils for Linux * program input & screen related functions * * Copyright (c) 2002 Roman Festchook * Copyright (c) 2005 Jan Rafaj * * 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 #include #include #include #include #include "ap-utils.h" extern WINDOW *main_sub, *win_for_help; #define GEN_IV_MSG _("Invalid value. Press any key to continue.") #define OOR_IV_MSG _("Value must be in range %u - %u. Press any key to continue.") #define MAC_LEN 12 #define MAC_BYTES 6 void get_mac(char *mac, int row, int col) { char message[MAC_LEN+1], mess[MAC_LEN/MAC_BYTES+1]; int i; 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]; mess[1] = message[2 * i + 1]; mess[2] = '\0'; mac[i] = strtol(mess, NULL, 16); } } #define IP_LEN 15 void get_ip(struct in_addr *ip, int row, int col, char *helpmsg) { char message[IP_LEN+1], *cp; int dotc; get_ip_again: get_value(message, row, col, IP_LEN+1, ANY_STRING, 0, 0, NULL); for (cp = message, dotc = 0; *cp && (cp = index(cp, '.')); cp++, dotc++); if (dotc < 3 || !(inet_aton(message, ip))) { if (helpmsg) { print_helperr(GEN_IV_MSG); getch(); print_help(helpmsg); } goto get_ip_again; } } void get_mask(struct in_addr *ip, int row, int col, char *helpmsg) { 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; for (i = 1; i < 32; i++) if (((hmask >> i) & 0x00000001) != bit) { bit ^= 0x00000001; trans_count++; } if (trans_count > 1) { print_helperr(GEN_IV_MSG); getch(); print_help(helpmsg); goto get_mask_again; } } /* * This is the main input function for all cases when user needs to enter * a visible string. It also performs syntax correctness checks * as well as bounds checks if required. * * value ....... this should keep the value, entered by the user, * in ascii string notation * row * col ......... the begin coordinates, relative to the current window, * at which the string entered by the user will appear * len ......... maximum length of the entered string, including the * tailing '\0' character. Negative value along with * vt=ANY_STRING means that zero-length string is allowed. * vt .......... desired input value type (types INT_STRING, HEX_STRING, * ANY_STRING) * minv, maxv .. min/max bounds in case of integer value input. Each can be * of value 0-0xFFFFFFFF. If both are 0, it means no value bounds * checking will be performed. Used only with vt=INT_STRING. * helpmsg ..... pointer to string that will be printed after OOR_IV_MSG * message if the entered integer value is out of range. * If NULL, then no 'invalid value' and subsequent status line * message will be printed, and whole input process will be * repeated. Used only with vt=INT_STRING. */ void get_value(char *value, int row, int col, int len, char vt, unsigned int minv, unsigned int maxv, char *helpmsg) { 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; } gv_win = derwin(main_sub, 1, len - 1, row, col); wbkgdset(gv_win, A_REVERSE); get_value_again: mode = INSERT; curs_set(1); werase(gv_win); wrefresh(gv_win); i = 0; /* means 'character count' here */ while (1) { c = getch(); acs = 0; switch (vt) { case INT_STRING: if (c >= '0' && c <= '9') acs = 1; break; case HEX_STRING: if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')) acs = 1; break; case ANY_STRING: acs = 1; } /* 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; 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); if (vt == INT_STRING) { i = strtoul(value, (char **)NULL, 10); 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; } } } 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); } /* * Note: indeed we should use get_value() for this action, but for the moment, * we'll settle with this one. */ void get_pass(char *value, int row, int col, int len) { int i, j = 0; wattrset(main_sub, COLOR_PAIR(12)); wmove(main_sub, row, col); for (i = 0; i < len - 1; i++) waddch(main_sub, ' '); curs_set(1); while (1) { value[j] = mvwgetch(main_sub, row, col + j); if (value[j] == 0x0A) /* NEWLINE */ break; if (value[j] == 0x1B) /* ESCAPE */ continue; if (value[j] != 0x7F) { /* BACKSPACE */ if (j < len - 1) mvwaddch(main_sub, row, col + j++, '*'); } else { if (j) mvwaddch(main_sub, row, col + --j, ' '); } }; value[j] = '\0'; curs_set(0); wattrset(main_sub, A_BOLD); wmove(main_sub, row, col); for (i = 0; i < len - 1; i++) waddch(main_sub, ' '); wmove(main_sub, row, col); for (i = 0; i < j; i++) waddch(main_sub, '*'); wattrset(main_sub, A_NORMAL); wrefresh(main_sub); } int yes_no(int brow, int bcol) { char *names[2] = { YES, NO }; return menu_choose(brow, bcol, names, 2) + 1; } int on_off(int brow, int bcol) { char *names[2] = { ON, OFF }; return menu_choose(brow, bcol, names, 2) + 1; } int menu_choose(int brow, int bcol, char **names, unsigned int num) { unsigned short int c; ITEM **menu_item = calloc(num, sizeof(ITEM)), **ip = menu_item; MENU *menu1; unsigned int ncol = 2, i, nrow; WINDOW *choose_menu, *sub_choose_menu; extern WINDOW *main_sub; for (i = 0; i < num; i++) { *ip++ = new_item(names[i], ""); if (ncol < strlen(names[i]) + 3) ncol = strlen(names[i]) + 3; } *ip = (ITEM *) 0; nrow = num + 2; if (brow + 2 + nrow <= (unsigned int) LINES - 2) choose_menu = newwin(nrow, ncol, brow + 2, bcol + MCOLS); 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(11)); mvwaddch(choose_menu, 0, 0, ACS_ULCORNER); mvwaddch(choose_menu, 0, ncol - 1, ACS_URCORNER); mvwaddch(choose_menu, nrow - 1, 0, ACS_LLCORNER); mvwaddch(choose_menu, nrow - 1, ncol - 1, ACS_LRCORNER); for (i = 1; i < ncol - 1; i++) { mvwaddch(choose_menu, 0, i, ACS_HLINE); mvwaddch(choose_menu, nrow - 1, i, ACS_HLINE); } for (i = 1; i < nrow - 1; i++) { mvwaddch(choose_menu, i, 0, ACS_VLINE); mvwaddch(choose_menu, i, ncol - 1, ACS_VLINE); } wrefresh(choose_menu); menu1 = new_menu(menu_item); set_menu_win(menu1, choose_menu); set_menu_sub(menu1, sub_choose_menu); set_menu_opts(menu1, O_ONEVALUE); curs_set(0); post_menu(menu1); wrefresh(sub_choose_menu); while (1) { switch (getch()) { case KEY_DOWN: case 'j': case 'J': menu_driver(menu1, REQ_NEXT_ITEM); wrefresh(sub_choose_menu); break; case KEY_RIGHT: case 'l': case 'L': menu_driver(menu1, REQ_LAST_ITEM); wrefresh(sub_choose_menu); break; case KEY_LEFT: case 'h': case 'H': menu_driver(menu1, REQ_FIRST_ITEM); wrefresh(sub_choose_menu); break; case KEY_UP: case 'k': case 'K': menu_driver(menu1, REQ_PREV_ITEM); wrefresh(sub_choose_menu); break; case 10: i = item_index(current_item(menu1)); unpost_menu(menu1); free_menu(menu1); for (c = 0; c < nrow - 2; c++) free_item(menu_item[c]); delwin(sub_choose_menu); delwin(choose_menu); redrawwin(main_sub); free(menu_item); return i; } } } /* * 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 tval) { int i; extern int wait_mode; if (wait_mode == WAIT_TIMEOUT) timeout(tval * 100); i = getch(); if (wait_mode == WAIT_TIMEOUT) { timeout(-1); // nocbreak(); // cbreak(); } if (i == ERR) i = 0; return i; } int help_ysn() { char c; print_help (_("Y - Yes; Any other key - No (it's safer to answer No)")); c = getch(); clear_main(0); if (c == 'y' || c == 'Y') return 0; return 1; } ap-utils-1.5/lib/menu.c000066400000000000000000000053271117246662700150160ustar00rootroot00000000000000/* * menu.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include "ap-utils.h" extern WINDOW *sub_for_menu; extern char set_oeminfo_allowed; void uni_menu(struct umitems *umenu, int num) { ITEM **menu_item = calloc(num+1, sizeof(ITEM)); MENU *menu; unsigned short int idx; int c; for (idx = 0; idx < num; idx++) { menu_item[idx] = new_item(umenu[idx].item, 0); } menu = new_menu(menu_item); set_menu_opts(menu, O_ONEVALUE); curs_set(0); post_menu(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); break; case KEY_RIGHT: case 'l': case 'L': menu_driver(menu, REQ_LAST_ITEM); break; case KEY_LEFT: case 'h': case 'H': menu_driver(menu, REQ_FIRST_ITEM); break; case KEY_UP: case 'k': case 'K': menu_driver(menu, REQ_PREV_ITEM); break; case KEY_PPAGE: case KEY_HOME: menu_driver(menu, REQ_FIRST_ITEM); break; case KEY_NPAGE: case KEY_END: menu_driver(menu, REQ_LAST_ITEM); break; case 'q': case 'Q': idx = num - 2; goto quitmenu; case 's': case 'S': 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: idx = item_index(current_item(menu)); quitmenu: if (idx == num - 2) { unpost_menu(menu); free_menu(menu); for (c = 0; c < num; c++) free_item(menu_item[c]); if (umenu[idx].func) umenu[idx].func(); else { free(menu_item); return; } } if (umenu[idx].is_menu) unpost_menu(menu); umenu[idx].func(); if (umenu[idx].is_menu) post_menu(menu); break; default: continue; } print_help(umenu[item_index(current_item(menu))].help); } } ap-utils-1.5/lib/oui.c000066400000000000000000010353101117246662700146420ustar00rootroot00000000000000/* * oui.c from Wireless Access Point Utilites for Unix * Transform OUI to Manufacturer name * * Copyright (c) 2002 Roman Festchook * * 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 "unistd.h" #include "ap-utils.h" char *oui2manufacturer(char *mac) { struct oui { char oui1; char oui2; char oui3; char *organization; } oui_list[] = { { 0x00, 0x00, 0x00, "XEROX CORPORATION"}, { 0x00, 0x00, 0x01, "XEROX CORPORATION"}, { 0x00, 0x00, 0x02, "XEROX CORPORATION"}, { 0x00, 0x00, 0x03, "XEROX CORPORATION"}, { 0x00, 0x00, 0x04, "XEROX CORPORATION"}, { 0x00, 0x00, 0x05, "XEROX CORPORATION"}, { 0x00, 0x00, 0x06, "XEROX CORPORATION"}, { 0x00, 0x00, 0x07, "XEROX CORPORATION"}, { 0x00, 0x00, 0x08, "XEROX CORPORATION"}, { 0x00, 0x00, 0x09, "XEROX CORPORATION"}, { 0x00, 0x00, 0x0A, "OMRON TATEISI ELECTRONICS CO."}, { 0x00, 0x00, 0x0B, "MATRIX CORPORATION"}, { 0x00, 0x00, 0x0C, "CISCO SYSTEMS, INC."}, { 0x00, 0x00, 0x0D, "FIBRONICS LTD."}, { 0x00, 0x00, 0x0E, "FUJITSU LIMITED"}, { 0x00, 0x00, 0x0F, "NEXT, INC."}, { 0x00, 0x00, 0x10, "SYTEK INC."}, { 0x00, 0x00, 0x11, "NORMEREL SYSTEMES"}, { 0x00, 0x00, 0x12, "INFORMATION TECHNOLOGY LIMITED"}, { 0x00, 0x00, 0x13, "CAMEX"}, { 0x00, 0x00, 0x14, "NETRONIX"}, { 0x00, 0x00, 0x15, "DATAPOINT CORPORATION"}, { 0x00, 0x00, 0x16, "DU PONT PIXEL SYSTEMS ."}, { 0x00, 0x00, 0x18, "WEBSTER COMPUTER CORPORATION"}, { 0x00, 0x00, 0x19, "APPLIED DYNAMICS INTERNATIONAL"}, { 0x00, 0x00, 0x1A, "ADVANCED MICRO DEVICES"}, { 0x00, 0x00, 0x1B, "NOVELL INC."}, { 0x00, 0x00, 0x1C, "BELL TECHNOLOGIES"}, { 0x00, 0x00, 0x1D, "CABLETRON SYSTEMS, INC."}, { 0x00, 0x00, 0x1E, "TELSIST INDUSTRIA ELECTRONICA"}, { 0x00, 0x00, 0x1F, "Telco Systems, Inc."}, { 0x00, 0x00, 0x20, "DATAINDUSTRIER DIAB AB"}, { 0x00, 0x00, 0x21, "SUREMAN COMP. & COMMUN. CORP."}, { 0x00, 0x00, 0x22, "VISUAL TECHNOLOGY INC."}, { 0x00, 0x00, 0x23, "ABB INDUSTRIAL SYSTEMS AB"}, { 0x00, 0x00, 0x24, "CONNECT AS"}, { 0x00, 0x00, 0x25, "RAMTEK CORP."}, { 0x00, 0x00, 0x26, "SHA-KEN CO., LTD."}, { 0x00, 0x00, 0x27, "JAPAN RADIO COMPANY"}, { 0x00, 0x00, 0x28, "PRODIGY SYSTEMS CORPORATION"}, { 0x00, 0x00, 0x29, "IMC NETWORKS CORP."}, { 0x00, 0x00, 0x2A, "TRW - SEDD/INP"}, { 0x00, 0x00, 0x2B, "CRISP AUTOMATION, INC"}, { 0x00, 0x00, 0x2C, "AUTOTOTE LIMITED"}, { 0x00, 0x00, 0x2D, "CHROMATICS INC"}, { 0x00, 0x00, 0x2E, "SOCIETE EVIRA"}, { 0x00, 0x00, 0x2F, "TIMEPLEX INC."}, { 0x00, 0x00, 0x30, "VG LABORATORY SYSTEMS LTD"}, { 0x00, 0x00, 0x31, "QPSX COMMUNICATIONS PTY LTD"}, { 0x00, 0x00, 0x32, "Marconi plc"}, { 0x00, 0x00, 0x33, "EGAN MACHINERY COMPANY"}, { 0x00, 0x00, 0x34, "NETWORK RESOURCES CORPORATION"}, { 0x00, 0x00, 0x35, "SPECTRAGRAPHICS CORPORATION"}, { 0x00, 0x00, 0x36, "ATARI CORPORATION"}, { 0x00, 0x00, 0x37, "OXFORD METRICS LIMITED"}, { 0x00, 0x00, 0x38, "CSS LABS"}, { 0x00, 0x00, 0x39, "TOSHIBA CORPORATION"}, { 0x00, 0x00, 0x3A, "CHYRON CORPORATION"}, { 0x00, 0x00, 0x3B, "i Controls, Inc."}, { 0x00, 0x00, 0x3C, "AUSPEX SYSTEMS INC."}, { 0x00, 0x00, 0x3D, "UNISYS"}, { 0x00, 0x00, 0x3E, "SIMPACT"}, { 0x00, 0x00, 0x3F, "SYNTREX, INC."}, { 0x00, 0x00, 0x40, "APPLICON, INC."}, { 0x00, 0x00, 0x41, "ICE CORPORATION"}, { 0x00, 0x00, 0x42, "METIER MANAGEMENT SYSTEMS LTD."}, { 0x00, 0x00, 0x43, "MICRO TECHNOLOGY"}, { 0x00, 0x00, 0x44, "CASTELLE CORPORATION"}, { 0x00, 0x00, 0x45, "FORD AEROSPACE & COMM. CORP."}, { 0x00, 0x00, 0x46, "OLIVETTI NORTH AMERICA"}, { 0x00, 0x00, 0x47, "NICOLET INSTRUMENTS CORP."}, { 0x00, 0x00, 0x48, "SEIKO EPSON CORPORATION"}, { 0x00, 0x00, 0x49, "APRICOT COMPUTERS, LTD"}, { 0x00, 0x00, 0x4A, "ADC CODENOLL TECHNOLOGY CORP."}, { 0x00, 0x00, 0x4B, "ICL DATA OY"}, { 0x00, 0x00, 0x4C, "NEC CORPORATION"}, { 0x00, 0x00, 0x4D, "DCI CORPORATION"}, { 0x00, 0x00, 0x4E, "AMPEX CORPORATION"}, { 0x00, 0x00, 0x4F, "LOGICRAFT, INC."}, { 0x00, 0x00, 0x50, "RADISYS CORPORATION"}, { 0x00, 0x00, 0x51, "HOB ELECTRONIC GMBH & CO. KG"}, { 0x00, 0x00, 0x52, "Intrusion.com, Inc."}, { 0x00, 0x00, 0x53, "COMPUCORP"}, { 0x00, 0x00, 0x54, "MODICON, INC."}, { 0x00, 0x00, 0x55, "COMMISSARIAT A L`ENERGIE ATOM."}, { 0x00, 0x00, 0x56, "DR. B. STRUCK"}, { 0x00, 0x00, 0x57, "SCITEX CORPORATION LTD."}, { 0x00, 0x00, 0x58, "RACORE COMPUTER PRODUCTS INC."}, { 0x00, 0x00, 0x59, "HELLIGE GMBH"}, { 0x00, 0x00, 0x5A, "SysKonnect GmbH"}, { 0x00, 0x00, 0x5B, "ELTEC ELEKTRONIK AG"}, { 0x00, 0x00, 0x5C, "TELEMATICS INTERNATIONAL INC."}, { 0x00, 0x00, 0x5D, "CS TELECOM"}, { 0x00, 0x00, 0x5E, "USC INFORMATION SCIENCES INST"}, { 0x00, 0x00, 0x5F, "SUMITOMO ELECTRIC IND., LTD."}, { 0x00, 0x00, 0x60, "KONTRON ELEKTRONIK GMBH"}, { 0x00, 0x00, 0x61, "GATEWAY COMMUNICATIONS"}, { 0x00, 0x00, 0x62, "BULL HN INFORMATION SYSTEMS"}, { 0x00, 0x00, 0x63, "DR.ING.SEUFERT GMBH"}, { 0x00, 0x00, 0x64, "YOKOGAWA DIGITAL COMPUTER CORP"}, { 0x00, 0x00, 0x65, "NETWORK ASSOCIATES, INC."}, { 0x00, 0x00, 0x66, "TALARIS SYSTEMS, INC."}, { 0x00, 0x00, 0x67, "SOFT * RITE, INC."}, { 0x00, 0x00, 0x68, "ROSEMOUNT CONTROLS"}, { 0x00, 0x00, 0x69, "CONCORD COMMUNICATIONS INC"}, { 0x00, 0x00, 0x6A, "COMPUTER CONSOLES INC."}, { 0x00, 0x00, 0x6B, "SILICON GRAPHICS INC./MIPS"}, { 0x00, 0x00, 0x6D, "CRAY COMMUNICATIONS, LTD."}, { 0x00, 0x00, 0x6E, "ARTISOFT, INC."}, { 0x00, 0x00, 0x6F, "MADGE NETWORKS LTD."}, { 0x00, 0x00, 0x70, "HCL LIMITED"}, { 0x00, 0x00, 0x71, "ADRA SYSTEMS INC."}, { 0x00, 0x00, 0x72, "MINIWARE TECHNOLOGY"}, { 0x00, 0x00, 0x73, "SIECOR CORPORATION"}, { 0x00, 0x00, 0x74, "RICOH COMPANY LTD."}, { 0x00, 0x00, 0x75, "Nortel Networks"}, { 0x00, 0x00, 0x76, "ABEKAS VIDEO SYSTEM"}, { 0x00, 0x00, 0x77, "INTERPHASE CORPORATION"}, { 0x00, 0x00, 0x78, "LABTAM LIMITED"}, { 0x00, 0x00, 0x79, "NETWORTH INCORPORATED"}, { 0x00, 0x00, 0x7A, "DANA COMPUTER INC."}, { 0x00, 0x00, 0x7B, "RESEARCH MACHINES"}, { 0x00, 0x00, 0x7C, "AMPERE INCORPORATED"}, { 0x00, 0x00, 0x7D, "SUN MICROSYSTEMS, INC."}, { 0x00, 0x00, 0x7E, "CLUSTRIX CORPORATION"}, { 0x00, 0x00, 0x7F, "LINOTYPE-HELL AG"}, { 0x00, 0x00, 0x80, "CRAY COMMUNICATIONS A/S"}, { 0x00, 0x00, 0x81, "BAY NETWORKS"}, { 0x00, 0x00, 0x82, "LECTRA SYSTEMES SA"}, { 0x00, 0x00, 0x83, "TADPOLE TECHNOLOGY PLC"}, { 0x00, 0x00, 0x84, "SUPERNET"}, { 0x00, 0x00, 0x85, "CANON INC."}, { 0x00, 0x00, 0x86, "MEGAHERTZ CORPORATION"}, { 0x00, 0x00, 0x87, "HITACHI, LTD."}, { 0x00, 0x00, 0x88, "COMPUTER NETWORK TECH. CORP."}, { 0x00, 0x00, 0x89, "CAYMAN SYSTEMS INC."}, { 0x00, 0x00, 0x8A, "DATAHOUSE INFORMATION SYSTEMS"}, { 0x00, 0x00, 0x8B, "INFOTRON"}, { 0x00, 0x00, 0x8C, "ALLOY COMPUTER PRODUCTS, INC."}, { 0x00, 0x00, 0x8D, "VERDIX CORPORATION"}, { 0x00, 0x00, 0x8E, "SOLBOURNE COMPUTER, INC."}, { 0x00, 0x00, 0x8F, "RAYTHEON COMPANY"}, { 0x00, 0x00, 0x90, "MICROCOM"}, { 0x00, 0x00, 0x91, "ANRITSU CORPORATION"}, { 0x00, 0x00, 0x92, "COGENT DATA TECHNOLOGIES"}, { 0x00, 0x00, 0x93, "PROTEON INC."}, { 0x00, 0x00, 0x94, "ASANTE TECHNOLOGIES"}, { 0x00, 0x00, 0x95, "SONY TEKTRONIX CORP."}, { 0x00, 0x00, 0x96, "MARCONI ELECTRONICS LTD."}, { 0x00, 0x00, 0x97, "EPOCH SYSTEMS"}, { 0x00, 0x00, 0x98, "CROSSCOMM CORPORATION"}, { 0x00, 0x00, 0x99, "MTX, INC."}, { 0x00, 0x00, 0x9A, "RC COMPUTER A/S"}, { 0x00, 0x00, 0x9B, "INFORMATION INTERNATIONAL, INC"}, { 0x00, 0x00, 0x9C, "ROLM MIL-SPEC COMPUTERS"}, { 0x00, 0x00, 0x9D, "LOCUS COMPUTING CORPORATION"}, { 0x00, 0x00, 0x9E, "MARLI S.A."}, { 0x00, 0x00, 0x9F, "AMERISTAR TECHNOLOGIES INC."}, { 0x00, 0x00, 0xA0, "TOKYO SANYO ELECTRIC CO. LTD."}, { 0x00, 0x00, 0xA1, "MARQUETTE ELECTRIC CO."}, { 0x00, 0x00, 0xA2, "BAY NETWORKS"}, { 0x00, 0x00, 0xA3, "NETWORK APPLICATION TECHNOLOGY"}, { 0x00, 0x00, 0xA4, "ACORN COMPUTERS LIMITED"}, { 0x00, 0x00, 0xA5, "COMPATIBLE SYSTEMS CORP."}, { 0x00, 0x00, 0xA6, "NETWORK GENERAL CORPORATION"}, { 0x00, 0x00, 0xA7, "NETWORK COMPUTING DEVICES INC."}, { 0x00, 0x00, 0xA8, "STRATUS COMPUTER INC."}, { 0x00, 0x00, 0xA9, "NETWORK SYSTEMS CORP."}, { 0x00, 0x00, 0xAA, "XEROX CORPORATION"}, { 0x00, 0x00, 0xAB, "LOGIC MODELING CORPORATION"}, { 0x00, 0x00, 0xAC, "CONWARE COMPUTER CONSULTING"}, { 0x00, 0x00, 0xAD, "BRUKER INSTRUMENTS INC."}, { 0x00, 0x00, 0xAE, "DASSAULT ELECTRONIQUE"}, { 0x00, 0x00, 0xAF, "NUCLEAR DATA INSTRUMENTATION"}, { 0x00, 0x00, 0xB0, "RND-RAD NETWORK DEVICES"}, { 0x00, 0x00, 0xB1, "ALPHA MICROSYSTEMS INC."}, { 0x00, 0x00, 0xB2, "TELEVIDEO SYSTEMS, INC."}, { 0x00, 0x00, 0xB3, "CIMLINC INCORPORATED"}, { 0x00, 0x00, 0xB4, "EDIMAX COMPUTER COMPANY"}, { 0x00, 0x00, 0xB5, "DATABILITY SOFTWARE SYS. INC."}, { 0x00, 0x00, 0xB6, "MICRO-MATIC RESEARCH"}, { 0x00, 0x00, 0xB7, "DOVE COMPUTER CORPORATION"}, { 0x00, 0x00, 0xB8, "SEIKOSHA CO., LTD."}, { 0x00, 0x00, 0xB9, "MCDONNELL DOUGLAS COMPUTER SYS"}, { 0x00, 0x00, 0xBA, "SIIG, INC."}, { 0x00, 0x00, 0xBB, "TRI-DATA"}, { 0x00, 0x00, 0xBC, "ALLEN-BRADLEY CO. INC."}, { 0x00, 0x00, 0xBD, "MITSUBISHI CABLE COMPANY"}, { 0x00, 0x00, 0xBE, "THE NTI GROUP"}, { 0x00, 0x00, 0xBF, "SYMMETRIC COMPUTER SYSTEMS"}, { 0x00, 0x00, 0xC0, "WESTERN DIGITAL CORPORATION"}, { 0x00, 0x00, 0xC1, "Madge Networks Ltd."}, { 0x00, 0x00, 0xC2, "INFORMATION PRESENTATION TECH."}, { 0x00, 0x00, 0xC3, "HARRIS CORP COMPUTER SYS DIV"}, { 0x00, 0x00, 0xC4, "WATERS DIV. OF MILLIPORE"}, { 0x00, 0x00, 0xC5, "FARALLON COMPUTING/NETOPIA"}, { 0x00, 0x00, 0xC6, "EON SYSTEMS"}, { 0x00, 0x00, 0xC7, "ARIX CORPORATION"}, { 0x00, 0x00, 0xC8, "ALTOS COMPUTER SYSTEMS"}, { 0x00, 0x00, 0xC9, "EMULEX CORPORATION"}, { 0x00, 0x00, 0xCA, "APPLITEK"}, { 0x00, 0x00, 0xCB, "COMPU-SHACK ELECTRONIC GMBH"}, { 0x00, 0x00, 0xCC, "DENSAN CO., LTD."}, { 0x00, 0x00, 0xCD, "Centrecom Systems, Ltd."}, { 0x00, 0x00, 0xCE, "MEGADATA CORP."}, { 0x00, 0x00, 0xCF, "HAYES MICROCOMPUTER PRODUCTS"}, { 0x00, 0x00, 0xD0, "DEVELCON ELECTRONICS LTD."}, { 0x00, 0x00, 0xD1, "ADAPTEC INCORPORATED"}, { 0x00, 0x00, 0xD2, "SBE, INC."}, { 0x00, 0x00, 0xD3, "WANG LABORATORIES INC."}, { 0x00, 0x00, 0xD4, "PURE DATA LTD."}, { 0x00, 0x00, 0xD5, "MICROGNOSIS INTERNATIONAL"}, { 0x00, 0x00, 0xD6, "PUNCH LINE HOLDING"}, { 0x00, 0x00, 0xD7, "DARTMOUTH COLLEGE"}, { 0x00, 0x00, 0xD8, "NOVELL, INC."}, { 0x00, 0x00, 0xD9, "NIPPON TELEGRAPH & TELEPHONE"}, { 0x00, 0x00, 0xDA, "ATEX"}, { 0x00, 0x00, 0xDB, "BRITISH TELECOMMUNICATIONS PLC"}, { 0x00, 0x00, 0xDC, "HAYES MICROCOMPUTER PRODUCTS"}, { 0x00, 0x00, 0xDD, "TCL INCORPORATED"}, { 0x00, 0x00, 0xDE, "CETIA"}, { 0x00, 0x00, 0xDF, "BELL & HOWELL PUB SYS DIV"}, { 0x00, 0x00, 0xE0, "QUADRAM CORP."}, { 0x00, 0x00, 0xE1, "GRID SYSTEMS"}, { 0x00, 0x00, 0xE2, "ACER TECHNOLOGIES CORP."}, { 0x00, 0x00, 0xE3, "INTEGRATED MICRO PRODUCTS LTD"}, { 0x00, 0x00, 0xE4, "IN2 GROUPE INTERTECHNIQUE"}, { 0x00, 0x00, 0xE5, "SIGMEX LTD."}, { 0x00, 0x00, 0xE6, "APTOR PRODUITS DE COMM INDUST"}, { 0x00, 0x00, 0xE7, "STAR GATE TECHNOLOGIES"}, { 0x00, 0x00, 0xE8, "ACCTON TECHNOLOGY CORP."}, { 0x00, 0x00, 0xE9, "ISICAD, INC."}, { 0x00, 0x00, 0xEA, "UPNOD AB"}, { 0x00, 0x00, 0xEB, "MATSUSHITA COMM. IND. CO. LTD."}, { 0x00, 0x00, 0xEC, "MICROPROCESS"}, { 0x00, 0x00, 0xED, "APRIL"}, { 0x00, 0x00, 0xEE, "NETWORK DESIGNERS, LTD."}, { 0x00, 0x00, 0xEF, "KTI"}, { 0x00, 0x00, 0xF0, "SAMSUNG ELECTRONICS CO., LTD."}, { 0x00, 0x00, 0xF1, "MAGNA COMPUTER CORPORATION"}, { 0x00, 0x00, 0xF2, "SPIDER COMMUNICATIONS"}, { 0x00, 0x00, 0xF3, "GANDALF DATA LIMITED"}, { 0x00, 0x00, 0xF4, "ALLIED TELESYN INTERNATIONAL"}, { 0x00, 0x00, 0xF5, "DIAMOND SALES LIMITED"}, { 0x00, 0x00, 0xF6, "APPLIED MICROSYSTEMS CORP."}, { 0x00, 0x00, 0xF7, "YOUTH KEEP ENTERPRISE CO LTD"}, { 0x00, 0x00, 0xF8, "DIGITAL EQUIPMENT CORPORATION"}, { 0x00, 0x00, 0xF9, "QUOTRON SYSTEMS INC."}, { 0x00, 0x00, 0xFA, "MICROSAGE COMPUTER SYSTEMS INC"}, { 0x00, 0x00, 0xFB, "RECHNER ZUR KOMMUNIKATION"}, { 0x00, 0x00, 0xFC, "MEIKO"}, { 0x00, 0x00, 0xFD, "HIGH LEVEL HARDWARE"}, { 0x00, 0x00, 0xFE, "ANNAPOLIS MICRO SYSTEMS"}, { 0x00, 0x00, 0xFF, "CAMTEC ELECTRONICS LTD."}, { 0x00, 0x01, 0x00, "EQUIP'TRANS"}, { 0x00, 0x01, 0x02, "3COM CORPORATION"}, { 0x00, 0x01, 0x03, "3COM CORPORATION"}, { 0x00, 0x01, 0x04, "DVICO Co., Ltd."}, { 0x00, 0x01, 0x05, "BECKHOFF GmbH"}, { 0x00, 0x01, 0x06, "Tews Datentechnik GmbH"}, { 0x00, 0x01, 0x07, "Leiser GmbH"}, { 0x00, 0x01, 0x08, "AVLAB Technology, Inc."}, { 0x00, 0x01, 0x09, "Nagano Japan Radio Co., Ltd."}, { 0x00, 0x01, 0x0A, "CIS TECHNOLOGY INC."}, { 0x00, 0x01, 0x0B, "Space CyberLink, Inc."}, { 0x00, 0x01, 0x0C, "System Talks Inc."}, { 0x00, 0x01, 0x0D, "CORECO, INC."}, { 0x00, 0x01, 0x0E, "Bri-Link Technologies Co., Ltd"}, { 0x00, 0x01, 0x0F, "Nishan Systems, Inc."}, { 0x00, 0x01, 0x10, "Gotham Networks"}, { 0x00, 0x01, 0x11, "iDigm Inc."}, { 0x00, 0x01, 0x12, "Shark Multimedia Inc."}, { 0x00, 0x01, 0x13, "OLYMPUS OPTICAL CO., LTD."}, { 0x00, 0x01, 0x14, "KANDA TSUSHIN KOGYO CO., LTD."}, { 0x00, 0x01, 0x15, "EXTRATECH CORPORATION"}, { 0x00, 0x01, 0x16, "Netspect Technologies, Inc."}, { 0x00, 0x01, 0x17, "CANAL +"}, { 0x00, 0x01, 0x18, "EZ Digital Co., Ltd."}, { 0x00, 0x01, 0x19, "Action Controls Pty. Ltd."}, { 0x00, 0x01, 0x1A, "EEH DataLink GmbH"}, { 0x00, 0x01, 0x1B, "Unizone Technologies, Inc."}, { 0x00, 0x01, 0x1C, "Universal Talkware Corporation"}, { 0x00, 0x01, 0x1D, "Centillium Communications"}, { 0x00, 0x01, 0x1E, "Precidia Technologies, Inc."}, { 0x00, 0x01, 0x1F, "RC Networks, Inc."}, { 0x00, 0x01, 0x20, "OSCILLOQUARTZ S.A."}, { 0x00, 0x01, 0x21, "RapidStream Inc."}, { 0x00, 0x01, 0x22, "Trend Communications, Ltd."}, { 0x00, 0x01, 0x23, "DIGITAL ELECTRONICS CORP."}, { 0x00, 0x01, 0x24, "Acer Incorporated"}, { 0x00, 0x01, 0x25, "YAESU MUSEN CO., LTD."}, { 0x00, 0x01, 0x26, "PAC Labs"}, { 0x00, 0x01, 0x27, "The OPEN Group Limited"}, { 0x00, 0x01, 0x28, "EnjoyWeb, Inc."}, { 0x00, 0x01, 0x29, "DFI Inc."}, { 0x00, 0x01, 0x2A, "Telematica Sistems Inteligente"}, { 0x00, 0x01, 0x2B, "TELENET Co., Ltd."}, { 0x00, 0x01, 0x2C, "Aravox Technologies, Inc."}, { 0x00, 0x01, 0x2D, "Komodo Technology"}, { 0x00, 0x01, 0x2E, "PC Partner Ltd."}, { 0x00, 0x01, 0x2F, "Twinhead International Corp"}, { 0x00, 0x01, 0x30, "Extreme Networks"}, { 0x00, 0x01, 0x31, "Detection Systems, Inc."}, { 0x00, 0x01, 0x32, "Dranetz - BMI"}, { 0x00, 0x01, 0x33, "KYOWA Electronic Instruments C"}, { 0x00, 0x01, 0x34, "SIG Positec Systems AG"}, { 0x00, 0x01, 0x35, "KDC Corp."}, { 0x00, 0x01, 0x36, "CyberTAN Technology, Inc."}, { 0x00, 0x01, 0x37, "IT Farm Corporation"}, { 0x00, 0x01, 0x38, "XAVi Technologies Corp."}, { 0x00, 0x01, 0x39, "Point Multimedia Systems"}, { 0x00, 0x01, 0x3A, "SHELCAD COMMUNICATIONS, LTD."}, { 0x00, 0x01, 0x3B, "BNA SYSTEMS"}, { 0x00, 0x01, 0x3C, "TIW SYSTEMS"}, { 0x00, 0x01, 0x3D, "RiscStation Ltd."}, { 0x00, 0x01, 0x3E, "Ascom Tateco AB"}, { 0x00, 0x01, 0x3F, "Neighbor World Co., Ltd."}, { 0x00, 0x01, 0x40, "Sendtek Corporation"}, { 0x00, 0x01, 0x41, "CABLE PRINT"}, { 0x00, 0x01, 0x42, "Cisco Systems, Inc."}, { 0x00, 0x01, 0x43, "Cisco Systems, Inc."}, { 0x00, 0x01, 0x44, "Cereva Networks, Inc."}, { 0x00, 0x01, 0x45, "WINSYSTEMS, INC."}, { 0x00, 0x01, 0x46, "Tesco Controls, Inc."}, { 0x00, 0x01, 0x47, "Zhone Technologies"}, { 0x00, 0x01, 0x48, "X-traWeb Inc."}, { 0x00, 0x01, 0x49, "T.D.T. Transfer Data Test GmbH"}, { 0x00, 0x01, 0x4A, "SONY COMPUTER SCIENCE LABS., I"}, { 0x00, 0x01, 0x4B, "Ennovate Networks, Inc."}, { 0x00, 0x01, 0x4C, "Berkeley Process Control"}, { 0x00, 0x01, 0x4D, "Shin Kin Enterprises Co., Ltd"}, { 0x00, 0x01, 0x4E, "WIN Enterprises, Inc."}, { 0x00, 0x01, 0x4F, "LUMINOUS Networks, Inc."}, { 0x00, 0x01, 0x50, "GILAT COMMUNICATIONS, LTD."}, { 0x00, 0x01, 0x51, "Ensemble Communications"}, { 0x00, 0x01, 0x52, "CHROMATEK INC."}, { 0x00, 0x01, 0x53, "ARCHTEK TELECOM CORPORATION"}, { 0x00, 0x01, 0x54, "G3M Corporation"}, { 0x00, 0x01, 0x55, "Promise Technology, Inc."}, { 0x00, 0x01, 0x56, "FIREWIREDIRECT.COM, INC."}, { 0x00, 0x01, 0x57, "SYSWAVE CO., LTD"}, { 0x00, 0x01, 0x58, "Electro Industries/Gauge Tech"}, { 0x00, 0x01, 0x59, "S1 Corporation"}, { 0x00, 0x01, 0x5A, "Digital Video Broadcasting"}, { 0x00, 0x01, 0x5B, "ITALTEL S.p.A/RF-UP-I"}, { 0x00, 0x01, 0x5C, "CADANT INC."}, { 0x00, 0x01, 0x5D, "Pirus Networks"}, { 0x00, 0x01, 0x5E, "BEST TECHNOLOGY CO., LTD."}, { 0x00, 0x01, 0x5F, "DIGITAL DESIGN GmbH"}, { 0x00, 0x01, 0x60, "ELMEX Co., LTD."}, { 0x00, 0x01, 0x61, "Meta Machine Technology"}, { 0x00, 0x01, 0x62, "Cygnet Technologies, Inc."}, { 0x00, 0x01, 0x63, "Cisco Systems, Inc."}, { 0x00, 0x01, 0x64, "Cisco Systems, Inc."}, { 0x00, 0x01, 0x65, "AirSwitch Corporation"}, { 0x00, 0x01, 0x66, "TC GROUP A/S"}, { 0x00, 0x01, 0x67, "HIOKI E.E. CORPORATION"}, { 0x00, 0x01, 0x68, "VITANA CORPORATION"}, { 0x00, 0x01, 0x69, "Celestix Networks Pte Ltd."}, { 0x00, 0x01, 0x6A, "ALITEC"}, { 0x00, 0x01, 0x6B, "LightChip, Inc."}, { 0x00, 0x01, 0x6C, "FOXCONN"}, { 0x00, 0x01, 0x6D, "Triton Network Systems"}, { 0x00, 0x01, 0x6E, "Conklin Corporation"}, { 0x00, 0x01, 0x6F, "HAITAI ELECTRONICS CO., LTD."}, { 0x00, 0x01, 0x70, "ESE Embedded System Engineer'g"}, { 0x00, 0x01, 0x71, "Allied Data Technologies"}, { 0x00, 0x01, 0x72, "TechnoLand Co., LTD."}, { 0x00, 0x01, 0x73, "JNI Corporation"}, { 0x00, 0x01, 0x74, "CyberOptics Corporation"}, { 0x00, 0x01, 0x75, "Radiant Communications Corp."}, { 0x00, 0x01, 0x76, "Orient Silver Enterprises"}, { 0x00, 0x01, 0x77, "EDSL"}, { 0x00, 0x01, 0x78, "MARGI Systems, Inc."}, { 0x00, 0x01, 0x79, "WIRELESS TECHNOLOGY, INC."}, { 0x00, 0x01, 0x7A, "Chengdu Maipu Electric Industrial Co., Ltd."}, { 0x00, 0x01, 0x7B, "Heidelberger Druckmaschinen AG"}, { 0x00, 0x01, 0x7C, "AG-E GmbH"}, { 0x00, 0x01, 0x7D, "ThermoQuest"}, { 0x00, 0x01, 0x7E, "ADTEK System Science Co., Ltd."}, { 0x00, 0x01, 0x7F, "Experience Music Project"}, { 0x00, 0x01, 0x80, "AOpen, Inc."}, { 0x00, 0x01, 0x81, "Nortel Networks"}, { 0x00, 0x01, 0x82, "DICA TECHNOLOGIES AG"}, { 0x00, 0x01, 0x83, "ANITE TELECOMS"}, { 0x00, 0x01, 0x84, "SIEB & MEYER AG"}, { 0x00, 0x01, 0x85, "Aloka Co., Ltd."}, { 0x00, 0x01, 0x86, "DISCH GmbH"}, { 0x00, 0x01, 0x87, "i2SE GmbH"}, { 0x00, 0x01, 0x88, "LXCO Technologies ag"}, { 0x00, 0x01, 0x89, "Refraction Technology, Inc."}, { 0x00, 0x01, 0x8A, "ROI COMPUTER AG"}, { 0x00, 0x01, 0x8B, "NetLinks Co., Ltd."}, { 0x00, 0x01, 0x8C, "Mega Vision"}, { 0x00, 0x01, 0x8D, "AudeSi Technologies"}, { 0x00, 0x01, 0x8E, "Logitec Corporation"}, { 0x00, 0x01, 0x8F, "Kenetec, Inc."}, { 0x00, 0x01, 0x90, "SMK-M"}, { 0x00, 0x01, 0x91, "SYRED Data Systems"}, { 0x00, 0x01, 0x92, "Texas Digital Systems"}, { 0x00, 0x01, 0x93, "Hanbyul Telecom Co., Ltd."}, { 0x00, 0x01, 0x94, "Capital Equipment Corporation"}, { 0x00, 0x01, 0x95, "Sena Technologies, Inc."}, { 0x00, 0x01, 0x96, "Cisco Systems, Inc."}, { 0x00, 0x01, 0x97, "Cisco Systems, Inc."}, { 0x00, 0x01, 0x98, "Darim Vision"}, { 0x00, 0x01, 0x99, "HeiSei Electronics"}, { 0x00, 0x01, 0x9A, "LEUNIG GmbH"}, { 0x00, 0x01, 0x9B, "Kyoto Microcomputer Co., Ltd."}, { 0x00, 0x01, 0x9C, "JDS Uniphase Inc."}, { 0x00, 0x01, 0x9D, "E-Control Systems, Inc."}, { 0x00, 0x01, 0x9E, "ESS Technology, Inc."}, { 0x00, 0x01, 0x9F, "Phonex Broadband"}, { 0x00, 0x01, 0xA0, "Infinilink Corporation"}, { 0x00, 0x01, 0xA1, "Mag-Tek, Inc."}, { 0x00, 0x01, 0xA2, "Logical Co., Ltd."}, { 0x00, 0x01, 0xA3, "GENESYS LOGIC, INC."}, { 0x00, 0x01, 0xA4, "Microlink Corporation"}, { 0x00, 0x01, 0xA5, "Nextcomm, Inc."}, { 0x00, 0x01, 0xA6, "Scientific-Atlanta Arcodan A/S"}, { 0x00, 0x01, 0xA7, "UNEX TECHNOLOGY CORPORATION"}, { 0x00, 0x01, 0xA8, "Welltech Computer Co., Ltd."}, { 0x00, 0x01, 0xA9, "BMW AG"}, { 0x00, 0x01, 0xAA, "Airspan Communications, Ltd."}, { 0x00, 0x01, 0xAB, "Main Street Networks"}, { 0x00, 0x01, 0xAC, "Sitara Networks, Inc."}, { 0x00, 0x01, 0xAD, "Coach Master International d.b.a. CMI Worldwide, Inc."}, { 0x00, 0x01, 0xAE, "Trex Enterprises"}, { 0x00, 0x01, 0xAF, "Motorola Computer Group"}, { 0x00, 0x01, 0xB0, "Fulltek Technology Co., Ltd."}, { 0x00, 0x01, 0xB1, "General Bandwidth"}, { 0x00, 0x01, 0xB2, "Digital Processing Systems, Inc."}, { 0x00, 0x01, 0xB3, "Precision Electronic Manufacturing"}, { 0x00, 0x01, 0xB4, "Wayport, Inc."}, { 0x00, 0x01, 0xB5, "Turin Networks, Inc."}, { 0x00, 0x01, 0xB6, "SAEJIN T&M Co., Ltd."}, { 0x00, 0x01, 0xB7, "Centos, Inc."}, { 0x00, 0x01, 0xB8, "Netsensity, Inc."}, { 0x00, 0x01, 0xB9, "SKF Condition Monitoring"}, { 0x00, 0x01, 0xBA, "IC-Net, Inc."}, { 0x00, 0x01, 0xBB, "Frequentis"}, { 0x00, 0x01, 0xBC, "Brains Corporation"}, { 0x00, 0x01, 0xBD, "Peterson Electro-Musical Products, Inc."}, { 0x00, 0x01, 0xBE, "Gigalink Co., Ltd."}, { 0x00, 0x01, 0xBF, "Teleforce Co., Ltd."}, { 0x00, 0x01, 0xC0, "CompuLab, Ltd."}, { 0x00, 0x01, 0xC1, "Exbit Technology"}, { 0x00, 0x01, 0xC2, "ARK Research Corp."}, { 0x00, 0x01, 0xC3, "Acromag, Inc."}, { 0x00, 0x01, 0xC4, "NeoWave, Inc."}, { 0x00, 0x01, 0xC5, "Simpler Networks"}, { 0x00, 0x01, 0xC6, "Quarry Technologies"}, { 0x00, 0x01, 0xC7, "Cisco Systems, Inc."}, { 0x00, 0x01, 0xC8, "THOMAS CONRAD CORP."}, { 0x00, 0x01, 0xC8, "CONRAD CORP."}, { 0x00, 0x01, 0xC9, "Cisco Systems, Inc."}, { 0x00, 0x01, 0xCA, "Geocast Network Systems, Inc."}, { 0x00, 0x01, 0xCB, "NetGame, Ltd."}, { 0x00, 0x01, 0xCC, "Japan Total Design Communication Co., Ltd."}, { 0x00, 0x01, 0xCD, "ARtem"}, { 0x00, 0x01, 0xCE, "Custom Micro Products, Ltd."}, { 0x00, 0x01, 0xCF, "Alpha Data Parallel Systems, Ltd."}, { 0x00, 0x01, 0xD0, "VitalPoint, Inc."}, { 0x00, 0x01, 0xD1, "CoNet Communications, Inc."}, { 0x00, 0x01, 0xD2, "MacPower Peripherals, Ltd."}, { 0x00, 0x01, 0xD3, "PAXCOMM, Inc."}, { 0x00, 0x01, 0xD4, "Leisure Time, Inc."}, { 0x00, 0x01, 0xD5, "HAEDONG INFO & COMM CO., LTD"}, { 0x00, 0x01, 0xD6, "MAN Roland Druckmaschinen AG"}, { 0x00, 0x01, 0xD7, "F5 Networks, Inc."}, { 0x00, 0x01, 0xD8, "Teltronics, Inc."}, { 0x00, 0x01, 0xD9, "Sigma, Inc."}, { 0x00, 0x01, 0xDA, "WINCOMM Corporation"}, { 0x00, 0x01, 0xDB, "Freecom Technologies GmbH"}, { 0x00, 0x01, 0xDC, "Activetelco"}, { 0x00, 0x01, 0xDD, "Avail Networks"}, { 0x00, 0x01, 0xDE, "Trango Systems, Inc."}, { 0x00, 0x01, 0xDF, "ISDN Communications, Ltd."}, { 0x00, 0x01, 0xE0, "Fast Systems, Inc."}, { 0x00, 0x01, 0xE1, "Kinpo Electronics, Inc."}, { 0x00, 0x01, 0xE2, "Ando Electric Corporation"}, { 0x00, 0x01, 0xE3, "Siemens AG"}, { 0x00, 0x01, 0xE4, "Sitera, Inc."}, { 0x00, 0x01, 0xE5, "Supernet, Inc."}, { 0x00, 0x01, 0xE6, "Hewlett-Packard Company"}, { 0x00, 0x01, 0xE7, "Hewlett-Packard Company"}, { 0x00, 0x01, 0xE8, "Force10 Networks, Inc."}, { 0x00, 0x01, 0xE9, "Litton Marine Systems B.V."}, { 0x00, 0x01, 0xEA, "Cirilium Corp."}, { 0x00, 0x01, 0xEB, "C-COM Corporation"}, { 0x00, 0x01, 0xEC, "Ericsson Group"}, { 0x00, 0x01, 0xED, "SETA Corp."}, { 0x00, 0x01, 0xEE, "Comtrol Europe, Ltd."}, { 0x00, 0x01, 0xEF, "Camtel Technology Corp."}, { 0x00, 0x01, 0xF0, "Tridium, Inc."}, { 0x00, 0x01, 0xF1, "Innovative Concepts, Inc."}, { 0x00, 0x01, 0xF2, "Mark of the Unicorn, Inc."}, { 0x00, 0x01, 0xF3, "QPS, Inc."}, { 0x00, 0x01, 0xF4, "Enterasys Networks"}, { 0x00, 0x01, 0xF5, "ERIM S.A."}, { 0x00, 0x01, 0xF6, "Association of Musical Electronics Industry"}, { 0x00, 0x01, 0xF7, "Image Display Systems, Inc."}, { 0x00, 0x01, 0xF8, "Adherent Systems, Ltd."}, { 0x00, 0x01, 0xF9, "TeraGlobal Communications Corp."}, { 0x00, 0x01, 0xFA, "HOROSCAS"}, { 0x00, 0x01, 0xFB, "DoTop Technology, Inc."}, { 0x00, 0x01, 0xFC, "Keyence Corporation"}, { 0x00, 0x01, 0xFD, "Digital Voice Systems, Inc."}, { 0x00, 0x01, 0xFE, "DIGITAL EQUIPMENT CORPORATION"}, { 0x00, 0x01, 0xFF, "Data Direct Networks, Inc."}, { 0x00, 0x02, 0x00, "Net & Sys Co., Ltd."}, { 0x00, 0x02, 0x01, "IFM Electronic gmbh"}, { 0x00, 0x02, 0x02, "Amino Communications, Ltd."}, { 0x00, 0x02, 0x03, "Woonsang Telecom, Inc."}, { 0x00, 0x02, 0x04, "Bodmann Industries Elektronik GmbH"}, { 0x00, 0x02, 0x05, "Hitachi Denshi, Ltd."}, { 0x00, 0x02, 0x06, "Telital R&D Denmark A/S"}, { 0x00, 0x02, 0x08, "Unify Networks, Inc."}, { 0x00, 0x02, 0x09, "Shenzhen SED Information Technology Co., Ltd."}, { 0x00, 0x02, 0x0A, "Gefran Spa"}, { 0x00, 0x02, 0x0B, "Native Networks, Inc."}, { 0x00, 0x02, 0x0C, "Metro-Optix"}, { 0x00, 0x02, 0x0D, "Micronpc.com"}, { 0x00, 0x02, 0x0E, "Laurel Networks, Inc."}, { 0x00, 0x02, 0x0F, "AATR"}, { 0x00, 0x02, 0x10, "Fenecom"}, { 0x00, 0x02, 0x11, "Nature Worldwide Technology Corp."}, { 0x00, 0x02, 0x12, "SierraCom"}, { 0x00, 0x02, 0x13, "S.D.E.L."}, { 0x00, 0x02, 0x14, "DTVRO"}, { 0x00, 0x02, 0x15, "Cotas Computer Technology A/B"}, { 0x00, 0x02, 0x16, "Cisco Systems, Inc."}, { 0x00, 0x02, 0x17, "Cisco Systems, Inc."}, { 0x00, 0x02, 0x18, "Advanced Scientific Corp"}, { 0x00, 0x02, 0x19, "Paralon Technologies"}, { 0x00, 0x02, 0x1A, "Zuma Networks"}, { 0x00, 0x02, 0x1B, "Kollmorgen-Servotronix"}, { 0x00, 0x02, 0x1C, "Network Elements, Inc."}, { 0x00, 0x02, 0x1D, "Data General Communication Ltd."}, { 0x00, 0x02, 0x1E, "SIMTEL S.R.L."}, { 0x00, 0x02, 0x1F, "Aculab PLC"}, { 0x00, 0x02, 0x20, "Canon Aptex, Inc."}, { 0x00, 0x02, 0x21, "DSP Application, Ltd."}, { 0x00, 0x02, 0x22, "Chromisys, Inc."}, { 0x00, 0x02, 0x23, "ClickTV"}, { 0x00, 0x02, 0x24, "Lantern Communications, Inc."}, { 0x00, 0x02, 0x25, "Certus Technology, Inc."}, { 0x00, 0x02, 0x26, "XESystems, Inc."}, { 0x00, 0x02, 0x27, "ESD GmbH"}, { 0x00, 0x02, 0x28, "Necsom, Ltd."}, { 0x00, 0x02, 0x29, "Adtec Corporation"}, { 0x00, 0x02, 0x2A, "Asound Electronic"}, { 0x00, 0x02, 0x2B, "Tamura Electric Works, Ltd."}, { 0x00, 0x02, 0x2C, "ABB Bomem, Inc."}, { 0x00, 0x02, 0x2D, "Agere Systems"}, { 0x00, 0x02, 0x2E, "TEAC Corp. R& D"}, { 0x00, 0x02, 0x2F, "P-Cube, Ltd."}, { 0x00, 0x02, 0x30, "Intersoft Electronics"}, { 0x00, 0x02, 0x31, "Ingersoll-Rand"}, { 0x00, 0x02, 0x32, "Avision, Inc."}, { 0x00, 0x02, 0x33, "Mantra Communications, Inc."}, { 0x00, 0x02, 0x34, "Imperial Technology, Inc."}, { 0x00, 0x02, 0x35, "Paragon Networks International"}, { 0x00, 0x02, 0x36, "INIT GmbH"}, { 0x00, 0x02, 0x37, "Cosmo Research Corp."}, { 0x00, 0x02, 0x38, "Serome Technology, Inc."}, { 0x00, 0x02, 0x39, "Visicom"}, { 0x00, 0x02, 0x3A, "ZSK Stickmaschinen GmbH"}, { 0x00, 0x02, 0x3B, "Redback Networks"}, { 0x00, 0x02, 0x3C, "Creative Technology, Ltd."}, { 0x00, 0x02, 0x3D, "NuSpeed, Inc."}, { 0x00, 0x02, 0x3E, "Selta Telematica S.p.a"}, { 0x00, 0x02, 0x3F, "Compal Electronics, Inc."}, { 0x00, 0x02, 0x40, "Seedek Co., Ltd."}, { 0x00, 0x02, 0x41, "Amer.com"}, { 0x00, 0x02, 0x42, "Videoframe Systems"}, { 0x00, 0x02, 0x43, "Raysis Co., Ltd."}, { 0x00, 0x02, 0x44, "SURECOM Technology Co."}, { 0x00, 0x02, 0x45, "Lampus Co, Ltd."}, { 0x00, 0x02, 0x46, "All-Win Tech Co., Ltd."}, { 0x00, 0x02, 0x47, "Great Dragon Information Technology (Group) Co., Ltd."}, { 0x00, 0x02, 0x48, "Pilz GmbH & Co."}, { 0x00, 0x02, 0x49, "Aviv Infocom Co, Ltd."}, { 0x00, 0x02, 0x4A, "Cisco Systems, Inc."}, { 0x00, 0x02, 0x4B, "Cisco Systems, Inc."}, { 0x00, 0x02, 0x4C, "SiByte, Inc."}, { 0x00, 0x02, 0x4D, "Mannesman Dematic Colby Pty. Ltd."}, { 0x00, 0x02, 0x4E, "Datacard Group"}, { 0x00, 0x02, 0x4F, "IPM Datacom S.R.L."}, { 0x00, 0x02, 0x50, "Geyser Networks, Inc."}, { 0x00, 0x02, 0x51, "Soma Networks"}, { 0x00, 0x02, 0x52, "Carrier Corporation"}, { 0x00, 0x02, 0x53, "Televideo, Inc."}, { 0x00, 0x02, 0x54, "WorldGate"}, { 0x00, 0x02, 0x55, "IBM Corporation"}, { 0x00, 0x02, 0x56, "Alpha Processor, Inc."}, { 0x00, 0x02, 0x57, "Microcom Corp."}, { 0x00, 0x02, 0x58, "Flying Packets Communications"}, { 0x00, 0x02, 0x59, "Tsann Kuen China (Shanghai)Enterprise Co., Ltd. IT Group"}, { 0x00, 0x02, 0x5A, "Catena Networks"}, { 0x00, 0x02, 0x5B, "Cambridge Silicon Radio"}, { 0x00, 0x02, 0x5C, "SCI Systems (Kunshan) Co., Ltd."}, { 0x00, 0x02, 0x5D, "Calix Networks"}, { 0x00, 0x02, 0x5E, "High Technology Ltd"}, { 0x00, 0x02, 0x5F, "Nortel Networks"}, { 0x00, 0x02, 0x60, "Accordion Networks, Inc."}, { 0x00, 0x02, 0x61, "i3 Micro Technology AB"}, { 0x00, 0x02, 0x62, "Soyo Group Soyo Com Tech Co., Ltd"}, { 0x00, 0x02, 0x63, "UPS Manufacturing SRL"}, { 0x00, 0x02, 0x64, "AudioRamp.com"}, { 0x00, 0x02, 0x65, "Virditech Co. Ltd."}, { 0x00, 0x02, 0x66, "Thermalogic Corporation"}, { 0x00, 0x02, 0x67, "NODE RUNNER, INC."}, { 0x00, 0x02, 0x68, "Harris Government Communications"}, { 0x00, 0x02, 0x69, "Nadatel Co., Ltd"}, { 0x00, 0x02, 0x6A, "Cocess Telecom Co., Ltd."}, { 0x00, 0x02, 0x6B, "BCM Computers Co., Ltd."}, { 0x00, 0x02, 0x6C, "Philips CFT"}, { 0x00, 0x02, 0x6D, "Adept Telecom"}, { 0x00, 0x02, 0x6E, "NeGeN Access, Inc."}, { 0x00, 0x02, 0x6F, "Senao International Co., Ltd."}, { 0x00, 0x02, 0x70, "Crewave Co., Ltd."}, { 0x00, 0x02, 0x71, "Vpacket Communications"}, { 0x00, 0x02, 0x72, "CC&C Technologies, Inc."}, { 0x00, 0x02, 0x73, "Coriolis Networks"}, { 0x00, 0x02, 0x74, "Tommy Technologies Corp."}, { 0x00, 0x02, 0x75, "SMART Technologies, Inc."}, { 0x00, 0x02, 0x76, "Primax Electronics Ltd."}, { 0x00, 0x02, 0x77, "Cash Systemes Industrie"}, { 0x00, 0x02, 0x78, "Samsung Electro-Mechanics Co., Ltd."}, { 0x00, 0x02, 0x79, "Control Applications, Ltd."}, { 0x00, 0x02, 0x7A, "IOI Technology Corporation"}, { 0x00, 0x02, 0x7B, "Amplify Net, Inc."}, { 0x00, 0x02, 0x7C, "Trilithic, Inc."}, { 0x00, 0x02, 0x7D, "Cisco Systems, Inc."}, { 0x00, 0x02, 0x7E, "Cisco Systems, Inc."}, { 0x00, 0x02, 0x7F, "ask-technologies.com"}, { 0x00, 0x02, 0x80, "Mu Net, Inc."}, { 0x00, 0x02, 0x81, "Madge Networks Limited"}, { 0x00, 0x02, 0x82, "ViaClix, Inc."}, { 0x00, 0x02, 0x83, "Spectrum Controls, Inc."}, { 0x00, 0x02, 0x84, "Alstom T&D P&C"}, { 0x00, 0x02, 0x85, "Riverstone Networks"}, { 0x00, 0x02, 0x86, "Occam Networks"}, { 0x00, 0x02, 0x87, "Adapcom"}, { 0x00, 0x02, 0x88, "GLOBAL VILLAGE COMMUNICATION"}, { 0x00, 0x02, 0x89, "DNE Technologies"}, { 0x00, 0x02, 0x8A, "Ambit Microsystems Corporation"}, { 0x00, 0x02, 0x8B, "VDSL Systems OY"}, { 0x00, 0x02, 0x8C, "Micrel-Synergy Semiconductor"}, { 0x00, 0x02, 0x8D, "Movita Technologies, Inc."}, { 0x00, 0x02, 0x8E, "Rapid 5 Networks, Inc."}, { 0x00, 0x02, 0x8F, "Globetek, Inc."}, { 0x00, 0x02, 0x90, "Woorigisool, Inc."}, { 0x00, 0x02, 0x91, "Open Network Co., Ltd."}, { 0x00, 0x02, 0x92, "Logic Innovations, Inc."}, { 0x00, 0x02, 0x93, "Solid Data Systems"}, { 0x00, 0x02, 0x94, "Tokyo Sokushin Co., Ltd."}, { 0x00, 0x02, 0x95, "IP.Access Limited"}, { 0x00, 0x02, 0x96, "Lectron Co,. Ltd."}, { 0x00, 0x02, 0x97, "C-COR.net"}, { 0x00, 0x02, 0x98, "Broadframe Corporation"}, { 0x00, 0x02, 0x99, "Apex, Inc."}, { 0x00, 0x02, 0x9A, "Storage Apps"}, { 0x00, 0x02, 0x9B, "Kreatel Communications AB"}, { 0x00, 0x02, 0x9C, "3COM"}, { 0x00, 0x02, 0x9D, "Merix Corp."}, { 0x00, 0x02, 0x9E, "Information Equipment Co., Ltd."}, { 0x00, 0x02, 0x9F, "L-3 Communication Aviation Recorders"}, { 0x00, 0x02, 0xA0, "Flatstack Ltd."}, { 0x00, 0x02, 0xA1, "World Wide Packets"}, { 0x00, 0x02, 0xA2, "Hilscher GmbH"}, { 0x00, 0x02, 0xA3, "ABB Power Automation"}, { 0x00, 0x02, 0xA4, "AddPac Technology Co., Ltd."}, { 0x00, 0x02, 0xA5, "Compaq Computer Corporation"}, { 0x00, 0x02, 0xA6, "Effinet Systems Co., Ltd."}, { 0x00, 0x02, 0xA7, "Vivace Networks"}, { 0x00, 0x02, 0xA8, "Air Link Technology"}, { 0x00, 0x02, 0xA9, "RACOM, s.r.o."}, { 0x00, 0x02, 0xAA, "PLcom Co., Ltd."}, { 0x00, 0x02, 0xAB, "CTC Union Technologies Co., Ltd."}, { 0x00, 0x02, 0xAC, "3PAR data"}, { 0x00, 0x02, 0xAD, "Asahi Optical Co., Ltd."}, { 0x00, 0x02, 0xAE, "Scannex Electronics Ltd."}, { 0x00, 0x02, 0xAF, "TeleCruz Technology, Inc."}, { 0x00, 0x02, 0xB0, "Hokubu Communication & Industrial Co., Ltd."}, { 0x00, 0x02, 0xB1, "Anritsu, Ltd."}, { 0x00, 0x02, 0xB2, "Cablevision"}, { 0x00, 0x02, 0xB3, "Intel Corporation"}, { 0x00, 0x02, 0xB4, "DAPHNE"}, { 0x00, 0x02, 0xB5, "Avnet, Inc."}, { 0x00, 0x02, 0xB6, "Acrosser Technology Co., Ltd."}, { 0x00, 0x02, 0xB7, "Watanabe Electric Industry Co., Ltd."}, { 0x00, 0x02, 0xB8, "WHI KONSULT AB"}, { 0x00, 0x02, 0xB9, "Cisco Systems, Inc."}, { 0x00, 0x02, 0xBA, "Cisco Systems, Inc."}, { 0x00, 0x02, 0xBB, "Continuous Computing"}, { 0x00, 0x02, 0xBC, "LVL 7 Systems, Inc."}, { 0x00, 0x02, 0xBD, "Bionet Co., Ltd."}, { 0x00, 0x02, 0xBE, "Totsu Engineering, Inc."}, { 0x00, 0x02, 0xBF, "dotRocket, Inc."}, { 0x00, 0x02, 0xC0, "Bencent Tzeng Industry Co., Ltd."}, { 0x00, 0x02, 0xC1, "Innovative Electronic Designs, Inc."}, { 0x00, 0x02, 0xC2, "Net Vision Telecom"}, { 0x00, 0x02, 0xC3, "Arelnet Ltd."}, { 0x00, 0x02, 0xC4, "Vector International BUBA"}, { 0x00, 0x02, 0xC5, "Evertz Microsystems Ltd."}, { 0x00, 0x02, 0xC6, "Data Track Technology PLC"}, { 0x00, 0x02, 0xC7, "ALPS ELECTRIC Co., Ltd."}, { 0x00, 0x02, 0xC8, "Technocom Communications Technology (pte) Ltd"}, { 0x00, 0x02, 0xC9, "Mellanox Technologies"}, { 0x00, 0x02, 0xCA, "EndPoints, Inc."}, { 0x00, 0x02, 0xCB, "TriState Ltd."}, { 0x00, 0x02, 0xCC, "M.C.C.I"}, { 0x00, 0x02, 0xCD, "TeleDream, Inc."}, { 0x00, 0x02, 0xCE, "FoxJet, Inc."}, { 0x00, 0x02, 0xCF, "ZyGate Communications, Inc."}, { 0x00, 0x02, 0xD0, "Comdial Corporation"}, { 0x00, 0x02, 0xD1, "Vivotek, Inc."}, { 0x00, 0x02, 0xD2, "Workstation AG"}, { 0x00, 0x02, 0xD3, "NetBotz, Inc."}, { 0x00, 0x02, 0xD4, "PDA Peripherals, Inc."}, { 0x00, 0x02, 0xD5, "ACR"}, { 0x00, 0x02, 0xD6, "NICE Systems"}, { 0x00, 0x02, 0xD7, "EMPEG Ltd"}, { 0x00, 0x02, 0xD8, "BRECIS Communications Corporation"}, { 0x00, 0x02, 0xD9, "Reliable Controls"}, { 0x00, 0x02, 0xDA, "ExiO Communications, Inc."}, { 0x00, 0x02, 0xDB, "NETSEC"}, { 0x00, 0x02, 0xDC, "Fujitsu General Limited"}, { 0x00, 0x02, 0xDD, "Bromax Communications, Ltd."}, { 0x00, 0x02, 0xDE, "Astrodesign, Inc."}, { 0x00, 0x02, 0xDF, "Net Com Systems, Inc."}, { 0x00, 0x02, 0xE0, "ETAS GmbH"}, { 0x00, 0x02, 0xE1, "Integrated Network Corporation"}, { 0x00, 0x02, 0xE2, "NDC Infared Engineering"}, { 0x00, 0x02, 0xE3, "LITE-ON Communications, Inc."}, { 0x00, 0x02, 0xE4, "JC HYUN Systems, Inc."}, { 0x00, 0x02, 0xE5, "Timeware Ltd."}, { 0x00, 0x02, 0xE6, "Gould Instrument Systems, Inc."}, { 0x00, 0x02, 0xE7, "CAB GmbH & Co KG"}, { 0x00, 0x02, 0xE8, "E.D.&A."}, { 0x00, 0x02, 0xE9, "CS Systemes De Securite - C3S"}, { 0x00, 0x02, 0xEA, "Videonics, Inc."}, { 0x00, 0x02, 0xEB, "Pico Communications"}, { 0x00, 0x02, 0xEC, "Maschoff Design Engineering"}, { 0x00, 0x02, 0xED, "DXO Telecom Co., Ltd."}, { 0x00, 0x02, 0xEE, "Nokia Danmark A/S"}, { 0x00, 0x02, 0xEF, "CCC Network Systems Group Ltd."}, { 0x00, 0x02, 0xF0, "AME Optimedia Technology Co., Ltd."}, { 0x00, 0x02, 0xF1, "Pinetron Co., Ltd."}, { 0x00, 0x02, 0xF2, "eDevice, Inc."}, { 0x00, 0x02, 0xF3, "Media Serve Co., Ltd."}, { 0x00, 0x02, 0xF4, "PCTEL, Inc."}, { 0x00, 0x02, 0xF5, "VIVE Synergies, Inc."}, { 0x00, 0x02, 0xF6, "Equipe Communications"}, { 0x00, 0x02, 0xF7, "ARM"}, { 0x00, 0x02, 0xF8, "SEAKR Engineering, Inc."}, { 0x00, 0x02, 0xF9, "Mimos Semiconductor SDN BHD"}, { 0x00, 0x02, 0xFA, "DX Antenna Co., Ltd."}, { 0x00, 0x02, 0xFB, "Baumuller Aulugen-Systemtechnik GmbH"}, { 0x00, 0x02, 0xFC, "Cisco Systems, Inc."}, { 0x00, 0x02, 0xFD, "Cisco Systems, Inc."}, { 0x00, 0x02, 0xFE, "Viditec, Inc."}, { 0x00, 0x02, 0xFF, "Handan Broad InfoCom"}, { 0x00, 0x03, 0x00, "NetContinuum, Inc."}, { 0x00, 0x03, 0x01, "Avantas Networks Corporation"}, { 0x00, 0x03, 0x02, "Oasys Telecom, Inc."}, { 0x00, 0x03, 0x03, "JAMA Electronics Co., Ltd."}, { 0x00, 0x03, 0x04, "Pacific Broadband Communications"}, { 0x00, 0x03, 0x05, "Smart Network Devices GmbH"}, { 0x00, 0x03, 0x06, "Fusion In Tech Co., Ltd."}, { 0x00, 0x03, 0x07, "Secure Works, Inc."}, { 0x00, 0x03, 0x08, "AM Communications, Inc."}, { 0x00, 0x03, 0x09, "Texcel Technology PLC"}, { 0x00, 0x03, 0x0A, "Argus Technologies"}, { 0x00, 0x03, 0x0B, "Hunter Technology, Inc."}, { 0x00, 0x03, 0x0C, "Telesoft Technologies Ltd."}, { 0x00, 0x03, 0x0D, "Uniwill Computer Corp."}, { 0x00, 0x03, 0x0E, "Core Communications Co., Ltd."}, { 0x00, 0x03, 0x0F, "Digital China (Shanghai) Networks Ltd."}, { 0x00, 0x03, 0x10, "Link Evolution Corp."}, { 0x00, 0x03, 0x11, "Micro Technology Co., Ltd."}, { 0x00, 0x03, 0x12, "TR-Systemtechnik GmbH"}, { 0x00, 0x03, 0x13, "Access Media SPA"}, { 0x00, 0x03, 0x14, "Teleware Network Systems"}, { 0x00, 0x03, 0x15, "Cidco Incorporated"}, { 0x00, 0x03, 0x16, "Nobell Communications, Inc."}, { 0x00, 0x03, 0x17, "Merlin Systems, Inc."}, { 0x00, 0x03, 0x18, "Cyras Systems, Inc."}, { 0x00, 0x03, 0x19, "Infineon AG"}, { 0x00, 0x03, 0x1A, "Beijing Broad Telecom Ltd., China"}, { 0x00, 0x03, 0x1B, "Cellvision Systems, Inc."}, { 0x00, 0x03, 0x1C, "Svenska Hardvarufabriken AB"}, { 0x00, 0x03, 0x1D, "Taiwan Commate Computer, Inc."}, { 0x00, 0x03, 0x1E, "Optranet, Inc."}, { 0x00, 0x03, 0x1F, "Condev Ltd."}, { 0x00, 0x03, 0x20, "Xpeed, Inc."}, { 0x00, 0x03, 0x21, "Reco Research Co., Ltd."}, { 0x00, 0x03, 0x22, "IDIS Co., Ltd."}, { 0x00, 0x03, 0x23, "Cornet Technology, Inc."}, { 0x00, 0x03, 0x24, "Tottori SANYO Electric Co., Ltd."}, { 0x00, 0x03, 0x25, "Arima Computer Corp."}, { 0x00, 0x03, 0x26, "Iwasaki Information Systems Co., Ltd."}, { 0x00, 0x03, 0x27, "ACT'L"}, { 0x00, 0x03, 0x29, "F3, Inc."}, { 0x00, 0x03, 0x2A, "UniData Communication Systems, Inc."}, { 0x00, 0x03, 0x2B, "GAI Datenfunksysteme GmbH"}, { 0x00, 0x03, 0x2C, "ABB Industrie AG"}, { 0x00, 0x03, 0x2D, "IBASE Technology, Inc."}, { 0x00, 0x03, 0x2E, "Scope Information Management, Ltd."}, { 0x00, 0x03, 0x2F, "Global Sun Technology, Inc."}, { 0x00, 0x03, 0x30, "Imagenics, Co., Ltd."}, { 0x00, 0x03, 0x31, "Cisco Systems, Inc."}, { 0x00, 0x03, 0x32, "Cisco Systems, Inc."}, { 0x00, 0x03, 0x33, "Digitel Co., Ltd."}, { 0x00, 0x03, 0x34, "Newport Electronics"}, { 0x00, 0x03, 0x35, "Mirae Technology"}, { 0x00, 0x03, 0x36, "Zetes Technologies"}, { 0x00, 0x03, 0x37, "Vaone, Inc."}, { 0x00, 0x03, 0x38, "Oak Technology"}, { 0x00, 0x03, 0x39, "Eurologic Systems, Ltd."}, { 0x00, 0x03, 0x3A, "Silicon Wave, Inc."}, { 0x00, 0x03, 0x3B, "TAMI Tech Co., Ltd."}, { 0x00, 0x03, 0x3C, "Daiden Co., Ltd."}, { 0x00, 0x03, 0x3D, "ILSHin Lab"}, { 0x00, 0x03, 0x3E, "Tateyama System Laboratory Co., Ltd."}, { 0x00, 0x03, 0x3F, "BigBand Networks, Ltd."}, { 0x00, 0x03, 0x40, "Floware Wireless Systems, Ltd."}, { 0x00, 0x03, 0x41, "Axon Digital Design"}, { 0x00, 0x03, 0x42, "Nortel Networks"}, { 0x00, 0x03, 0x43, "Martin Professional A/S"}, { 0x00, 0x03, 0x44, "Tietech.Co., Ltd."}, { 0x00, 0x03, 0x45, "Routrek Networks Corporation"}, { 0x00, 0x03, 0x46, "Hitachi Kokusai Electric, Inc."}, { 0x00, 0x03, 0x47, "Intel Corporation"}, { 0x00, 0x03, 0x48, "Norscan Instruments, Ltd."}, { 0x00, 0x03, 0x49, "Vidicode Datacommunicatie B.V."}, { 0x00, 0x03, 0x4A, "RIAS Corporation"}, { 0x00, 0x03, 0x4B, "Nortel Networks"}, { 0x00, 0x03, 0x4C, "Shanghai DigiVision Technology Co., Ltd."}, { 0x00, 0x03, 0x4D, "Chiaro Networks, Ltd."}, { 0x00, 0x03, 0x4E, "Pos Data Company, Ltd."}, { 0x00, 0x03, 0x4F, "Sur-Gard Security"}, { 0x00, 0x03, 0x50, "BTICINO SPA"}, { 0x00, 0x03, 0x51, "Diebold, Inc."}, { 0x00, 0x03, 0x52, "Colubris Networks"}, { 0x00, 0x03, 0x53, "Mitac, Inc."}, { 0x00, 0x03, 0x54, "Fiber Logic Communications"}, { 0x00, 0x03, 0x55, "TeraBeam Internet Systems"}, { 0x00, 0x03, 0x56, "Wincor Nixdorf GmbH & Co KG"}, { 0x00, 0x03, 0x57, "Intervoice-Brite, Inc."}, { 0x00, 0x03, 0x58, "iCable System Co., Ltd."}, { 0x00, 0x03, 0x59, "DigitalSis"}, { 0x00, 0x03, 0x5A, "Photron Limited"}, { 0x00, 0x03, 0x5B, "BridgeWave Communications"}, { 0x00, 0x03, 0x5C, "Saint Song Corp."}, { 0x00, 0x03, 0x5D, "Bosung Hi-Net Co., Ltd."}, { 0x00, 0x03, 0x5E, "Metropolitan Area Networks, Inc."}, { 0x00, 0x03, 0x5F, "Schuehle Mess - und. Kontrollsysteme"}, { 0x00, 0x03, 0x60, "PAC Interactive Technology, Inc."}, { 0x00, 0x03, 0x61, "Widcomm, Inc."}, { 0x00, 0x03, 0x62, "Vodtel Communications, Inc."}, { 0x00, 0x03, 0x63, "Miraesys Co., Ltd."}, { 0x00, 0x03, 0x64, "Scenix Semiconductor, Inc."}, { 0x00, 0x03, 0x65, "Kira Information & Communications, Ltd."}, { 0x00, 0x03, 0x66, "ASM Pacific Technology"}, { 0x00, 0x03, 0x67, "Jasmine Networks, Inc."}, { 0x00, 0x03, 0x68, "Embedone Co., Ltd."}, { 0x00, 0x03, 0x69, "Nippon Antenna Co., Ltd."}, { 0x00, 0x03, 0x6A, "Mainnet, Ltd."}, { 0x00, 0x03, 0x6B, "Cisco Systems, Inc."}, { 0x00, 0x03, 0x6C, "Cisco Systems, Inc."}, { 0x00, 0x03, 0x6D, "Runtop, Inc."}, { 0x00, 0x03, 0x6E, "Nicon Systems (Pty) Limited"}, { 0x00, 0x03, 0x6F, "Telsey SPA"}, { 0x00, 0x03, 0x70, "NXTV, Inc."}, { 0x00, 0x03, 0x71, "Acomz Networks Corp."}, { 0x00, 0x03, 0x72, "ULAN"}, { 0x00, 0x03, 0x73, "Aselsan A.S"}, { 0x00, 0x03, 0x74, "Hunter Watertech"}, { 0x00, 0x03, 0x75, "NetMedia, Inc."}, { 0x00, 0x03, 0x76, "Graphtec Technology, Inc."}, { 0x00, 0x03, 0x77, "Gigabit Wireless"}, { 0x00, 0x03, 0x78, "HUMAX Co., Ltd."}, { 0x00, 0x03, 0x79, "Proscend Communications, Inc."}, { 0x00, 0x03, 0x7A, "Taiyo Yuden Co., Ltd."}, { 0x00, 0x03, 0x7B, "IDEC IZUMI Corporation"}, { 0x00, 0x03, 0x7C, "Coax Media"}, { 0x00, 0x03, 0x7D, "Stellcom"}, { 0x00, 0x03, 0x7E, "PORTech Communications, Inc."}, { 0x00, 0x03, 0x7F, "Atheros Communications, Inc."}, { 0x00, 0x03, 0x80, "SSH Communications Security Corp."}, { 0x00, 0x03, 0x81, "Ingenico International"}, { 0x00, 0x03, 0x82, "A-One Co., Ltd."}, { 0x00, 0x03, 0x83, "Metera Networks, Inc."}, { 0x00, 0x03, 0x84, "AETA"}, { 0x00, 0x03, 0x85, "Actelis Networks, Inc."}, { 0x00, 0x03, 0x86, "Ho Net, Inc."}, { 0x00, 0x03, 0x87, "Blaze Network Products"}, { 0x00, 0x03, 0x88, "Fastfame Technology Co., Ltd."}, { 0x00, 0x03, 0x89, "Plantronics"}, { 0x00, 0x03, 0x8A, "America Online, Inc."}, { 0x00, 0x03, 0x8B, "PLUS-ONE I&T, Inc."}, { 0x00, 0x03, 0x8C, "Total Impact"}, { 0x00, 0x03, 0x8D, "PCS Revenue Control Systems, Inc."}, { 0x00, 0x03, 0x8E, "Atoga Systems, Inc."}, { 0x00, 0x03, 0x8F, "Weinschel Corporation"}, { 0x00, 0x03, 0x90, "Digital Video Communications, Inc."}, { 0x00, 0x03, 0x92, "Hyundai Teletek Co., Ltd."}, { 0x00, 0x03, 0x93, "Apple Computer, Inc."}, { 0x00, 0x03, 0x94, "Connect One"}, { 0x00, 0x03, 0x95, "California Amplifier"}, { 0x00, 0x03, 0x96, "EZ Cast Co., Ltd."}, { 0x00, 0x03, 0x97, "Watchfront Electronics"}, { 0x00, 0x03, 0x98, "WISI"}, { 0x00, 0x03, 0x99, "Dongju Informations & Communications Co., Ltd."}, { 0x00, 0x03, 0x9A, "nSine, Ltd."}, { 0x00, 0x03, 0x9B, "NetChip Technology, Inc."}, { 0x00, 0x03, 0x9C, "OptiMight Communications, Inc."}, { 0x00, 0x03, 0x9D, "BENQ CORPORATION"}, { 0x00, 0x03, 0x9E, "Tera System Co., Ltd."}, { 0x00, 0x03, 0x9F, "Cisco Systems, Inc."}, { 0x00, 0x03, 0xA0, "Cisco Systems, Inc."}, { 0x00, 0x03, 0xA1, "HIPER Information & Communication, Inc."}, { 0x00, 0x03, 0xA2, "Catapult Communications"}, { 0x00, 0x03, 0xA3, "MAVIX, Ltd."}, { 0x00, 0x03, 0xA4, "Data Storage and Information Management"}, { 0x00, 0x03, 0xA5, "Medea Corporation"}, { 0x00, 0x03, 0xA7, "Unixtar Technology, Inc."}, { 0x00, 0x03, 0xA8, "IDOT Computers, Inc."}, { 0x00, 0x03, 0xA9, "AXCENT Media AG"}, { 0x00, 0x03, 0xAA, "Watlow"}, { 0x00, 0x03, 0xAB, "Bridge Information Systems"}, { 0x00, 0x03, 0xAC, "Fronius Schweissmaschinen"}, { 0x00, 0x03, 0xAD, "Emerson Energy Systems AB"}, { 0x00, 0x03, 0xAE, "Allied Advanced Manufacturing Pte, Ltd."}, { 0x00, 0x03, 0xAF, "Paragea Communications"}, { 0x00, 0x03, 0xB0, "Xsense Technology Corp."}, { 0x00, 0x03, 0xB1, "Abbott Laboratories HPD"}, { 0x00, 0x03, 0xB2, "Radware"}, { 0x00, 0x03, 0xB3, "IA Link Systems Co., Ltd."}, { 0x00, 0x03, 0xB4, "Macrotek International Corp."}, { 0x00, 0x03, 0xB5, "Entra Technology Co."}, { 0x00, 0x03, 0xB6, "QSI Corporation"}, { 0x00, 0x03, 0xB7, "ZACCESS Systems"}, { 0x00, 0x03, 0xB8, "NetKit Solutions, LLC"}, { 0x00, 0x03, 0xB9, "Hualong Telecom Co., Ltd."}, { 0x00, 0x03, 0xBA, "Sun Microsystems"}, { 0x00, 0x03, 0xBB, "Signal Communications Limited"}, { 0x00, 0x03, 0xBC, "COT GmbH"}, { 0x00, 0x03, 0xBD, "OmniCluster Technologies, Inc."}, { 0x00, 0x03, 0xBE, "Netility"}, { 0x00, 0x03, 0xBF, "Centerpoint Broadband Technologies, Inc."}, { 0x00, 0x03, 0xC0, "RFTNC Co., Ltd."}, { 0x00, 0x03, 0xC1, "Packet Dynamics Ltd"}, { 0x00, 0x03, 0xC2, "Solphone K.K."}, { 0x00, 0x03, 0xC3, "Micronik Multimedia"}, { 0x00, 0x03, 0xC4, "Tomra Systems ASA"}, { 0x00, 0x03, 0xC5, "Mobotix AG"}, { 0x00, 0x03, 0xC6, "ICUE Systems, Inc."}, { 0x00, 0x03, 0xC7, "hopf Elektronik GmbH"}, { 0x00, 0x03, 0xC8, "CML Emergency Services"}, { 0x00, 0x03, 0xC9, "TECOM Co., Ltd."}, { 0x00, 0x03, 0xCA, "MTS Systems Corp."}, { 0x00, 0x03, 0xCB, "Nippon Systems Development Co., Ltd."}, { 0x00, 0x03, 0xCC, "Momentum Computer, Inc."}, { 0x00, 0x03, 0xCD, "Clovertech, Inc."}, { 0x00, 0x03, 0xCE, "ETEN Technologies, Inc."}, { 0x00, 0x03, 0xCF, "Muxcom, Inc."}, { 0x00, 0x03, 0xD0, "KOANKEISO Co., Ltd."}, { 0x00, 0x03, 0xD1, "Takaya Corporation"}, { 0x00, 0x03, 0xD2, "Crossbeam Systems, Inc."}, { 0x00, 0x03, 0xD3, "Internet Energy Systems, Inc."}, { 0x00, 0x03, 0xD4, "Alloptic, Inc."}, { 0x00, 0x03, 0xD5, "Advanced Communications Co., Ltd."}, { 0x00, 0x03, 0xD6, "RADVision, Ltd."}, { 0x00, 0x03, 0xD7, "NextNet Wireless, Inc."}, { 0x00, 0x03, 0xD8, "iMPath Networks, Inc."}, { 0x00, 0x03, 0xD9, "Secheron SA"}, { 0x00, 0x03, 0xDA, "Takamisawa Cybernetics Co., Ltd."}, { 0x00, 0x03, 0xDB, "Apogee Electronics Corp."}, { 0x00, 0x03, 0xDC, "Lexar Media, Inc."}, { 0x00, 0x03, 0xDD, "Comark Corp."}, { 0x00, 0x03, 0xDE, "OTC Wireless"}, { 0x00, 0x03, 0xDF, "Desana Systems"}, { 0x00, 0x03, 0xE0, "RadioFrame Networks, Inc."}, { 0x00, 0x03, 0xE1, "Winmate Communication, Inc."}, { 0x00, 0x03, 0xE2, "Comspace Corporation"}, { 0x00, 0x03, 0xE3, "Cisco Systems, Inc."}, { 0x00, 0x03, 0xE4, "Cisco Systems, Inc."}, { 0x00, 0x03, 0xE5, "Hermstedt SG"}, { 0x00, 0x03, 0xE6, "Entone Technologies, Inc."}, { 0x00, 0x03, 0xE7, "Logostek Co. Ltd."}, { 0x00, 0x03, 0xE8, "Wavelength Digital Limited"}, { 0x00, 0x03, 0xE9, "Akara Canada, Inc."}, { 0x00, 0x03, 0xEA, "Mega System Technologies, Inc."}, { 0x00, 0x03, 0xEB, "Atrica"}, { 0x00, 0x03, 0xEC, "ICG Research, Inc."}, { 0x00, 0x03, 0xED, "Shinkawa Electric Co., Ltd."}, { 0x00, 0x03, 0xEE, "MKNet Corporation"}, { 0x00, 0x03, 0xEF, "Oneline AG"}, { 0x00, 0x03, 0xF0, "Redfern Broadband Networks"}, { 0x00, 0x03, 0xF1, "Cicada Semiconductor, Inc."}, { 0x00, 0x03, 0xF2, "Seneca Networks"}, { 0x00, 0x03, 0xF3, "Dazzle Multimedia, Inc."}, { 0x00, 0x03, 0xF4, "NetBurner"}, { 0x00, 0x03, 0xF5, "Chip2Chip"}, { 0x00, 0x03, 0xF6, "Allegro Networks, Inc."}, { 0x00, 0x03, 0xF7, "Plast-Control GmbH"}, { 0x00, 0x03, 0xF8, "SanCastle Technologies, Inc."}, { 0x00, 0x03, 0xF9, "Pleiades Communications, Inc."}, { 0x00, 0x03, 0xFA, "TiMetra Networks"}, { 0x00, 0x03, 0xFB, "Toko Seiki Company, Ltd."}, { 0x00, 0x03, 0xFC, "Intertex Data AB"}, { 0x00, 0x03, 0xFD, "Cisco Systems, Inc."}, { 0x00, 0x03, 0xFE, "Cisco Systems, Inc."}, { 0x00, 0x03, 0xFF, "Connectix"}, { 0x00, 0x04, 0x00, "LEXMARK INTERNATIONAL, INC."}, { 0x00, 0x04, 0x01, "Osaki Electric Co., Ltd."}, { 0x00, 0x04, 0x02, "Nexsan Technologies, Ltd."}, { 0x00, 0x04, 0x03, "Nexsi Corporation"}, { 0x00, 0x04, 0x04, "Makino Milling Machine Co., Ltd."}, { 0x00, 0x04, 0x05, "ACN Technologies"}, { 0x00, 0x04, 0x06, "Fa. Metabox AG"}, { 0x00, 0x04, 0x07, "Topcon Positioning Systems, Inc."}, { 0x00, 0x04, 0x08, "Sanko Electronics Co., Ltd."}, { 0x00, 0x04, 0x09, "Cratos Networks"}, { 0x00, 0x04, 0x0A, "Sage Systems"}, { 0x00, 0x04, 0x0B, "3com Europe Ltd."}, { 0x00, 0x04, 0x0C, "KANNO Work's Ltd."}, { 0x00, 0x04, 0x0D, "Avaya, Inc."}, { 0x00, 0x04, 0x0E, "AVM GmbH"}, { 0x00, 0x04, 0x0F, "Asus Network Technologies, Inc."}, { 0x00, 0x04, 0x10, "Spinnaker Networks, Inc."}, { 0x00, 0x04, 0x11, "Inkra Networks, Inc."}, { 0x00, 0x04, 0x12, "WaveSmith Networks, Inc."}, { 0x00, 0x04, 0x13, "SNOM Technology AG"}, { 0x00, 0x04, 0x14, "Umezawa Musen Denki Co., Ltd."}, { 0x00, 0x04, 0x15, "Rasteme Systems Co., Ltd."}, { 0x00, 0x04, 0x16, "Parks S/A Comunicacoes Digitais"}, { 0x00, 0x04, 0x17, "ELAU AG"}, { 0x00, 0x04, 0x18, "Teltronic S.A.U."}, { 0x00, 0x04, 0x19, "Fibercycle Networks, Inc."}, { 0x00, 0x04, 0x1A, "ines GmbH"}, { 0x00, 0x04, 0x1B, "Digital Interfaces Ltd."}, { 0x00, 0x04, 0x1C, "ipDialog, Inc."}, { 0x00, 0x04, 0x1D, "Corega of America"}, { 0x00, 0x04, 0x1E, "Shikoku Instrumentation Co., Ltd."}, { 0x00, 0x04, 0x1F, "Sony Computer Entertainment, Inc."}, { 0x00, 0x04, 0x20, "Slim Devices, Inc."}, { 0x00, 0x04, 0x21, "Ocular Networks"}, { 0x00, 0x04, 0x22, "Gordon Kapes, Inc."}, { 0x00, 0x04, 0x23, "Intel Corporation"}, { 0x00, 0x04, 0x24, "TMC s.r.l."}, { 0x00, 0x04, 0x25, "Atmel Corporation"}, { 0x00, 0x04, 0x26, "Autosys"}, { 0x00, 0x04, 0x27, "Cisco Systems, Inc."}, { 0x00, 0x04, 0x28, "Cisco Systems, Inc."}, { 0x00, 0x04, 0x29, "Pixord Corporation"}, { 0x00, 0x04, 0x2A, "Wireless Networks, Inc."}, { 0x00, 0x04, 0x2B, "IT Access Co., Ltd."}, { 0x00, 0x04, 0x2C, "Minet, Inc."}, { 0x00, 0x04, 0x2D, "Sarian Systems, Ltd."}, { 0x00, 0x04, 0x2E, "Netous Technologies, Ltd."}, { 0x00, 0x04, 0x2F, "International Communications Products, Inc."}, { 0x00, 0x04, 0x30, "Netgem"}, { 0x00, 0x04, 0x31, "GlobalStreams, Inc."}, { 0x00, 0x04, 0x32, "Voyetra Turtle Beach, Inc."}, { 0x00, 0x04, 0x33, "Cyberboard A/S"}, { 0x00, 0x04, 0x34, "Accelent Systems, Inc."}, { 0x00, 0x04, 0x35, "Comptek International, Inc."}, { 0x00, 0x04, 0x36, "ELANsat Technologies, Inc."}, { 0x00, 0x04, 0x37, "Powin Information Technology, Inc."}, { 0x00, 0x04, 0x38, "Nortel Networks"}, { 0x00, 0x04, 0x39, "Rosco Entertainment Technology, Inc."}, { 0x00, 0x04, 0x3A, "Intelligent Telecommunications, Inc."}, { 0x00, 0x04, 0x3B, "Lava Computer Mfg., Inc."}, { 0x00, 0x04, 0x3C, "SONOS Co., Ltd."}, { 0x00, 0x04, 0x3D, "INDEL AG"}, { 0x00, 0x04, 0x3E, "Telencomm"}, { 0x00, 0x04, 0x3F, "Electronic Systems Technology, Inc."}, { 0x00, 0x04, 0x40, "cyberPIXIE, Inc."}, { 0x00, 0x04, 0x41, "Half Dome Systems, Inc."}, { 0x00, 0x04, 0x42, "NACT"}, { 0x00, 0x04, 0x43, "Agilent Technologies, Inc."}, { 0x00, 0x04, 0x44, "Western Multiplex Corporation"}, { 0x00, 0x04, 0x45, "LMS Skalar Instruments GmbH"}, { 0x00, 0x04, 0x46, "CYZENTECH Co., Ltd."}, { 0x00, 0x04, 0x47, "Acrowave Systems Co., Ltd."}, { 0x00, 0x04, 0x48, "Polaroid Professional Imaging"}, { 0x00, 0x04, 0x49, "Mapletree Networks"}, { 0x00, 0x04, 0x4A, "iPolicy Networks, Inc."}, { 0x00, 0x04, 0x4B, "NVIDIA"}, { 0x00, 0x04, 0x4C, "JENOPTIK"}, { 0x00, 0x04, 0x4D, "Cisco Systems, Inc."}, { 0x00, 0x04, 0x4E, "Cisco Systems, Inc."}, { 0x00, 0x04, 0x4F, "Leukhardt Systemelektronik GmbH"}, { 0x00, 0x04, 0x50, "DMD Computers SRL"}, { 0x00, 0x04, 0x51, "Medrad, Inc."}, { 0x00, 0x04, 0x52, "RocketLogix, Inc."}, { 0x00, 0x04, 0x53, "YottaYotta, Inc."}, { 0x00, 0x04, 0x54, "Quadriga UK"}, { 0x00, 0x04, 0x55, "ANTARA.net"}, { 0x00, 0x04, 0x56, "PipingHot Networks"}, { 0x00, 0x04, 0x57, "Universal Access Technology, Inc."}, { 0x00, 0x04, 0x58, "Fusion X Co., Ltd."}, { 0x00, 0x04, 0x59, "Veristar Corporation"}, { 0x00, 0x04, 0x5A, "The Linksys Group, Inc."}, { 0x00, 0x04, 0x5B, "Techsan Electronics Co., Ltd."}, { 0x00, 0x04, 0x5C, "Mobiwave Pte Ltd"}, { 0x00, 0x04, 0x5D, "BEKA Elektronik"}, { 0x00, 0x04, 0x5E, "PolyTrax Information Technology AG"}, { 0x00, 0x04, 0x5F, "Evalue Technology, Inc."}, { 0x00, 0x04, 0x60, "Knilink Technology, Inc."}, { 0x00, 0x04, 0x61, "EPOX Computer Co., Ltd."}, { 0x00, 0x04, 0x62, "DAKOS Data & Communication Co., Ltd."}, { 0x00, 0x04, 0x63, "Philips Communication Security & Imaging"}, { 0x00, 0x04, 0x64, "Fantasma Networks, Inc."}, { 0x00, 0x04, 0x65, "i.s.t isdn-support technik GmbH"}, { 0x00, 0x04, 0x66, "ARMITEL Co."}, { 0x00, 0x04, 0x67, "Wuhan Research Institute of MII"}, { 0x00, 0x04, 0x68, "Vivity, Inc."}, { 0x00, 0x04, 0x69, "Innocom, Inc."}, { 0x00, 0x04, 0x6A, "Navini Networks"}, { 0x00, 0x04, 0x6B, "Palm Wireless, Inc."}, { 0x00, 0x04, 0x6C, "Cyber Technology Co., Ltd."}, { 0x00, 0x04, 0x6D, "Cisco Systems, Inc."}, { 0x00, 0x04, 0x6E, "Cisco Systems, Inc."}, { 0x00, 0x04, 0x6F, "Digitel S/A Industria Eletronica"}, { 0x00, 0x04, 0x70, "ipUnplugged AB"}, { 0x00, 0x04, 0x71, "IPrad"}, { 0x00, 0x04, 0x72, "Telelynx, Inc."}, { 0x00, 0x04, 0x73, "Photonex Corporation"}, { 0x00, 0x04, 0x74, "LEGRAND"}, { 0x00, 0x04, 0x75, "3 Com Corporation"}, { 0x00, 0x04, 0x76, "3 Com Corporation"}, { 0x00, 0x04, 0x77, "Scalant Systems, Inc."}, { 0x00, 0x04, 0x78, "G. Star Technology Corporation"}, { 0x00, 0x04, 0x79, "Radius Co., Ltd."}, { 0x00, 0x04, 0x7A, "AXXESSIT ASA"}, { 0x00, 0x04, 0x7B, "Schlumberger"}, { 0x00, 0x04, 0x7C, "Skidata AG"}, { 0x00, 0x04, 0x7D, "Pelco"}, { 0x00, 0x04, 0x7E, "NKF Electronics"}, { 0x00, 0x04, 0x7F, "Chr. Mayr GmbH & Co. KG"}, { 0x00, 0x04, 0x80, "Foundry Networks, Inc."}, { 0x00, 0x04, 0x81, "Econolite Control Products, Inc."}, { 0x00, 0x04, 0x82, "Medialogic Corp."}, { 0x00, 0x04, 0x83, "Deltron Technology, Inc."}, { 0x00, 0x04, 0x84, "Amann GmbH"}, { 0x00, 0x04, 0x85, "PicoLight"}, { 0x00, 0x04, 0x86, "ITTC, University of Kansas"}, { 0x00, 0x04, 0x87, "Cogency Semiconductor, Inc."}, { 0x00, 0x04, 0x88, "Eurotherm Action Incorporated."}, { 0x00, 0x04, 0x89, "YAFO Networks, Inc."}, { 0x00, 0x04, 0x8A, "Temia Vertriebs GmbH"}, { 0x00, 0x04, 0x8B, "Poscon Corporation"}, { 0x00, 0x04, 0x8C, "Nayna Networks, Inc."}, { 0x00, 0x04, 0x8D, "Tone Commander Systems, Inc."}, { 0x00, 0x04, 0x8E, "Ohm Tech Labs, Inc."}, { 0x00, 0x04, 0x8F, "TD Systems Corp."}, { 0x00, 0x04, 0x90, "Optical Access"}, { 0x00, 0x04, 0x91, "Technovision, Inc."}, { 0x00, 0x04, 0x92, "Hive Internet, Ltd."}, { 0x00, 0x04, 0x93, "Tsinghua Unisplendour Co., Ltd."}, { 0x00, 0x04, 0x94, "Breezecom, Ltd."}, { 0x00, 0x04, 0x95, "Tejas Networks"}, { 0x00, 0x04, 0x96, "Extreme Networks"}, { 0x00, 0x04, 0x97, "MacroSystem Digital Video AG"}, { 0x00, 0x04, 0x99, "Chino Corporation"}, { 0x00, 0x04, 0x9A, "Cisco Systems, Inc."}, { 0x00, 0x04, 0x9B, "Cisco Systems, Inc."}, { 0x00, 0x04, 0x9C, "Surgient Networks, Inc."}, { 0x00, 0x04, 0x9D, "Ipanema Technologies"}, { 0x00, 0x04, 0x9E, "Wirelink Co., Ltd."}, { 0x00, 0x04, 0x9F, "Metrowerks"}, { 0x00, 0x04, 0xA0, "Verity Instruments, Inc."}, { 0x00, 0x04, 0xA1, "Pathway Connectivity"}, { 0x00, 0x04, 0xA2, "L.S.I. Japan Co., Ltd."}, { 0x00, 0x04, 0xA3, "Microchip Technology, Inc."}, { 0x00, 0x04, 0xA4, "NetEnabled, Inc."}, { 0x00, 0x04, 0xA5, "Barco Projection Systems NV"}, { 0x00, 0x04, 0xA6, "SAF Tehnika Ltd."}, { 0x00, 0x04, 0xA7, "FabiaTech Corporation"}, { 0x00, 0x04, 0xA8, "Broadmax Technologies, Inc."}, { 0x00, 0x04, 0xA9, "SandStream Technologies, Inc."}, { 0x00, 0x04, 0xAA, "Jetstream Communications"}, { 0x00, 0x04, 0xAB, "Comverse Network Systems, Inc."}, { 0x00, 0x04, 0xAC, "IBM CORP."}, { 0x00, 0x04, 0xAD, "Malibu Networks"}, { 0x00, 0x04, 0xAE, "Liquid Metronics"}, { 0x00, 0x04, 0xAF, "Digital Fountain, Inc."}, { 0x00, 0x04, 0xB0, "ELESIGN Co., Ltd."}, { 0x00, 0x04, 0xB1, "Signal Technology, Inc."}, { 0x00, 0x04, 0xB2, "ESSEGI SRL"}, { 0x00, 0x04, 0xB3, "Videotek, Inc."}, { 0x00, 0x04, 0xB4, "CIAC"}, { 0x00, 0x04, 0xB5, "Equitrac Corporation"}, { 0x00, 0x04, 0xB6, "Tellumat (Pty) Ltd."}, { 0x00, 0x04, 0xB7, "AMB i.t. Holding"}, { 0x00, 0x04, 0xB8, "Kumahira Co., Ltd."}, { 0x00, 0x04, 0xB9, "S.I. Soubou, Inc."}, { 0x00, 0x04, 0xBA, "KDD Media Will Corporation"}, { 0x00, 0x04, 0xBB, "Bardac Corporation"}, { 0x00, 0x04, 0xBC, "Giantec, Inc."}, { 0x00, 0x04, 0xBD, "Motorola BCS"}, { 0x00, 0x04, 0xBE, "OptXCon, Inc."}, { 0x00, 0x04, 0xBF, "VersaLogic Corp."}, { 0x00, 0x04, 0xC0, "Cisco Systems, Inc."}, { 0x00, 0x04, 0xC1, "Cisco Systems, Inc."}, { 0x00, 0x04, 0xC2, "Magnipix, Inc."}, { 0x00, 0x04, 0xC3, "CASTOR Informatique"}, { 0x00, 0x04, 0xC4, "Allen & Health Limited"}, { 0x00, 0x04, 0xC5, "ASE Technologies, USA"}, { 0x00, 0x04, 0xC6, "Yamaha Motor Co., Ltd."}, { 0x00, 0x04, 0xC7, "NetMount"}, { 0x00, 0x04, 0xC8, "LIBA Maschinenfabrik GmbH"}, { 0x00, 0x04, 0xC9, "Micro Electron Co., Ltd."}, { 0x00, 0x04, 0xCA, "FreeMs Corp."}, { 0x00, 0x04, 0xCB, "Tdsoft Communication, Ltd."}, { 0x00, 0x04, 0xCC, "Peek Traffic B.V."}, { 0x00, 0x04, 0xCD, "Informedia Research Group"}, { 0x00, 0x04, 0xCE, "Patria Ailon"}, { 0x00, 0x04, 0xCF, "Seagate Technology"}, { 0x00, 0x04, 0xD0, "Softlink s.r.o."}, { 0x00, 0x04, 0xD1, "Drew Technologies, Inc."}, { 0x00, 0x04, 0xD2, "Adcon Telemetry AG"}, { 0x00, 0x04, 0xD3, "Toyokeiki Co., Ltd."}, { 0x00, 0x04, 0xD4, "Proview Electronics Co., Ltd."}, { 0x00, 0x04, 0xD5, "Hitachi Communication Systems, Inc."}, { 0x00, 0x04, 0xD6, "Takagi Industrial Co., Ltd."}, { 0x00, 0x04, 0xD7, "Omitec Instrumentation Ltd."}, { 0x00, 0x04, 0xD8, "IPWireless, Inc."}, { 0x00, 0x04, 0xD9, "Titan Electronics, Inc."}, { 0x00, 0x04, 0xDA, "Relax Technology, Inc."}, { 0x00, 0x04, 0xDB, "Tellus Group Corp."}, { 0x00, 0x04, 0xDC, "Nortel Networks"}, { 0x00, 0x04, 0xDD, "Cisco Systems, Inc."}, { 0x00, 0x04, 0xDE, "Cisco Systems, Inc."}, { 0x00, 0x04, 0xDF, "Teracom Telematica Ltda."}, { 0x00, 0x04, 0xE0, "Procket Networks"}, { 0x00, 0x04, 0xE1, "Infinior Microsystems"}, { 0x00, 0x04, 0xE2, "SMC Networks, Inc."}, { 0x00, 0x04, 0xE3, "Accton Technology Corp."}, { 0x00, 0x04, 0xE4, "Daeryung Ind., Inc."}, { 0x00, 0x04, 0xE5, "Glonet Systems, Inc."}, { 0x00, 0x04, 0xE6, "Banyan Network Private Limited"}, { 0x00, 0x04, 0xE7, "Lightpointe Communications, Inc"}, { 0x00, 0x04, 0xE8, "IER, Inc."}, { 0x00, 0x04, 0xE9, "Infiniswitch Corporation"}, { 0x00, 0x04, 0xEA, "Hewlett-Packard Company"}, { 0x00, 0x04, 0xEB, "Paxonet Communications, Inc."}, { 0x00, 0x04, 0xEC, "Memobox SA"}, { 0x00, 0x04, 0xED, "Billion Electric Co., Ltd."}, { 0x00, 0x04, 0xEE, "Lincoln Electric Company"}, { 0x00, 0x04, 0xEF, "Polestar Corp."}, { 0x00, 0x04, 0xF0, "International Computers, Ltd"}, { 0x00, 0x04, 0xF1, "WhereNet"}, { 0x00, 0x04, 0xF2, "Circa Communications, Ltd."}, { 0x00, 0x04, 0xF3, "FS FORTH-SYSTEME GmbH"}, { 0x00, 0x04, 0xF4, "Infinite Electronics Inc."}, { 0x00, 0x04, 0xF5, "SnowShore Networks, Inc."}, { 0x00, 0x04, 0xF6, "Amphus"}, { 0x00, 0x04, 0xF7, "Omega Band, Inc."}, { 0x00, 0x04, 0xF8, "QUALICABLE TV Industria E Com., Ltda"}, { 0x00, 0x04, 0xF9, "Xtera Communications, Inc."}, { 0x00, 0x04, 0xFA, "MIST Inc."}, { 0x00, 0x04, 0xFB, "Commtech, Inc."}, { 0x00, 0x04, 0xFC, "Stratus Computer (DE), Inc."}, { 0x00, 0x04, 0xFD, "Japan Control Engineering Co., Ltd."}, { 0x00, 0x04, 0xFE, "Pelago Networks"}, { 0x00, 0x04, 0xFF, "Acronet Co., Ltd."}, { 0x00, 0x05, 0x00, "Cisco Systems, Inc."}, { 0x00, 0x05, 0x01, "Cisco Systems, Inc."}, { 0x00, 0x05, 0x02, "APPLE COMPUTER"}, { 0x00, 0x05, 0x03, "ICONAG"}, { 0x00, 0x05, 0x04, "Naray Information & Communication Enterprise"}, { 0x00, 0x05, 0x05, "Systems Integration Solutions, Inc."}, { 0x00, 0x05, 0x06, "Reddo Networks AB"}, { 0x00, 0x05, 0x07, "Fine Appliance Corp."}, { 0x00, 0x05, 0x08, "Inetcam, Inc."}, { 0x00, 0x05, 0x09, "AVOC Nishimura Ltd."}, { 0x00, 0x05, 0x0A, "ICS Spa"}, { 0x00, 0x05, 0x0B, "SICOM Systems, Inc."}, { 0x00, 0x05, 0x0C, "Network Photonics, Inc."}, { 0x00, 0x05, 0x0D, "Midstream Technologies, Inc."}, { 0x00, 0x05, 0x0E, "3ware, Inc."}, { 0x00, 0x05, 0x0F, "Tanaka S/S Ltd."}, { 0x00, 0x05, 0x10, "Infinite Shanghai Communication Terminals Ltd."}, { 0x00, 0x05, 0x11, "Complementary Technologies Ltd"}, { 0x00, 0x05, 0x12, "MeshNetworks, Inc."}, { 0x00, 0x05, 0x13, "VTLinx Multimedia Systems, Inc."}, { 0x00, 0x05, 0x14, "KDT Systems Co., Ltd."}, { 0x00, 0x05, 0x15, "Nuark Co., Ltd."}, { 0x00, 0x05, 0x16, "SMART Modular Technologies"}, { 0x00, 0x05, 0x17, "Shellcomm, Inc."}, { 0x00, 0x05, 0x18, "Jupiters Technology"}, { 0x00, 0x05, 0x19, "Siemens Building Technologies AG,"}, { 0x00, 0x05, 0x1A, "3Com Europe Ltd."}, { 0x00, 0x05, 0x1B, "Magic Control Technology Corporation"}, { 0x00, 0x05, 0x1C, "Xnet Technology Corp."}, { 0x00, 0x05, 0x1D, "Airocon, Inc."}, { 0x00, 0x05, 0x1E, "Rhapsody Networks"}, { 0x00, 0x05, 0x1F, "Taijin Media Co., Ltd."}, { 0x00, 0x05, 0x20, "Smartronix, Inc."}, { 0x00, 0x05, 0x21, "Control Microsystems"}, { 0x00, 0x05, 0x22, "LEA*D Corporation, Inc."}, { 0x00, 0x05, 0x23, "AVL List GmbH"}, { 0x00, 0x05, 0x24, "BTL System (HK) Limited"}, { 0x00, 0x05, 0x25, "Puretek Industrial Co., Ltd."}, { 0x00, 0x05, 0x26, "IPAS GmbH"}, { 0x00, 0x05, 0x27, "SJ Tek Co. Ltd"}, { 0x00, 0x05, 0x28, "New Focus, Inc."}, { 0x00, 0x05, 0x29, "Shanghai Broadan Communication Technology Co., Ltd"}, { 0x00, 0x05, 0x2A, "Ikegami Tsushinki Co., Ltd."}, { 0x00, 0x05, 0x2B, "HORIBA, Ltd."}, { 0x00, 0x05, 0x2C, "Supreme Magic Corporation"}, { 0x00, 0x05, 0x2D, "Zoltrix International Limited"}, { 0x00, 0x05, 0x2E, "Cinta Networks"}, { 0x00, 0x05, 0x2F, "Leviton Voice and Data"}, { 0x00, 0x05, 0x30, "Andiamo Systems, Inc."}, { 0x00, 0x05, 0x31, "Cisco Systems, Inc."}, { 0x00, 0x05, 0x32, "Cisco Systems, Inc."}, { 0x00, 0x05, 0x33, "Sanera Systems, Inc."}, { 0x00, 0x05, 0x34, "Northstar Engineering Ltd."}, { 0x00, 0x05, 0x35, "Chip PC Ltd."}, { 0x00, 0x05, 0x36, "Danam Communications, Inc."}, { 0x00, 0x05, 0x37, "Nets Technology Co., Ltd."}, { 0x00, 0x05, 0x38, "Merilus, Inc."}, { 0x00, 0x05, 0x39, "A Brand New World in Sweden AB"}, { 0x00, 0x05, 0x3A, "Willowglen Services Pte Ltd"}, { 0x00, 0x05, 0x3B, "Harbour Networks Ltd., Co. Beijing"}, { 0x00, 0x05, 0x3C, "Xircom"}, { 0x00, 0x05, 0x3D, "Agere Systems"}, { 0x00, 0x05, 0x3E, "KID Systeme GmbH"}, { 0x00, 0x05, 0x3F, "VisionTek, Inc."}, { 0x00, 0x05, 0x40, "FAST Corporation"}, { 0x00, 0x05, 0x41, "Advanced Systems Co., Ltd."}, { 0x00, 0x05, 0x42, "Otari, Inc."}, { 0x00, 0x05, 0x43, "IQ Wireless GmbH"}, { 0x00, 0x05, 0x44, "Valley Technologies, Inc."}, { 0x00, 0x05, 0x45, "Internet Photonics"}, { 0x00, 0x05, 0x46, "KDD Network Systems Co., Ltd."}, { 0x00, 0x05, 0x47, "Starent Networks"}, { 0x00, 0x05, 0x48, "Disco Corporation"}, { 0x00, 0x05, 0x49, "Salira Optical Network Systems"}, { 0x00, 0x05, 0x4A, "Ario Data Networks, Inc."}, { 0x00, 0x05, 0x4B, "Micro Innovation AG"}, { 0x00, 0x05, 0x4C, "RF Innovations Pty Ltd"}, { 0x00, 0x05, 0x4D, "Brans Technologies, Inc."}, { 0x00, 0x05, 0x4E, "Philips Components"}, { 0x00, 0x05, 0x50, "Digi-Tech Communications Limited"}, { 0x00, 0x05, 0x51, "F & S Elektronik Systeme GmbH"}, { 0x00, 0x05, 0x52, "Xycotec Computer GmbH"}, { 0x00, 0x05, 0x53, "DVC Company, Inc."}, { 0x00, 0x05, 0x54, "Rangestar Wireless"}, { 0x00, 0x05, 0x55, "Japan Cash Machine Co., Ltd."}, { 0x00, 0x05, 0x56, "360 Systems"}, { 0x00, 0x05, 0x57, "Agile TV Corporation"}, { 0x00, 0x05, 0x58, "Synchronous, Inc."}, { 0x00, 0x05, 0x59, "Intracom S.A."}, { 0x00, 0x05, 0x5A, "Power Dsine Ltd."}, { 0x00, 0x05, 0x5B, "Charles Industries, Ltd."}, { 0x00, 0x05, 0x5C, "Kowa Company, Ltd."}, { 0x00, 0x05, 0x5D, "D-Link Systems, Inc."}, { 0x00, 0x05, 0x5E, "Cisco Systems, Inc."}, { 0x00, 0x05, 0x5F, "Cisco Systems, Inc."}, { 0x00, 0x05, 0x60, "LEADER COMM.CO., LTD"}, { 0x00, 0x05, 0x61, "nac Image Technology, Inc."}, { 0x00, 0x05, 0x62, "Digital View Limited"}, { 0x00, 0x05, 0x63, "J-Works, Inc."}, { 0x00, 0x05, 0x64, "Tsinghua Bitway Co., Ltd."}, { 0x00, 0x05, 0x65, "Tailyn Communication Company Ltd."}, { 0x00, 0x05, 0x66, "Secui.com Corporation"}, { 0x00, 0x05, 0x67, "Etymonic Design, Inc."}, { 0x00, 0x05, 0x68, "Piltofish Networks AB"}, { 0x00, 0x05, 0x69, "VMWARE, Inc."}, { 0x00, 0x05, 0x6B, "C.P. Technology Co., Ltd."}, { 0x00, 0x05, 0x6C, "Hung Chang Co., Ltd."}, { 0x00, 0x05, 0x6D, "Pacific Corporation"}, { 0x00, 0x05, 0x6E, "National Enhance Technology, Inc."}, { 0x00, 0x05, 0x6F, "Innomedia Technologies Pvt. Ltd."}, { 0x00, 0x05, 0x70, "Baydel Ltd."}, { 0x00, 0x05, 0x71, "Seiwa Electronics Co."}, { 0x00, 0x05, 0x72, "Deonet Co., Ltd."}, { 0x00, 0x05, 0x73, "Cisco Systems, Inc."}, { 0x00, 0x05, 0x74, "Cisco Systems, Inc."}, { 0x00, 0x05, 0x75, "CDS-Electronics BV"}, { 0x00, 0x05, 0x76, "NSM Technology Ltd."}, { 0x00, 0x05, 0x77, "SM Information & Communication"}, { 0x00, 0x05, 0x79, "Universal Control Solution Corp."}, { 0x00, 0x05, 0x7A, "Hatteras Networks"}, { 0x00, 0x05, 0x7B, "Chung Nam Electronic Co., Ltd."}, { 0x00, 0x05, 0x7C, "RCO Security AB"}, { 0x00, 0x05, 0x7D, "Sun Communications, Inc."}, { 0x00, 0x05, 0x7E, "Eckelmann Steuerungstechnik GmbH"}, { 0x00, 0x05, 0x7F, "Acqis Technology"}, { 0x00, 0x05, 0x80, "Fibrolan Ltd."}, { 0x00, 0x05, 0x81, "Snell & Wilcox Ltd."}, { 0x00, 0x05, 0x82, "ClearCube Technology"}, { 0x00, 0x05, 0x83, "ImageCom Limited"}, { 0x00, 0x05, 0x84, "AbsoluteValue Systems, Inc."}, { 0x00, 0x05, 0x85, "Juniper Networks, Inc."}, { 0x00, 0x05, 0x86, "Lucent Technologies"}, { 0x00, 0x05, 0x87, "Locus, Incorporated"}, { 0x00, 0x05, 0x88, "Sensoria Corp."}, { 0x00, 0x05, 0x89, "National Datacomputer"}, { 0x00, 0x05, 0x8A, "Netcom Co., Ltd."}, { 0x00, 0x05, 0x8B, "IPmental, Inc."}, { 0x00, 0x05, 0x8C, "Opentech Inc."}, { 0x00, 0x05, 0x8D, "Lynx Photonic Networks, Inc."}, { 0x00, 0x05, 0x8E, "Ahead Communications System GmbH"}, { 0x00, 0x05, 0x8F, "CLCsoft co."}, { 0x00, 0x05, 0x90, "Swissvoice Ltd."}, { 0x00, 0x05, 0x91, "Active Silicon Ltd."}, { 0x00, 0x05, 0x92, "Pultek Corp."}, { 0x00, 0x05, 0x93, "Grammar Engine Inc."}, { 0x00, 0x05, 0x94, "IXXAT Automation GmbH"}, { 0x00, 0x05, 0x95, "Alesis Corporation"}, { 0x00, 0x05, 0x96, "Genotech Co., Ltd."}, { 0x00, 0x05, 0x97, "Eagle Traffic Control Systems"}, { 0x00, 0x05, 0x98, "CRONOS S.r.l."}, { 0x00, 0x05, 0x99, "PEI Electronics, Inc."}, { 0x00, 0x05, 0x9A, "Cisco Systems, Inc."}, { 0x00, 0x05, 0x9B, "Cisco Systems, Inc."}, { 0x00, 0x05, 0x9C, "Kleinknecht GmbH, Ing. Buero"}, { 0x00, 0x05, 0x9D, "Daniel Computing Systems, Inc."}, { 0x00, 0x05, 0x9E, "Zinwell Corporation"}, { 0x00, 0x05, 0x9F, "Yotta Networks, Inc."}, { 0x00, 0x05, 0xA0, "MOBILINE Kft."}, { 0x00, 0x05, 0xA1, "Zenocom"}, { 0x00, 0x05, 0xA2, "CELOX Networks"}, { 0x00, 0x05, 0xA3, "QEI, Inc."}, { 0x00, 0x05, 0xA4, "Lucid Voice Ltd."}, { 0x00, 0x05, 0xA5, "KOTT"}, { 0x00, 0x05, 0xA6, "Extron Electronics"}, { 0x00, 0x05, 0xA7, "Hyperchip, Inc."}, { 0x00, 0x05, 0xA8, "WYLE ELECTRONICS"}, { 0x00, 0x05, 0xA9, "Princeton Networks, Inc."}, { 0x00, 0x05, 0xAA, "Moore Industries International Inc."}, { 0x00, 0x05, 0xAB, "Cyber Fone, Inc."}, { 0x00, 0x05, 0xAC, "Northern Digital, Inc."}, { 0x00, 0x05, 0xAD, "Topspin Communications, Inc."}, { 0x00, 0x05, 0xAE, "Mediaport USA"}, { 0x00, 0x05, 0xAF, "InnoScan Computing A/S"}, { 0x00, 0x05, 0xB0, "Korea Computer Technology Co., Ltd."}, { 0x00, 0x05, 0xB1, "ASB Technology BV"}, { 0x00, 0x05, 0xB2, "Medison Co., Ltd."}, { 0x00, 0x05, 0xB3, "Asahi-Engineering Co., Ltd."}, { 0x00, 0x05, 0xB4, "Aceex Corporation"}, { 0x00, 0x05, 0xB5, "Broadcom Technologies"}, { 0x00, 0x05, 0xB6, "INSYS Microelectronics GmbH"}, { 0x00, 0x05, 0xB7, "Arbor Technology Corp."}, { 0x00, 0x05, 0xB8, "Electronic Design Associates, Inc."}, { 0x00, 0x05, 0xB9, "Airvana, Inc."}, { 0x00, 0x05, 0xBA, "Area Netwoeks, Inc."}, { 0x00, 0x05, 0xBB, "Myspace AB"}, { 0x00, 0x05, 0xBC, "Resorsys Ltd."}, { 0x00, 0x05, 0xBD, "ROAX BV"}, { 0x00, 0x05, 0xBE, "Kongsberg Seatex AS"}, { 0x00, 0x05, 0xBF, "JustEzy Technology, Inc."}, { 0x00, 0x05, 0xC0, "Digital Network Alacarte Co., Ltd."}, { 0x00, 0x05, 0xC1, "A-Kyung Motion, Inc."}, { 0x00, 0x05, 0xC2, "Digital Archway, Inc."}, { 0x00, 0x05, 0xC3, "Pacific Instruments, Inc."}, { 0x00, 0x05, 0xC4, "Telect, Inc."}, { 0x00, 0x05, 0xC5, "Flaga HF"}, { 0x00, 0x05, 0xC6, "Triz Communications"}, { 0x00, 0x05, 0xC7, "I/F-COM A/S"}, { 0x00, 0x05, 0xC8, "VERYTECH"}, { 0x00, 0x05, 0xC9, "LG Innotek"}, { 0x00, 0x05, 0xCA, "Hitron Technology, Inc."}, { 0x00, 0x05, 0xCB, "ROIS Technologies, Inc."}, { 0x00, 0x05, 0xCC, "Sumtel Communications, Inc."}, { 0x00, 0x05, 0xCD, "Denon, Ltd."}, { 0x00, 0x05, 0xCE, "Prolink Microsystems Corporation"}, { 0x00, 0x05, 0xCF, "Thunder River Technologies, Inc."}, { 0x00, 0x05, 0xD0, "Solinet Systems"}, { 0x00, 0x05, 0xD1, "Metavector Technologies"}, { 0x00, 0x05, 0xD2, "DAP Technologies"}, { 0x00, 0x05, 0xD3, "eProduction Solutions, Inc."}, { 0x00, 0x05, 0xD4, "FutureSmart Networks, Inc."}, { 0x00, 0x05, 0xD5, "Speedcom Wireless"}, { 0x00, 0x05, 0xD6, "Titan Wireless"}, { 0x00, 0x05, 0xD7, "Vista Imaging, Inc."}, { 0x00, 0x05, 0xD8, "Arescom, Inc."}, { 0x00, 0x05, 0xD9, "Techno Valley, Inc."}, { 0x00, 0x05, 0xDA, "Apex Automationstechnik"}, { 0x00, 0x05, 0xDB, "Nentec GmbH"}, { 0x00, 0x05, 0xDC, "Cisco Systems, Inc."}, { 0x00, 0x05, 0xDD, "Cisco Systems, Inc."}, { 0x00, 0x05, 0xDE, "Gi Fone Korea, Inc."}, { 0x00, 0x05, 0xDF, "Electronic Innovation, Inc."}, { 0x00, 0x05, 0xE0, "Empirix Corp."}, { 0x00, 0x05, 0xE1, "Trellis Photonics, Ltd."}, { 0x00, 0x05, 0xE2, "Creativ Network Technologies"}, { 0x00, 0x05, 0xE3, "LightSand Communications, Inc."}, { 0x00, 0x05, 0xE4, "Red Lion Controls L.P."}, { 0x00, 0x05, 0xE5, "Renishaw PLC"}, { 0x00, 0x05, 0xE6, "Egenera, Inc."}, { 0x00, 0x05, 0xE7, "Netrake Corp."}, { 0x00, 0x05, 0xE8, "TurboWave, Inc."}, { 0x00, 0x05, 0xE9, "Unicess Network, Inc."}, { 0x00, 0x05, 0xEA, "Rednix"}, { 0x00, 0x05, 0xEB, "Blue Ridge Networks, Inc."}, { 0x00, 0x05, 0xEC, "Mosaic Systems Inc."}, { 0x00, 0x05, 0xED, "Technikum Joanneum GmbH"}, { 0x00, 0x05, 0xEE, "BEWATOR Group"}, { 0x00, 0x05, 0xEF, "ADOIR Digital Technology"}, { 0x00, 0x05, 0xF0, "SATEC"}, { 0x00, 0x05, 0xF1, "Vrcom, Inc."}, { 0x00, 0x05, 0xF2, "Power R, Inc."}, { 0x00, 0x05, 0xF3, "Weboyn"}, { 0x00, 0x05, 0xF4, "System Base Co., Ltd."}, { 0x00, 0x05, 0xF5, "OYO Geospace Corp."}, { 0x00, 0x05, 0xF6, "Young Chang Co. Ltd."}, { 0x00, 0x05, 0xF7, "Analog Devices, Inc."}, { 0x00, 0x05, 0xF8, "Real Time Access, Inc."}, { 0x00, 0x05, 0xF9, "TOA Corporation"}, { 0x00, 0x05, 0xFA, "IPOptical, Inc."}, { 0x00, 0x05, 0xFB, "ShareGate, Inc."}, { 0x00, 0x05, 0xFC, "Schenck Pegasus Corp."}, { 0x00, 0x05, 0xFD, "PacketLight Networks Ltd."}, { 0x00, 0x05, 0xFE, "Traficon N.V."}, { 0x00, 0x05, 0xFF, "SNS Solutions, Inc."}, { 0x00, 0x06, 0x00, "Tokyo Electronic Industry Co., Ltd."}, { 0x00, 0x06, 0x01, "Otanikeiki Co., Ltd."}, { 0x00, 0x06, 0x02, "Cirkitech Electronics Co."}, { 0x00, 0x06, 0x03, "Baker Hughes Inc."}, { 0x00, 0x06, 0x04, "@Track Communications, Inc."}, { 0x00, 0x06, 0x05, "Inncom International, Inc."}, { 0x00, 0x06, 0x06, "RapidWAN, Inc."}, { 0x00, 0x06, 0x07, "Omni Directional Control Technology Inc."}, { 0x00, 0x06, 0x08, "At-Sky SAS"}, { 0x00, 0x06, 0x09, "Crossport Systems"}, { 0x00, 0x06, 0x0A, "Blue2space"}, { 0x00, 0x06, 0x0B, "Paceline Systems Corporation"}, { 0x00, 0x06, 0x0C, "Melco Industries, Inc."}, { 0x00, 0x06, 0x0D, "Wave7 Optics"}, { 0x00, 0x06, 0x0E, "IGYS Systems, Inc."}, { 0x00, 0x06, 0x0F, "Narad Networks Inc"}, { 0x00, 0x06, 0x10, "Abeona Networks Inc"}, { 0x00, 0x06, 0x11, "Zeus Wireless, Inc."}, { 0x00, 0x06, 0x12, "Accusys, Inc."}, { 0x00, 0x06, 0x13, "Kawasaki Microelectronics Incorporated"}, { 0x00, 0x06, 0x14, "Prism Holdings"}, { 0x00, 0x06, 0x15, "Kimoto Electric Co., Ltd."}, { 0x00, 0x06, 0x16, "Tel Net Co., Ltd."}, { 0x00, 0x06, 0x17, "Redswitch Inc."}, { 0x00, 0x06, 0x18, "DigiPower Manufacturing Inc."}, { 0x00, 0x06, 0x19, "Connection Technology Systems"}, { 0x00, 0x06, 0x1A, "Zetari Inc."}, { 0x00, 0x06, 0x1B, "Portable Systems, IBM Japan Co, Ltd"}, { 0x00, 0x06, 0x1C, "Hoshino Metal Industries, Ltd."}, { 0x00, 0x06, 0x1D, "MIP Telecom, Inc."}, { 0x00, 0x06, 0x1E, "Maxan Systems"}, { 0x00, 0x06, 0x1F, "Vision Components GmbH"}, { 0x00, 0x06, 0x20, "Serial System Ltd."}, { 0x00, 0x06, 0x21, "Hinox, Co., Ltd."}, { 0x00, 0x06, 0x22, "Chung Fu Chen Yeh Enterprise Corp."}, { 0x00, 0x06, 0x23, "MGE UPS Systems France"}, { 0x00, 0x06, 0x24, "Gentner Communications Corp."}, { 0x00, 0x06, 0x25, "The Linksys Group, Inc."}, { 0x00, 0x06, 0x26, "MWE GmbH"}, { 0x00, 0x06, 0x27, "Uniwide Technologies, Inc."}, { 0x00, 0x06, 0x28, "Cisco Systems, Inc."}, { 0x00, 0x06, 0x29, "IBM CORPORATION"}, { 0x00, 0x06, 0x2A, "Cisco Systems, Inc."}, { 0x00, 0x06, 0x2B, "INTRASERVER TECHNOLOGY"}, { 0x00, 0x06, 0x2C, "Network Robots, Inc."}, { 0x00, 0x06, 0x2D, "TouchStar Technologies, L.L.C."}, { 0x00, 0x06, 0x2E, "Aristos Logic Corp."}, { 0x00, 0x06, 0x2F, "Pivotech Systems Inc."}, { 0x00, 0x06, 0x30, "Adtranz Sweden"}, { 0x00, 0x06, 0x31, "Optical Solutions, Inc."}, { 0x00, 0x06, 0x32, "Mesco Engineering GmbH"}, { 0x00, 0x06, 0x33, "Heimann Biometric Systems GmbH"}, { 0x00, 0x06, 0x34, "GTE Airfone Inc."}, { 0x00, 0x06, 0x35, "PacketAir Networks, Inc."}, { 0x00, 0x06, 0x36, "Jedai Broadband Networks"}, { 0x00, 0x06, 0x37, "Toptrend-Meta Information (ShenZhen) Inc."}, { 0x00, 0x06, 0x38, "Sungjin C&C Co., Ltd."}, { 0x00, 0x06, 0x39, "Newtec"}, { 0x00, 0x06, 0x3A, "Dura Micro, Inc."}, { 0x00, 0x06, 0x3B, "Arcturus Networks, Inc."}, { 0x00, 0x06, 0x3C, "NMI Electronics Ltd"}, { 0x00, 0x06, 0x3D, "Microwave Data Systems Inc."}, { 0x00, 0x06, 0x3E, "Opthos Inc."}, { 0x00, 0x06, 0x3F, "Everex Communications Inc."}, { 0x00, 0x06, 0x40, "White Rock Networks"}, { 0x00, 0x06, 0x41, "ITCN"}, { 0x00, 0x06, 0x42, "Genetel Systems Inc."}, { 0x00, 0x06, 0x43, "SONO Computer Co., Ltd."}, { 0x00, 0x06, 0x44, "NEIX Inc."}, { 0x00, 0x06, 0x45, "Meisei Electric Co. Ltd."}, { 0x00, 0x06, 0x46, "ShenZhen XunBao Network Technology Co Ltd"}, { 0x00, 0x06, 0x47, "Etrali S.A."}, { 0x00, 0x06, 0x48, "Seedsware, Inc."}, { 0x00, 0x06, 0x49, "Quante"}, { 0x00, 0x06, 0x4A, "Honeywell Co., Ltd. (KOREA)"}, { 0x00, 0x06, 0x4B, "Alexon Co., Ltd."}, { 0x00, 0x06, 0x4C, "Invicta Networks, Inc."}, { 0x00, 0x06, 0x4D, "Sencore"}, { 0x00, 0x06, 0x4E, "Broad Net Technology Inc."}, { 0x00, 0x06, 0x4F, "PRO-NETS Technology Corporation"}, { 0x00, 0x06, 0x50, "Tiburon Networks, Inc."}, { 0x00, 0x06, 0x51, "Aspen Networks Inc."}, { 0x00, 0x06, 0x52, "Cisco Systems, Inc."}, { 0x00, 0x06, 0x53, "Cisco Systems, Inc."}, { 0x00, 0x06, 0x54, "Maxxio Technologies"}, { 0x00, 0x06, 0x55, "Yipee, Inc."}, { 0x00, 0x06, 0x56, "Tactel AB"}, { 0x00, 0x06, 0x57, "Market Central, Inc."}, { 0x00, 0x06, 0x58, "Helmut Fischer GmbH & Co. KG"}, { 0x00, 0x06, 0x59, "EAL (Apeldoorn) B.V."}, { 0x00, 0x06, 0x5A, "Strix Systems"}, { 0x00, 0x06, 0x5B, "Dell Computer Corp."}, { 0x00, 0x06, 0x5C, "Malachite Technologies, Inc."}, { 0x00, 0x06, 0x5D, "Heidelberg Web Systems"}, { 0x00, 0x06, 0x5E, "Photuris, Inc."}, { 0x00, 0x06, 0x5F, "ECI Telecom - NGTS Ltd."}, { 0x00, 0x06, 0x60, "NADEX Co., Ltd."}, { 0x00, 0x06, 0x61, "NIA Home Technologies Corp."}, { 0x00, 0x06, 0x62, "MBM Technology Ltd."}, { 0x00, 0x06, 0x63, "Human Technology Co., Ltd."}, { 0x00, 0x06, 0x64, "Fostex Corporation"}, { 0x00, 0x06, 0x65, "Sunny Giken, Inc."}, { 0x00, 0x06, 0x66, "Roving Networks"}, { 0x00, 0x06, 0x67, "Tripp Lite"}, { 0x00, 0x06, 0x68, "Vicon Industries Inc."}, { 0x00, 0x06, 0x69, "Datasound Laboratories Ltd"}, { 0x00, 0x06, 0x6A, "InfiniCon Systems, Inc."}, { 0x00, 0x06, 0x6B, "Sysmex Corporation"}, { 0x00, 0x06, 0x6C, "Robinson Corporation"}, { 0x00, 0x06, 0x6D, "Compuprint S.P.A."}, { 0x00, 0x06, 0x6E, "Delta Electronics, Inc."}, { 0x00, 0x06, 0x6F, "Korea Data Systems"}, { 0x00, 0x06, 0x70, "Upponetti Oy"}, { 0x00, 0x06, 0x71, "Softing AG"}, { 0x00, 0x06, 0x72, "Netezza"}, { 0x00, 0x06, 0x73, "Optelecom, Inc."}, { 0x00, 0x06, 0x74, "Spectrum Control, Inc."}, { 0x00, 0x06, 0x75, "Banderacom, Inc."}, { 0x00, 0x06, 0x76, "Novra Technologies Inc."}, { 0x00, 0x06, 0x77, "SICK AG"}, { 0x00, 0x06, 0x78, "Marantz Japan, Inc."}, { 0x00, 0x06, 0x79, "Konami Corporation"}, { 0x00, 0x06, 0x7A, "JMP Systems"}, { 0x00, 0x06, 0x7B, "Toplink C&C Corporation"}, { 0x00, 0x06, 0x7C, "CISCO SYSTEMS, INC."}, { 0x00, 0x06, 0x7D, "Takasago Ltd."}, { 0x00, 0x06, 0x7E, "WinCom Systems, Inc."}, { 0x00, 0x06, 0x7F, "Rearden Steel Technologies"}, { 0x00, 0x06, 0x80, "Card Access, Inc."}, { 0x00, 0x06, 0x81, "Goepel Electronic GmbH"}, { 0x00, 0x06, 0x82, "Convedia"}, { 0x00, 0x06, 0x83, "Bravara Communications, Inc."}, { 0x00, 0x06, 0x84, "Biacore AB"}, { 0x00, 0x06, 0x85, "NetNearU Corporation"}, { 0x00, 0x06, 0x86, "ZARDCOM Co., Ltd."}, { 0x00, 0x06, 0x87, "Omnitron Systems Technology, Inc."}, { 0x00, 0x06, 0x88, "Telways Communication Co., Ltd."}, { 0x00, 0x06, 0x89, "yLez Technologies Pte Ltd"}, { 0x00, 0x06, 0x8A, "NeuronNet Co. Ltd. R&D Center"}, { 0x00, 0x06, 0x8B, "AirRunner Technologies, Inc."}, { 0x00, 0x06, 0x8C, "3Com Corporation"}, { 0x00, 0x06, 0x8D, "SANgate Systems"}, { 0x00, 0x06, 0x8E, "HID Corporation"}, { 0x00, 0x06, 0x8F, "Telemonitor, Inc."}, { 0x00, 0x06, 0x90, "Euracom Communication GmbH"}, { 0x00, 0x06, 0x91, "PT Inovacao"}, { 0x00, 0x06, 0x92, "Intruvert Networks, Inc."}, { 0x00, 0x06, 0x93, "Flexus Computer Technology, Inc."}, { 0x00, 0x06, 0x94, "Mobillian Corporation"}, { 0x00, 0x06, 0x95, "Ensure Technologies, Inc."}, { 0x00, 0x06, 0x96, "Advent Networks"}, { 0x00, 0x06, 0x97, "R & D Center"}, { 0x00, 0x06, 0x98, "egnite Software GmbH"}, { 0x00, 0x06, 0x99, "Vida Design Co."}, { 0x00, 0x06, 0x9A, "e & Tel"}, { 0x00, 0x06, 0x9B, "AVT Audio Video Technologies GmbH"}, { 0x00, 0x06, 0x9C, "Transmode Systems AB"}, { 0x00, 0x06, 0x9D, "Petards Mobile Intelligence"}, { 0x00, 0x06, 0x9E, "UNIQA, Inc."}, { 0x00, 0x06, 0x9F, "Kuokoa Networks"}, { 0x00, 0x06, 0xA0, "Mx Imaging"}, { 0x00, 0x06, 0xA1, "Celsian Technologies, Inc."}, { 0x00, 0x06, 0xA2, "Transilica, Inc."}, { 0x00, 0x06, 0xA3, "Bitran Corporation"}, { 0x00, 0x06, 0xA4, "INNOWELL Corp."}, { 0x00, 0x06, 0xA5, "PINON Corp."}, { 0x00, 0x06, 0xA6, "Artistic Licence (UK) Ltd"}, { 0x00, 0x06, 0xA7, "Primarion"}, { 0x00, 0x06, 0xA8, "KC Technology, Inc."}, { 0x00, 0x06, 0xA9, "Universal Instruments Corp."}, { 0x00, 0x06, 0xAA, "Miltope Corporation"}, { 0x00, 0x06, 0xAB, "W-Link Systems, Inc."}, { 0x00, 0x06, 0xAC, "Intersoft Co."}, { 0x00, 0x06, 0xAD, "KB Electronics Ltd."}, { 0x00, 0x06, 0xAE, "Himachal Futuristic Communications Ltd"}, { 0x00, 0x06, 0xB0, "Comtech EF Data Corp."}, { 0x00, 0x06, 0xB1, "Sonicwall"}, { 0x00, 0x06, 0xB2, "Linxtek Co."}, { 0x00, 0x06, 0xB3, "Diagraph Corporation"}, { 0x00, 0x06, 0xB4, "Vorne Industries, Inc."}, { 0x00, 0x06, 0xB5, "Luminent, Inc."}, { 0x00, 0x06, 0xB6, "Nir-Or Israel Ltd."}, { 0x00, 0x06, 0xB7, "TELEM GmbH"}, { 0x00, 0x06, 0xB8, "Bandspeed Pty Ltd"}, { 0x00, 0x06, 0xB9, "A5TEK Corp."}, { 0x00, 0x06, 0xBA, "Westwave Communications"}, { 0x00, 0x06, 0xBB, "ATI Technologies Inc."}, { 0x00, 0x06, 0xBC, "Macrolink, Inc."}, { 0x00, 0x06, 0xBD, "BNTECHNOLOGY Co., Ltd."}, { 0x00, 0x06, 0xBE, "Baumer Optronic GmbH"}, { 0x00, 0x06, 0xBF, "Accella Technologies Co., Ltd."}, { 0x00, 0x06, 0xC0, "United Internetworks, Inc."}, { 0x00, 0x06, 0xC1, "CISCO SYSTEMS, INC."}, { 0x00, 0x06, 0xC2, "Smartmatic Corporation"}, { 0x00, 0x06, 0xC3, "Schindler Elevators Ltd."}, { 0x00, 0x06, 0xC4, "Piolink Inc."}, { 0x00, 0x06, 0xC5, "INNOVI Technologies Limited"}, { 0x00, 0x06, 0xC6, "lesswire AG"}, { 0x00, 0x06, 0xC7, "RFNET Technologies Pte Ltd (S)"}, { 0x00, 0x06, 0xC8, "Sumitomo Metal Micro Devices, Inc."}, { 0x00, 0x06, 0xC9, "Technical Marketing Research, Inc."}, { 0x00, 0x06, 0xCA, "American Computer & Digital Components, Inc. (ACDC)"}, { 0x00, 0x06, 0xCB, "Jotron Electronics A/S"}, { 0x00, 0x06, 0xCC, "JMI Electronics Co., Ltd."}, { 0x00, 0x06, 0xCD, "CreoScitex Corporation Ltd."}, { 0x00, 0x06, 0xCE, "DATENO"}, { 0x00, 0x06, 0xCF, "Thales Avionics In-Flight Systems, LLC"}, { 0x00, 0x06, 0xD0, "Elgar Electronics Corp."}, { 0x00, 0x06, 0xD1, "Tahoe Networks, Inc."}, { 0x00, 0x06, 0xD2, "Tundra Semiconductor Corp."}, { 0x00, 0x06, 0xD3, "Alpha Telecom, Inc. U.S.A."}, { 0x00, 0x06, 0xD4, "Interactive Objects, Inc."}, { 0x00, 0x06, 0xD5, "Diamond Systems Corp."}, { 0x00, 0x06, 0xD6, "Cisco Systems, Inc."}, { 0x00, 0x06, 0xD7, "Cisco Systems, Inc."}, { 0x00, 0x06, 0xD8, "Maple Optical Systems"}, { 0x00, 0x06, 0xD9, "IPM-Net S.p.A."}, { 0x00, 0x06, 0xDA, "ITRAN Communications Ltd."}, { 0x00, 0x06, 0xDB, "ICHIPS Co., Ltd."}, { 0x00, 0x06, 0xDC, "Syabas Technology (Amquest)"}, { 0x00, 0x06, 0xDD, "AT & T Laboratories - Cambridge Ltd"}, { 0x00, 0x06, 0xDE, "Flash Technology"}, { 0x00, 0x06, 0xDF, "AIDONIC Corporation"}, { 0x00, 0x06, 0xE0, "MAT Co., Ltd."}, { 0x00, 0x06, 0xE1, "Techno Trade s.a"}, { 0x00, 0x06, 0xE2, "Ceemax Technology Co., Ltd."}, { 0x00, 0x06, 0xE3, "Quantitative Imaging Corporation"}, { 0x00, 0x06, 0xE4, "Citel Technologies Ltd."}, { 0x00, 0x06, 0xE5, "Fujian Newland Computer Ltd. Co."}, { 0x00, 0x06, 0xE6, "DongYang Telecom Co., Ltd."}, { 0x00, 0x06, 0xE7, "Bit Blitz Communications Inc."}, { 0x00, 0x06, 0xE8, "Optical Network Testing, Inc."}, { 0x00, 0x06, 0xE9, "Intime Corp."}, { 0x00, 0x06, 0xEA, "ELZET80 Mikrocomputer GmbH&Co. KG"}, { 0x00, 0x06, 0xEB, "Global Data"}, { 0x00, 0x06, 0xEC, "M/A COM Private Radio System Inc."}, { 0x00, 0x06, 0xED, "Inara Networks"}, { 0x00, 0x06, 0xEE, "Shenyang Neu-era Information & Technology Stock Co., Ltd"}, { 0x00, 0x06, 0xEF, "Maxxan Systems, Inc."}, { 0x00, 0x06, 0xF0, "Digeo, Inc."}, { 0x00, 0x06, 0xF1, "Optillion"}, { 0x00, 0x06, 0xF2, "Platys Communications"}, { 0x00, 0x06, 0xF3, "AcceLight Networks"}, { 0x00, 0x06, 0xF4, "Prime Electronics & Satellitics Inc."}, { 0x00, 0x06, 0xF9, "Mitsui Zosen Systems Research Inc."}, { 0x00, 0x06, 0xFA, "IP SQUARE Co, Ltd."}, { 0x00, 0x06, 0xFB, "Hitachi Koki Co., Ltd."}, { 0x00, 0x06, 0xFC, "Fnet Co., Ltd."}, { 0x00, 0x06, 0xFD, "Comjet Information Systems Corp."}, { 0x00, 0x06, 0xFE, "Celion Networks, Inc."}, { 0x00, 0x06, 0xFF, "Sheba Systems Co., Ltd."}, { 0x00, 0x07, 0x00, "Zettamedia Korea"}, { 0x00, 0x07, 0x01, "RACAL-DATACOM"}, { 0x00, 0x07, 0x02, "Varian Medical Systems"}, { 0x00, 0x07, 0x03, "CSEE Transport"}, { 0x00, 0x07, 0x05, "Endress & Hauser GmbH & Co"}, { 0x00, 0x07, 0x06, "Sanritz Corporation"}, { 0x00, 0x07, 0x07, "Interalia Inc."}, { 0x00, 0x07, 0x08, "Bitrage Inc."}, { 0x00, 0x07, 0x09, "Westerstrand Urfabrik AB"}, { 0x00, 0x07, 0x0A, "Unicom Automation Co., Ltd."}, { 0x00, 0x07, 0x0B, "Octal, SA"}, { 0x00, 0x07, 0x0C, "SVA-Intrusion.com Co. Ltd."}, { 0x00, 0x07, 0x0D, "Cisco Systems Inc."}, { 0x00, 0x07, 0x0E, "Cisco Systems Inc."}, { 0x00, 0x07, 0x0F, "Fujant, Inc."}, { 0x00, 0x07, 0x10, "Adax, Inc."}, { 0x00, 0x07, 0x11, "Acterna"}, { 0x00, 0x07, 0x12, "JAL Information Technology"}, { 0x00, 0x07, 0x13, "IP One, Inc."}, { 0x00, 0x07, 0x14, "Brightcom"}, { 0x00, 0x07, 0x15, "General Research of Electronics, Inc."}, { 0x00, 0x07, 0x16, "J & S Marine Ltd."}, { 0x00, 0x07, 0x17, "Wieland Electric GmbH"}, { 0x00, 0x07, 0x18, "iCanTek Co., Ltd."}, { 0x00, 0x07, 0x19, "Mobiis Co., Ltd."}, { 0x00, 0x07, 0x1A, "Finedigital Inc."}, { 0x00, 0x07, 0x1B, "Position Technology Inc."}, { 0x00, 0x07, 0x1C, "AT&T Fixed Wireless Services"}, { 0x00, 0x07, 0x1D, "Satelsa Sistemas Y Aplicaciones De Telecomunicaciones, S.A."}, { 0x00, 0x07, 0x1E, "Tri-M Engineering / Nupak Dev. Corp."}, { 0x00, 0x07, 0x1F, "European Systems Integration"}, { 0x00, 0x07, 0x20, "Trutzschler GmbH & Co. KG"}, { 0x00, 0x07, 0x21, "Formac Elektronik GmbH"}, { 0x00, 0x07, 0x22, "Nielsen Media Research"}, { 0x00, 0x07, 0x23, "ELCON Systemtechnik GmbH"}, { 0x00, 0x07, 0x24, "Telemax Co., Ltd."}, { 0x00, 0x07, 0x25, "Bematech International Corp."}, { 0x00, 0x07, 0x27, "Zi Corporation (HK) Ltd."}, { 0x00, 0x07, 0x28, "Neo Telecom"}, { 0x00, 0x07, 0x29, "Kistler Instrumente AG"}, { 0x00, 0x07, 0x2A, "Innovance Networks"}, { 0x00, 0x07, 0x2B, "Jung Myung Telecom Co., Ltd."}, { 0x00, 0x07, 0x2C, "Fabricom"}, { 0x00, 0x07, 0x2D, "CNSystems"}, { 0x00, 0x07, 0x2E, "North Node AB"}, { 0x00, 0x07, 0x2F, "Instransa, Inc."}, { 0x00, 0x07, 0x30, "Hutchison OPTEL Telecom Technology Co., Ltd."}, { 0x00, 0x07, 0x31, "Spiricon, Inc."}, { 0x00, 0x07, 0x32, "AAEON Technology Inc."}, { 0x00, 0x07, 0x33, "DANCONTROL Engineering"}, { 0x00, 0x07, 0x34, "Agile Storage, Inc."}, { 0x00, 0x07, 0x35, "Flarion Technologies, Inc."}, { 0x00, 0x07, 0x36, "Data Video Technologies Co., Ltd."}, { 0x00, 0x07, 0x37, "Soriya Co. Ltd."}, { 0x00, 0x07, 0x38, "Young Technology Co., Ltd."}, { 0x00, 0x07, 0x39, "Motion Media Technology Ltd."}, { 0x00, 0x07, 0x3A, "Inventel Systemes"}, { 0x00, 0x07, 0x3B, "Tenovis GmbH & Co KG"}, { 0x00, 0x07, 0x3C, "Telecom Design"}, { 0x00, 0x07, 0x3D, "Nanjing Postel Telecommunications Co., Ltd."}, { 0x00, 0x07, 0x3E, "China Great-Wall Computer Shenzhen Co., Ltd."}, { 0x00, 0x07, 0x3F, "Woojyun Systec Co., Ltd."}, { 0x00, 0x07, 0x40, "Melco Inc."}, { 0x00, 0x07, 0x41, "Sierra Automated Systems"}, { 0x00, 0x07, 0x42, "Current Technologies"}, { 0x00, 0x07, 0x43, "Chelsio Communications"}, { 0x00, 0x07, 0x44, "Unico, Inc."}, { 0x00, 0x07, 0x45, "Radlan Computer Communications Ltd."}, { 0x00, 0x07, 0x46, "Interlink BT, LLC"}, { 0x00, 0x07, 0x47, "Mecalc"}, { 0x00, 0x07, 0x48, "The Imaging Source Europe"}, { 0x00, 0x07, 0x49, "CENiX Inc."}, { 0x00, 0x07, 0x4A, "Carl Valentin GmbH"}, { 0x00, 0x07, 0x4B, "Daihen Corporation"}, { 0x00, 0x07, 0x4C, "Beicom Inc."}, { 0x00, 0x07, 0x4D, "Zebra Technologies Corp."}, { 0x00, 0x07, 0x4E, "Naughty boy co., Ltd."}, { 0x00, 0x07, 0x4F, "Cisco Systems, Inc."}, { 0x00, 0x07, 0x50, "Cisco Systems, Inc."}, { 0x00, 0x07, 0x51, "m.u.t. - GmbH"}, { 0x00, 0x07, 0x52, "Rhythm Watch Co., Ltd."}, { 0x00, 0x07, 0x53, "Beijing Qxcomm Technology Co., Ltd."}, { 0x00, 0x07, 0x54, "Xyterra Computing, Inc."}, { 0x00, 0x07, 0x55, "Lafon SA"}, { 0x00, 0x07, 0x56, "Juyoung Telecom"}, { 0x00, 0x07, 0x57, "Topcall International AG"}, { 0x00, 0x07, 0x58, "Dragonwave"}, { 0x00, 0x07, 0x59, "Boris Manufacturing Corp."}, { 0x00, 0x07, 0x5A, "Air Products and Chemicals, Inc."}, { 0x00, 0x07, 0x5B, "Gibson Guitars"}, { 0x00, 0x07, 0x5C, "ENCAD, Inc."}, { 0x00, 0x07, 0x5D, "Celleritas Inc."}, { 0x00, 0x07, 0x5E, "Pulsar Technologies, Inc."}, { 0x00, 0x07, 0x5F, "VCS Video Communication Systems AG"}, { 0x00, 0x07, 0x60, "TOMIS Information & Telecom Corp."}, { 0x00, 0x07, 0x61, "Logitech SA"}, { 0x00, 0x07, 0x62, "Group Sense Limited"}, { 0x00, 0x07, 0x63, "Sunniwell Cyber Tech. Co., Ltd."}, { 0x00, 0x07, 0x64, "YoungWoo Telecom Co. Ltd."}, { 0x00, 0x07, 0x65, "Jade Quantum Technologies, Inc."}, { 0x00, 0x07, 0x66, "Chou Chin Industrial Co., Ltd."}, { 0x00, 0x07, 0x67, "Yuxing Electronics Company Limited"}, { 0x00, 0x07, 0x68, "Danfoss A/S"}, { 0x00, 0x07, 0x69, "Italiana Macchi SpA"}, { 0x00, 0x07, 0x6A, "NEXTEYE Co., Ltd."}, { 0x00, 0x07, 0x6B, "Stralfors AB"}, { 0x00, 0x07, 0x6C, "Daehanet, Inc."}, { 0x00, 0x07, 0x6D, "Flexlight Networks"}, { 0x00, 0x07, 0x6E, "Sinetica Corporation Ltd."}, { 0x00, 0x07, 0x6F, "Synoptics Limited"}, { 0x00, 0x07, 0x70, "Locusnetworks Corporation"}, { 0x00, 0x07, 0x71, "Embedded System Corporation"}, { 0x00, 0x07, 0x72, "Shanghai Bell Company Limited"}, { 0x00, 0x07, 0x73, "Ascom Powerline Communications Ltd."}, { 0x00, 0x07, 0x74, "GuangZhou Thinker Technology Co. Ltd."}, { 0x00, 0x07, 0x75, "Valence Semiconductor, Inc."}, { 0x00, 0x07, 0x76, "Federal APD"}, { 0x00, 0x07, 0x77, "Motah Ltd."}, { 0x00, 0x07, 0x78, "GERSTEL GmbH & Co. KG"}, { 0x00, 0x07, 0x79, "Sungil Telecom Co., Ltd."}, { 0x00, 0x07, 0x7A, "Infoware System Co., Ltd."}, { 0x00, 0x07, 0x7B, "Millimetrix Broadband Networks"}, { 0x00, 0x07, 0x7C, "OnTime Networks"}, { 0x00, 0x07, 0x7E, "Elrest GmbH"}, { 0x00, 0x07, 0x7F, "J Communications Co., Ltd."}, { 0x00, 0x07, 0x80, "Bluegiga Technologies OY"}, { 0x00, 0x07, 0x81, "Itron Inc."}, { 0x00, 0x07, 0x82, "Nauticus Networks, Inc."}, { 0x00, 0x07, 0x83, "SynCom Network, Inc."}, { 0x00, 0x07, 0x84, "Cisco Systems Inc."}, { 0x00, 0x07, 0x85, "Cisco Systems Inc."}, { 0x00, 0x07, 0x86, "Wireless Networks Inc."}, { 0x00, 0x07, 0x87, "Idea System Co., Ltd."}, { 0x00, 0x07, 0x88, "Clipcomm, Inc."}, { 0x00, 0x07, 0x89, "Eastel Systems Corporation"}, { 0x00, 0x07, 0x8A, "Mentor Data System Inc."}, { 0x00, 0x07, 0x8B, "Wegener Communications, Inc."}, { 0x00, 0x07, 0x8C, "Elektronikspecialisten i Borlange AB"}, { 0x00, 0x07, 0x8D, "NetEngines Ltd."}, { 0x00, 0x07, 0x8E, "Garz & Friche GmbH"}, { 0x00, 0x07, 0x8F, "Emkay Innovative Products"}, { 0x00, 0x07, 0x90, "Tri-M Technologies (s) Limited"}, { 0x00, 0x07, 0x91, "International Data Communications, Inc."}, { 0x00, 0x07, 0x92, "Suetron Electronic GmbH"}, { 0x00, 0x07, 0x94, "Simple Devices, Inc."}, { 0x00, 0x07, 0x95, "Elitegroup Computer System Co. (ECS)"}, { 0x00, 0x07, 0x96, "LSI Systems, Inc."}, { 0x00, 0x07, 0x97, "Netpower Co., Ltd."}, { 0x00, 0x07, 0x98, "Selea SRL"}, { 0x00, 0x07, 0x99, "Tipping Point Technologies, Inc."}, { 0x00, 0x07, 0x9A, "SmartSight Networks Inc."}, { 0x00, 0x07, 0x9B, "Aurora Networks"}, { 0x00, 0x07, 0x9C, "Golden Electronics Technology Co., Ltd."}, { 0x00, 0x07, 0x9D, "Musashi Co., Ltd."}, { 0x00, 0x07, 0x9E, "Ilinx Co., Ltd."}, { 0x00, 0x07, 0x9F, "Action Digital Inc."}, { 0x00, 0x07, 0xA0, "e-Watch Inc."}, { 0x00, 0x07, 0xA1, "Viasys Critical Care"}, { 0x00, 0x07, 0xA2, "Opteon Corporation"}, { 0x00, 0x07, 0xA3, "Ositis Software, Inc."}, { 0x00, 0x07, 0xA4, "GN Netcom Ltd."}, { 0x00, 0x07, 0xA5, "Y.D.K Co. Ltd."}, { 0x00, 0x07, 0xA6, "Home Automation, Inc."}, { 0x00, 0x07, 0xA7, "A-Z Inc."}, { 0x00, 0x07, 0xA8, "Haier Group Technologies Ltd."}, { 0x00, 0x07, 0xA9, "Novasonics"}, { 0x00, 0x07, 0xAA, "Quantum Data Inc."}, { 0x00, 0x07, 0xAC, "Eolring"}, { 0x00, 0x07, 0xAD, "Pentacon GmbH Foto-und Feinwerktechnik"}, { 0x00, 0x07, 0xAE, "Layer N Networks"}, { 0x00, 0x07, 0xAF, "N-Tron Corp."}, { 0x00, 0x07, 0xB0, "Office Details, Inc."}, { 0x00, 0x07, 0xB1, "Equator Technologies"}, { 0x00, 0x07, 0xB2, "Transaccess S.A."}, { 0x00, 0x07, 0xB3, "Cisco Systems Inc."}, { 0x00, 0x07, 0xB4, "Cisco Systems Inc."}, { 0x00, 0x07, 0xB5, "Any One Wireless Ltd."}, { 0x00, 0x07, 0xB6, "Telecom Technology Ltd."}, { 0x00, 0x07, 0xB7, "Samurai Ind. Prods Eletronicos Ltda"}, { 0x00, 0x07, 0xB8, "American Predator Corp."}, { 0x00, 0x07, 0xB9, "Ginganet Corporation"}, { 0x00, 0x07, 0xBA, "Xebeo Communications, Inc."}, { 0x00, 0x07, 0xBB, "Confluence Networks"}, { 0x00, 0x07, 0xBC, "Identix Inc."}, { 0x00, 0x07, 0xBD, "Radionet Ltd."}, { 0x00, 0x07, 0xBE, "DataLogic SpA"}, { 0x00, 0x07, 0xBF, "Armillaire Technologies, Inc."}, { 0x00, 0x07, 0xC0, "NetZerver Inc."}, { 0x00, 0x07, 0xC1, "Overture Networks, Inc."}, { 0x00, 0x07, 0xC2, "Netsys Telecom"}, { 0x00, 0x07, 0xC3, "Cirpack"}, { 0x00, 0x07, 0xC4, "JEAN Co. Ltd."}, { 0x00, 0x07, 0xC5, "Gcom, Inc."}, { 0x00, 0x07, 0xC6, "VDS Vosskuhler GmbH"}, { 0x00, 0x07, 0xC7, "Synectics Systems Limited"}, { 0x00, 0x07, 0xC8, "Brain21, Inc."}, { 0x00, 0x07, 0xC9, "Technol Seven Co., Ltd."}, { 0x00, 0x07, 0xCA, "Creatix Polymedia Ges Fur Kommunikaitonssysteme"}, { 0x00, 0x07, 0xCB, "Freebox SA"}, { 0x00, 0x07, 0xCC, "Kaba Benzing GmbH"}, { 0x00, 0x07, 0xCD, "NMTEL Co., Ltd."}, { 0x00, 0x07, 0xCE, "Cabletime Limited"}, { 0x00, 0x07, 0xCF, "Anoto AB"}, { 0x00, 0x07, 0xD0, "Automat Engenharia de Automaoa Ltda."}, { 0x00, 0x07, 0xD1, "Spectrum Signal Processing Inc."}, { 0x00, 0x07, 0xD2, "Logopak Systeme"}, { 0x00, 0x07, 0xD3, "Stork Digital Imaging B.V."}, { 0x00, 0x07, 0xD4, "Zhejiang Yutong Network Communication Co Ltd."}, { 0x00, 0x07, 0xD5, "3e Technologies Int;., Inc."}, { 0x00, 0x07, 0xD6, "Commil Ltd."}, { 0x00, 0x07, 0xD7, "Caporis Networks AG"}, { 0x00, 0x07, 0xD8, "Hitron Systems Inc."}, { 0x00, 0x07, 0xD9, "Splicecom"}, { 0x00, 0x07, 0xDA, "Neuro Telecom Co., Ltd."}, { 0x00, 0x07, 0xDB, "Kirana Networks, Inc."}, { 0x00, 0x07, 0xDC, "Atek Co, Ltd."}, { 0x00, 0x07, 0xDD, "Cradle Technologies"}, { 0x00, 0x07, 0xDE, "eCopilt AB"}, { 0x00, 0x07, 0xDF, "Vbrick Systems Inc."}, { 0x00, 0x07, 0xE0, "Palm Inc."}, { 0x00, 0x07, 0xE1, "WIS Communications Co. Ltd."}, { 0x00, 0x07, 0xE2, "Bitworks, Inc."}, { 0x00, 0x07, 0xE3, "Navcom Technology, Inc."}, { 0x00, 0x07, 0xE4, "SoftRadio Co., Ltd."}, { 0x00, 0x07, 0xE5, "Coup Corporation"}, { 0x00, 0x07, 0xE6, "edgeflow Canada Inc."}, { 0x00, 0x07, 0xE7, "FreeWave Technologies"}, { 0x00, 0x07, 0xE8, "St. Bernard Software"}, { 0x00, 0x07, 0xE9, "Intel Corporation"}, { 0x00, 0x07, 0xEA, "Massana, Inc."}, { 0x00, 0x07, 0xEB, "Cisco Systems Inc."}, { 0x00, 0x07, 0xEC, "Cisco Systems Inc."}, { 0x00, 0x07, 0xED, "Altera Corporation"}, { 0x00, 0x07, 0xEE, "telco Informationssysteme GmbH"}, { 0x00, 0x07, 0xEF, "Lockheed Martin Tactical Systems"}, { 0x00, 0x07, 0xF0, "LogiSync Corporation"}, { 0x00, 0x07, 0xF1, "TeraBurst Networks Inc."}, { 0x00, 0x07, 0xF2, "IOA Corporation"}, { 0x00, 0x07, 0xF3, "Think Engine Networks"}, { 0x00, 0x07, 0xF4, "Eletex Co., Ltd."}, { 0x00, 0x07, 0xF5, "Bridgeco Co AG"}, { 0x00, 0x07, 0xF6, "Qqest Software Systems"}, { 0x00, 0x07, 0xF7, "Galtronics"}, { 0x00, 0x07, 0xF8, "ITDevices, Inc."}, { 0x00, 0x07, 0xF9, "Phonetics, Inc."}, { 0x00, 0x07, 0xFA, "ITT Co., Ltd."}, { 0x00, 0x07, 0xFB, "Giga Stream UMTS Technologies GmbH"}, { 0x00, 0x07, 0xFC, "Adept Systems Inc."}, { 0x00, 0x07, 0xFD, "LANergy Ltd."}, { 0x00, 0x07, 0xFE, "Rigaku Corporation"}, { 0x00, 0x07, 0xFF, "Gluon Networks"}, { 0x00, 0x08, 0x00, "MULTITECH SYSTEMS, INC."}, { 0x00, 0x08, 0x01, "HighSpeed Surfing Inc."}, { 0x00, 0x08, 0x02, "Compaq Computer Corporation"}, { 0x00, 0x08, 0x03, "Cos Tron"}, { 0x00, 0x08, 0x04, "ICA Inc."}, { 0x00, 0x08, 0x05, "Techno-Holon Corporation"}, { 0x00, 0x08, 0x06, "Raonet Systems, Inc."}, { 0x00, 0x08, 0x07, "Access Devices Limited"}, { 0x00, 0x08, 0x08, "PPT Vision, Inc."}, { 0x00, 0x08, 0x09, "Systemonic AG"}, { 0x00, 0x08, 0x0A, "Espera-Werke GmbH"}, { 0x00, 0x08, 0x0B, "Birka BPA Informationssystem AB"}, { 0x00, 0x08, 0x0C, "VDA elettronica SrL"}, { 0x00, 0x08, 0x0D, "Toshiba"}, { 0x00, 0x08, 0x0E, "Motorola, BCS"}, { 0x00, 0x08, 0x0F, "Proximion Fiber Optics AB"}, { 0x00, 0x08, 0x10, "Key Technology, Inc."}, { 0x00, 0x08, 0x11, "VOIX Corporation"}, { 0x00, 0x08, 0x12, "GM-2 Corporation"}, { 0x00, 0x08, 0x13, "Diskbank, Inc."}, { 0x00, 0x08, 0x14, "TIL Technologies"}, { 0x00, 0x08, 0x15, "CATS Co., Ltd."}, { 0x00, 0x08, 0x16, "Bluetags A/S"}, { 0x00, 0x08, 0x17, "EmergeCore Networks LLC"}, { 0x00, 0x08, 0x18, "Pixelworks, Inc."}, { 0x00, 0x08, 0x19, "Banksys"}, { 0x00, 0x08, 0x1A, "Sanrad Intelligence Storage Communications (2000) Ltd."}, { 0x00, 0x08, 0x1B, "Windigo Systems"}, { 0x00, 0x08, 0x1C, "@pos.com"}, { 0x00, 0x08, 0x1D, "Ipsil, Incorporated"}, { 0x00, 0x08, 0x1E, "Repeatit AB"}, { 0x00, 0x08, 0x1F, "Pou Yuen Tech Corp. Ltd."}, { 0x00, 0x08, 0x20, "Cisco Systems Inc."}, { 0x00, 0x08, 0x21, "Cisco Systems Inc."}, { 0x00, 0x08, 0x22, "InPro Comm"}, { 0x00, 0x08, 0x23, "Texa Corp."}, { 0x00, 0x08, 0x24, "Promatek Industries Ltd."}, { 0x00, 0x08, 0x25, "Acme Packet"}, { 0x00, 0x08, 0x26, "Colorado Med Tech"}, { 0x00, 0x08, 0x27, "Pirelli Cables & Systems"}, { 0x00, 0x08, 0x28, "Koei Engineering Ltd."}, { 0x00, 0x08, 0x29, "Aval Nagasaki Corporation"}, { 0x00, 0x08, 0x2A, "Powerwallz Network Security"}, { 0x00, 0x08, 0x2B, "Wooksung Electronics, Inc."}, { 0x00, 0x08, 0x2C, "Homag AG"}, { 0x00, 0x08, 0x2D, "Indus Teqsite Private Limited"}, { 0x00, 0x08, 0x2E, "Multitone Electronics PLC"}, { 0x00, 0x08, 0x4E, "DivergeNet, Inc."}, { 0x00, 0x08, 0x4F, "Qualstar Corporation"}, { 0x00, 0x08, 0x50, "Arizona Instrument Corp."}, { 0x00, 0x08, 0x51, "Canadian Bank Note Company, Ltd."}, { 0x00, 0x08, 0x52, "Davolink Co. Inc."}, { 0x00, 0x08, 0x53, "Schleicher GmbH & Co. Relaiswerke KG"}, { 0x00, 0x08, 0x54, "Netronix, Inc."}, { 0x00, 0x08, 0x55, "NASA-Goddard Space Flight Center"}, { 0x00, 0x08, 0x56, "Gamatronic Electronic Industries Ltd."}, { 0x00, 0x08, 0x57, "Polaris Networks, Inc."}, { 0x00, 0x08, 0x58, "Novatechnology Inc."}, { 0x00, 0x08, 0x59, "ShenZhen Unitone Electronics Co., Ltd."}, { 0x00, 0x08, 0x5A, "IntiGate Inc."}, { 0x00, 0x08, 0x5B, "Hanbit Electronics Co., Ltd."}, { 0x00, 0x08, 0x5C, "Shanghai Dare Technologies Co. Ltd."}, { 0x00, 0x08, 0x5D, "Aastra"}, { 0x00, 0x08, 0x5E, "PCO Computer Optics GmbH"}, { 0x00, 0x08, 0x5F, "Picanol N.V."}, { 0x00, 0x08, 0x60, "LodgeNet Entertainment Corp."}, { 0x00, 0x08, 0x61, "SoftEnergy Co., Ltd."}, { 0x00, 0x08, 0x62, "NEC Eluminant Technologies, Inc."}, { 0x00, 0x08, 0x63, "Entrisphere Inc."}, { 0x00, 0x08, 0x64, "Fasy S.p.A."}, { 0x00, 0x08, 0x65, "JASCOM CO., LTD"}, { 0x00, 0x08, 0x66, "DSX Access Systems, Inc."}, { 0x00, 0x08, 0x67, "Uptime Devices"}, { 0x00, 0x08, 0x68, "PurOptix"}, { 0x00, 0x08, 0x69, "Command-e Technology Co.,Ltd."}, { 0x00, 0x08, 0x6A, "Industrie Technik IPS GmbH"}, { 0x00, 0x08, 0x6B, "MIPSYS"}, { 0x00, 0x08, 0x6C, "Plasmon LMS"}, { 0x00, 0x08, 0x6D, "Missouri FreeNet"}, { 0x00, 0x08, 0x6E, "Hyglo AB"}, { 0x00, 0x08, 0x6F, "Resources Computer Network Ltd."}, { 0x00, 0x08, 0x70, "Rasvia Systems, Inc."}, { 0x00, 0x08, 0x71, "NORTHDATA Co., Ltd."}, { 0x00, 0x08, 0x72, "Sorenson Technologies, Inc."}, { 0x00, 0x08, 0x73, "DAP Design B.V."}, { 0x00, 0x08, 0x74, "Dell Computer Corp."}, { 0x00, 0x08, 0x75, "Acorp Electronics Corp."}, { 0x00, 0x08, 0x76, "SDSystem"}, { 0x00, 0x08, 0x77, "Liebert HIROSS S.p.A."}, { 0x00, 0x08, 0x78, "Benchmark Storage Innovations"}, { 0x00, 0x08, 0x79, "CEM Corporation"}, { 0x00, 0x08, 0x7A, "Wipotec GmbH"}, { 0x00, 0x08, 0x7B, "RTX Telecom A/S"}, { 0x00, 0x08, 0x7C, "Cisco Systems, Inc."}, { 0x00, 0x08, 0x7D, "Cisco Systems Inc."}, { 0x00, 0x08, 0x7E, "Bon Electro-Telecom Inc."}, { 0x00, 0x08, 0x7F, "SPAUN electronic GmbH & Co. KG"}, { 0x00, 0x08, 0x80, "BroadTel Canada Communications inc."}, { 0x00, 0x08, 0x81, "DIGITAL HANDS CO.,LTD."}, { 0x00, 0x08, 0x82, "SIGMA CORPORATION"}, { 0x00, 0x08, 0x83, "Hewlett-Packard Company"}, { 0x00, 0x08, 0x84, "Index Braille AB"}, { 0x00, 0x08, 0x85, "EMS Dr. Thomas Wuensche"}, { 0x00, 0x08, 0x86, "Hansung Teliann, Inc."}, { 0x00, 0x08, 0x88, "OULLIM Information Technology Inc,."}, { 0x00, 0x08, 0x89, "Echostar Technologies Corp"}, { 0x00, 0x08, 0x8A, "Minds@Work"}, { 0x00, 0x08, 0x8B, "Tropic Networks Inc."}, { 0x00, 0x08, 0x8C, "Quanta Network Systems Inc."}, { 0x00, 0x08, 0x8D, "Sigma-Links Inc."}, { 0x00, 0x08, 0x8E, "Nihon Computer Co., Ltd."}, { 0x00, 0x08, 0x8F, "ADVANCED DIGITAL TECHNOLOGY"}, { 0x00, 0x08, 0x90, "AVILINKS SA"}, { 0x00, 0x08, 0x91, "Lyan Inc."}, { 0x00, 0x08, 0x92, "EM Solutions"}, { 0x00, 0x08, 0x94, "InnoVISION Multimedia Ltd."}, { 0x00, 0x08, 0x96, "Printronix, Inc."}, { 0x00, 0x08, 0x97, "Quake Technologies"}, { 0x00, 0x08, 0x98, "Gigabit Optics Corporation"}, { 0x00, 0x08, 0x99, "Netbind, Inc."}, { 0x00, 0x08, 0x9A, "Alcatel Microelectronics"}, { 0x00, 0x08, 0x9B, "ICP Electronics Inc."}, { 0x00, 0x08, 0x9C, "Elecs Industry Co., Ltd."}, { 0x00, 0x08, 0x9D, "UHD-Elektronik"}, { 0x00, 0x08, 0x9E, "Beijing Enter-Net co.LTD"}, { 0x00, 0x08, 0x9F, "EFM Networks"}, { 0x00, 0x08, 0xA0, "Stotz Feinmesstechnik GmbH"}, { 0x00, 0x08, 0xA1, "CNet Technology Inc."}, { 0x00, 0x08, 0xA2, "ADI Engineering, Inc."}, { 0x00, 0x08, 0xA3, "Cisco Systems"}, { 0x00, 0x08, 0xA4, "Cisco Systems"}, { 0x00, 0x08, 0xA5, "Peninsula Systems Inc."}, { 0x00, 0x08, 0xA6, "Multiware & Image Co., Ltd."}, { 0x00, 0x08, 0xA7, "iLogic Inc."}, { 0x00, 0x08, 0xA8, "Systec Co., Ltd."}, { 0x00, 0x08, 0xA9, "SangSang Technology, Inc."}, { 0x00, 0x08, 0xAA, "KARAM"}, { 0x00, 0x08, 0xAB, "EnerLinx.com, Inc."}, { 0x00, 0x08, 0xAD, "Toyo-Linx Co., Ltd."}, { 0x00, 0x08, 0xAE, "Packetfront"}, { 0x00, 0x08, 0xAF, "Novatec Corporation"}, { 0x00, 0x08, 0xB0, "BKtel communications GmbH"}, { 0x00, 0x08, 0xB1, "ProQuent Systems"}, { 0x00, 0x08, 0xB2, "SHENZHEN COMPASS TECHNOLOGY DEVELOPMENT CO.,LTD"}, { 0x00, 0x08, 0xB3, "Fastwel"}, { 0x00, 0x08, 0xB4, "SYSPOL"}, { 0x00, 0x08, 0xB5, "TAI GUEN ENTERPRISE CO., LTD"}, { 0x00, 0x08, 0xB6, "RouteFree, Inc."}, { 0x00, 0x08, 0xB7, "HIT Incorporated"}, { 0x00, 0x08, 0xB8, "E.F. Johnson"}, { 0x00, 0x08, 0xB9, "KAON MEDIA Co., Ltd."}, { 0x00, 0x08, 0xBA, "Erskine Systems Ltd"}, { 0x00, 0x08, 0xBB, "NetExcell"}, { 0x00, 0x08, 0xBC, "Ilevo AB"}, { 0x00, 0x08, 0xBD, "TEPG-US"}, { 0x00, 0x08, 0xBE, "XENPAK MSA Group"}, { 0x00, 0x08, 0xBF, "Aptus Elektronik AB"}, { 0x00, 0x08, 0xC0, "ASA SYSTEMS"}, { 0x00, 0x08, 0xC1, "Avistar Communications Corporation"}, { 0x00, 0x08, 0xC2, "Cisco Systems"}, { 0x00, 0x08, 0xC3, "Contex A/S"}, { 0x00, 0x08, 0xC5, "Liontech Co., Ltd."}, { 0x00, 0x08, 0xC6, "Philips Consumer Communications"}, { 0x00, 0x08, 0xC7, "COMPAQ COMPUTER CORPORATION"}, { 0x00, 0x08, 0xC8, "Soneticom, Inc."}, { 0x00, 0x08, 0xC9, "TechniSat Digital GmbH"}, { 0x00, 0x08, 0xCA, "TwinHan Technology Co.,Ltd"}, { 0x00, 0x08, 0xCB, "Zeta Broadband Inc."}, { 0x00, 0x08, 0xCC, "Remotec, Inc."}, { 0x00, 0x08, 0xCD, "With-Net Inc"}, { 0x00, 0x08, 0xCF, "Nippon Koei Power Systems Co., Ltd."}, { 0x00, 0x08, 0xD0, "Musashi Engineering Co., LTD."}, { 0x00, 0x08, 0xD1, "KAREL INC."}, { 0x00, 0x08, 0xD2, "ZOOM Networks Inc."}, { 0x00, 0x08, 0xD3, "Hercules Technologies S.A."}, { 0x00, 0x08, 0xD4, "IneoQuest Technologies, Inc"}, { 0x00, 0x08, 0xD5, "Vanguard Managed Solutions"}, { 0x00, 0x08, 0xD6, "HASSNET Inc."}, { 0x00, 0x08, 0xD7, "HOW CORPORATION"}, { 0x00, 0x08, 0xD8, "Dowkey Microwave"}, { 0x00, 0x08, 0xD9, "Mitadenshi Co.,LTD"}, { 0x00, 0x08, 0xDA, "SofaWare Technologies Ltd."}, { 0x00, 0x08, 0xDB, "Corrigent Systems"}, { 0x00, 0x08, 0xDC, "Wiznet"}, { 0x00, 0x08, 0xDD, "Telena Communications, Inc."}, { 0x00, 0x08, 0xDE, "3UP Systems"}, { 0x00, 0x08, 0xDF, "Alistel Inc."}, { 0x00, 0x08, 0xE0, "ATO Technology Ltd."}, { 0x00, 0x08, 0xE1, "Barix AG"}, { 0x00, 0x08, 0xE2, "Cisco Systems"}, { 0x00, 0x08, 0xE3, "Cisco Systems"}, { 0x00, 0x08, 0xE4, "Envenergy Inc"}, { 0x00, 0x08, 0xE5, "IDK Corporation"}, { 0x00, 0x08, 0xE6, "Littlefeet"}, { 0x00, 0x08, 0xE7, "SHI ControlSystems,Ltd."}, { 0x00, 0x08, 0xE8, "Excel Master Ltd."}, { 0x00, 0x08, 0xE9, "NextGig"}, { 0x00, 0x08, 0xEA, "Motion Control Engineering, Inc"}, { 0x00, 0x08, 0xEB, "ROMWin Co.,Ltd."}, { 0x00, 0x08, 0xEC, "Zonu, Inc."}, { 0x00, 0x08, 0xED, "ST&T Instrument Corp."}, { 0x00, 0x08, 0xEE, "Logic Product Development"}, { 0x00, 0x08, 0xEF, "DIBAL,S.A."}, { 0x00, 0x08, 0xF0, "Next Generation Systems, Inc."}, { 0x00, 0x08, 0xF1, "Voltaire"}, { 0x00, 0x08, 0xF3, "WANY"}, { 0x00, 0x08, 0xF4, "Bluetake Technology Co., Ltd."}, { 0x00, 0x08, 0xF5, "YESTECHNOLOGY Co.,Ltd."}, { 0x00, 0x08, 0xF6, "SUMITOMO ELECTRIC HIGHTECHS.co.,ltd."}, { 0x00, 0x08, 0xF7, "Hitachi Ltd, Semiconductor & Integrated Circuits Gr"}, { 0x00, 0x08, 0xF8, "Guardall Ltd"}, { 0x00, 0x08, 0xF9, "Padcom, Inc."}, { 0x00, 0x08, 0xFA, "Karl E.Brinkmann GmbH"}, { 0x00, 0x08, 0xFC, "Gigaphoton Inc."}, { 0x00, 0x08, 0xFD, "BlueKorea Co., Ltd."}, { 0x00, 0x08, 0xFF, "Trilogy Broadcast (Holdings) Ltd"}, { 0x00, 0x09, 0x00, "TMT"}, { 0x00, 0x09, 0x01, "Shenzhen Shixuntong Information & Technoligy Co"}, { 0x00, 0x09, 0x02, "Redline Communications Inc."}, { 0x00, 0x09, 0x03, "Panasas, Inc"}, { 0x00, 0x09, 0x04, "MONDIAL electronic"}, { 0x00, 0x09, 0x05, "iTEC Technologies Ltd."}, { 0x00, 0x09, 0x06, "Esteem Networks"}, { 0x00, 0x09, 0x07, "Chrysalis Development"}, { 0x00, 0x09, 0x08, "VTech Technology Corp."}, { 0x00, 0x09, 0x09, "Telenor Connect A/S"}, { 0x00, 0x09, 0x0A, "SnedFar Technology Co., Ltd."}, { 0x00, 0x09, 0x0B, "MTL Instruments PLC"}, { 0x00, 0x09, 0x0C, "Mayekawa Mfg. Co. Ltd."}, { 0x00, 0x09, 0x0E, "Helix Technology Inc."}, { 0x00, 0x09, 0x10, "Simple Access Inc."}, { 0x00, 0x09, 0x11, "Cisco Systems"}, { 0x00, 0x09, 0x12, "Cisco Systems"}, { 0x00, 0x09, 0x14, "COMPUTROLS INC."}, { 0x00, 0x09, 0x15, "CAS Corp."}, { 0x00, 0x09, 0x16, "Listman Home Technologies, Inc."}, { 0x00, 0x09, 0x17, "WEM Technology Inc"}, { 0x00, 0x09, 0x18, "SAMSUNG TECHWIN CO.,LTD"}, { 0x00, 0x09, 0x19, "MDS Gateways"}, { 0x00, 0x09, 0x1A, "Macat Optics & Electronics Co., Ltd."}, { 0x00, 0x09, 0x1B, "Digital Generation Inc."}, { 0x00, 0x09, 0x1C, "CacheVision, Inc"}, { 0x00, 0x09, 0x1D, "Proteam Computer Corporation"}, { 0x00, 0x09, 0x1E, "Firstech Technology Corp."}, { 0x00, 0x09, 0x1F, "A&D Co., Ltd."}, { 0x00, 0x09, 0x21, "Planmeca Oy"}, { 0x00, 0x09, 0x22, "Touchless Sensor Technology AG"}, { 0x00, 0x09, 0x23, "Heaman System Co., Ltd"}, { 0x00, 0x09, 0x24, "Telebau GmbH"}, { 0x00, 0x09, 0x25, "VSN Systemen BV"}, { 0x00, 0x09, 0x26, "YODA COMMUNICATIONS, INC."}, { 0x00, 0x09, 0x27, "TOYOKEIKI CO.,LTD."}, { 0x00, 0x09, 0x28, "Telecore Inc"}, { 0x00, 0x09, 0x29, "Sanyo Industries (UK) Limited"}, { 0x00, 0x09, 0x2A, "MYTECS Co.,Ltd."}, { 0x00, 0x09, 0x2B, "iQstor Networks, Inc."}, { 0x00, 0x09, 0x2C, "Hitpoint Inc."}, { 0x00, 0x09, 0x2D, "High Tech Computer, Corp."}, { 0x00, 0x09, 0x2E, "B&Tech System Inc."}, { 0x00, 0x09, 0x2F, "Akom Technology Corporation"}, { 0x00, 0x09, 0x30, "AeroConcierge Inc."}, { 0x00, 0x09, 0x31, "Future Internet, Inc."}, { 0x00, 0x09, 0x32, "Omnilux"}, { 0x00, 0x09, 0x33, "OPTOVALLEY Co. Ltd."}, { 0x00, 0x09, 0x34, "Dream-Multimedia-Tv GmbH"}, { 0x00, 0x09, 0x35, "Sandvine Incorporated"}, { 0x00, 0x09, 0x36, "Ipetronik GmbH & Co.KG"}, { 0x00, 0x09, 0x37, "Inventec Appliance Corp"}, { 0x00, 0x09, 0x38, "Allot Communications"}, { 0x00, 0x09, 0x39, "ShibaSoku Co.,Ltd."}, { 0x00, 0x09, 0x3A, "Molex Fiber Optics"}, { 0x00, 0x09, 0x3B, "HYUNDAI NETWORKS INC."}, { 0x00, 0x09, 0x3C, "Jacques Technologies P/L"}, { 0x00, 0x09, 0x3E, "C&I Technologies"}, { 0x00, 0x09, 0x3F, "Double-Win Enterpirse CO., LTD"}, { 0x00, 0x09, 0x40, "AGFEO GmbH & Co. KG"}, { 0x00, 0x09, 0x41, "Allied Telesis K.K."}, { 0x00, 0x09, 0x42, "CRESCO, LTD."}, { 0x00, 0x09, 0x43, "Cisco Systems"}, { 0x00, 0x09, 0x44, "Cisco Systems"}, { 0x00, 0x09, 0x45, "Palmmicro Communications Inc"}, { 0x00, 0x09, 0x46, "Cluster Labs GmbH"}, { 0x00, 0x09, 0x47, "Aztek, Inc."}, { 0x00, 0x09, 0x48, "Vista Control Systems, Corp."}, { 0x00, 0x09, 0x49, "Glyph Technologies Inc."}, { 0x00, 0x09, 0x4A, "Homenet Communications"}, { 0x00, 0x09, 0x4B, "FillFactory NV"}, { 0x00, 0x09, 0x4C, "Communication Weaver Co.,Ltd."}, { 0x00, 0x09, 0x4D, "Braintree Communications Pty Ltd"}, { 0x00, 0x09, 0x4E, "BARTECH SYSTEMS INTERNATIONAL, INC"}, { 0x00, 0x09, 0x50, "Independent Storage Corporation"}, { 0x00, 0x09, 0x52, "Auerswald GmbH & Co. KG"}, { 0x00, 0x09, 0x53, "Linkage System Integration Co.Ltd."}, { 0x00, 0x09, 0x54, "AMiT spol. s. r. o."}, { 0x00, 0x09, 0x55, "Young Generation International Corp."}, { 0x00, 0x09, 0x56, "Network Systems Group, Ltd. (NSG)"}, { 0x00, 0x09, 0x57, "Supercaller, Inc."}, { 0x00, 0x09, 0x58, "INTELNET S.A."}, { 0x00, 0x09, 0x59, "Sitecsoft"}, { 0x00, 0x09, 0x5A, "RACEWOOD TECHNOLOGY"}, { 0x00, 0x09, 0x5B, "Netgear, Inc."}, { 0x00, 0x09, 0x5D, "Dialogue Technology Corp."}, { 0x00, 0x09, 0x5E, "Masstech Group Inc."}, { 0x00, 0x09, 0x5F, "Telebyte, Inc."}, { 0x00, 0x09, 0x60, "YOZAN Inc."}, { 0x00, 0x09, 0x61, "Switchgear and Instrumentation Ltd"}, { 0x00, 0x09, 0x62, "Filetrac AS"}, { 0x00, 0x09, 0x64, "Hi-Techniques"}, { 0x00, 0x09, 0x66, "Thales Navigation"}, { 0x00, 0x09, 0x67, "Tachyon, Inc"}, { 0x00, 0x09, 0x68, "TECHNOVENTURE, INC."}, { 0x00, 0x09, 0x69, "Meret Optical Communications"}, { 0x00, 0x09, 0x6A, "Cloverleaf Communications Inc."}, { 0x00, 0x09, 0x6B, "IBM Corporation"}, { 0x00, 0x09, 0x6C, "Imedia Semiconductor Corp."}, { 0x00, 0x09, 0x6D, "Powernet Technologies Corp."}, { 0x00, 0x09, 0x6E, "GIANT ELECTRONICS LTD."}, { 0x00, 0x09, 0x6F, "Beijing Zhongqing Elegant Tech. Corp.,Limited"}, { 0x00, 0x09, 0x70, "Vibration Research Corporation"}, { 0x00, 0x09, 0x71, "Time Management, Inc."}, { 0x00, 0x09, 0x72, "Securebase,Inc"}, { 0x00, 0x09, 0x73, "Lenten Technology Co., Ltd."}, { 0x00, 0x09, 0x74, "Innopia Technologies, Inc."}, { 0x00, 0x09, 0x75, "fSONA Communications Corporation"}, { 0x00, 0x09, 0x77, "Brunner Elektronik AG"}, { 0x00, 0x09, 0x78, "AIJI System Co., Ltd."}, { 0x00, 0x09, 0x79, "Advanced Television Systems Committee, Inc."}, { 0x00, 0x09, 0x7A, "Louis Design Labs."}, { 0x00, 0x09, 0x7B, "Cisco Systems"}, { 0x00, 0x09, 0x7C, "Cisco Systems"}, { 0x00, 0x09, 0x7D, "SecWell Networks Oy"}, { 0x00, 0x09, 0x7E, "IMI TECHNOLOGY CO., LTD"}, { 0x00, 0x09, 0x80, "Power Zenith Inc."}, { 0x00, 0x09, 0x81, "Newport Networks"}, { 0x00, 0x09, 0x82, "Loewe Opta GmbH"}, { 0x00, 0x09, 0x83, "Gvision Incorporated"}, { 0x00, 0x09, 0x84, "MyCasa Network Inc."}, { 0x00, 0x09, 0x85, "Auto Telecom Company"}, { 0x00, 0x09, 0x86, "Metalink LTD."}, { 0x00, 0x09, 0x87, "NISHI NIPPON ELECTRIC WIRE & CABLE CO.,LTD."}, { 0x00, 0x09, 0x88, "Nudian Electron Co., Ltd."}, { 0x00, 0x09, 0x89, "VividLogic Inc."}, { 0x00, 0x09, 0x8A, "EqualLogic Inc"}, { 0x00, 0x09, 0x8B, "Entropic Communications, Inc."}, { 0x00, 0x09, 0x8C, "Possio AB"}, { 0x00, 0x09, 0x8D, "DCT Ltd (Digital Communication Technologies Ltd)"}, { 0x00, 0x09, 0x8E, "ipcas GmbH"}, { 0x00, 0x09, 0x8F, "Cetacean Networks"}, { 0x00, 0x09, 0x90, "ACKSYS Communications & systems"}, { 0x00, 0x09, 0x91, "GE Fanuc Automation Manufacturing, Inc."}, { 0x00, 0x09, 0x92, "InterEpoch Technology,INC."}, { 0x00, 0x09, 0x93, "Visteon Corporation"}, { 0x00, 0x09, 0x94, "Cronyx Engineering"}, { 0x00, 0x09, 0x95, "Castle Technology Ltd"}, { 0x00, 0x09, 0x96, "RDI"}, { 0x00, 0x09, 0x97, "Nortel Networks"}, { 0x00, 0x09, 0x99, "CP GEORGES RENAULT"}, { 0x00, 0x09, 0x9A, "ELMO COMPANY, LIMITED"}, { 0x00, 0x09, 0x9B, "Western Telematic Inc."}, { 0x00, 0x09, 0x9C, "Naval Research Laboratory"}, { 0x00, 0x09, 0x9D, "Haliplex Communications"}, { 0x00, 0x09, 0x9E, "Testech, Inc."}, { 0x00, 0x09, 0xA0, "Microtechno Corporation"}, { 0x00, 0x09, 0xA1, "Telewise Communications, Inc."}, { 0x00, 0x09, 0xA2, "Interface Co., Ltd."}, { 0x00, 0x09, 0xA3, "Leadfly Techologies Corp. Ltd."}, { 0x00, 0x09, 0xA4, "HARTEC Corporation"}, { 0x00, 0x09, 0xA5, "HANSUNG ELETRONIC INDUSTRIES DEVELOPMENT CO., LTD"}, { 0x00, 0x09, 0xA6, "Ignis Optics, Inc."}, { 0x00, 0x09, 0xA7, "Bang & Olufsen A/S"}, { 0x00, 0x09, 0xA8, "Eastmode Pte Ltd"}, { 0x00, 0x09, 0xA9, "Ikanos Communications"}, { 0x00, 0x09, 0xAA, "Data Comm for Business, Inc."}, { 0x00, 0x09, 0xAB, "Netcontrol Oy"}, { 0x00, 0x09, 0xAC, "LANVOICE"}, { 0x00, 0x09, 0xAD, "HYUNDAI SYSCOMM, INC."}, { 0x00, 0x09, 0xAE, "OKANO ELECTRIC CO.,LTD"}, { 0x00, 0x09, 0xAF, "e-generis"}, { 0x00, 0x09, 0xB0, "Onkyo Corporation"}, { 0x00, 0x09, 0xB1, "Kanematsu Electronics, Ltd."}, { 0x00, 0x09, 0xB2, "L&F Inc."}, { 0x00, 0x09, 0xB3, "MCM Systems Ltd"}, { 0x00, 0x09, 0xB4, "KISAN TELECOM CO., LTD."}, { 0x00, 0x09, 0xB5, "3J Tech. Co., Ltd."}, { 0x00, 0x09, 0xB6, "Cisco Systems"}, { 0x00, 0x09, 0xB7, "Cisco Systems"}, { 0x00, 0x09, 0xB8, "Entise Systems"}, { 0x00, 0x09, 0xB9, "Action Imaging Solutions"}, { 0x00, 0x09, 0xBA, "MAKU Informationstechik GmbH"}, { 0x00, 0x09, 0xBB, "MathStar, Inc."}, { 0x00, 0x09, 0xBD, "Epygi Technologies, Ltd."}, { 0x00, 0x09, 0xBE, "Mamiya-OP Co.,Ltd."}, { 0x00, 0x09, 0xBF, "Nintendo Co.,Ltd."}, { 0x00, 0x09, 0xC0, "6WIND"}, { 0x00, 0x09, 0xC1, "PROCES-DATA A/S"}, { 0x00, 0x09, 0xC3, "NETAS"}, { 0x00, 0x09, 0xC4, "Medicore Co., Ltd"}, { 0x00, 0x09, 0xC5, "KINGENE Technology Corporation"}, { 0x00, 0x09, 0xC6, "Visionics Corporation"}, { 0x00, 0x09, 0xC7, "Movistec"}, { 0x00, 0x09, 0xC8, "SINAGAWA TSUSHIN KEISOU SERVICE"}, { 0x00, 0x09, 0xC9, "BlueWINC Co., Ltd."}, { 0x00, 0x09, 0xCA, "iMaxNetworks(Shenzhen)Limited."}, { 0x00, 0x09, 0xCB, "HBrain"}, { 0x00, 0x09, 0xCC, "Moog GmbH"}, { 0x00, 0x09, 0xCD, "HUDSON SOFT CO.,LTD."}, { 0x00, 0x09, 0xCE, "SpaceBridge Semiconductor Corp."}, { 0x00, 0x09, 0xCF, "iAd GmbH"}, { 0x00, 0x09, 0xD0, "Versatel Networks"}, { 0x00, 0x09, 0xD1, "SERANOA NETWORKS INC"}, { 0x00, 0x09, 0xD2, "Mai Logic Inc."}, { 0x00, 0x09, 0xD3, "Western DataCom Co., Inc."}, { 0x00, 0x09, 0xD4, "Transtech Networks"}, { 0x00, 0x09, 0xD5, "Signal Communication, Inc."}, { 0x00, 0x09, 0xD6, "KNC One GmbH"}, { 0x00, 0x09, 0xD7, "DC Security Products"}, { 0x00, 0x09, 0xDA, "Control Module Inc."}, { 0x00, 0x09, 0xDB, "eSpace"}, { 0x00, 0x09, 0xDC, "Galaxis Technology AG"}, { 0x00, 0x09, 0xDD, "Mavin Technology Inc."}, { 0x00, 0x09, 0xDE, "Samjin Information & Communications Co., Ltd."}, { 0x00, 0x09, 0xDF, "Vestel Komunikasyon Sanayi ve Ticaret A.S."}, { 0x00, 0x09, 0xE0, "XEMICS S.A."}, { 0x00, 0x09, 0xE1, "Gemtek Technology Co., Ltd."}, { 0x00, 0x09, 0xE2, "Sinbon Electronics Co., Ltd."}, { 0x00, 0x09, 0xE3, "Angel Iglesias S.A."}, { 0x00, 0x09, 0xE4, "K Tech Infosystem Inc."}, { 0x00, 0x09, 0xE5, "Hottinger Baldwin Messtechnik GmbH"}, { 0x00, 0x09, 0xE6, "Cyber Switching Inc."}, { 0x00, 0x09, 0xE7, "ADC Techonology"}, { 0x00, 0x09, 0xE8, "Cisco Systems"}, { 0x00, 0x09, 0xE9, "Cisco Systems"}, { 0x00, 0x09, 0xEA, "YEM Inc."}, { 0x00, 0x09, 0xEB, "HuMANDATA LTD."}, { 0x00, 0x09, 0xEC, "Daktronics, Inc."}, { 0x00, 0x09, 0xED, "CipherOptics"}, { 0x00, 0x09, 0xEE, "MEIKYO ELECTRIC CO.,LTD"}, { 0x00, 0x09, 0xEF, "Vocera Communications"}, { 0x00, 0x09, 0xF0, "Shimizu Technology Inc."}, { 0x00, 0x09, 0xF1, "Yamaki Electric Corporation"}, { 0x00, 0x09, 0xF2, "Cohu, Inc., Electronics Division"}, { 0x00, 0x09, 0xF3, "WELL Communication Corp."}, { 0x00, 0x09, 0xF4, "Alcon Laboratories, Inc."}, { 0x00, 0x09, 0xF5, "Emerson Network Power Co.,Ltd"}, { 0x00, 0x09, 0xF6, "Shenzhen Eastern Digital Tech Ltd."}, { 0x00, 0x09, 0xF7, "SED, a division of Calian"}, { 0x00, 0x09, 0xF8, "UNIMO TECHNOLOGY CO., LTD."}, { 0x00, 0x09, 0xF9, "ART JAPAN CO., LTD."}, { 0x00, 0x09, 0xFB, "Philips Medizinsysteme Boeblingen GmbH"}, { 0x00, 0x09, 0xFC, "IPFLEX Inc."}, { 0x00, 0x09, 0xFD, "Ubinetics Limited"}, { 0x00, 0x09, 0xFE, "Daisy Technologies, Inc."}, { 0x00, 0x09, 0xFF, "X.net 2000 GmbH"}, { 0x00, 0x0A, 0x00, "Mediatek Corp."}, { 0x00, 0x0A, 0x01, "SOHOware, Inc."}, { 0x00, 0x0A, 0x02, "ANNSO CO., LTD."}, { 0x00, 0x0A, 0x03, "ENDESA SERVICIOS, S.L."}, { 0x00, 0x0A, 0x04, "3Com Europe Ltd"}, { 0x00, 0x0A, 0x05, "Widax Corp."}, { 0x00, 0x0A, 0x06, "Teledex LLC"}, { 0x00, 0x0A, 0x07, "Beijing Comsys Technologies Co.,Ltd."}, { 0x00, 0x0A, 0x08, "ALPINE ELECTRONICS, INC."}, { 0x00, 0x0A, 0x0A, "SUNIX Co., Ltd."}, { 0x00, 0x0A, 0x0B, "Sealevel Systems, Inc."}, { 0x00, 0x0A, 0x0C, "Scientific Research Corporation"}, { 0x00, 0x0A, 0x0D, "MergeOptics GmbH"}, { 0x00, 0x0A, 0x0E, "Invivo Research Inc."}, { 0x00, 0x0A, 0x0F, "Ilryung Telesys, Inc"}, { 0x00, 0x0A, 0x10, "FAST media integrations AG"}, { 0x00, 0x0A, 0x11, "ExPet Technologies, Inc"}, { 0x00, 0x0A, 0x12, "Azylex Technology, Inc"}, { 0x00, 0x0A, 0x13, "Silent Witness"}, { 0x00, 0x0A, 0x14, "TECO a.s."}, { 0x00, 0x0A, 0x15, "Silicon Data, Inc"}, { 0x00, 0x0A, 0x16, "Lassen Research"}, { 0x00, 0x0A, 0x17, "NESTAR COMMUNICATIONS, INC"}, { 0x00, 0x0A, 0x18, "Vichel Inc."}, { 0x00, 0x0A, 0x19, "Valere Power, Inc."}, { 0x00, 0x0A, 0x1A, "Imerge Ltd"}, { 0x00, 0x0A, 0x1B, "Stream Labs"}, { 0x00, 0x0A, 0x1C, "Bridge Information Co., Ltd."}, { 0x00, 0x0A, 0x1D, "Optical Communications Products Inc."}, { 0x00, 0x0A, 0x1E, "Red-M (Communications) Limited"}, { 0x00, 0x0A, 0x1F, "ART WARE Telecommunication Co., Ltd."}, { 0x00, 0x0A, 0x20, "SVA Networks, Inc."}, { 0x00, 0x0A, 0x21, "Integra Telecom Co. Ltd"}, { 0x00, 0x0A, 0x22, "Amperion Inc"}, { 0x00, 0x0A, 0x23, "Parama Networks Inc"}, { 0x00, 0x0A, 0x24, "Octave Communications"}, { 0x00, 0x0A, 0x25, "CERAGON NETWORKS"}, { 0x00, 0x0A, 0x27, "Apple Computer, Inc."}, { 0x00, 0x0A, 0x28, "Motorola Personal Communications Sector"}, { 0x00, 0x0A, 0x29, "Pan Dacom Networking AG"}, { 0x00, 0x0A, 0x2A, "QSI Systems Inc."}, { 0x00, 0x0A, 0x2B, "Etherstuff"}, { 0x00, 0x0A, 0x2C, "Active Tchnology Corporation"}, { 0x00, 0x0A, 0x2E, "MAPLE NETWORKS CO., LTD"}, { 0x00, 0x0A, 0x30, "Johnson Controls-ASG"}, { 0x00, 0x0A, 0x31, "HCV Wireless"}, { 0x00, 0x0A, 0x32, "Xsido Corporation"}, { 0x00, 0x0A, 0x33, "Sierra Logic, Inc."}, { 0x00, 0x0A, 0x34, "Identicard Systems Incorporated"}, { 0x00, 0x0A, 0x35, "Xilinx"}, { 0x00, 0x0A, 0x36, "Synelec Telecom Multimedia"}, { 0x00, 0x0A, 0x37, "Procera Networks, Inc."}, { 0x00, 0x0A, 0x38, "Netlock Technologies, Inc."}, { 0x00, 0x0A, 0x3A, "J-THREE INTERNATIONAL Holding Co., Ltd."}, { 0x00, 0x0A, 0x3B, "GCT Semiconductor, Inc"}, { 0x00, 0x0A, 0x3C, "Enerpoint Ltd."}, { 0x00, 0x0A, 0x3D, "Elo Sistemas Eletronicos S.A."}, { 0x00, 0x0A, 0x3E, "EADS Telecom"}, { 0x00, 0x0A, 0x3F, "Data East Corporation"}, { 0x00, 0x0A, 0x40, "Crown Audio"}, { 0x00, 0x0A, 0x41, "Cisco Systems"}, { 0x00, 0x0A, 0x42, "Cisco Systems"}, { 0x00, 0x0A, 0x43, "Chunghwa Telecom Co., Ltd."}, { 0x00, 0x0A, 0x44, "Avery Dennison Deutschland GmbH"}, { 0x00, 0x0A, 0x45, "Audio-Technica Corp."}, { 0x00, 0x0A, 0x46, "ARO Controls SAS"}, { 0x00, 0x0A, 0x47, "Allied Vision Technologies"}, { 0x00, 0x0A, 0x48, "Albatron Technology"}, { 0x00, 0x0A, 0x49, "Acopia Networks"}, { 0x00, 0x0A, 0x4A, "Targa Systems Ltd."}, { 0x00, 0x0A, 0x4B, "DataPower Technology, Inc."}, { 0x00, 0x0A, 0x4C, "Molecular Devices Corporation"}, { 0x00, 0x0A, 0x4D, "Noritz Corporation"}, { 0x00, 0x0A, 0x4E, "UNITEK Electronics INC."}, { 0x00, 0x0A, 0x4F, "Brain Boxes Limited"}, { 0x00, 0x0A, 0x50, "REMOTEK CORPORATION"}, { 0x00, 0x0A, 0x51, "GyroSignal Technology Co., Ltd."}, { 0x00, 0x0A, 0x52, "Venitek Co. Ltd."}, { 0x00, 0x0A, 0x53, "Intronics, Incorporated"}, { 0x00, 0x0A, 0x54, "Laguna Hills, Inc."}, { 0x00, 0x0A, 0x55, "MARKEM Corporation"}, { 0x00, 0x0A, 0x56, "HITACHI Maxell Ltd."}, { 0x00, 0x0A, 0x57, "Hewlett-Packard Company - Standards"}, { 0x00, 0x0A, 0x58, "Ingenieur-Buero Freyer & Siegel"}, { 0x00, 0x0A, 0x59, "HW server"}, { 0x00, 0x0A, 0x5A, "GreenNET Technologies Co.,Ltd."}, { 0x00, 0x0A, 0x5B, "Power-One as"}, { 0x00, 0x0A, 0x5C, "Carel s.p.a."}, { 0x00, 0x0A, 0x5D, "PUC Founder (MSC) Berhad"}, { 0x00, 0x0A, 0x5E, "3COM Corporation"}, { 0x00, 0x0A, 0x5F, "almedio inc."}, { 0x00, 0x0A, 0x60, "Autostar Technology Pte Ltd"}, { 0x00, 0x0A, 0x61, "Cellinx Systems Inc."}, { 0x00, 0x0A, 0x62, "Crinis Networks, Inc."}, { 0x00, 0x0A, 0x63, "DHD GmbH"}, { 0x00, 0x0A, 0x64, "Eracom Technologies"}, { 0x00, 0x0A, 0x65, "GentechMedia.co.,ltd."}, { 0x00, 0x0A, 0x66, "MITSUBISHI ELECTRIC SYSTEM & SERVICE CO.,LTD."}, { 0x00, 0x0A, 0x67, "OngCorp"}, { 0x00, 0x0A, 0x68, "SolarFlare Communications, Inc."}, { 0x00, 0x0A, 0x69, "SUNNY bell Technology Co., Ltd."}, { 0x00, 0x0A, 0x6A, "SVM Microwaves s.r.o."}, { 0x00, 0x0A, 0x6B, "Tadiran Telecom Business Systems LTD"}, { 0x00, 0x0A, 0x6C, "Walchem Corporation"}, { 0x00, 0x0A, 0x6D, "EKS Elektronikservice GmbH"}, { 0x00, 0x0A, 0x6E, "Broadcast Technology Limited"}, { 0x00, 0x0A, 0x6F, "ZyTera Technologies Inc."}, { 0x00, 0x0A, 0x70, "MPLS Forum"}, { 0x00, 0x0A, 0x71, "Avrio Technologies, Inc"}, { 0x00, 0x0A, 0x72, "SimpleTech, Inc."}, { 0x00, 0x0A, 0x73, "Scientific Atlanta"}, { 0x00, 0x0A, 0x74, "Manticom Networks Inc."}, { 0x00, 0x0A, 0x75, "Cat Electronics"}, { 0x00, 0x0A, 0x76, "Beida Jade Bird Huaguang Technology Co.,Ltd"}, { 0x00, 0x0A, 0x77, "Bluewire Technologies LLC"}, { 0x00, 0x0A, 0x78, "OLITEC"}, { 0x00, 0x0A, 0x79, "corega K.K."}, { 0x00, 0x0A, 0x7A, "Kyoritsu Electric Co., Ltd."}, { 0x00, 0x0A, 0x7C, "Tecton Ltd"}, { 0x00, 0x0A, 0x7D, "Valo, Inc."}, { 0x00, 0x0A, 0x7E, "The Advantage Group"}, { 0x00, 0x0A, 0x7F, "Teradon Industries, Inc"}, { 0x00, 0x0A, 0x80, "Telkonet Inc."}, { 0x00, 0x0A, 0x81, "TEIMA Audiotex S.L."}, { 0x00, 0x0A, 0x82, "TATSUTA SYSTEM ELECTRONICS CO.,LTD."}, { 0x00, 0x0A, 0x83, "SALTO SYSTEMS S.L."}, { 0x00, 0x0A, 0x84, "Rainsun Enterprise Co., Ltd."}, { 0x00, 0x0A, 0x85, "PLAT'C2,Inc"}, { 0x00, 0x0A, 0x86, "Lenze"}, { 0x00, 0x0A, 0x87, "Integrated Micromachines Inc."}, { 0x00, 0x0A, 0x88, "InCypher S.A."}, { 0x00, 0x0A, 0x89, "Creval Systems, Inc."}, { 0x00, 0x0A, 0x8A, "Cisco Systems"}, { 0x00, 0x0A, 0x8B, "Cisco Systems"}, { 0x00, 0x0A, 0x8C, "Guardware Systems Ltd."}, { 0x00, 0x0A, 0x8D, "EUROTHERM LIMITED"}, { 0x00, 0x0A, 0x8E, "Invacom Ltd"}, { 0x00, 0x0A, 0x8F, "Aska International Inc."}, { 0x00, 0x0A, 0x90, "Bayside Interactive, Inc."}, { 0x00, 0x0A, 0x91, "HemoCue AB"}, { 0x00, 0x0A, 0x92, "Presonus Corporation"}, { 0x00, 0x0A, 0x93, "W2 Networks, Inc."}, { 0x00, 0x0A, 0x94, "ShangHai cellink CO., LTD"}, { 0x00, 0x0A, 0x95, "Apple Computer, Inc."}, { 0x00, 0x0A, 0x96, "MEWTEL TECHNOLOGY INC."}, { 0x00, 0x0A, 0x97, "SONICblue, Inc."}, { 0x00, 0x0A, 0x98, "M+F Gwinner GmbH & Co"}, { 0x00, 0x0A, 0x99, "Dataradio Inc."}, { 0x00, 0x0A, 0x9A, "Aiptek International Inc"}, { 0x00, 0x0A, 0x9B, "Towa Meccs Corporation"}, { 0x00, 0x0A, 0x9C, "Server Technology, Inc."}, { 0x00, 0x0A, 0x9D, "King Young Technology Co. Ltd."}, { 0x00, 0x0A, 0x9E, "BroadWeb Corportation"}, { 0x00, 0x0A, 0xA0, "Cedar Point Communications"}, { 0x00, 0x0A, 0xA1, "V V S Limited"}, { 0x00, 0x0A, 0xA2, "SYSTEK INC."}, { 0x00, 0x0A, 0xA3, "SHIMAFUJI ELECTRIC CO.,LTD."}, { 0x00, 0x0A, 0xA4, "SHANGHAI SURVEILLANCE TECHNOLOGY CO,LTD"}, { 0x00, 0x0A, 0xA5, "MAXLINK INDUSTRIES LIMITED"}, { 0x00, 0x0A, 0xA6, "Hochiki Corporation"}, { 0x00, 0x0A, 0xA7, "FEI Company"}, { 0x00, 0x0A, 0xA8, "ePipe Pty. Ltd."}, { 0x00, 0x0A, 0xA9, "Brooks Automation GmbH"}, { 0x00, 0x0A, 0xAA, "AltiGen Communications Inc."}, { 0x00, 0x0A, 0xAB, "TOYOTA MACS, INC."}, { 0x00, 0x0A, 0xAC, "TerraTec Electronic GmbH"}, { 0x00, 0x0A, 0xAD, "Stargames Corporation"}, { 0x00, 0x0A, 0xAE, "Rosemount Process Analytical"}, { 0x00, 0x0A, 0xB0, "LOYTEC electronics GmbH"}, { 0x00, 0x0A, 0xB1, "GENETEC Corporation"}, { 0x00, 0x0A, 0xB2, "Fresnel Wireless Systems"}, { 0x00, 0x0A, 0xB3, "Fa. GIRA"}, { 0x00, 0x0A, 0xB4, "ETIC Telecommunications"}, { 0x00, 0x0A, 0xB5, "Digital Electronic Network"}, { 0x00, 0x0A, 0xB6, "COMPUNETIX, INC"}, { 0x00, 0x0A, 0xB7, "Cisco Systems"}, { 0x00, 0x0A, 0xB8, "Cisco Systems"}, { 0x00, 0x0A, 0xB9, "Astera Technologies Corp."}, { 0x00, 0x0A, 0xBA, "Arcon Technology Limited"}, { 0x00, 0x0A, 0xBB, "Taiwan Secom Co,. Ltd"}, { 0x00, 0x0A, 0xBC, "Seabridge Ltd."}, { 0x00, 0x0A, 0xBE, "OPNET Technologies CO., LTD."}, { 0x00, 0x0A, 0xBF, "HIROTA SS"}, { 0x00, 0x0A, 0xC0, "Fuyoh Video Industry CO., LTD."}, { 0x00, 0x0A, 0xC1, "Futuretel"}, { 0x00, 0x0A, 0xC2, "FiberHome Telecommunication Technologies CO.,LTD"}, { 0x00, 0x0A, 0xC3, "eM Technics Co., Ltd."}, { 0x00, 0x0A, 0xC4, "Daewoo Teletech Co., Ltd"}, { 0x00, 0x0A, 0xC5, "Color Kinetics"}, { 0x00, 0x0A, 0xC7, "Unication Group"}, { 0x00, 0x0B, 0x46, "Cisco"}, { 0x00, 0x0C, 0x30, "Cisco"}, { 0x00, 0x0C, 0x41, "The Linksys Group, Inc."}, { 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"}, { 0x00, 0x10, 0x03, "IMATRON, INC."}, { 0x00, 0x10, 0x04, "THE BRANTLEY COILE COMPANY,INC"}, { 0x00, 0x10, 0x05, "UEC COMMERCIAL"}, { 0x00, 0x10, 0x06, "Thales Contact Solutions Ltd."}, { 0x00, 0x10, 0x07, "CISCO SYSTEMS, INC."}, { 0x00, 0x10, 0x08, "VIENNA SYSTEMS CORPORATION"}, { 0x00, 0x10, 0x09, "HORO QUARTZ"}, { 0x00, 0x10, 0x0A, "WILLIAMS COMMUNICATIONS GROUP"}, { 0x00, 0x10, 0x0B, "CISCO SYSTEMS, INC."}, { 0x00, 0x10, 0x0C, "ITO CO., LTD."}, { 0x00, 0x10, 0x0D, "CISCO SYSTEMS, INC."}, { 0x00, 0x10, 0x0E, "MICRO LINEAR COPORATION"}, { 0x00, 0x10, 0x0F, "INDUSTRIAL CPU SYSTEMS"}, { 0x00, 0x10, 0x10, "INITIO CORPORATION"}, { 0x00, 0x10, 0x11, "CISCO SYSTEMS, INC."}, { 0x00, 0x10, 0x12, "PROCESSOR SYSTEMS (I) PVT LTD"}, { 0x00, 0x10, 0x13, "INDUSTRIAL COMPUTER SOURCE"}, { 0x00, 0x10, 0x14, "CISCO SYSTEMS, INC."}, { 0x00, 0x10, 0x15, "OOmon Inc."}, { 0x00, 0x10, 0x16, "T.SQWARE"}, { 0x00, 0x10, 0x17, "MICOS GmbH"}, { 0x00, 0x10, 0x18, "BROADCOM CORPORATION"}, { 0x00, 0x10, 0x19, "SIRONA DENTAL SYSTEMS GmbH & Co. KG"}, { 0x00, 0x10, 0x1A, "PictureTel Corp."}, { 0x00, 0x10, 0x1B, "CORNET TECHNOLOGY, INC."}, { 0x00, 0x10, 0x1C, "OHM TECHNOLOGIES INTL, LLC"}, { 0x00, 0x10, 0x1D, "WINBOND ELECTRONICS CORP."}, { 0x00, 0x10, 0x1E, "MATSUSHITA ELECTRONIC INSTRUMENTS CORP."}, { 0x00, 0x10, 0x1F, "CISCO SYSTEMS, INC."}, { 0x00, 0x10, 0x20, "WELCH ALLYN, DATA COLLECTION"}, { 0x00, 0x10, 0x21, "ENCANTO NETWORKS, INC."}, { 0x00, 0x10, 0x22, "SatCom Media Corporation"}, { 0x00, 0x10, 0x23, "FLOWWISE NETWORKS, INC."}, { 0x00, 0x10, 0x24, "NAGOYA ELECTRIC WORKS CO., LTD"}, { 0x00, 0x10, 0x25, "GRAYHILL INC."}, { 0x00, 0x10, 0x26, "ACCELERATED NETWORKS, INC."}, { 0x00, 0x10, 0x27, "L-3 COMMUNICATIONS EAST"}, { 0x00, 0x10, 0x28, "COMPUTER TECHNICA, INC."}, { 0x00, 0x10, 0x29, "CISCO SYSTEMS, INC."}, { 0x00, 0x10, 0x2A, "ZF MICROSYSTEMS, INC."}, { 0x00, 0x10, 0x2B, "UMAX DATA SYSTEMS, INC."}, { 0x00, 0x10, 0x2C, "Lasat Networks A/S"}, { 0x00, 0x10, 0x2D, "HITACHI SOFTWARE ENGINEERING"}, { 0x00, 0x10, 0x2E, "NETWORK SYSTEMS & TECHNOLOGIES PVT. LTD."}, { 0x00, 0x10, 0x2F, "CISCO SYSTEMS, INC."}, { 0x00, 0x10, 0x30, "Wi-LAN, Inc."}, { 0x00, 0x10, 0x31, "OBJECTIVE COMMUNICATIONS, INC."}, { 0x00, 0x10, 0x32, "ALTA TECHNOLOGY"}, { 0x00, 0x10, 0x33, "ACCESSLAN COMMUNICATIONS, INC."}, { 0x00, 0x10, 0x34, "GNP COMPUTERS"}, { 0x00, 0x10, 0x35, "ELITEGROUP COMPUTER SYSTEMS CO., LTD"}, { 0x00, 0x10, 0x36, "INTER-TEL INTEGRATED SYSTEMS"}, { 0x00, 0x10, 0x37, "CYQ've Technology Co., Ltd."}, { 0x00, 0x10, 0x38, "MICRO RESEARCH INSTITUTE, INC."}, { 0x00, 0x10, 0x39, "Vectron Systems AG"}, { 0x00, 0x10, 0x3A, "DIAMOND NETWORK TECH"}, { 0x00, 0x10, 0x3B, "HIPPI NETWORKING FORUM"}, { 0x00, 0x10, 0x3C, "IC ENSEMBLE, INC."}, { 0x00, 0x10, 0x3D, "PHASECOM, LTD."}, { 0x00, 0x10, 0x3E, "NETSCHOOLS CORPORATION"}, { 0x00, 0x10, 0x3F, "TOLLGRADE COMMUNICATIONS, INC."}, { 0x00, 0x10, 0x40, "INTERMEC CORPORATION"}, { 0x00, 0x10, 0x41, "BRISTOL BABCOCK, INC."}, { 0x00, 0x10, 0x42, "AlacriTech"}, { 0x00, 0x10, 0x43, "A2 CORPORATION"}, { 0x00, 0x10, 0x44, "InnoLabs Corporation"}, { 0x00, 0x10, 0x45, "Nortel Networks"}, { 0x00, 0x10, 0x46, "ALCORN MCBRIDE INC."}, { 0x00, 0x10, 0x47, "ECHO ELETRIC CO. LTD."}, { 0x00, 0x10, 0x48, "HTRC AUTOMATION, INC."}, { 0x00, 0x10, 0x49, "SHORELINE TELEWORKS, INC."}, { 0x00, 0x10, 0x4A, "THE PARVUC CORPORATION"}, { 0x00, 0x10, 0x4B, "3COM CORPORATION"}, { 0x00, 0x10, 0x4C, "COMPUTER ACCESS TECHNOLOGY"}, { 0x00, 0x10, 0x4D, "SURTEC INDUSTRIES, INC."}, { 0x00, 0x10, 0x4E, "CEOLOGIC"}, { 0x00, 0x10, 0x4F, "STORAGE TECHNOLOGY CORPORATION"}, { 0x00, 0x10, 0x50, "RION CO., LTD."}, { 0x00, 0x10, 0x51, "CMICRO CORPORATION"}, { 0x00, 0x10, 0x52, "METTLER-TOLEDO (ALBSTADT) GMBH"}, { 0x00, 0x10, 0x53, "COMPUTER TECHNOLOGY CORP."}, { 0x00, 0x10, 0x54, "CISCO SYSTEMS, INC."}, { 0x00, 0x10, 0x55, "FUJITSU MICROELECTRONICS, INC."}, { 0x00, 0x10, 0x56, "SODICK CO., LTD."}, { 0x00, 0x10, 0x57, "Rebel.com, Inc."}, { 0x00, 0x10, 0x58, "ArrowPoint Communications"}, { 0x00, 0x10, 0x59, "DIABLO RESEARCH CO. LLC"}, { 0x00, 0x10, 0x5A, "3COM CORPORATION"}, { 0x00, 0x10, 0x5B, "NET INSIGHT AB"}, { 0x00, 0x10, 0x5C, "QUANTUM DESIGNS (H.K.) LTD."}, { 0x00, 0x10, 0x5D, "DRAGER, BUSINESS UNIT MONITORING"}, { 0x00, 0x10, 0x5E, "HEKIMIAN LABORATORIES, INC."}, { 0x00, 0x10, 0x5F, "IN-SNEC"}, { 0x00, 0x10, 0x60, "BILLIONTON SYSTEMS, INC."}, { 0x00, 0x10, 0x61, "HOSTLINK CORP."}, { 0x00, 0x10, 0x62, "NX SERVER, ILNC."}, { 0x00, 0x10, 0x63, "STARGUIDE DIGITAL NETWORKS"}, { 0x00, 0x10, 0x64, "DIGITAL EQUIPMENT CORP."}, { 0x00, 0x10, 0x65, "RADYNE CORPORATION"}, { 0x00, 0x10, 0x66, "ADVANCED CONTROL SYSTEMS, INC."}, { 0x00, 0x10, 0x67, "REDBACK NETWORKS, INC."}, { 0x00, 0x10, 0x68, "COMOS TELECOM"}, { 0x00, 0x10, 0x69, "HELIOSS COMMUNICATIONS, INC."}, { 0x00, 0x10, 0x6A, "DIGITAL MICROWAVE CORPORATION"}, { 0x00, 0x10, 0x6B, "SONUS NETWORKS, INC."}, { 0x00, 0x10, 0x6C, "INFRATEC PLUS GmbH"}, { 0x00, 0x10, 0x6D, "INTEGRITY COMMUNICATIONS, INC."}, { 0x00, 0x10, 0x6E, "TADIRAN COM. LTD."}, { 0x00, 0x10, 0x6F, "TRENTON TECHNOLOGY INC."}, { 0x00, 0x10, 0x70, "CARADON TREND LTD."}, { 0x00, 0x10, 0x71, "ADVANET INC."}, { 0x00, 0x10, 0x72, "GVN TECHNOLOGIES, INC."}, { 0x00, 0x10, 0x73, "TECHNOBOX, INC."}, { 0x00, 0x10, 0x74, "ATEN INTERNATIONAL CO., LTD."}, { 0x00, 0x10, 0x75, "Maxtor Corporation"}, { 0x00, 0x10, 0x76, "EUREM GmbH"}, { 0x00, 0x10, 0x77, "SAF DRIVE SYSTEMS, LTD."}, { 0x00, 0x10, 0x78, "NUERA COMMUNICATIONS, INC."}, { 0x00, 0x10, 0x79, "CISCO SYSTEMS, INC."}, { 0x00, 0x10, 0x7A, "AmbiCom, Inc."}, { 0x00, 0x10, 0x7B, "CISCO SYSTEMS, INC."}, { 0x00, 0x10, 0x7C, "P-COM, INC."}, { 0x00, 0x10, 0x7D, "AURORA COMMUNICATIONS, LTD."}, { 0x00, 0x10, 0x7E, "BACHMANN ELECTRONIC GmbH"}, { 0x00, 0x10, 0x7F, "CRESTRON ELECTRONICS, INC."}, { 0x00, 0x10, 0x80, "METAWAVE COMMUNICATIONS"}, { 0x00, 0x10, 0x81, "DPS, INC."}, { 0x00, 0x10, 0x82, "JNA TELECOMMUNICATIONS LIMITED"}, { 0x00, 0x10, 0x83, "HEWLETT-PACKARD COMPANY"}, { 0x00, 0x10, 0x84, "K-BOT COMMUNICATIONS"}, { 0x00, 0x10, 0x85, "POLARIS COMMUNICATIONS, INC."}, { 0x00, 0x10, 0x86, "ATTO TECHNOLOGY, INC."}, { 0x00, 0x10, 0x87, "Xstreamis PLC"}, { 0x00, 0x10, 0x88, "AMERICAN NETWORKS INC."}, { 0x00, 0x10, 0x89, "WebSonic"}, { 0x00, 0x10, 0x8A, "TeraLogic, Inc."}, { 0x00, 0x10, 0x8B, "LASERANIMATION SOLLINGER GmbH"}, { 0x00, 0x10, 0x8C, "FUJITSU TELECOMMUNICATIONS EUROPE, LTD."}, { 0x00, 0x10, 0x8D, "JOHNSON CONTROLS, INC."}, { 0x00, 0x10, 0x8E, "HUGH SYMONS CONCEPT Technologies Ltd."}, { 0x00, 0x10, 0x8F, "RAPTOR SYSTEMS"}, { 0x00, 0x10, 0x90, "CIMETRICS, INC."}, { 0x00, 0x10, 0x91, "NO WIRES NEEDED BV"}, { 0x00, 0x10, 0x92, "NETCORE INC."}, { 0x00, 0x10, 0x93, "CMS COMPUTERS, LTD."}, { 0x00, 0x10, 0x94, "ADTECH, INC."}, { 0x00, 0x10, 0x95, "Thomson Multimedia, Inc."}, { 0x00, 0x10, 0x96, "TRACEWELL SYSTEMS, INC."}, { 0x00, 0x10, 0x97, "WinNet Metropolitan Communications Systems, Inc."}, { 0x00, 0x10, 0x98, "STARNET TECHNOLOGIES, INC."}, { 0x00, 0x10, 0x99, "InnoMedia, Inc."}, { 0x00, 0x10, 0x9A, "NETLINE"}, { 0x00, 0x10, 0x9B, "VIXEL CORPORATION"}, { 0x00, 0x10, 0x9C, "M-SYSTEM CO., LTD."}, { 0x00, 0x10, 0x9D, "CLARINET SYSTEMS, INC."}, { 0x00, 0x10, 0x9E, "AWARE, INC."}, { 0x00, 0x10, 0x9F, "PAVO, INC."}, { 0x00, 0x10, 0xA0, "INNOVEX TECHNOLOGIES, INC."}, { 0x00, 0x10, 0xA1, "KENDIN SEMICONDUCTOR, INC."}, { 0x00, 0x10, 0xA2, "TNS"}, { 0x00, 0x10, 0xA3, "OMNITRONIX, INC."}, { 0x00, 0x10, 0xA4, "XIRCOM"}, { 0x00, 0x10, 0xA5, "OXFORD INSTRUMENTS"}, { 0x00, 0x10, 0xA6, "CISCO SYSTEMS, INC."}, { 0x00, 0x10, 0xA7, "UNEX TECHNOLOGY CORPORATION"}, { 0x00, 0x10, 0xA8, "RELIANCE COMPUTER CORP."}, { 0x00, 0x10, 0xA9, "ADHOC TECHNOLOGIES"}, { 0x00, 0x10, 0xAA, "MEDIA4, INC."}, { 0x00, 0x10, 0xAB, "KOITO INDUSTRIES, LTD."}, { 0x00, 0x10, 0xAC, "IMCI TECHNOLOGIES"}, { 0x00, 0x10, 0xAD, "SOFTRONICS USB, INC."}, { 0x00, 0x10, 0xAE, "SHINKO ELECTRIC INDUSTRIES CO."}, { 0x00, 0x10, 0xAF, "TAC SYSTEMS, INC."}, { 0x00, 0x10, 0xB0, "MERIDIAN TECHNOLOGY CORP."}, { 0x00, 0x10, 0xB1, "FOR-A CO., LTD."}, { 0x00, 0x10, 0xB2, "COACTIVE AESTHETICS"}, { 0x00, 0x10, 0xB3, "NOKIA MULTIMEDIA TERMINALS"}, { 0x00, 0x10, 0xB4, "ATMOSPHERE NETWORKS"}, { 0x00, 0x10, 0xB5, "ACCTON TECHNOLOGY CORPORATION"}, { 0x00, 0x10, 0xB6, "ENTRATA COMMUNICATIONS CORP."}, { 0x00, 0x10, 0xB7, "COYOTE TECHNOLOGIES, LLC"}, { 0x00, 0x10, 0xB8, "ISHIGAKI COMPUTER SYSTEM CO."}, { 0x00, 0x10, 0xB9, "MAXTOR CORP."}, { 0x00, 0x10, 0xBA, "MARTINHO-DAVIS SYSTEMS, INC."}, { 0x00, 0x10, 0xBB, "DATA & INFORMATION TECHNOLOGY"}, { 0x00, 0x10, 0xBC, "Nortel Networks"}, { 0x00, 0x10, 0xBD, "THE TELECOMMUNICATION TECHNOLOGY COMMITTEE"}, { 0x00, 0x10, 0xBE, "TELEXIS CORP."}, { 0x00, 0x10, 0xBF, "InterAir Wireless"}, { 0x00, 0x10, 0xC0, "ARMA, INC."}, { 0x00, 0x10, 0xC1, "OI ELECTRIC CO., LTD."}, { 0x00, 0x10, 0xC2, "WILLNET, INC."}, { 0x00, 0x10, 0xC3, "CSI-CONTROL SYSTEMS"}, { 0x00, 0x10, 0xC4, "MEDIA LINKS CO., LTD."}, { 0x00, 0x10, 0xC5, "PROTOCOL TECHNOLOGIES, INC."}, { 0x00, 0x10, 0xC6, "USI"}, { 0x00, 0x10, 0xC7, "DATA TRANSMISSION NETWORK"}, { 0x00, 0x10, 0xC8, "COMMUNICATIONS ELECTRONICS SECURITY GROUP"}, { 0x00, 0x10, 0xC9, "MITSUBISHI ELECTRONICS LOGISTIC SUPPORT CO."}, { 0x00, 0x10, 0xCA, "INTEGRAL ACCESS"}, { 0x00, 0x10, 0xCB, "FACIT K.K."}, { 0x00, 0x10, 0xCC, "CLP COMPUTER LOGISTIK PLANUNG GmbH"}, { 0x00, 0x10, 0xCD, "INTERFACE CONCEPT"}, { 0x00, 0x10, 0xCE, "VOLAMP, LTD."}, { 0x00, 0x10, 0xCF, "FIBERLANE COMMUNICATIONS"}, { 0x00, 0x10, 0xD0, "WITCOM, LTD."}, { 0x00, 0x10, 0xD1, "Top Layer Networks, Inc."}, { 0x00, 0x10, 0xD2, "NITTO TSUSHINKI CO., LTD"}, { 0x00, 0x10, 0xD3, "GRIPS ELECTRONIC GMBH"}, { 0x00, 0x10, 0xD4, "STORAGE COMPUTER CORPORATION"}, { 0x00, 0x10, 0xD5, "IMASDE CANARIAS, S.A."}, { 0x00, 0x10, 0xD6, "ITT - A/CD"}, { 0x00, 0x10, 0xD7, "ARGOSY RESEARCH INC."}, { 0x00, 0x10, 0xD8, "CALISTA"}, { 0x00, 0x10, 0xD9, "IBM JAPAN, FUJISAWA MT+D"}, { 0x00, 0x10, 0xDA, "MOTION ENGINEERING, INC."}, { 0x00, 0x10, 0xDB, "NetScreen Technologies, Inc."}, { 0x00, 0x10, 0xDC, "MICRO-STAR INTERNATIONAL CO., LTD."}, { 0x00, 0x10, 0xDD, "ENABLE SEMICONDUCTOR, INC."}, { 0x00, 0x10, 0xDE, "INTERNATIONAL DATACASTING CORPORATION"}, { 0x00, 0x10, 0xDF, "RISE COMPUTER INC."}, { 0x00, 0x10, 0xE0, "COBALT MICROSERVER, INC."}, { 0x00, 0x10, 0xE1, "S.I. TECH, INC."}, { 0x00, 0x10, 0xE2, "ArrayComm, Inc."}, { 0x00, 0x10, 0xE3, "COMPAQ COMPUTER CORPORATION"}, { 0x00, 0x10, 0xE4, "NSI CORPORATION"}, { 0x00, 0x10, 0xE5, "SOLECTRON TEXAS"}, { 0x00, 0x10, 0xE6, "APPLIED INTELLIGENT SYSTEMS, INC."}, { 0x00, 0x10, 0xE7, "BreezeCom"}, { 0x00, 0x10, 0xE8, "TELOCITY, INCORPORATED"}, { 0x00, 0x10, 0xE9, "RAIDTEC LTD."}, { 0x00, 0x10, 0xEA, "ADEPT TECHNOLOGY"}, { 0x00, 0x10, 0xEB, "SELSIUS SYSTEMS, INC."}, { 0x00, 0x10, 0xEC, "RPCG, LLC"}, { 0x00, 0x10, 0xED, "SUNDANCE TECHNOLOGY, INC."}, { 0x00, 0x10, 0xEE, "CTI PRODUCTS, INC."}, { 0x00, 0x10, 0xEF, "DBTEL INCORPORATED"}, { 0x00, 0x10, 0xF1, "I-O CORPORATION"}, { 0x00, 0x10, 0xF2, "ANTEC"}, { 0x00, 0x10, 0xF3, "NEXCOM INTERNATIONAL CO., LTD."}, { 0x00, 0x10, 0xF4, "VERTICAL NETWORKS, INC."}, { 0x00, 0x10, 0xF5, "AMHERST SYSTEMS, INC."}, { 0x00, 0x10, 0xF6, "CISCO SYSTEMS, INC."}, { 0x00, 0x10, 0xF7, "IRIICHI TECHNOLOGIES Inc."}, { 0x00, 0x10, 0xF8, "KENWOOD TMI CORPORATION"}, { 0x00, 0x10, 0xF9, "UNIQUE SYSTEMS, INC."}, { 0x00, 0x10, 0xFA, "ZAYANTE, INC."}, { 0x00, 0x10, 0xFB, "ZIDA TECHNOLOGIES LIMITED"}, { 0x00, 0x10, 0xFC, "BROADBAND NETWORKS, INC."}, { 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."}, { 0x00, 0x20, 0x02, "SERITECH ENTERPRISE CO., LTD."}, { 0x00, 0x20, 0x03, "PIXEL POWER LTD."}, { 0x00, 0x20, 0x04, "YAMATAKE-HONEYWELL CO., LTD."}, { 0x00, 0x20, 0x05, "SIMPLE TECHNOLOGY"}, { 0x00, 0x20, 0x06, "GARRETT COMMUNICATIONS, INC."}, { 0x00, 0x20, 0x07, "SFA, INC."}, { 0x00, 0x20, 0x08, "CABLE & COMPUTER TECHNOLOGY"}, { 0x00, 0x20, 0x09, "PACKARD BELL ELEC., INC."}, { 0x00, 0x20, 0x0A, "SOURCE-COMM CORP."}, { 0x00, 0x20, 0x0B, "OCTAGON SYSTEMS CORP."}, { 0x00, 0x20, 0x0C, "ADASTRA SYSTEMS CORP."}, { 0x00, 0x20, 0x0D, "CARL ZEISS"}, { 0x00, 0x20, 0x0E, "SATELLITE TECHNOLOGY MGMT, INC"}, { 0x00, 0x20, 0x0F, "TANBAC CO., LTD."}, { 0x00, 0x20, 0x10, "JEOL SYSTEM TECHNOLOGY CO. LTD"}, { 0x00, 0x20, 0x11, "CANOPUS CO., LTD."}, { 0x00, 0x20, 0x12, "CAMTRONICS MEDICAL SYSTEMS"}, { 0x00, 0x20, 0x13, "DIVERSIFIED TECHNOLOGY, INC."}, { 0x00, 0x20, 0x14, "GLOBAL VIEW CO., LTD."}, { 0x00, 0x20, 0x15, "ACTIS COMPUTER SA"}, { 0x00, 0x20, 0x16, "SHOWA ELECTRIC WIRE & CABLE CO"}, { 0x00, 0x20, 0x17, "ORBOTECH"}, { 0x00, 0x20, 0x18, "CIS TECHNOLOGY INC."}, { 0x00, 0x20, 0x19, "OHLER GmbH"}, { 0x00, 0x20, 0x1A, "N-BASE SWITCH COMMUNICATIONS"}, { 0x00, 0x20, 0x1B, "NORTHERN TELECOM/NETWORK"}, { 0x00, 0x20, 0x1C, "EXCEL, INC."}, { 0x00, 0x20, 0x1D, "KATANA PRODUCTS"}, { 0x00, 0x20, 0x1E, "NETQUEST CORPORATION"}, { 0x00, 0x20, 0x1F, "BEST POWER TECHNOLOGY, INC."}, { 0x00, 0x20, 0x20, "MEGATRON COMPUTER INDUSTRIES PTY, LTD."}, { 0x00, 0x20, 0x21, "ALGORITHMS SOFTWARE PVT. LTD."}, { 0x00, 0x20, 0x22, "TEKNIQUE, INC."}, { 0x00, 0x20, 0x23, "T.C. TECHNOLOGIES PTY. LTD"}, { 0x00, 0x20, 0x24, "PACIFIC COMMUNICATION SCIENCES"}, { 0x00, 0x20, 0x25, "CONTROL TECHNOLOGY, INC."}, { 0x00, 0x20, 0x26, "AMKLY SYSTEMS, INC."}, { 0x00, 0x20, 0x27, "MING FORTUNE INDUSTRY CO., LTD"}, { 0x00, 0x20, 0x28, "WEST EGG SYSTEMS, INC."}, { 0x00, 0x20, 0x29, "TELEPROCESSING PRODUCTS, INC."}, { 0x00, 0x20, 0x2A, "N.V. DZINE"}, { 0x00, 0x20, 0x2B, "ADVANCED TELECOMMUNICATIONS MODULES, LTD."}, { 0x00, 0x20, 0x2C, "WELLTRONIX CO., LTD."}, { 0x00, 0x20, 0x2D, "TAIYO CORPORATION"}, { 0x00, 0x20, 0x2E, "DAYSTAR DIGITAL"}, { 0x00, 0x20, 0x2F, "ZETA COMMUNICATIONS, LTD."}, { 0x00, 0x20, 0x30, "ANALOG & DIGITAL SYSTEMS"}, { 0x00, 0x20, 0x31, "ERTEC GmbH"}, { 0x00, 0x20, 0x32, "ALCATEL TAISEL"}, { 0x00, 0x20, 0x33, "SYNAPSE TECHNOLOGIES, INC."}, { 0x00, 0x20, 0x34, "ROTEC INDUSTRIEAUTOMATION GMBH"}, { 0x00, 0x20, 0x35, "IBM CORPORATION"}, { 0x00, 0x20, 0x36, "BMC SOFTWARE"}, { 0x00, 0x20, 0x37, "SEAGATE TECHNOLOGY"}, { 0x00, 0x20, 0x38, "VME MICROSYSTEMS INTERNATIONAL CORPORATION"}, { 0x00, 0x20, 0x39, "SCINETS"}, { 0x00, 0x20, 0x3A, "DIGITAL BI0METRICS INC."}, { 0x00, 0x20, 0x3B, "WISDM LTD."}, { 0x00, 0x20, 0x3C, "EUROTIME AB"}, { 0x00, 0x20, 0x3D, "NOVAR ELECTRONICS CORPORATION"}, { 0x00, 0x20, 0x3E, "LogiCan Technologies, Inc."}, { 0x00, 0x20, 0x3F, "JUKI CORPORATION"}, { 0x00, 0x20, 0x40, "Motorola Broadband Communications Sector"}, { 0x00, 0x20, 0x41, "DATA NET"}, { 0x00, 0x20, 0x42, "DATAMETRICS CORP."}, { 0x00, 0x20, 0x43, "NEURON COMPANY LIMITED"}, { 0x00, 0x20, 0x44, "GENITECH PTY LTD"}, { 0x00, 0x20, 0x45, "ION Networks, Inc."}, { 0x00, 0x20, 0x46, "CIPRICO, INC."}, { 0x00, 0x20, 0x47, "STEINBRECHER CORP."}, { 0x00, 0x20, 0x48, "Marconi Communications"}, { 0x00, 0x20, 0x49, "COMTRON, INC."}, { 0x00, 0x20, 0x4A, "PRONET GMBH"}, { 0x00, 0x20, 0x4B, "AUTOCOMPUTER CO., LTD."}, { 0x00, 0x20, 0x4C, "MITRON COMPUTER PTE LTD."}, { 0x00, 0x20, 0x4D, "INOVIS GMBH"}, { 0x00, 0x20, 0x4E, "NETWORK SECURITY SYSTEMS, INC."}, { 0x00, 0x20, 0x4F, "DEUTSCHE AEROSPACE AG"}, { 0x00, 0x20, 0x50, "KOREA COMPUTER INC."}, { 0x00, 0x20, 0x51, "PHOENIX DATA COMMUNUNICATIONS"}, { 0x00, 0x20, 0x52, "RAGULA SYSTEMS"}, { 0x00, 0x20, 0x53, "HUNTSVILLE MICROSYSTEMS, INC."}, { 0x00, 0x20, 0x54, "EASTERN RESEARCH, INC."}, { 0x00, 0x20, 0x55, "ALTECH CO., LTD."}, { 0x00, 0x20, 0x56, "NEOPRODUCTS"}, { 0x00, 0x20, 0x57, "TITZE DATENTECHNIK GmbH"}, { 0x00, 0x20, 0x58, "ALLIED SIGNAL INC."}, { 0x00, 0x20, 0x59, "MIRO COMPUTER PRODUCTS AG"}, { 0x00, 0x20, 0x5A, "COMPUTER IDENTICS"}, { 0x00, 0x20, 0x5B, "SKYLINE TECHNOLOGY"}, { 0x00, 0x20, 0x5C, "InterNet Systems of Florida, Inc."}, { 0x00, 0x20, 0x5D, "NANOMATIC OY"}, { 0x00, 0x20, 0x5E, "CASTLE ROCK, INC."}, { 0x00, 0x20, 0x5F, "GAMMADATA COMPUTER GMBH"}, { 0x00, 0x20, 0x60, "ALCATEL ITALIA S.p.A."}, { 0x00, 0x20, 0x61, "DYNATECH COMMUNICATIONS, INC."}, { 0x00, 0x20, 0x62, "SCORPION LOGIC, LTD."}, { 0x00, 0x20, 0x63, "WIPRO INFOTECH LTD."}, { 0x00, 0x20, 0x64, "PROTEC MICROSYSTEMS, INC."}, { 0x00, 0x20, 0x65, "SUPERNET NETWORKING INC."}, { 0x00, 0x20, 0x66, "GENERAL MAGIC, INC."}, { 0x00, 0x20, 0x68, "ISDYNE"}, { 0x00, 0x20, 0x69, "ISDN SYSTEMS CORPORATION"}, { 0x00, 0x20, 0x6A, "OSAKA COMPUTER CORP."}, { 0x00, 0x20, 0x6B, "MINOLTA CAMERA CO., LTD."}, { 0x00, 0x20, 0x6C, "EVERGREEN TECHNOLOGY CORP."}, { 0x00, 0x20, 0x6D, "DATA RACE, INC."}, { 0x00, 0x20, 0x6E, "XACT, INC."}, { 0x00, 0x20, 0x6F, "FLOWPOINT CORPORATION"}, { 0x00, 0x20, 0x70, "HYNET, LTD."}, { 0x00, 0x20, 0x71, "IBR GMBH"}, { 0x00, 0x20, 0x72, "WORKLINK INNOVATIONS"}, { 0x00, 0x20, 0x73, "FUSION SYSTEMS CORPORATION"}, { 0x00, 0x20, 0x74, "SUNGWOON SYSTEMS"}, { 0x00, 0x20, 0x75, "MOTOROLA COMMUNICATION ISRAEL"}, { 0x00, 0x20, 0x76, "REUDO CORPORATION"}, { 0x00, 0x20, 0x77, "KARDIOS SYSTEMS CORP."}, { 0x00, 0x20, 0x78, "RUNTOP, INC."}, { 0x00, 0x20, 0x79, "MIKRON GMBH"}, { 0x00, 0x20, 0x7A, "WiSE Communications, Inc."}, { 0x00, 0x20, 0x7B, "Intel Corporation"}, { 0x00, 0x20, 0x7C, "AUTEC GmbH"}, { 0x00, 0x20, 0x7D, "ADVANCED COMPUTER APPLICATIONS"}, { 0x00, 0x20, 0x7E, "FINECOM Co., Ltd."}, { 0x00, 0x20, 0x7F, "KYOEI SANGYO CO., LTD."}, { 0x00, 0x20, 0x80, "SYNERGY (UK) LTD."}, { 0x00, 0x20, 0x81, "TITAN ELECTRONICS"}, { 0x00, 0x20, 0x82, "ONEAC CORPORATION"}, { 0x00, 0x20, 0x83, "PRESTICOM INCORPORATED"}, { 0x00, 0x20, 0x84, "OCE PRINTING SYSTEMS, GMBH"}, { 0x00, 0x20, 0x85, "EXIDE ELECTRONICS"}, { 0x00, 0x20, 0x86, "MICROTECH ELECTRONICS LIMITED"}, { 0x00, 0x20, 0x87, "MEMOTEC COMMUNICATIONS CORP."}, { 0x00, 0x20, 0x88, "GLOBAL VILLAGE COMMUNICATION"}, { 0x00, 0x20, 0x89, "T3PLUS NETWORKING, INC."}, { 0x00, 0x20, 0x8A, "SONIX COMMUNICATIONS, LTD."}, { 0x00, 0x20, 0x8B, "LAPIS TECHNOLOGIES, INC."}, { 0x00, 0x20, 0x8C, "GALAXY NETWORKS, INC."}, { 0x00, 0x20, 0x8D, "CMD TECHNOLOGY"}, { 0x00, 0x20, 0x8E, "CHEVIN SOFTWARE ENG. LTD."}, { 0x00, 0x20, 0x8F, "ECI TELECOM LTD."}, { 0x00, 0x20, 0x90, "ADVANCED COMPRESSION TECHNOLOGY, INC."}, { 0x00, 0x20, 0x91, "J125, NATIONAL SECURITY AGENCY"}, { 0x00, 0x20, 0x92, "CHESS ENGINEERING B.V."}, { 0x00, 0x20, 0x93, "LANDINGS TECHNOLOGY CORP."}, { 0x00, 0x20, 0x94, "CUBIX CORPORATION"}, { 0x00, 0x20, 0x95, "RIVA ELECTRONICS"}, { 0x00, 0x20, 0x96, "Invensys"}, { 0x00, 0x20, 0x97, "APPLIED SIGNAL TECHNOLOGY"}, { 0x00, 0x20, 0x98, "HECTRONIC AB"}, { 0x00, 0x20, 0x99, "BON ELECTRIC CO., LTD."}, { 0x00, 0x20, 0x9A, "THE 3DO COMPANY"}, { 0x00, 0x20, 0x9B, "ERSAT ELECTRONIC GMBH"}, { 0x00, 0x20, 0x9C, "PRIMARY ACCESS CORP."}, { 0x00, 0x20, 0x9D, "LIPPERT AUTOMATIONSTECHNIK"}, { 0x00, 0x20, 0x9E, "BROWN'S OPERATING SYSTEM SERVICES, LTD."}, { 0x00, 0x20, 0x9F, "MERCURY COMPUTER SYSTEMS, INC."}, { 0x00, 0x20, 0xA0, "OA LABORATORY CO., LTD."}, { 0x00, 0x20, 0xA1, "DOVATRON"}, { 0x00, 0x20, 0xA2, "GALCOM NETWORKING LTD."}, { 0x00, 0x20, 0xA3, "DIVICOM INC."}, { 0x00, 0x20, 0xA4, "MULTIPOINT NETWORKS"}, { 0x00, 0x20, 0xA5, "API ENGINEERING"}, { 0x00, 0x20, 0xA6, "PROXIM, INC."}, { 0x00, 0x20, 0xA7, "PAIRGAIN TECHNOLOGIES, INC."}, { 0x00, 0x20, 0xA8, "SAST TECHNOLOGY CORP."}, { 0x00, 0x20, 0xA9, "WHITE HORSE INDUSTRIAL"}, { 0x00, 0x20, 0xAA, "DIGIMEDIA VISION LTD."}, { 0x00, 0x20, 0xAB, "MICRO INDUSTRIES CORP."}, { 0x00, 0x20, 0xAC, "INTERFLEX DATENSYSTEME GMBH"}, { 0x00, 0x20, 0xAD, "LINQ SYSTEMS"}, { 0x00, 0x20, 0xAE, "ORNET DATA COMMUNICATION TECH."}, { 0x00, 0x20, 0xAF, "3COM CORPORATION"}, { 0x00, 0x20, 0xB0, "GATEWAY DEVICES, INC."}, { 0x00, 0x20, 0xB1, "COMTECH RESEARCH INC."}, { 0x00, 0x20, 0xB2, "GKD Gesellschaft Fur Kommunikation Und Datentechnik"}, { 0x00, 0x20, 0xB3, "SCLTEC COMMUNICATIONS SYSTEMS"}, { 0x00, 0x20, 0xB4, "TERMA ELEKTRONIK AS"}, { 0x00, 0x20, 0xB5, "YASKAWA ELECTRIC CORPORATION"}, { 0x00, 0x20, 0xB6, "AGILE NETWORKS, INC."}, { 0x00, 0x20, 0xB7, "NAMAQUA COMPUTERWARE"}, { 0x00, 0x20, 0xB8, "PRIME OPTION, INC."}, { 0x00, 0x20, 0xB9, "METRICOM, INC."}, { 0x00, 0x20, 0xBA, "CENTER FOR HIGH PERFORMANCE"}, { 0x00, 0x20, 0xBB, "ZAX CORPORATION"}, { 0x00, 0x20, 0xBC, "JTEC PTY LTD."}, { 0x00, 0x20, 0xBD, "NIOBRARA R & D CORPORATION"}, { 0x00, 0x20, 0xBE, "LAN ACCESS CORP."}, { 0x00, 0x20, 0xBF, "AEHR TEST SYSTEMS"}, { 0x00, 0x20, 0xC0, "PULSE ELECTRONICS, INC."}, { 0x00, 0x20, 0xC1, "TAIKO ELECTRIC WORKS, LTD."}, { 0x00, 0x20, 0xC2, "TEXAS MEMORY SYSTEMS, INC."}, { 0x00, 0x20, 0xC3, "COUNTER SOLUTIONS LTD."}, { 0x00, 0x20, 0xC4, "INET,INC."}, { 0x00, 0x20, 0xC5, "EAGLE TECHNOLOGY"}, { 0x00, 0x20, 0xC6, "NECTEC"}, { 0x00, 0x20, 0xC7, "AKAI Professional M.I. Corp."}, { 0x00, 0x20, 0xC8, "LARSCOM INCORPORATED"}, { 0x00, 0x20, 0xC9, "VICTRON BV"}, { 0x00, 0x20, 0xCA, "DIGITAL OCEAN"}, { 0x00, 0x20, 0xCB, "PRETEC ELECTRONICS CORP."}, { 0x00, 0x20, 0xCC, "DIGITAL SERVICES, LTD."}, { 0x00, 0x20, 0xCD, "HYBRID NETWORKS, INC."}, { 0x00, 0x20, 0xCE, "LOGICAL DESIGN GROUP, INC."}, { 0x00, 0x20, 0xCF, "TEST & MEASUREMENT SYSTEMS INC"}, { 0x00, 0x20, 0xD0, "VERSALYNX CORPORATION"}, { 0x00, 0x20, 0xD1, "MICROCOMPUTER SYSTEMS (M) SDN."}, { 0x00, 0x20, 0xD2, "RAD DATA COMMUNICATIONS, LTD."}, { 0x00, 0x20, 0xD3, "OST (OUEST STANDARD TELEMATIQU"}, { 0x00, 0x20, 0xD4, "CABLETRON - ZEITTNET INC."}, { 0x00, 0x20, 0xD5, "VIPA GMBH"}, { 0x00, 0x20, 0xD6, "BREEZECOM"}, { 0x00, 0x20, 0xD7, "JAPAN MINICOMPUTER SYSTEMS CO., Ltd."}, { 0x00, 0x20, 0xD8, "Nortel Networks"}, { 0x00, 0x20, 0xD9, "PANASONIC TECHNOLOGIES, INC./MIECO-US"}, { 0x00, 0x20, 0xDA, "XYLAN CORPORATION"}, { 0x00, 0x20, 0xDB, "XNET TECHNOLOGY, INC."}, { 0x00, 0x20, 0xDC, "DENSITRON TAIWAN LTD."}, { 0x00, 0x20, 0xDD, "AWA LTD."}, { 0x00, 0x20, 0xDE, "JAPAN DIGITAL LABORAT'Y CO.LTD"}, { 0x00, 0x20, 0xDF, "KYOSAN ELECTRIC MFG. CO., LTD."}, { 0x00, 0x20, 0xE0, "PREMAX ELECTRONICS, INC."}, { 0x00, 0x20, 0xE1, "ALAMAR ELECTRONICS"}, { 0x00, 0x20, 0xE2, "INFORMATION RESOURCE ENGINEERING"}, { 0x00, 0x20, 0xE3, "MCD KENCOM CORPORATION"}, { 0x00, 0x20, 0xE4, "HSING TECH ENTERPRISE CO., LTD"}, { 0x00, 0x20, 0xE5, "APEX DATA, INC."}, { 0x00, 0x20, 0xE6, "LIDKOPING MACHINE TOOLS AB"}, { 0x00, 0x20, 0xE7, "B&W NUCLEAR SERVICE COMPANY"}, { 0x00, 0x20, 0xE8, "DATATREK CORPORATION"}, { 0x00, 0x20, 0xE9, "DANTEL"}, { 0x00, 0x20, 0xEA, "EFFICIENT NETWORKS, INC."}, { 0x00, 0x20, 0xEB, "CINCINNATI MICROWAVE, INC."}, { 0x00, 0x20, 0xEC, "TECHWARE SYSTEMS CORP."}, { 0x00, 0x20, 0xED, "GIGA-BYTE TECHNOLOGY CO., LTD."}, { 0x00, 0x20, 0xEE, "GTECH CORPORATION"}, { 0x00, 0x20, 0xEF, "USC CORPORATION"}, { 0x00, 0x20, 0xF0, "UNIVERSAL MICROELECTRONICS CO."}, { 0x00, 0x20, 0xF1, "ALTOS INDIA LIMITED"}, { 0x00, 0x20, 0xF2, "SUN MICROSYSTEMS, INC."}, { 0x00, 0x20, 0xF3, "RAYNET CORPORATION"}, { 0x00, 0x20, 0xF4, "SPECTRIX CORPORATION"}, { 0x00, 0x20, 0xF5, "PANDATEL AG"}, { 0x00, 0x20, 0xF6, "NET TEK AND KARLNET, INC."}, { 0x00, 0x20, 0xF7, "CYBERDATA"}, { 0x00, 0x20, 0xF8, "CARRERA COMPUTERS, INC."}, { 0x00, 0x20, 0xF9, "PARALINK NETWORKS, INC."}, { 0x00, 0x20, 0xFA, "GDE SYSTEMS, INC."}, { 0x00, 0x20, 0xFB, "OCTEL COMMUNICATIONS CORP."}, { 0x00, 0x20, 0xFC, "MATROX"}, { 0x00, 0x20, 0xFD, "ITV TECHNOLOGIES, INC."}, { 0x00, 0x20, 0xFE, "TOPWARE INC. / GRAND COMPUTER"}, { 0x00, 0x20, 0xFF, "SYMMETRICAL TECHNOLOGIES"}, { 0x00, 0x30, 0x00, "ALLWELL TECHNOLOGY CORP."}, { 0x00, 0x30, 0x01, "SMP"}, { 0x00, 0x30, 0x02, "Expand Networks"}, { 0x00, 0x30, 0x03, "Phasys Ltd."}, { 0x00, 0x30, 0x04, "LEADTEK RESEARCH INC."}, { 0x00, 0x30, 0x05, "Fujitsu Siemens Computers"}, { 0x00, 0x30, 0x06, "SUPERPOWER COMPUTER"}, { 0x00, 0x30, 0x07, "OPTI, INC."}, { 0x00, 0x30, 0x08, "AVIO DIGITAL, INC."}, { 0x00, 0x30, 0x09, "Tachion Networks, Inc."}, { 0x00, 0x30, 0x0A, "AZTECH SYSTEMS LTD."}, { 0x00, 0x30, 0x0B, "mPHASE Technologies, Inc."}, { 0x00, 0x30, 0x0C, "CONGRUENCY, LTD."}, { 0x00, 0x30, 0x0D, "MMC Technology, Inc."}, { 0x00, 0x30, 0x0E, "Klotz Digital AG"}, { 0x00, 0x30, 0x0F, "IMT - Information Management T"}, { 0x00, 0x30, 0x10, "VISIONETICS INTERNATIONAL"}, { 0x00, 0x30, 0x11, "HMS FIELDBUS SYSTEMS AB"}, { 0x00, 0x30, 0x12, "DIGITAL ENGINEERING LTD."}, { 0x00, 0x30, 0x13, "NEC Corporation"}, { 0x00, 0x30, 0x14, "DIVIO, INC."}, { 0x00, 0x30, 0x15, "CP CLARE CORP."}, { 0x00, 0x30, 0x16, "ISHIDA CO., LTD."}, { 0x00, 0x30, 0x17, "TERASTACK LTD."}, { 0x00, 0x30, 0x18, "Jetway Information Co., Ltd."}, { 0x00, 0x30, 0x19, "CISCO SYSTEMS, INC."}, { 0x00, 0x30, 0x1A, "SMARTBRIDGES PTE. LTD."}, { 0x00, 0x30, 0x1B, "SHUTTLE, INC."}, { 0x00, 0x30, 0x1C, "ALTVATER AIRDATA SYSTEMS"}, { 0x00, 0x30, 0x1D, "SKYSTREAM, INC."}, { 0x00, 0x30, 0x1E, "3COM Europe Ltd."}, { 0x00, 0x30, 0x1F, "OPTICAL NETWORKS, INC."}, { 0x00, 0x30, 0x20, "TSI, Inc.."}, { 0x00, 0x30, 0x21, "HSING TECH. ENTERPRISE CO.,LTD"}, { 0x00, 0x30, 0x22, "Fong Kai Industrial Co., Ltd."}, { 0x00, 0x30, 0x23, "COGENT COMPUTER SYSTEMS, INC."}, { 0x00, 0x30, 0x24, "CISCO SYSTEMS, INC."}, { 0x00, 0x30, 0x25, "CHECKOUT COMPUTER SYSTEMS, LTD"}, { 0x00, 0x30, 0x26, "HEITEL"}, { 0x00, 0x30, 0x27, "KERBANGO, INC."}, { 0x00, 0x30, 0x28, "FASE Saldatura srl"}, { 0x00, 0x30, 0x29, "OPICOM"}, { 0x00, 0x30, 0x2A, "SOUTHERN INFORMATION"}, { 0x00, 0x30, 0x2B, "INALP NETWORKS, INC."}, { 0x00, 0x30, 0x2C, "SYLANTRO SYSTEMS CORPORATION"}, { 0x00, 0x30, 0x2D, "QUANTUM BRIDGE COMMUNICATIONS"}, { 0x00, 0x30, 0x2E, "Hoft & Wessel AG"}, { 0x00, 0x30, 0x2F, "Smiths Industries"}, { 0x00, 0x30, 0x30, "HARMONIX CORPORATION"}, { 0x00, 0x30, 0x31, "LIGHTWAVE COMMUNICATIONS, INC."}, { 0x00, 0x30, 0x32, "MagicRam, Inc."}, { 0x00, 0x30, 0x33, "ORIENT TELECOM CO., LTD."}, { 0x00, 0x30, 0x36, "RMP ELEKTRONIKSYSTEME GMBH"}, { 0x00, 0x30, 0x37, "Packard Bell Nec Services"}, { 0x00, 0x30, 0x38, "XCP, INC."}, { 0x00, 0x30, 0x39, "SOFTBOOK PRESS"}, { 0x00, 0x30, 0x3A, "MAATEL"}, { 0x00, 0x30, 0x3B, "PowerCom Technology"}, { 0x00, 0x30, 0x3C, "ONNTO CORP."}, { 0x00, 0x30, 0x3D, "IVA CORPORATION"}, { 0x00, 0x30, 0x3E, "Radcom Ltd."}, { 0x00, 0x30, 0x3F, "TurboComm Tech Inc."}, { 0x00, 0x30, 0x40, "CISCO SYSTEMS, INC."}, { 0x00, 0x30, 0x41, "SAEJIN T & M CO., LTD."}, { 0x00, 0x30, 0x42, "DeTeWe-Deutsche Telephonwerke"}, { 0x00, 0x30, 0x43, "IDREAM TECHNOLOGIES, PTE. LTD."}, { 0x00, 0x30, 0x44, "Portsmith LLC"}, { 0x00, 0x30, 0x45, "Village Networks, Inc. (VNI)"}, { 0x00, 0x30, 0x46, "Controlled Electronic Manageme"}, { 0x00, 0x30, 0x47, "NISSEI ELECTRIC CO., LTD."}, { 0x00, 0x30, 0x48, "Supermicro Computer, Inc."}, { 0x00, 0x30, 0x49, "BRYANT TECHNOLOGY, LTD."}, { 0x00, 0x30, 0x4A, "FRAUNHOFER INSTITUTE IMS"}, { 0x00, 0x30, 0x4B, "ORBACOM SYSTEMS, INC."}, { 0x00, 0x30, 0x4C, "APPIAN COMMUNICATIONS, INC."}, { 0x00, 0x30, 0x4D, "ESI"}, { 0x00, 0x30, 0x4E, "BUSTEC PRODUCTION LTD."}, { 0x00, 0x30, 0x4F, "PLANET Technology Corporation"}, { 0x00, 0x30, 0x50, "Versa Technology"}, { 0x00, 0x30, 0x51, "ORBIT AVIONIC & COMMUNICATION"}, { 0x00, 0x30, 0x52, "ELASTIC NETWORKS"}, { 0x00, 0x30, 0x53, "Basler AG"}, { 0x00, 0x30, 0x54, "CASTLENET TECHNOLOGY, INC."}, { 0x00, 0x30, 0x55, "Hitachi Semiconductor America,"}, { 0x00, 0x30, 0x56, "Beck IPC GmbH"}, { 0x00, 0x30, 0x57, "E-Tel Corporation"}, { 0x00, 0x30, 0x58, "API MOTION"}, { 0x00, 0x30, 0x59, "DIGITAL-LOGIC AG"}, { 0x00, 0x30, 0x5A, "TELGEN CORPORATION"}, { 0x00, 0x30, 0x5B, "MODULE DEPARTMENT"}, { 0x00, 0x30, 0x5C, "SMAR Laboratories Corp."}, { 0x00, 0x30, 0x5D, "DIGITRA SYSTEMS, INC."}, { 0x00, 0x30, 0x5E, "Abelko Innovation"}, { 0x00, 0x30, 0x5F, "IMACON APS"}, { 0x00, 0x30, 0x60, "STARMATIX, INC."}, { 0x00, 0x30, 0x61, "MobyTEL"}, { 0x00, 0x30, 0x62, "PATH 1 NETWORK TECHNOL'S INC."}, { 0x00, 0x30, 0x63, "SANTERA SYSTEMS, INC."}, { 0x00, 0x30, 0x64, "ADLINK TECHNOLOGY, INC."}, { 0x00, 0x30, 0x65, "APPLE COMPUTER, INC."}, { 0x00, 0x30, 0x66, "DIGITAL WIRELESS CORPORATION"}, { 0x00, 0x30, 0x67, "BIOSTAR MICROTECH INT'L CORP."}, { 0x00, 0x30, 0x68, "CYBERNETICS TECH. CO., LTD."}, { 0x00, 0x30, 0x69, "IMPACCT TECHNOLOGY CORP."}, { 0x00, 0x30, 0x6A, "PENTA MEDIA CO., LTD."}, { 0x00, 0x30, 0x6B, "CMOS SYSTEMS, INC."}, { 0x00, 0x30, 0x6C, "Hitex Holding GmbH"}, { 0x00, 0x30, 0x6D, "LUCENT TECHNOLOGIES"}, { 0x00, 0x30, 0x6E, "HEWLETT PACKARD"}, { 0x00, 0x30, 0x6F, "SEYEON TECH. CO., LTD."}, { 0x00, 0x30, 0x70, "1Net Corporation"}, { 0x00, 0x30, 0x71, "Cisco Systems, Inc."}, { 0x00, 0x30, 0x72, "INTELLIBYTE INC."}, { 0x00, 0x30, 0x73, "International Microsystems, In"}, { 0x00, 0x30, 0x74, "EQUIINET LTD."}, { 0x00, 0x30, 0x75, "ADTECH"}, { 0x00, 0x30, 0x76, "Akamba Corporation"}, { 0x00, 0x30, 0x77, "ONPREM NETWORKS"}, { 0x00, 0x30, 0x78, "Cisco Systems, Inc."}, { 0x00, 0x30, 0x79, "CQOS, INC."}, { 0x00, 0x30, 0x7A, "Advanced Technology & Systems"}, { 0x00, 0x30, 0x7B, "Cisco Systems, Inc."}, { 0x00, 0x30, 0x7C, "ADID SA"}, { 0x00, 0x30, 0x7D, "GRE AMERICA, INC."}, { 0x00, 0x30, 0x7E, "Redflex Communication Systems"}, { 0x00, 0x30, 0x7F, "IRLAN LTD."}, { 0x00, 0x30, 0x80, "CISCO SYSTEMS, INC."}, { 0x00, 0x30, 0x81, "ALTOS C&C"}, { 0x00, 0x30, 0x82, "TAIHAN ELECTRIC WIRE CO., LTD."}, { 0x00, 0x30, 0x83, "Ivron Systems"}, { 0x00, 0x30, 0x84, "ALLIED TELESYN INTERNAIONAL"}, { 0x00, 0x30, 0x85, "CISCO SYSTEMS, INC."}, { 0x00, 0x30, 0x86, "Transistor Devices, Inc."}, { 0x00, 0x30, 0x87, "VEGA GRIESHABER KG"}, { 0x00, 0x30, 0x88, "Siara Systems, Inc."}, { 0x00, 0x30, 0x89, "Spectrapoint Wireless, LLC"}, { 0x00, 0x30, 0x8A, "NICOTRA SISTEMI S.P.A"}, { 0x00, 0x30, 0x8B, "Brix Networks"}, { 0x00, 0x30, 0x8C, "ADVANCED DIGITAL INFORMATION"}, { 0x00, 0x30, 0x8D, "PINNACLE SYSTEMS, INC."}, { 0x00, 0x30, 0x8E, "CROSS MATCH TECHNOLOGIES, INC."}, { 0x00, 0x30, 0x8F, "MICRILOR, Inc."}, { 0x00, 0x30, 0x90, "CYRA TECHNOLOGIES, INC."}, { 0x00, 0x30, 0x91, "TAIWAN FIRST LINE ELEC. CORP."}, { 0x00, 0x30, 0x92, "ModuNORM GmbH"}, { 0x00, 0x30, 0x93, "SONNET TECHNOLOGIES, INC."}, { 0x00, 0x30, 0x94, "Cisco Systems, Inc."}, { 0x00, 0x30, 0x95, "Procomp Informatics, Ltd."}, { 0x00, 0x30, 0x96, "CISCO SYSTEMS, INC."}, { 0x00, 0x30, 0x97, "EXOMATIC AB"}, { 0x00, 0x30, 0x98, "Global Converging Technologies"}, { 0x00, 0x30, 0x99, "BOENIG UND KALLENBACH OHG"}, { 0x00, 0x30, 0x9A, "ASTRO TERRA CORP."}, { 0x00, 0x30, 0x9B, "Smartware"}, { 0x00, 0x30, 0x9C, "Timing Applications, Inc."}, { 0x00, 0x30, 0x9D, "Nimble Microsystems, Inc."}, { 0x00, 0x30, 0x9E, "WORKBIT CORPORATION."}, { 0x00, 0x30, 0x9F, "AMBER NETWORKS"}, { 0x00, 0x30, 0xA0, "TYCO SUBMARINE SYSTEMS, LTD."}, { 0x00, 0x30, 0xA1, "OPTI TECH CO., LTD."}, { 0x00, 0x30, 0xA2, "Lightner Engineering"}, { 0x00, 0x30, 0xA3, "CISCO SYSTEMS, INC."}, { 0x00, 0x30, 0xA4, "Woodwind Communications System"}, { 0x00, 0x30, 0xA5, "ACTIVE POWER"}, { 0x00, 0x30, 0xA6, "VIANET TECHNOLOGIES, LTD."}, { 0x00, 0x30, 0xA7, "SCHWEITZER ENGINEERING"}, { 0x00, 0x30, 0xA8, "OL'E COMMUNICATIONS, INC."}, { 0x00, 0x30, 0xA9, "Netiverse, Inc."}, { 0x00, 0x30, 0xAA, "AXUS MICROSYSTEMS, INC."}, { 0x00, 0x30, 0xAB, "DELTA NETWORKS, INC."}, { 0x00, 0x30, 0xAC, "Systeme Lauer GmbH & Co., Ltd."}, { 0x00, 0x30, 0xAD, "SHANGHAI COMMUNICATION"}, { 0x00, 0x30, 0xAE, "Times N System, Inc."}, { 0x00, 0x30, 0xAF, "Honeywell Reqelsysteme GmbH"}, { 0x00, 0x30, 0xB0, "Convergenet Technologies"}, { 0x00, 0x30, 0xB1, "GOC GESELLSCHAFT FUR OPTISCHE"}, { 0x00, 0x30, 0xB2, "WESCAM - HEALDSBURG"}, { 0x00, 0x30, 0xB3, "San Valley Systems, Inc."}, { 0x00, 0x30, 0xB4, "INTERSIL CORP."}, { 0x00, 0x30, 0xB5, "Tadiran Microwave Networks"}, { 0x00, 0x30, 0xB6, "CISCO SYSTEMS, INC."}, { 0x00, 0x30, 0xB7, "Teletrol Systems, Inc."}, { 0x00, 0x30, 0xB8, "RiverDelta Networks"}, { 0x00, 0x30, 0xB9, "ECTEL"}, { 0x00, 0x30, 0xBA, "AC&T SYSTEM CO., LTD."}, { 0x00, 0x30, 0xBB, "CacheFlow, Inc."}, { 0x00, 0x30, 0xBC, "Optronic AG"}, { 0x00, 0x30, 0xBD, "BELKIN COMPONENTS"}, { 0x00, 0x30, 0xBE, "City-Net Technology, Inc."}, { 0x00, 0x30, 0xBF, "MULTIDATA GMBH"}, { 0x00, 0x30, 0xC0, "Lara Technology, Inc."}, { 0x00, 0x30, 0xC1, "HEWLETT-PACKARD"}, { 0x00, 0x30, 0xC2, "COMONE"}, { 0x00, 0x30, 0xC3, "FLUECKIGER ELEKTRONIK AG"}, { 0x00, 0x30, 0xC4, "Niigata Canotec Co., Inc."}, { 0x00, 0x30, 0xC5, "CADENCE DESIGN SYSTEMS"}, { 0x00, 0x30, 0xC6, "CONTROL SOLUTIONS, INC."}, { 0x00, 0x30, 0xC7, "MACROMATE CORP."}, { 0x00, 0x30, 0xC8, "GAD LINE, LTD."}, { 0x00, 0x30, 0xC9, "LuxN, N"}, { 0x00, 0x30, 0xCA, "Discovery Com"}, { 0x00, 0x30, 0xCB, "OMNI FLOW COMPUTERS, INC."}, { 0x00, 0x30, 0xCC, "Tenor Networks, Inc."}, { 0x00, 0x30, 0xCD, "CONEXANT SYSTEMS, INC."}, { 0x00, 0x30, 0xCE, "Zaffire"}, { 0x00, 0x30, 0xCF, "TWO TECHNOLOGIES, INC."}, { 0x00, 0x30, 0xD1, "INOVA CORPORATION"}, { 0x00, 0x30, 0xD2, "WIN TECHNOLOGIES, CO., LTD."}, { 0x00, 0x30, 0xD3, "Agilent Technologies"}, { 0x00, 0x30, 0xD4, "COMTIER"}, { 0x00, 0x30, 0xD5, "DResearch GmbH"}, { 0x00, 0x30, 0xD6, "MSC VERTRIEBS GMBH"}, { 0x00, 0x30, 0xD7, "Innovative Systems, L.L.C."}, { 0x00, 0x30, 0xD8, "SITEK"}, { 0x00, 0x30, 0xD9, "DATACORE SOFTWARE CORP."}, { 0x00, 0x30, 0xDA, "COMTREND CO."}, { 0x00, 0x30, 0xDB, "Mindready Solutions, Inc."}, { 0x00, 0x30, 0xDC, "RIGHTECH CORPORATION"}, { 0x00, 0x30, 0xDD, "INDIGITA CORPORATION"}, { 0x00, 0x30, 0xDE, "WAGO Kontakttechnik GmbH"}, { 0x00, 0x30, 0xDF, "KB/TEL TELECOMUNICACIONES"}, { 0x00, 0x30, 0xE0, "OXFORD SEMICONDUCTOR LTD."}, { 0x00, 0x30, 0xE1, "ACROTRON SYSTEMS, INC."}, { 0x00, 0x30, 0xE2, "GARNET SYSTEMS CO., LTD."}, { 0x00, 0x30, 0xE3, "SEDONA NETWORKS CORP."}, { 0x00, 0x30, 0xE4, "CHIYODA SYSTEM RIKEN"}, { 0x00, 0x30, 0xE5, "Amper Datos S.A."}, { 0x00, 0x30, 0xE6, "SIEMENS MEDICAL SYSTEMS"}, { 0x00, 0x30, 0xE7, "CNF MOBILE SOLUTIONS, INC."}, { 0x00, 0x30, 0xE8, "ENSIM CORP."}, { 0x00, 0x30, 0xE9, "GMA COMMUNICATION MANUFACT'G"}, { 0x00, 0x30, 0xEA, "TeraForce Technology Corporation"}, { 0x00, 0x30, 0xEB, "TURBONET COMMUNICATIONS, INC."}, { 0x00, 0x30, 0xEC, "BORGARDT"}, { 0x00, 0x30, 0xED, "Expert Magnetics Corp."}, { 0x00, 0x30, 0xEE, "DSG Technology, Inc."}, { 0x00, 0x30, 0xEF, "NEON TECHNOLOGY, INC."}, { 0x00, 0x30, 0xF0, "Uniform Industrial Corp."}, { 0x00, 0x30, 0xF1, "Accton Technology Corp."}, { 0x00, 0x30, 0xF2, "CISCO SYSTEMS, INC."}, { 0x00, 0x30, 0xF3, "At Work Computers"}, { 0x00, 0x30, 0xF4, "STARDOT TECHNOLOGIES"}, { 0x00, 0x30, 0xF5, "Wild Lab. Ltd."}, { 0x00, 0x30, 0xF6, "SECURELOGIX CORPORATION"}, { 0x00, 0x30, 0xF7, "RAMIX INC."}, { 0x00, 0x30, 0xF8, "Dynapro Systems, Inc."}, { 0x00, 0x30, 0xF9, "Sollae Systems Co., Ltd."}, { 0x00, 0x30, 0xFA, "TELICA, INC."}, { 0x00, 0x30, 0xFB, "AZS Technology AG"}, { 0x00, 0x30, 0xFC, "Terawave Communications, Inc."}, { 0x00, 0x30, 0xFD, "INTEGRATED SYSTEMS DESIGN"}, { 0x00, 0x30, 0xFE, "DSA GmbH"}, { 0x00, 0x30, 0xFF, "DATAFAB SYSTEMS, INC."}, { 0x00, 0x40, 0x00, "PCI COMPONENTES DA AMZONIA LTD"}, { 0x00, 0x40, 0x01, "ZYXEL COMMUNICATIONS, INC."}, { 0x00, 0x40, 0x02, "PERLE SYSTEMS LIMITED"}, { 0x00, 0x40, 0x03, "WESTINGHOUSE PROCESS CONTROL"}, { 0x00, 0x40, 0x04, "ICM CO. LTD."}, { 0x00, 0x40, 0x05, "ANI COMMUNICATIONS INC."}, { 0x00, 0x40, 0x06, "SAMPO TECHNOLOGY CORPORATION"}, { 0x00, 0x40, 0x07, "TELMAT INFORMATIQUE"}, { 0x00, 0x40, 0x08, "A PLUS INFO CORPORATION"}, { 0x00, 0x40, 0x09, "TACHIBANA TECTRON CO., LTD."}, { 0x00, 0x40, 0x0A, "PIVOTAL TECHNOLOGIES, INC."}, { 0x00, 0x40, 0x0B, "CISCO SYSTEMS, INC."}, { 0x00, 0x40, 0x0C, "GENERAL MICRO SYSTEMS, INC."}, { 0x00, 0x40, 0x0D, "LANNET DATA COMMUNICATIONS,LTD"}, { 0x00, 0x40, 0x0E, "MEMOTEC COMMUNICATIONS, INC."}, { 0x00, 0x40, 0x0F, "DATACOM TECHNOLOGIES"}, { 0x00, 0x40, 0x10, "SONIC SYSTEMS, INC."}, { 0x00, 0x40, 0x11, "ANDOVER CONTROLS CORPORATION"}, { 0x00, 0x40, 0x12, "WINDATA, INC."}, { 0x00, 0x40, 0x13, "NTT DATA COMM. SYSTEMS CORP."}, { 0x00, 0x40, 0x14, "COMSOFT GMBH"}, { 0x00, 0x40, 0x15, "ASCOM INFRASYS AG"}, { 0x00, 0x40, 0x16, "HADAX ELECTRONICS, INC."}, { 0x00, 0x40, 0x17, "XCD INC."}, { 0x00, 0x40, 0x18, "ADOBE SYSTEMS, INC."}, { 0x00, 0x40, 0x19, "AEON SYSTEMS, INC."}, { 0x00, 0x40, 0x1A, "FUJI ELECTRIC CO., LTD."}, { 0x00, 0x40, 0x1B, "PRINTER SYSTEMS CORP."}, { 0x00, 0x40, 0x1C, "AST RESEARCH, INC."}, { 0x00, 0x40, 0x1D, "INVISIBLE SOFTWARE, INC."}, { 0x00, 0x40, 0x1E, "ICC"}, { 0x00, 0x40, 0x1F, "COLORGRAPH LTD"}, { 0x00, 0x40, 0x20, "PINACL COMMUNICATION"}, { 0x00, 0x40, 0x21, "RASTER GRAPHICS"}, { 0x00, 0x40, 0x22, "KLEVER COMPUTERS, INC."}, { 0x00, 0x40, 0x23, "LOGIC CORPORATION"}, { 0x00, 0x40, 0x24, "COMPAC INC."}, { 0x00, 0x40, 0x25, "MOLECULAR DYNAMICS"}, { 0x00, 0x40, 0x26, "MELCO, INC."}, { 0x00, 0x40, 0x27, "SMC MASSACHUSETTS, INC."}, { 0x00, 0x40, 0x28, "NETCOMM LIMITED"}, { 0x00, 0x40, 0x29, "COMPEX"}, { 0x00, 0x40, 0x2A, "CANOGA-PERKINS"}, { 0x00, 0x40, 0x2B, "TRIGEM COMPUTER, INC."}, { 0x00, 0x40, 0x2C, "ISIS DISTRIBUTED SYSTEMS, INC."}, { 0x00, 0x40, 0x2D, "HARRIS ADACOM CORPORATION"}, { 0x00, 0x40, 0x2E, "PRECISION SOFTWARE, INC."}, { 0x00, 0x40, 0x2F, "XLNT DESIGNS INC."}, { 0x00, 0x40, 0x30, "GK COMPUTER"}, { 0x00, 0x40, 0x31, "KOKUSAI ELECTRIC CO., LTD"}, { 0x00, 0x40, 0x32, "DIGITAL COMMUNICATIONS"}, { 0x00, 0x40, 0x33, "ADDTRON TECHNOLOGY CO., LTD."}, { 0x00, 0x40, 0x34, "BUSTEK CORPORATION"}, { 0x00, 0x40, 0x35, "OPCOM"}, { 0x00, 0x40, 0x36, "TRIBE COMPUTER WORKS, INC."}, { 0x00, 0x40, 0x37, "SEA-ILAN, INC."}, { 0x00, 0x40, 0x38, "TALENT ELECTRIC INCORPORATED"}, { 0x00, 0x40, 0x39, "OPTEC DAIICHI DENKO CO., LTD."}, { 0x00, 0x40, 0x3A, "IMPACT TECHNOLOGIES"}, { 0x00, 0x40, 0x3B, "SYNERJET INTERNATIONAL CORP."}, { 0x00, 0x40, 0x3C, "FORKS, INC."}, { 0x00, 0x40, 0x3D, "TERADATA"}, { 0x00, 0x40, 0x3E, "RASTER OPS CORPORATION"}, { 0x00, 0x40, 0x3F, "SSANGYONG COMPUTER SYSTEMS"}, { 0x00, 0x40, 0x40, "RING ACCESS, INC."}, { 0x00, 0x40, 0x41, "FUJIKURA LTD."}, { 0x00, 0x40, 0x42, "N.A.T. GMBH"}, { 0x00, 0x40, 0x43, "NOKIA TELECOMMUNICATIONS"}, { 0x00, 0x40, 0x44, "QNIX COMPUTER CO., LTD."}, { 0x00, 0x40, 0x45, "TWINHEAD CORPORATION"}, { 0x00, 0x40, 0x46, "UDC RESEARCH LIMITED"}, { 0x00, 0x40, 0x47, "WIND RIVER SYSTEMS"}, { 0x00, 0x40, 0x48, "SMD INFORMATICA S.A."}, { 0x00, 0x40, 0x49, "TEGIMENTA AG"}, { 0x00, 0x40, 0x4A, "WEST AUSTRALIAN DEPARTMENT"}, { 0x00, 0x40, 0x4B, "MAPLE COMPUTER SYSTEMS"}, { 0x00, 0x40, 0x4C, "HYPERTEC PTY LTD."}, { 0x00, 0x40, 0x4D, "TELECOMMUNICATIONS TECHNIQUES"}, { 0x00, 0x40, 0x4E, "FLUENT, INC."}, { 0x00, 0x40, 0x4F, "SPACE & NAVAL WARFARE SYSTEMS"}, { 0x00, 0x40, 0x50, "IRONICS, INCORPORATED"}, { 0x00, 0x40, 0x51, "GRACILIS, INC."}, { 0x00, 0x40, 0x52, "STAR TECHNOLOGIES, INC."}, { 0x00, 0x40, 0x53, "AMPRO COMPUTERS"}, { 0x00, 0x40, 0x54, "CONNECTION MACHINES SERVICES"}, { 0x00, 0x40, 0x55, "METRONIX GMBH"}, { 0x00, 0x40, 0x56, "MCM JAPAN LTD."}, { 0x00, 0x40, 0x57, "LOCKHEED - SANDERS"}, { 0x00, 0x40, 0x58, "KRONOS, INC."}, { 0x00, 0x40, 0x59, "YOSHIDA KOGYO K. K."}, { 0x00, 0x40, 0x5A, "GOLDSTAR INFORMATION & COMM."}, { 0x00, 0x40, 0x5B, "FUNASSET LIMITED"}, { 0x00, 0x40, 0x5C, "FUTURE SYSTEMS, INC."}, { 0x00, 0x40, 0x5D, "STAR-TEK, INC."}, { 0x00, 0x40, 0x5E, "NORTH HILLS ISRAEL"}, { 0x00, 0x40, 0x5F, "AFE COMPUTERS LTD."}, { 0x00, 0x40, 0x60, "COMENDEC LTD"}, { 0x00, 0x40, 0x61, "DATATECH ENTERPRISES CO., LTD."}, { 0x00, 0x40, 0x62, "E-SYSTEMS, INC./GARLAND DIV."}, { 0x00, 0x40, 0x63, "VIA TECHNOLOGIES, INC."}, { 0x00, 0x40, 0x64, "KLA INSTRUMENTS CORPORATION"}, { 0x00, 0x40, 0x65, "GTE SPACENET"}, { 0x00, 0x40, 0x66, "HITACHI CABLE, LTD."}, { 0x00, 0x40, 0x67, "OMNIBYTE CORPORATION"}, { 0x00, 0x40, 0x68, "EXTENDED SYSTEMS"}, { 0x00, 0x40, 0x69, "LEMCOM SYSTEMS, INC."}, { 0x00, 0x40, 0x6A, "KENTEK INFORMATION SYSTEMS,INC"}, { 0x00, 0x40, 0x6B, "SYSGEN"}, { 0x00, 0x40, 0x6C, "COPERNIQUE"}, { 0x00, 0x40, 0x6D, "LANCO, INC."}, { 0x00, 0x40, 0x6E, "COROLLARY, INC."}, { 0x00, 0x40, 0x6F, "SYNC RESEARCH INC."}, { 0x00, 0x40, 0x70, "INTERWARE CO., LTD."}, { 0x00, 0x40, 0x71, "ATM COMPUTER GMBH"}, { 0x00, 0x40, 0x72, "APPLIED INNOVATION, INC."}, { 0x00, 0x40, 0x73, "BASS ASSOCIATES"}, { 0x00, 0x40, 0x74, "CABLE AND WIRELESS"}, { 0x00, 0x40, 0x75, "M-TRADE (UK) LTD"}, { 0x00, 0x40, 0x76, "Sun Conversion Technologies"}, { 0x00, 0x40, 0x77, "MAXTON TECHNOLOGY CORPORATION"}, { 0x00, 0x40, 0x78, "WEARNES AUTOMATION PTE LTD"}, { 0x00, 0x40, 0x79, "JUKO MANUFACTURE COMPANY, LTD."}, { 0x00, 0x40, 0x7A, "SOCIETE D'EXPLOITATION DU CNIT"}, { 0x00, 0x40, 0x7B, "SCIENTIFIC ATLANTA"}, { 0x00, 0x40, 0x7C, "QUME CORPORATION"}, { 0x00, 0x40, 0x7D, "EXTENSION TECHNOLOGY CORP."}, { 0x00, 0x40, 0x7E, "EVERGREEN SYSTEMS, INC."}, { 0x00, 0x40, 0x7F, "FLIR Systems"}, { 0x00, 0x40, 0x80, "ATHENIX CORPORATION"}, { 0x00, 0x40, 0x81, "MANNESMANN SCANGRAPHIC GMBH"}, { 0x00, 0x40, 0x82, "LABORATORY EQUIPMENT CORP."}, { 0x00, 0x40, 0x83, "TDA INDUSTRIA DE PRODUTOS"}, { 0x00, 0x40, 0x84, "HONEYWELL INC."}, { 0x00, 0x40, 0x85, "SAAB INSTRUMENTS AB"}, { 0x00, 0x40, 0x86, "MICHELS & KLEBERHOFF COMPUTER"}, { 0x00, 0x40, 0x87, "UBITREX CORPORATION"}, { 0x00, 0x40, 0x88, "MOBIUS TECHNOLOGIES, INC."}, { 0x00, 0x40, 0x89, "MEIDENSHA CORPORATION"}, { 0x00, 0x40, 0x8A, "TPS TELEPROCESSING SYS. GMBH"}, { 0x00, 0x40, 0x8B, "RAYLAN CORPORATION"}, { 0x00, 0x40, 0x8C, "AXIS COMMUNICATIONS AB"}, { 0x00, 0x40, 0x8D, "THE GOODYEAR TIRE & RUBBER CO."}, { 0x00, 0x40, 0x8E, "DIGILOG, INC."}, { 0x00, 0x40, 0x8F, "WM-DATA MINFO AB"}, { 0x00, 0x40, 0x90, "ANSEL COMMUNICATIONS"}, { 0x00, 0x40, 0x91, "PROCOMP INDUSTRIA ELETRONICA"}, { 0x00, 0x40, 0x92, "ASP COMPUTER PRODUCTS, INC."}, { 0x00, 0x40, 0x93, "PAXDATA NETWORKS LTD."}, { 0x00, 0x40, 0x94, "SHOGRAPHICS, INC."}, { 0x00, 0x40, 0x95, "R.P.T. INTERGROUPS INT'L LTD."}, { 0x00, 0x40, 0x96, "Aironet Wireless Communication"}, { 0x00, 0x40, 0x97, "DATEX DIVISION OF"}, { 0x00, 0x40, 0x98, "DRESSLER GMBH & CO."}, { 0x00, 0x40, 0x99, "NEWGEN SYSTEMS CORP."}, { 0x00, 0x40, 0x9A, "NETWORK EXPRESS, INC."}, { 0x00, 0x40, 0x9B, "HAL COMPUTER SYSTEMS INC."}, { 0x00, 0x40, 0x9C, "TRANSWARE"}, { 0x00, 0x40, 0x9D, "DIGIBOARD, INC."}, { 0x00, 0x40, 0x9E, "CONCURRENT TECHNOLOGIES LTD."}, { 0x00, 0x40, 0x9F, "LANCAST/CASAT TECHNOLOGY, INC."}, { 0x00, 0x40, 0xA0, "GOLDSTAR CO., LTD."}, { 0x00, 0x40, 0xA1, "ERGO COMPUTING"}, { 0x00, 0x40, 0xA2, "KINGSTAR TECHNOLOGY INC."}, { 0x00, 0x40, 0xA3, "MICROUNITY SYSTEMS ENGINEERING"}, { 0x00, 0x40, 0xA4, "ROSE ELECTRONICS"}, { 0x00, 0x40, 0xA5, "CLINICOMP INTL."}, { 0x00, 0x40, 0xA6, "Cray, Inc."}, { 0x00, 0x40, 0xA7, "ITAUTEC PHILCO S.A."}, { 0x00, 0x40, 0xA8, "IMF INTERNATIONAL LTD."}, { 0x00, 0x40, 0xA9, "DATACOM INC."}, { 0x00, 0x40, 0xAA, "VALMET AUTOMATION INC."}, { 0x00, 0x40, 0xAB, "ROLAND DG CORPORATION"}, { 0x00, 0x40, 0xAC, "SUPER WORKSTATION, INC."}, { 0x00, 0x40, 0xAD, "SMA REGELSYSTEME GMBH"}, { 0x00, 0x40, 0xAE, "DELTA CONTROLS, INC."}, { 0x00, 0x40, 0xAF, "DIGITAL PRODUCTS, INC."}, { 0x00, 0x40, 0xB0, "BYTEX CORPORATION, ENGINEERING"}, { 0x00, 0x40, 0xB1, "CODONICS INC."}, { 0x00, 0x40, 0xB2, "SYSTEMFORSCHUNG"}, { 0x00, 0x40, 0xB3, "PAR MICROSYSTEMS CORPORATION"}, { 0x00, 0x40, 0xB4, "NEXTCOM K.K."}, { 0x00, 0x40, 0xB5, "VIDEO TECHNOLOGY COMPUTERS LTD"}, { 0x00, 0x40, 0xB6, "COMPUTERM CORPORATION"}, { 0x00, 0x40, 0xB7, "STEALTH COMPUTER SYSTEMS"}, { 0x00, 0x40, 0xB8, "IDEA ASSOCIATES"}, { 0x00, 0x40, 0xB9, "MACQ ELECTRONIQUE SA"}, { 0x00, 0x40, 0xBA, "ALLIANT COMPUTER SYSTEMS CORP."}, { 0x00, 0x40, 0xBB, "GOLDSTAR CABLE CO., LTD."}, { 0x00, 0x40, 0xBC, "ALGORITHMICS LTD."}, { 0x00, 0x40, 0xBD, "STARLIGHT NETWORKS, INC."}, { 0x00, 0x40, 0xBE, "BOEING DEFENSE & SPACE"}, { 0x00, 0x40, 0xBF, "CHANNEL SYSTEMS INTERN'L INC."}, { 0x00, 0x40, 0xC0, "VISTA CONTROLS CORPORATION"}, { 0x00, 0x40, 0xC1, "BIZERBA-WERKE WILHEIM KRAUT"}, { 0x00, 0x40, 0xC2, "APPLIED COMPUTING DEVICES"}, { 0x00, 0x40, 0xC3, "FISCHER AND PORTER CO."}, { 0x00, 0x40, 0xC4, "KINKEI SYSTEM CORPORATION"}, { 0x00, 0x40, 0xC5, "MICOM COMMUNICATIONS INC."}, { 0x00, 0x40, 0xC6, "FIBERNET RESEARCH, INC."}, { 0x00, 0x40, 0xC7, "RUBY TECH CORPORATION"}, { 0x00, 0x40, 0xC8, "MILAN TECHNOLOGY CORPORATION"}, { 0x00, 0x40, 0xC9, "NCUBE"}, { 0x00, 0x40, 0xCA, "FIRST INTERNAT'L COMPUTER, INC"}, { 0x00, 0x40, 0xCB, "LANWAN TECHNOLOGIES"}, { 0x00, 0x40, 0xCC, "SILCOM MANUF'G TECHNOLOGY INC."}, { 0x00, 0x40, 0xCD, "TERA MICROSYSTEMS, INC."}, { 0x00, 0x40, 0xCE, "NET-SOURCE, INC."}, { 0x00, 0x40, 0xCF, "STRAWBERRY TREE, INC."}, { 0x00, 0x40, 0xD0, "MITAC INTERNATIONAL CORP."}, { 0x00, 0x40, 0xD1, "FUKUDA DENSHI CO., LTD."}, { 0x00, 0x40, 0xD2, "PAGINE CORPORATION"}, { 0x00, 0x40, 0xD3, "KIMPSION INTERNATIONAL CORP."}, { 0x00, 0x40, 0xD4, "GAGE TALKER CORP."}, { 0x00, 0x40, 0xD5, "SARTORIUS AG"}, { 0x00, 0x40, 0xD6, "LOCAMATION B.V."}, { 0x00, 0x40, 0xD7, "STUDIO GEN INC."}, { 0x00, 0x40, 0xD8, "OCEAN OFFICE AUTOMATION LTD."}, { 0x00, 0x40, 0xD9, "AMERICAN MEGATRENDS INC."}, { 0x00, 0x40, 0xDA, "TELSPEC LTD"}, { 0x00, 0x40, 0xDB, "ADVANCED TECHNICAL SOLUTIONS"}, { 0x00, 0x40, 0xDC, "TRITEC ELECTRONIC GMBH"}, { 0x00, 0x40, 0xDD, "HONG TECHNOLOGIES"}, { 0x00, 0x40, 0xDE, "ELETTRONICA SAN GIORGIO"}, { 0x00, 0x40, 0xDF, "DIGALOG SYSTEMS, INC."}, { 0x00, 0x40, 0xE0, "ATOMWIDE LTD."}, { 0x00, 0x40, 0xE1, "MARNER INTERNATIONAL, INC."}, { 0x00, 0x40, 0xE2, "MESA RIDGE TECHNOLOGIES, INC."}, { 0x00, 0x40, 0xE3, "QUIN SYSTEMS LTD"}, { 0x00, 0x40, 0xE4, "E-M TECHNOLOGY, INC."}, { 0x00, 0x40, 0xE5, "SYBUS CORPORATION"}, { 0x00, 0x40, 0xE6, "C.A.E.N."}, { 0x00, 0x40, 0xE7, "ARNOS INSTRUMENTS & COMPUTER"}, { 0x00, 0x40, 0xE8, "CHARLES RIVER DATA SYSTEMS,INC"}, { 0x00, 0x40, 0xE9, "ACCORD SYSTEMS, INC."}, { 0x00, 0x40, 0xEA, "PLAIN TREE SYSTEMS INC"}, { 0x00, 0x40, 0xEB, "MARTIN MARIETTA CORPORATION"}, { 0x00, 0x40, 0xEC, "MIKASA SYSTEM ENGINEERING"}, { 0x00, 0x40, 0xED, "NETWORK CONTROLS INT'NATL INC."}, { 0x00, 0x40, 0xEE, "OPTIMEM"}, { 0x00, 0x40, 0xEF, "HYPERCOM, INC."}, { 0x00, 0x40, 0xF0, "MICRO SYSTEMS, INC."}, { 0x00, 0x40, 0xF1, "CHUO ELECTRONICS CO., LTD."}, { 0x00, 0x40, 0xF2, "JANICH & KLASS COMPUTERTECHNIK"}, { 0x00, 0x40, 0xF3, "NETCOR"}, { 0x00, 0x40, 0xF4, "CAMEO COMMUNICATIONS, INC."}, { 0x00, 0x40, 0xF5, "OEM ENGINES"}, { 0x00, 0x40, 0xF6, "KATRON COMPUTERS INC."}, { 0x00, 0x40, 0xF7, "POLAROID MEDICAL IMAGING SYS."}, { 0x00, 0x40, 0xF8, "SYSTEMHAUS DISCOM"}, { 0x00, 0x40, 0xF9, "COMBINET"}, { 0x00, 0x40, 0xFA, "MICROBOARDS, INC."}, { 0x00, 0x40, 0xFB, "CASCADE COMMUNICATIONS CORP."}, { 0x00, 0x40, 0xFC, "IBR COMPUTER TECHNIK GMBH"}, { 0x00, 0x40, 0xFD, "LXE"}, { 0x00, 0x40, 0xFE, "SYMPLEX COMMUNICATIONS"}, { 0x00, 0x40, 0xFF, "TELEBIT CORPORATION"}, { 0x00, 0x42, 0x52, "RLX Technologies"}, { 0x00, 0x50, 0x00, "NEXO COMMUNICATIONS, INC."}, { 0x00, 0x50, 0x01, "YAMASHITA SYSTEMS CORP."}, { 0x00, 0x50, 0x02, "OMNISEC AG"}, { 0x00, 0x50, 0x03, "GRETAG MACBETH AG"}, { 0x00, 0x50, 0x04, "3COM CORPORATION"}, { 0x00, 0x50, 0x06, "TAC AB"}, { 0x00, 0x50, 0x07, "SIEMENS TELECOMMUNICATION SYSTEMS LIMITED"}, { 0x00, 0x50, 0x08, "TIVA MICROCOMPUTER CORP. (TMC)"}, { 0x00, 0x50, 0x09, "PHILIPS BROADBAND NETWORKS"}, { 0x00, 0x50, 0x0A, "IRIS TECHNOLOGIES, INC."}, { 0x00, 0x50, 0x0B, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0x0C, "e-Tek Labs, Inc."}, { 0x00, 0x50, 0x0D, "SATORI ELECTORIC CO., LTD."}, { 0x00, 0x50, 0x0E, "CHROMATIS NETWORKS, INC."}, { 0x00, 0x50, 0x0F, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0x10, "NovaNET Learning, Inc."}, { 0x00, 0x50, 0x12, "CBL - GMBH"}, { 0x00, 0x50, 0x13, "Chaparral Network Storage"}, { 0x00, 0x50, 0x14, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0x15, "BRIGHT STAR ENGINEERING"}, { 0x00, 0x50, 0x16, "SST/WOODHEAD INDUSTRIES"}, { 0x00, 0x50, 0x17, "RSR S.R.L."}, { 0x00, 0x50, 0x18, "ADVANCED MULTIMEDIA INTERNET TECHNOLOGY INC."}, { 0x00, 0x50, 0x19, "SPRING TIDE NETWORKS, INC."}, { 0x00, 0x50, 0x1A, "UISIQN"}, { 0x00, 0x50, 0x1B, "ABL CANADA, INC."}, { 0x00, 0x50, 0x1C, "JATOM SYSTEMS, INC."}, { 0x00, 0x50, 0x1E, "MIRANDA TECHNOLOGIES, INC."}, { 0x00, 0x50, 0x1F, "MRG SYSTEMS, LTD."}, { 0x00, 0x50, 0x20, "MEDIASTAR CO., LTD."}, { 0x00, 0x50, 0x21, "EIS INTERNATIONAL, INC."}, { 0x00, 0x50, 0x22, "ZONET TECHNOLOGY, INC."}, { 0x00, 0x50, 0x23, "PG DESIGN ELECTRONICS, INC."}, { 0x00, 0x50, 0x24, "NAVIC SYSTEMS, INC."}, { 0x00, 0x50, 0x26, "COSYSTEMS, INC."}, { 0x00, 0x50, 0x27, "GENICOM CORPORATION"}, { 0x00, 0x50, 0x28, "AVAL COMMUNICATIONS"}, { 0x00, 0x50, 0x29, "1394 PRINTER WORKING GROUP"}, { 0x00, 0x50, 0x2A, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0x2B, "GENRAD LTD."}, { 0x00, 0x50, 0x2C, "SOYO COMPUTER, INC."}, { 0x00, 0x50, 0x2D, "ACCEL, INC."}, { 0x00, 0x50, 0x2E, "CAMBEX CORPORATION"}, { 0x00, 0x50, 0x2F, "TollBridge Technologies, Inc."}, { 0x00, 0x50, 0x30, "FUTURE PLUS SYSTEMS"}, { 0x00, 0x50, 0x31, "AEROFLEX LABORATORIES, INC."}, { 0x00, 0x50, 0x32, "PICAZO COMMUNICATIONS, INC."}, { 0x00, 0x50, 0x33, "MAYAN NETWORKS"}, { 0x00, 0x50, 0x36, "NETCAM, LTD."}, { 0x00, 0x50, 0x37, "KOGA ELECTRONICS CO."}, { 0x00, 0x50, 0x38, "DAIN TELECOM CO., LTD."}, { 0x00, 0x50, 0x39, "MARINER NETWORKS"}, { 0x00, 0x50, 0x3A, "DATONG ELECTRONICS LTD."}, { 0x00, 0x50, 0x3B, "MEDIAFIRE CORPORATION"}, { 0x00, 0x50, 0x3C, "TSINGHUA NOVEL ELECTRONICS"}, { 0x00, 0x50, 0x3E, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0x3F, "ANCHOR GAMES"}, { 0x00, 0x50, 0x40, "EMWARE, INC."}, { 0x00, 0x50, 0x41, "CTX OPTO ELECTRONIC CORP."}, { 0x00, 0x50, 0x42, "SCI MANUFACTURING SINGAPORE PTE, LTD."}, { 0x00, 0x50, 0x43, "MARVELL SEMICONDUCTOR, INC."}, { 0x00, 0x50, 0x44, "ASACA CORPORATION"}, { 0x00, 0x50, 0x45, "RIOWORKS SOLUTIONS, INC."}, { 0x00, 0x50, 0x46, "MENICX INTERNATIONAL CO., LTD."}, { 0x00, 0x50, 0x48, "INFOLIBRIA"}, { 0x00, 0x50, 0x49, "ELLACOYA NETWORKS, INC."}, { 0x00, 0x50, 0x4A, "ELTECO A.S."}, { 0x00, 0x50, 0x4B, "BARCONET N.V."}, { 0x00, 0x50, 0x4C, "GALIL MOTION CONTROL, INC."}, { 0x00, 0x50, 0x4D, "TOKYO ELECTRON DEVICE LTD."}, { 0x00, 0x50, 0x4E, "SIERRA MONITOR CORP."}, { 0x00, 0x50, 0x4F, "OLENCOM ELECTRONICS"}, { 0x00, 0x50, 0x50, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0x51, "IWATSU ELECTRIC CO., LTD."}, { 0x00, 0x50, 0x52, "TIARA NETWORKS, INC."}, { 0x00, 0x50, 0x53, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0x54, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0x55, "DOMS A/S"}, { 0x00, 0x50, 0x56, "VMWare, Inc."}, { 0x00, 0x50, 0x57, "BROADBAND ACCESS SYSTEMS"}, { 0x00, 0x50, 0x58, "VEGASTREAM LIMITED"}, { 0x00, 0x50, 0x59, "SUITE TECHNOLOGY SYSTEMS NETWORK"}, { 0x00, 0x50, 0x5A, "NETWORK ALCHEMY, INC."}, { 0x00, 0x50, 0x5B, "KAWASAKI LSI U.S.A., INC."}, { 0x00, 0x50, 0x5C, "TUNDO CORPORATION"}, { 0x00, 0x50, 0x5E, "DIGITEK MICROLOGIC S.A."}, { 0x00, 0x50, 0x5F, "BRAND INNOVATORS"}, { 0x00, 0x50, 0x60, "TANDBERG TELECOM AS"}, { 0x00, 0x50, 0x62, "KOUWELL ELECTRONICS CORP. **"}, { 0x00, 0x50, 0x63, "OY COMSEL SYSTEM AB"}, { 0x00, 0x50, 0x64, "CAE ELECTRONICS"}, { 0x00, 0x50, 0x65, "DENSEI-LAMBAD Co., Ltd."}, { 0x00, 0x50, 0x66, "AtecoM GmbH advanced telecomunication modules"}, { 0x00, 0x50, 0x67, "AEROCOMM, INC."}, { 0x00, 0x50, 0x68, "ELECTRONIC INDUSTRIES ASSOCIATION"}, { 0x00, 0x50, 0x69, "PixStream Incorporated"}, { 0x00, 0x50, 0x6A, "EDEVA, INC."}, { 0x00, 0x50, 0x6B, "SPX-ATEG"}, { 0x00, 0x50, 0x6C, "G & L BEIJER ELECTRONICS AB"}, { 0x00, 0x50, 0x6D, "VIDEOJET SYSTEMS"}, { 0x00, 0x50, 0x6E, "CORDER ENGINEERING CORPORATION"}, { 0x00, 0x50, 0x6F, "G-CONNECT"}, { 0x00, 0x50, 0x70, "CHAINTECH COMPUTER CO., LTD."}, { 0x00, 0x50, 0x71, "AIWA CO., LTD."}, { 0x00, 0x50, 0x72, "CORVIS CORPORATION"}, { 0x00, 0x50, 0x73, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0x74, "ADVANCED HI-TECH CORP."}, { 0x00, 0x50, 0x75, "KESTREL SOLUTIONS"}, { 0x00, 0x50, 0x76, "IBM"}, { 0x00, 0x50, 0x77, "PROLIFIC TECHNOLOGY, INC."}, { 0x00, 0x50, 0x78, "MEGATON HOUSE, LTD."}, { 0x00, 0x50, 0x7A, "XPEED, INC."}, { 0x00, 0x50, 0x7B, "MERLOT COMMUNICATIONS"}, { 0x00, 0x50, 0x7C, "VIDEOCON AG"}, { 0x00, 0x50, 0x7D, "IFP"}, { 0x00, 0x50, 0x7E, "NEWER TECHNOLOGY"}, { 0x00, 0x50, 0x7F, "DrayTek Corp."}, { 0x00, 0x50, 0x80, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0x81, "MURATA MACHINERY, LTD."}, { 0x00, 0x50, 0x82, "FORESSON CORPORATION"}, { 0x00, 0x50, 0x83, "GILBARCO, INC."}, { 0x00, 0x50, 0x84, "ATL PRODUCTS"}, { 0x00, 0x50, 0x86, "TELKOM SA, LTD."}, { 0x00, 0x50, 0x87, "TERASAKI ELECTRIC CO., LTD."}, { 0x00, 0x50, 0x88, "AMANO CORPORATION"}, { 0x00, 0x50, 0x89, "SAFETY MANAGEMENT SYSTEMS"}, { 0x00, 0x50, 0x8B, "COMPAQ COMPUTER CORPORATION"}, { 0x00, 0x50, 0x8C, "RSI SYSTEMS"}, { 0x00, 0x50, 0x8D, "ABIT COMPUTER CORPORATION"}, { 0x00, 0x50, 0x8E, "OPTIMATION, INC."}, { 0x00, 0x50, 0x8F, "ASITA TECHNOLOGIES INT'L LTD."}, { 0x00, 0x50, 0x90, "DCTRI"}, { 0x00, 0x50, 0x91, "NETACCESS, INC."}, { 0x00, 0x50, 0x92, "RIGAKU INDUSTRIAL CORPORATION"}, { 0x00, 0x50, 0x93, "BOEING"}, { 0x00, 0x50, 0x94, "PACE MICRO TECHNOLOGY PLC"}, { 0x00, 0x50, 0x95, "PERACOM NETWORKS"}, { 0x00, 0x50, 0x96, "SALIX TECHNOLOGIES, INC."}, { 0x00, 0x50, 0x97, "MMC-EMBEDDED COMPUTERTECHNIK GmbH"}, { 0x00, 0x50, 0x98, "GLOBALOOP, LTD."}, { 0x00, 0x50, 0x99, "3COM EUROPE, LTD."}, { 0x00, 0x50, 0x9A, "TAG ELECTRONIC SYSTEMS"}, { 0x00, 0x50, 0x9B, "SWITCHCORE AB"}, { 0x00, 0x50, 0x9C, "BETA RESEARCH"}, { 0x00, 0x50, 0x9D, "THE INDUSTREE B.V."}, { 0x00, 0x50, 0x9E, "Les Technologies SoftAcoustik Inc."}, { 0x00, 0x50, 0x9F, "HORIZON COMPUTER"}, { 0x00, 0x50, 0xA0, "DELTA COMPUTER SYSTEMS, INC."}, { 0x00, 0x50, 0xA1, "CARLO GAVAZZI, INC."}, { 0x00, 0x50, 0xA2, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0xA3, "TransMedia Communications, Inc."}, { 0x00, 0x50, 0xA4, "IO TECH, INC."}, { 0x00, 0x50, 0xA5, "CAPITOL BUSINESS SYSTEMS, LTD."}, { 0x00, 0x50, 0xA6, "OPTRONICS"}, { 0x00, 0x50, 0xA7, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0xA8, "OpenCon Systems, Inc."}, { 0x00, 0x50, 0xA9, "MOLDAT WIRELESS TECHNOLGIES"}, { 0x00, 0x50, 0xAA, "KONICA CORPORATION"}, { 0x00, 0x50, 0xAB, "NALTEC, INC."}, { 0x00, 0x50, 0xAC, "MAPLE COMPUTER CORPORATION"}, { 0x00, 0x50, 0xAD, "CommUnique Wireless Corp."}, { 0x00, 0x50, 0xAE, "IWAKI ELECTRONICS CO., LTD."}, { 0x00, 0x50, 0xAF, "INTERGON, INC."}, { 0x00, 0x50, 0xB0, "TECHNOLOGY ATLANTA CORPORATION"}, { 0x00, 0x50, 0xB1, "GIDDINGS & LEWIS"}, { 0x00, 0x50, 0xB2, "BRODEL AUTOMATION"}, { 0x00, 0x50, 0xB3, "VOICEBOARD CORPORATION"}, { 0x00, 0x50, 0xB4, "SATCHWELL CONTROL SYSTEMS, LTD"}, { 0x00, 0x50, 0xB5, "FICHET-BAUCHE"}, { 0x00, 0x50, 0xB6, "GOOD WAY IND. CO., LTD."}, { 0x00, 0x50, 0xB7, "BOSER TECHNOLOGY CO., LTD."}, { 0x00, 0x50, 0xB8, "INOVA COMPUTERS GMBH & CO. KG"}, { 0x00, 0x50, 0xB9, "XITRON TECHNOLOGIES, INC."}, { 0x00, 0x50, 0xBA, "D-LINK"}, { 0x00, 0x50, 0xBB, "CMS TECHNOLOGIES"}, { 0x00, 0x50, 0xBC, "HAMMER STORAGE SOLUTIONS"}, { 0x00, 0x50, 0xBD, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0xBE, "FAST MULTIMEDIA AG"}, { 0x00, 0x50, 0xBF, "MOTOTECH INC."}, { 0x00, 0x50, 0xC0, "GATAN, INC."}, { 0x00, 0x50, 0xC1, "GEMFLEX NETWORKS, LTD."}, { 0x00, 0x50, 0xC2, "IEEE REGISTRATION AUTHORITY"}, { 0x00, 0x50, 0xC4, "IMD"}, { 0x00, 0x50, 0xC5, "ADS TECHNOLOGIES, INC."}, { 0x00, 0x50, 0xC6, "LOOP TELECOMMUNICATION INTERNATIONAL, INC."}, { 0x00, 0x50, 0xC8, "ADDONICS COMMUNICATIONS, INC."}, { 0x00, 0x50, 0xC9, "MASPRO DENKOH CORP."}, { 0x00, 0x50, 0xCA, "NET TO NET TECHNOLOGIES"}, { 0x00, 0x50, 0xCB, "JETTER"}, { 0x00, 0x50, 0xCC, "XYRATEX"}, { 0x00, 0x50, 0xCD, "DIGIANSWER A/S"}, { 0x00, 0x50, 0xCE, "LG INTERNATIONAL CORP."}, { 0x00, 0x50, 0xCF, "VANLINK COMMUNICATION TECHNOLOGY RESEARCH INSTITUTE"}, { 0x00, 0x50, 0xD0, "MINERVA SYSTEMS"}, { 0x00, 0x50, 0xD1, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0xD2, "BAE Systems Canada, Inc."}, { 0x00, 0x50, 0xD3, "DIGITAL AUDIO PROCESSING PTY. LTD."}, { 0x00, 0x50, 0xD4, "JOOHONG INFORMATION &"}, { 0x00, 0x50, 0xD5, "AD SYSTEMS CORP."}, { 0x00, 0x50, 0xD6, "ATLAS COPCO TOOLS AB"}, { 0x00, 0x50, 0xD7, "TELSTRAT"}, { 0x00, 0x50, 0xD8, "UNICORN COMPUTER CORP."}, { 0x00, 0x50, 0xD9, "ENGETRON-ENGENHARIA ELETRONICA IND. e COM. LTDA"}, { 0x00, 0x50, 0xDA, "3COM CORPORATION"}, { 0x00, 0x50, 0xDB, "CONTEMPORARY CONTROL"}, { 0x00, 0x50, 0xDC, "TAS TELEFONBAU A. SCHWABE GMBH & CO. KG"}, { 0x00, 0x50, 0xDD, "SERRA SOLDADURA, S.A."}, { 0x00, 0x50, 0xDE, "SIGNUM SYSTEMS CORP."}, { 0x00, 0x50, 0xDF, "AirFiber, Inc."}, { 0x00, 0x50, 0xE1, "NS TECH ELECTRONICS SDN BHD"}, { 0x00, 0x50, 0xE2, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0xE3, "TELEGATE"}, { 0x00, 0x50, 0xE4, "APPLE COMPUTER, INC."}, { 0x00, 0x50, 0xE6, "HAKUSAN CORPORATION"}, { 0x00, 0x50, 0xE7, "PARADISE INNOVATIONS (ASIA)"}, { 0x00, 0x50, 0xE8, "NOMADIX INC."}, { 0x00, 0x50, 0xEA, "XEL COMMUNICATIONS, INC."}, { 0x00, 0x50, 0xEB, "ALPHA-TOP CORPORATION"}, { 0x00, 0x50, 0xEC, "OLICOM A/S"}, { 0x00, 0x50, 0xED, "ANDA NETWORKS"}, { 0x00, 0x50, 0xEE, "TEK DIGITEL CORPORATION"}, { 0x00, 0x50, 0xEF, "SPE Systemhaus GmbH"}, { 0x00, 0x50, 0xF0, "CISCO SYSTEMS, INC."}, { 0x00, 0x50, 0xF1, "LIBIT SIGNAL PROCESSING, LTD."}, { 0x00, 0x50, 0xF2, "MICROSOFT CORP."}, { 0x00, 0x50, 0xF3, "GLOBAL NET INFORMATION CO., Ltd."}, { 0x00, 0x50, 0xF4, "SIGMATEK GMBH & CO. KG"}, { 0x00, 0x50, 0xF6, "PAN-INTERNATIONAL INDUSTRIAL CORP."}, { 0x00, 0x50, 0xF7, "VENTURE MANUFACTURING (SINGAPORE) LTD."}, { 0x00, 0x50, 0xF8, "ENTREGA TECHNOLOGIES, INC."}, { 0x00, 0x50, 0xFA, "OXTEL, LTD."}, { 0x00, 0x50, 0xFB, "VSK ELECTRONICS"}, { 0x00, 0x50, 0xFC, "EDIMAX TECHNOLOGY CO., LTD."}, { 0x00, 0x50, 0xFD, "VISIONCOMM CO., LTD."}, { 0x00, 0x50, 0xFE, "PCTVnet ASA"}, { 0x00, 0x50, 0xFF, "HAKKO ELECTRONICS CO., LTD."}, { 0x00, 0x60, 0x00, "XYCOM INC."}, { 0x00, 0x60, 0x01, "InnoSys, Inc."}, { 0x00, 0x60, 0x02, "SCREEN SUBTITLING SYSTEMS, LTD"}, { 0x00, 0x60, 0x03, "TERAOKA WEIGH SYSTEM PTE, LTD."}, { 0x00, 0x60, 0x04, "COMPUTADORES MODULARES SA"}, { 0x00, 0x60, 0x05, "FEEDBACK DATA LTD."}, { 0x00, 0x60, 0x06, "SOTEC CO., LTD"}, { 0x00, 0x60, 0x07, "ACRES GAMING, INC."}, { 0x00, 0x60, 0x08, "3COM CORPORATION"}, { 0x00, 0x60, 0x09, "CISCO SYSTEMS, INC."}, { 0x00, 0x60, 0x0A, "SORD COMPUTER CORPORATION"}, { 0x00, 0x60, 0x0B, "LOGWARE GmbH"}, { 0x00, 0x60, 0x0C, "APPLIED DATA SYSTEMS, INC."}, { 0x00, 0x60, 0x0D, "Digital Logic GmbH"}, { 0x00, 0x60, 0x0E, "WAVENET INTERNATIONAL, INC."}, { 0x00, 0x60, 0x0F, "WESTELL, INC."}, { 0x00, 0x60, 0x10, "NETWORK MACHINES, INC."}, { 0x00, 0x60, 0x11, "CRYSTAL SEMICONDUCTOR CORP."}, { 0x00, 0x60, 0x12, "POWER COMPUTING CORPORATION"}, { 0x00, 0x60, 0x13, "NETSTAL MASCHINEN AG"}, { 0x00, 0x60, 0x14, "EDEC CO., LTD."}, { 0x00, 0x60, 0x15, "NET2NET CORPORATION"}, { 0x00, 0x60, 0x16, "CLARIION"}, { 0x00, 0x60, 0x17, "TOKIMEC INC."}, { 0x00, 0x60, 0x18, "STELLAR ONE CORPORATION"}, { 0x00, 0x60, 0x19, "BOEHRINGER MANNHEIM CORP."}, { 0x00, 0x60, 0x1A, "KEITHLEY INSTRUMENTS"}, { 0x00, 0x60, 0x1B, "MESA ELECTRONICS"}, { 0x00, 0x60, 0x1C, "TELXON CORPORATION"}, { 0x00, 0x60, 0x1D, "LUCENT TECHNOLOGIES"}, { 0x00, 0x60, 0x1E, "SOFTLAB, INC."}, { 0x00, 0x60, 0x1F, "STALLION TECHNOLOGIES"}, { 0x00, 0x60, 0x20, "PIVOTAL NETWORKING, INC."}, { 0x00, 0x60, 0x21, "DSC CORPORATION"}, { 0x00, 0x60, 0x22, "VICOM SYSTEMS, INC."}, { 0x00, 0x60, 0x23, "PERICOM SEMICONDUCTOR CORP."}, { 0x00, 0x60, 0x24, "GRADIENT TECHNOLOGIES, INC."}, { 0x00, 0x60, 0x25, "ACTIVE IMAGING PLC"}, { 0x00, 0x60, 0x26, "VIKING COMPONENTS, INC."}, { 0x00, 0x60, 0x27, "Superior Modular Products"}, { 0x00, 0x60, 0x28, "MACROVISION CORPORATION"}, { 0x00, 0x60, 0x29, "CARY PERIPHERALS INC."}, { 0x00, 0x60, 0x2A, "SYMICRON COMPUTER COMMUNICATIONS, LTD."}, { 0x00, 0x60, 0x2B, "PEAK AUDIO"}, { 0x00, 0x60, 0x2C, "LINX Data Terminals, Inc."}, { 0x00, 0x60, 0x2D, "ALERTON TECHNOLOGIES, INC."}, { 0x00, 0x60, 0x2E, "CYCLADES CORPORATION"}, { 0x00, 0x60, 0x2F, "CISCO SYSTEMS, INC."}, { 0x00, 0x60, 0x30, "VILLAGE TRONIC ENTWICKLUNG"}, { 0x00, 0x60, 0x31, "HRK SYSTEMS"}, { 0x00, 0x60, 0x32, "I-CUBE, INC."}, { 0x00, 0x60, 0x33, "ACUITY IMAGING, INC."}, { 0x00, 0x60, 0x34, "ROBERT BOSCH GmbH"}, { 0x00, 0x60, 0x35, "DALLAS SEMICONDUCTOR, INC."}, { 0x00, 0x60, 0x36, "AUSTRIAN RESEARCH CENTER SEIBERSDORF"}, { 0x00, 0x60, 0x37, "PHILIPS SEMICONDUCTORS"}, { 0x00, 0x60, 0x38, "Nortel Networks"}, { 0x00, 0x60, 0x39, "SanCom Technology, Inc."}, { 0x00, 0x60, 0x3A, "QUICK CONTROLS LTD."}, { 0x00, 0x60, 0x3B, "AMTEC spa"}, { 0x00, 0x60, 0x3C, "HAGIWARA SYS-COM CO., LTD."}, { 0x00, 0x60, 0x3D, "3CX"}, { 0x00, 0x60, 0x3E, "CISCO SYSTEMS, INC."}, { 0x00, 0x60, 0x3F, "PATAPSCO DESIGNS"}, { 0x00, 0x60, 0x40, "NETRO CORP."}, { 0x00, 0x60, 0x41, "Yokogawa Electric Corporation"}, { 0x00, 0x60, 0x42, "TKS (USA), INC."}, { 0x00, 0x60, 0x43, "ComSoft Systems, Inc."}, { 0x00, 0x60, 0x44, "LITTON/POLY-SCIENTIFIC"}, { 0x00, 0x60, 0x45, "PATHLIGHT TECHNOLOGIES"}, { 0x00, 0x60, 0x46, "VMETRO, INC."}, { 0x00, 0x60, 0x47, "CISCO SYSTEMS, INC."}, { 0x00, 0x60, 0x48, "EMC CORPORATION"}, { 0x00, 0x60, 0x49, "VINA TECHNOLOGIES"}, { 0x00, 0x60, 0x4A, "SAIC IDEAS GROUP"}, { 0x00, 0x60, 0x4B, "BIODATA GmbH"}, { 0x00, 0x60, 0x4C, "SAT"}, { 0x00, 0x60, 0x4D, "MMC NETWORKS, INC."}, { 0x00, 0x60, 0x4E, "CYCLE COMPUTER CORPORATION, INC."}, { 0x00, 0x60, 0x4F, "SUZUKI MFG. CO., LTD."}, { 0x00, 0x60, 0x50, "INTERNIX INC."}, { 0x00, 0x60, 0x51, "QUALITY SEMICONDUCTOR"}, { 0x00, 0x60, 0x52, "PERIPHERALS ENTERPRISE CO., Ltd."}, { 0x00, 0x60, 0x53, "TOYODA MACHINE WORKS, LTD."}, { 0x00, 0x60, 0x54, "CONTROLWARE GMBH"}, { 0x00, 0x60, 0x55, "CORNELL UNIVERSITY"}, { 0x00, 0x60, 0x56, "NETWORK TOOLS, INC."}, { 0x00, 0x60, 0x57, "MURATA MANUFACTURING CO., LTD."}, { 0x00, 0x60, 0x58, "COPPER MOUNTAIN COMMUNICATIONS, INC."}, { 0x00, 0x60, 0x59, "TECHNICAL COMMUNICATIONS CORP."}, { 0x00, 0x60, 0x5A, "CELCORE, INC."}, { 0x00, 0x60, 0x5B, "IntraServer Technology, Inc."}, { 0x00, 0x60, 0x5C, "CISCO SYSTEMS, INC."}, { 0x00, 0x60, 0x5D, "SCANIVALVE CORP."}, { 0x00, 0x60, 0x5E, "LIBERTY TECHNOLOGY NETWORKING"}, { 0x00, 0x60, 0x5F, "NIPPON UNISOFT CORPORATION"}, { 0x00, 0x60, 0x60, "DAWNING TECHNOLOGIES, INC."}, { 0x00, 0x60, 0x61, "WHISTLE COMMUNICATIONS CORP."}, { 0x00, 0x60, 0x62, "TELESYNC, INC."}, { 0x00, 0x60, 0x63, "PSION DACOM PLC."}, { 0x00, 0x60, 0x64, "NETCOMM LIMITED"}, { 0x00, 0x60, 0x65, "BERNECKER & RAINER INDUSTRIE-ELEKTRONIC GmbH"}, { 0x00, 0x60, 0x66, "LACROIX TECHNOLGIE"}, { 0x00, 0x60, 0x67, "ACER NETXUS INC."}, { 0x00, 0x60, 0x68, "EICON TECHNOLOGY CORPORATION"}, { 0x00, 0x60, 0x69, "BROCADE COMMUNICATIONS SYSTEMS, Inc."}, { 0x00, 0x60, 0x6A, "MITSUBISHI WIRELESS COMMUNICATIONS. INC."}, { 0x00, 0x60, 0x6B, "AICHI ELECTRONICS CO., LTD."}, { 0x00, 0x60, 0x6C, "ARESCOM"}, { 0x00, 0x60, 0x6D, "DIGITAL EQUIPMENT CORP."}, { 0x00, 0x60, 0x6E, "DAVICOM SEMICONDUCTOR, INC."}, { 0x00, 0x60, 0x6F, "CLARION CORPORATION OF AMERICA"}, { 0x00, 0x60, 0x70, "CISCO SYSTEMS, INC."}, { 0x00, 0x60, 0x71, "MIDAS LAB, INC."}, { 0x00, 0x60, 0x72, "VXL INSTRUMENTS, LIMITED"}, { 0x00, 0x60, 0x73, "REDCREEK COMMUNICATIONS, INC."}, { 0x00, 0x60, 0x74, "QSC AUDIO PRODUCTS"}, { 0x00, 0x60, 0x75, "PENTEK, INC."}, { 0x00, 0x60, 0x76, "SCHLUMBERGER TECHNOLOGIES RETAIL PETROLEUM SYSTEMS"}, { 0x00, 0x60, 0x77, "PRISA NETWORKS"}, { 0x00, 0x60, 0x78, "POWER MEASUREMENT LTD."}, { 0x00, 0x60, 0x79, "WAVEPHORE NETWORKS, INC."}, { 0x00, 0x60, 0x7A, "DVS GmbH"}, { 0x00, 0x60, 0x7B, "FORE SYSTEMS, INC."}, { 0x00, 0x60, 0x7C, "WaveAccess, Ltd."}, { 0x00, 0x60, 0x7D, "SENTIENT NETWORKS INC."}, { 0x00, 0x60, 0x7E, "GIGALABS, INC."}, { 0x00, 0x60, 0x7F, "AURORA TECHNOLOGIES, INC."}, { 0x00, 0x60, 0x80, "MICROTRONIX DATACOM LTD."}, { 0x00, 0x60, 0x81, "TV/COM INTERNATIONAL"}, { 0x00, 0x60, 0x82, "NOVALINK TECHNOLOGIES, INC."}, { 0x00, 0x60, 0x83, "CISCO SYSTEMS, INC."}, { 0x00, 0x60, 0x84, "DIGITAL VIDEO"}, { 0x00, 0x60, 0x85, "Storage Concepts"}, { 0x00, 0x60, 0x86, "LOGIC REPLACEMENT TECH. LTD."}, { 0x00, 0x60, 0x87, "KANSAI ELECTRIC CO., LTD."}, { 0x00, 0x60, 0x88, "WHITE MOUNTAIN DSP, INC."}, { 0x00, 0x60, 0x89, "XATA"}, { 0x00, 0x60, 0x8A, "CITADEL COMPUTER"}, { 0x00, 0x60, 0x8B, "ConferTech International"}, { 0x00, 0x60, 0x8C, "3COM CORPORATION"}, { 0x00, 0x60, 0x8D, "UNIPULSE CORP."}, { 0x00, 0x60, 0x8E, "HE ELECTRONICS, TECHNOLOGIE & SYSTEMTECHNIK GmbH"}, { 0x00, 0x60, 0x8F, "TEKRAM TECHNOLOGY CO., LTD."}, { 0x00, 0x60, 0x90, "ABLE COMMUNICATIONS, INC."}, { 0x00, 0x60, 0x91, "FIRST PACIFIC NETWORKS, INC."}, { 0x00, 0x60, 0x92, "MICRO/SYS, INC."}, { 0x00, 0x60, 0x93, "VARIAN"}, { 0x00, 0x60, 0x94, "IBM CORP."}, { 0x00, 0x60, 0x95, "ACCU-TIME SYSTEMS, INC."}, { 0x00, 0x60, 0x96, "T.S. MICROTECH INC."}, { 0x00, 0x60, 0x97, "3COM CORPORATION"}, { 0x00, 0x60, 0x98, "HT COMMUNICATIONS"}, { 0x00, 0x60, 0x99, "LAN MEDIA CORPORATION"}, { 0x00, 0x60, 0x9A, "NJK TECHNO CO."}, { 0x00, 0x60, 0x9B, "ASTRO-MED, INC."}, { 0x00, 0x60, 0x9C, "Perkin-Elmer Incorporated"}, { 0x00, 0x60, 0x9D, "PMI FOOD EQUIPMENT GROUP"}, { 0x00, 0x60, 0x9E, "ASC X3 - INFORMATION TECHNOLOGY STANDARDS SECRETARIATS"}, { 0x00, 0x60, 0x9F, "PHAST CORPORATION"}, { 0x00, 0x60, 0xA0, "SWITCHED NETWORK TECHNOLOGIES, INC."}, { 0x00, 0x60, 0xA1, "VPNet, Inc."}, { 0x00, 0x60, 0xA2, "NIHON UNISYS LIMITED CO."}, { 0x00, 0x60, 0xA3, "CONTINUUM TECHNOLOGY CORP."}, { 0x00, 0x60, 0xA4, "GRINAKER SYSTEM TECHNOLOGIES"}, { 0x00, 0x60, 0xA5, "PERFORMANCE TELECOM CORP."}, { 0x00, 0x60, 0xA6, "PARTICLE MEASURING SYSTEMS"}, { 0x00, 0x60, 0xA7, "MICROSENS GmbH & CO. KG"}, { 0x00, 0x60, 0xA8, "TIDOMAT AB"}, { 0x00, 0x60, 0xA9, "GESYTEC MbH"}, { 0x00, 0x60, 0xAA, "INTELLIGENT DEVICES INC. (IDI)"}, { 0x00, 0x60, 0xAB, "LARSCOM INCORPORATED"}, { 0x00, 0x60, 0xAC, "RESILIENCE CORPORATION"}, { 0x00, 0x60, 0xAD, "MegaChips Corporation"}, { 0x00, 0x60, 0xAE, "TRIO INFORMATION SYSTEMS AB"}, { 0x00, 0x60, 0xAF, "PACIFIC MICRO DATA, INC."}, { 0x00, 0x60, 0xB0, "HEWLETT-PACKARD CO."}, { 0x00, 0x60, 0xB1, "INPUT/OUTPUT, INC."}, { 0x00, 0x60, 0xB2, "PROCESS CONTROL CORP."}, { 0x00, 0x60, 0xB3, "Z-COM, INC."}, { 0x00, 0x60, 0xB4, "GLENAYRE R&D INC."}, { 0x00, 0x60, 0xB5, "KEBA GmbH"}, { 0x00, 0x60, 0xB6, "LAND COMPUTER CO., LTD."}, { 0x00, 0x60, 0xB7, "CHANNELMATIC, INC."}, { 0x00, 0x60, 0xB8, "CORELIS INC."}, { 0x00, 0x60, 0xB9, "NITSUKO CORPORATION"}, { 0x00, 0x60, 0xBA, "SAHARA NETWORKS, INC."}, { 0x00, 0x60, 0xBB, "CABLETRON - NETLINK, INC."}, { 0x00, 0x60, 0xBC, "KeunYoung Electronics & Communication Co., Ltd."}, { 0x00, 0x60, 0xBD, "HUBBELL-PULSECOM"}, { 0x00, 0x60, 0xBE, "WEBTRONICS"}, { 0x00, 0x60, 0xBF, "MACRAIGOR SYSTEMS, INC."}, { 0x00, 0x60, 0xC0, "NERA AS"}, { 0x00, 0x60, 0xC1, "WaveSpan Corporation"}, { 0x00, 0x60, 0xC2, "MPL AG"}, { 0x00, 0x60, 0xC3, "NETVISION CORPORATION"}, { 0x00, 0x60, 0xC4, "SOLITON SYSTEMS K.K."}, { 0x00, 0x60, 0xC5, "ANCOT CORP."}, { 0x00, 0x60, 0xC6, "DCS AG"}, { 0x00, 0x60, 0xC7, "AMATI COMMUNICATIONS CORP."}, { 0x00, 0x60, 0xC8, "KUKA WELDING SYSTEMS & ROBOTS"}, { 0x00, 0x60, 0xC9, "ControlNet, Inc."}, { 0x00, 0x60, 0xCA, "HARMONIC SYSTEMS INCORPORATED"}, { 0x00, 0x60, 0xCB, "HITACHI ZOSEN CORPORATION"}, { 0x00, 0x60, 0xCC, "EMTRAK, INCORPORATED"}, { 0x00, 0x60, 0xCD, "VideoServer, Inc."}, { 0x00, 0x60, 0xCE, "ACCLAIM COMMUNICATIONS"}, { 0x00, 0x60, 0xCF, "ALTEON NETWORKS, INC."}, { 0x00, 0x60, 0xD0, "SNMP RESEARCH INCORPORATED"}, { 0x00, 0x60, 0xD1, "CASCADE COMMUNICATIONS"}, { 0x00, 0x60, 0xD2, "LUCENT TECHNOLOGIES TAIWAN TELECOMMUNICATIONS CO., LTD."}, { 0x00, 0x60, 0xD3, "AT&T"}, { 0x00, 0x60, 0xD4, "ELDAT COMMUNICATION LTD."}, { 0x00, 0x60, 0xD5, "MIYACHI TECHNOS CORP."}, { 0x00, 0x60, 0xD6, "NovAtel Wireless Technologies Ltd."}, { 0x00, 0x60, 0xD7, "ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE (EPFL)"}, { 0x00, 0x60, 0xD8, "ELMIC SYSTEMS, INC."}, { 0x00, 0x60, 0xD9, "TRANSYS NETWORKS INC."}, { 0x00, 0x60, 0xDA, "JBM ELECTRONICS CO."}, { 0x00, 0x60, 0xDB, "NTP ELEKTRONIK A/S"}, { 0x00, 0x60, 0xDC, "TOYO COMMUNICATION EQUIPMENT Co., Ltd."}, { 0x00, 0x60, 0xDD, "MYRICOM, INC."}, { 0x00, 0x60, 0xDE, "KAYSER-THREDE GmbH"}, { 0x00, 0x60, 0xDF, "INRANGE TECHNOLOGIES CORP."}, { 0x00, 0x60, 0xE0, "AXIOM TECHNOLOGY CO., LTD."}, { 0x00, 0x60, 0xE1, "ORCKIT COMMUNICATIONS LTD."}, { 0x00, 0x60, 0xE2, "QUEST ENGINEERING & DEVELOPMENT"}, { 0x00, 0x60, 0xE3, "ARBIN INSTRUMENTS"}, { 0x00, 0x60, 0xE4, "COMPUSERVE, INC."}, { 0x00, 0x60, 0xE5, "FUJI AUTOMATION CO., LTD."}, { 0x00, 0x60, 0xE6, "SHOMITI SYSTEMS INCORPORATED"}, { 0x00, 0x60, 0xE7, "RANDATA"}, { 0x00, 0x60, 0xE8, "HITACHI COMPUTER PRODUCTS (AMERICA), INC."}, { 0x00, 0x60, 0xE9, "ATOP TECHNOLOGIES, INC."}, { 0x00, 0x60, 0xEA, "StreamLogic"}, { 0x00, 0x60, 0xEB, "FOURTHTRACK SYSTEMS"}, { 0x00, 0x60, 0xEC, "HERMARY OPTO ELECTRONICS INC."}, { 0x00, 0x60, 0xED, "RICARDO TEST AUTOMATION LTD."}, { 0x00, 0x60, 0xEE, "APOLLO"}, { 0x00, 0x60, 0xEF, "FLYTECH TECHNOLOGY CO., LTD."}, { 0x00, 0x60, 0xF0, "JOHNSON & JOHNSON MEDICAL, INC"}, { 0x00, 0x60, 0xF1, "EXP COMPUTER, INC."}, { 0x00, 0x60, 0xF2, "LASERGRAPHICS, INC."}, { 0x00, 0x60, 0xF3, "NETCOM SYSTEMS, INC."}, { 0x00, 0x60, 0xF4, "ADVANCED COMPUTER SOLUTIONS, Inc."}, { 0x00, 0x60, 0xF5, "ICON WEST, INC."}, { 0x00, 0x60, 0xF6, "NEXTEST COMMUNICATIONS PRODUCTS, INC."}, { 0x00, 0x60, 0xF7, "DATAFUSION SYSTEMS"}, { 0x00, 0x60, 0xF8, "Loran International Technologies Inc."}, { 0x00, 0x60, 0xF9, "DIAMOND LANE COMMUNICATIONS"}, { 0x00, 0x60, 0xFA, "EDUCATIONAL TECHNOLOGY RESOURCES, INC."}, { 0x00, 0x60, 0xFB, "PACKETEER, INC."}, { 0x00, 0x60, 0xFC, "CONSERVATION THROUGH INNOVATION LTD."}, { 0x00, 0x60, 0xFD, "NetICs, Inc."}, { 0x00, 0x60, 0xFE, "LYNX SYSTEM DEVELOPERS, INC."}, { 0x00, 0x60, 0xFF, "QuVis, Inc."}, { 0x00, 0x70, 0xB0, "M/A-COM INC. COMPANIES"}, { 0x00, 0x70, 0xB3, "DATA RECALL LTD."}, { 0x00, 0x80, 0x00, "MULTITECH SYSTEMS, INC."}, { 0x00, 0x80, 0x01, "PERIPHONICS CORPORATION"}, { 0x00, 0x80, 0x02, "SATELCOM (UK) LTD"}, { 0x00, 0x80, 0x03, "HYTEC ELECTRONICS LTD."}, { 0x00, 0x80, 0x04, "ANTLOW COMMUNICATIONS, LTD."}, { 0x00, 0x80, 0x05, "CACTUS COMPUTER INC."}, { 0x00, 0x80, 0x06, "COMPUADD CORPORATION"}, { 0x00, 0x80, 0x07, "DLOG NC-SYSTEME"}, { 0x00, 0x80, 0x08, "DYNATECH COMPUTER SYSTEMS"}, { 0x00, 0x80, 0x09, "JUPITER SYSTEMS, INC."}, { 0x00, 0x80, 0x0A, "JAPAN COMPUTER CORP."}, { 0x00, 0x80, 0x0B, "CSK CORPORATION"}, { 0x00, 0x80, 0x0C, "VIDECOM LIMITED"}, { 0x00, 0x80, 0x0D, "VOSSWINKEL F.U."}, { 0x00, 0x80, 0x0E, "ATLANTIX CORPORATION"}, { 0x00, 0x80, 0x0F, "STANDARD MICROSYSTEMS"}, { 0x00, 0x80, 0x10, "COMMODORE INTERNATIONAL"}, { 0x00, 0x80, 0x11, "DIGITAL SYSTEMS INT'L. INC."}, { 0x00, 0x80, 0x12, "INTEGRATED MEASUREMENT SYSTEMS"}, { 0x00, 0x80, 0x13, "THOMAS-CONRAD CORPORATION"}, { 0x00, 0x80, 0x14, "ESPRIT SYSTEMS"}, { 0x00, 0x80, 0x15, "SEIKO SYSTEMS, INC."}, { 0x00, 0x80, 0x16, "WANDEL AND GOLTERMANN"}, { 0x00, 0x80, 0x17, "PFU LIMITED"}, { 0x00, 0x80, 0x18, "KOBE STEEL, LTD."}, { 0x00, 0x80, 0x19, "DAYNA COMMUNICATIONS, INC."}, { 0x00, 0x80, 0x1A, "BELL ATLANTIC"}, { 0x00, 0x80, 0x1B, "KODIAK TECHNOLOGY"}, { 0x00, 0x80, 0x1C, "NEWPORT SYSTEMS SOLUTIONS"}, { 0x00, 0x80, 0x1D, "INTEGRATED INFERENCE MACHINES"}, { 0x00, 0x80, 0x1E, "XINETRON, INC."}, { 0x00, 0x80, 0x1F, "KRUPP ATLAS ELECTRONIK GMBH"}, { 0x00, 0x80, 0x20, "NETWORK PRODUCTS"}, { 0x00, 0x80, 0x21, "NEWBRIDGE RESEARCH CORP."}, { 0x00, 0x80, 0x22, "SCAN-OPTICS"}, { 0x00, 0x80, 0x23, "INTEGRATED BUSINESS NETWORKS"}, { 0x00, 0x80, 0x24, "KALPANA, INC."}, { 0x00, 0x80, 0x25, "STOLLMANN GMBH"}, { 0x00, 0x80, 0x26, "NETWORK PRODUCTS CORPORATION"}, { 0x00, 0x80, 0x27, "ADAPTIVE SYSTEMS, INC."}, { 0x00, 0x80, 0x28, "TRADPOST (HK) LTD"}, { 0x00, 0x80, 0x29, "EAGLE TECHNOLOGY, INC."}, { 0x00, 0x80, 0x2A, "TEST SYSTEMS & SIMULATIONS INC"}, { 0x00, 0x80, 0x2B, "INTEGRATED MARKETING CO"}, { 0x00, 0x80, 0x2C, "THE SAGE GROUP PLC"}, { 0x00, 0x80, 0x2D, "XYLOGICS INC"}, { 0x00, 0x80, 0x2E, "CASTLE ROCK COMPUTING"}, { 0x00, 0x80, 0x2F, "NATIONAL INSTRUMENTS CORP."}, { 0x00, 0x80, 0x30, "NEXUS ELECTRONICS"}, { 0x00, 0x80, 0x31, "BASYS, CORP."}, { 0x00, 0x80, 0x32, "ACCESS CO., LTD."}, { 0x00, 0x80, 0x33, "FORMATION, INC."}, { 0x00, 0x80, 0x34, "SMT GOUPIL"}, { 0x00, 0x80, 0x35, "TECHNOLOGY WORKS, INC."}, { 0x00, 0x80, 0x36, "REFLEX MANUFACTURING SYSTEMS"}, { 0x00, 0x80, 0x37, "Ericsson Group"}, { 0x00, 0x80, 0x38, "DATA RESEARCH & APPLICATIONS"}, { 0x00, 0x80, 0x39, "ALCATEL STC AUSTRALIA"}, { 0x00, 0x80, 0x3A, "VARITYPER, INC."}, { 0x00, 0x80, 0x3B, "APT COMMUNICATIONS, INC."}, { 0x00, 0x80, 0x3C, "TVS ELECTRONICS LTD"}, { 0x00, 0x80, 0x3D, "SURIGIKEN CO., LTD."}, { 0x00, 0x80, 0x3E, "SYNERNETICS"}, { 0x00, 0x80, 0x3F, "TATUNG COMPANY"}, { 0x00, 0x80, 0x40, "JOHN FLUKE MANUFACTURING CO."}, { 0x00, 0x80, 0x41, "VEB KOMBINAT ROBOTRON"}, { 0x00, 0x80, 0x42, "FORCE COMPUTERS"}, { 0x00, 0x80, 0x43, "NETWORLD, INC."}, { 0x00, 0x80, 0x44, "SYSTECH COMPUTER CORP."}, { 0x00, 0x80, 0x45, "MATSUSHITA ELECTRIC IND. CO"}, { 0x00, 0x80, 0x46, "UNIVERSITY OF TORONTO"}, { 0x00, 0x80, 0x47, "IN-NET CORP."}, { 0x00, 0x80, 0x48, "COMPEX INCORPORATED"}, { 0x00, 0x80, 0x49, "NISSIN ELECTRIC CO., LTD."}, { 0x00, 0x80, 0x4A, "PRO-LOG"}, { 0x00, 0x80, 0x4B, "EAGLE TECHNOLOGIES PTY.LTD."}, { 0x00, 0x80, 0x4C, "CONTEC CO., LTD."}, { 0x00, 0x80, 0x4D, "CYCLONE MICROSYSTEMS, INC."}, { 0x00, 0x80, 0x4E, "APEX COMPUTER COMPANY"}, { 0x00, 0x80, 0x4F, "DAIKIN INDUSTRIES, LTD."}, { 0x00, 0x80, 0x50, "ZIATECH CORPORATION"}, { 0x00, 0x80, 0x51, "FIBERMUX"}, { 0x00, 0x80, 0x52, "TECHNICALLY ELITE CONCEPTS"}, { 0x00, 0x80, 0x53, "INTELLICOM, INC."}, { 0x00, 0x80, 0x54, "FRONTIER TECHNOLOGIES CORP."}, { 0x00, 0x80, 0x55, "FERMILAB"}, { 0x00, 0x80, 0x56, "SPHINX ELEKTRONIK GMBH"}, { 0x00, 0x80, 0x57, "ADSOFT, LTD."}, { 0x00, 0x80, 0x58, "PRINTER SYSTEMS CORPORATION"}, { 0x00, 0x80, 0x59, "STANLEY ELECTRIC CO., LTD"}, { 0x00, 0x80, 0x5A, "TULIP COMPUTERS INTERNAT'L B.V"}, { 0x00, 0x80, 0x5B, "CONDOR SYSTEMS, INC."}, { 0x00, 0x80, 0x5C, "AGILIS CORPORATION"}, { 0x00, 0x80, 0x5D, "CANSTAR"}, { 0x00, 0x80, 0x5E, "LSI LOGIC CORPORATION"}, { 0x00, 0x80, 0x5F, "COMPAQ COMPUTER CORPORATION"}, { 0x00, 0x80, 0x60, "NETWORK INTERFACE CORPORATION"}, { 0x00, 0x80, 0x61, "LITTON SYSTEMS, INC."}, { 0x00, 0x80, 0x62, "INTERFACE CO."}, { 0x00, 0x80, 0x63, "RICHARD HIRSCHMANN GMBH & CO."}, { 0x00, 0x80, 0x64, "WYSE TECHNOLOGY"}, { 0x00, 0x80, 0x65, "CYBERGRAPHIC SYSTEMS PTY LTD."}, { 0x00, 0x80, 0x66, "ARCOM CONTROL SYSTEMS, LTD."}, { 0x00, 0x80, 0x67, "SQUARE D COMPANY"}, { 0x00, 0x80, 0x68, "YAMATECH SCIENTIFIC LTD."}, { 0x00, 0x80, 0x69, "COMPUTONE SYSTEMS"}, { 0x00, 0x80, 0x6A, "ERI (EMPAC RESEARCH INC.)"}, { 0x00, 0x80, 0x6B, "SCHMID TELECOMMUNICATION"}, { 0x00, 0x80, 0x6C, "CEGELEC PROJECTS LTD"}, { 0x00, 0x80, 0x6D, "CENTURY SYSTEMS CORP."}, { 0x00, 0x80, 0x6E, "NIPPON STEEL CORPORATION"}, { 0x00, 0x80, 0x6F, "ONELAN LTD."}, { 0x00, 0x80, 0x70, "COMPUTADORAS MICRON"}, { 0x00, 0x80, 0x71, "SAI TECHNOLOGY"}, { 0x00, 0x80, 0x72, "MICROPLEX SYSTEMS LTD."}, { 0x00, 0x80, 0x73, "DWB ASSOCIATES"}, { 0x00, 0x80, 0x74, "FISHER CONTROLS"}, { 0x00, 0x80, 0x75, "PARSYTEC GMBH"}, { 0x00, 0x80, 0x76, "MCNC"}, { 0x00, 0x80, 0x77, "BROTHER INDUSTRIES, LTD."}, { 0x00, 0x80, 0x78, "PRACTICAL PERIPHERALS, INC."}, { 0x00, 0x80, 0x79, "MICROBUS DESIGNS LTD."}, { 0x00, 0x80, 0x7A, "AITECH SYSTEMS LTD."}, { 0x00, 0x80, 0x7B, "ARTEL COMMUNICATIONS CORP."}, { 0x00, 0x80, 0x7C, "FIBERCOM, INC."}, { 0x00, 0x80, 0x7D, "EQUINOX SYSTEMS INC."}, { 0x00, 0x80, 0x7E, "SOUTHERN PACIFIC LTD."}, { 0x00, 0x80, 0x7F, "DY-4 INCORPORATED"}, { 0x00, 0x80, 0x80, "DATAMEDIA CORPORATION"}, { 0x00, 0x80, 0x81, "KENDALL SQUARE RESEARCH CORP."}, { 0x00, 0x80, 0x82, "PEP MODULAR COMPUTERS GMBH"}, { 0x00, 0x80, 0x83, "AMDAHL"}, { 0x00, 0x80, 0x84, "THE CLOUD INC."}, { 0x00, 0x80, 0x85, "H-THREE SYSTEMS CORPORATION"}, { 0x00, 0x80, 0x86, "COMPUTER GENERATION INC."}, { 0x00, 0x80, 0x87, "OKI ELECTRIC INDUSTRY CO., LTD"}, { 0x00, 0x80, 0x88, "VICTOR COMPANY OF JAPAN, LTD."}, { 0x00, 0x80, 0x89, "TECNETICS (PTY) LTD."}, { 0x00, 0x80, 0x8A, "SUMMIT MICROSYSTEMS CORP."}, { 0x00, 0x80, 0x8B, "DACOLL LIMITED"}, { 0x00, 0x80, 0x8C, "NetScout Systems, Inc."}, { 0x00, 0x80, 0x8D, "WESTCOAST TECHNOLOGY B.V."}, { 0x00, 0x80, 0x8E, "RADSTONE TECHNOLOGY"}, { 0x00, 0x80, 0x8F, "C. ITOH ELECTRONICS, INC."}, { 0x00, 0x80, 0x90, "MICROTEK INTERNATIONAL, INC."}, { 0x00, 0x80, 0x91, "TOKYO ELECTRIC CO.,LTD"}, { 0x00, 0x80, 0x92, "JAPAN COMPUTER INDUSTRY, INC."}, { 0x00, 0x80, 0x93, "XYRON CORPORATION"}, { 0x00, 0x80, 0x94, "ALFA LAVAL AUTOMATION AB"}, { 0x00, 0x80, 0x95, "BASIC MERTON HANDELSGES.M.B.H."}, { 0x00, 0x80, 0x96, "HUMAN DESIGNED SYSTEMS, INC."}, { 0x00, 0x80, 0x97, "CENTRALP AUTOMATISMES"}, { 0x00, 0x80, 0x98, "TDK CORPORATION"}, { 0x00, 0x80, 0x99, "KLOCKNER MOELLER IPC"}, { 0x00, 0x80, 0x9A, "NOVUS NETWORKS LTD"}, { 0x00, 0x80, 0x9B, "JUSTSYSTEM CORPORATION"}, { 0x00, 0x80, 0x9C, "LUXCOM, INC."}, { 0x00, 0x80, 0x9D, "Commscraft Ltd."}, { 0x00, 0x80, 0x9E, "DATUS GMBH"}, { 0x00, 0x80, 0x9F, "ALCATEL BUSINESS SYSTEMS"}, { 0x00, 0x80, 0xA0, "EDISA HEWLETT PACKARD S/A"}, { 0x00, 0x80, 0xA1, "MICROTEST, INC."}, { 0x00, 0x80, 0xA2, "CREATIVE ELECTRONIC SYSTEMS"}, { 0x00, 0x80, 0xA3, "LANTRONIX"}, { 0x00, 0x80, 0xA4, "LIBERTY ELECTRONICS"}, { 0x00, 0x80, 0xA5, "SPEED INTERNATIONAL"}, { 0x00, 0x80, 0xA6, "REPUBLIC TECHNOLOGY, INC."}, { 0x00, 0x80, 0xA7, "MEASUREX CORP."}, { 0x00, 0x80, 0xA8, "VITACOM CORPORATION"}, { 0x00, 0x80, 0xA9, "CLEARPOINT RESEARCH"}, { 0x00, 0x80, 0xAA, "MAXPEED"}, { 0x00, 0x80, 0xAB, "DUKANE NETWORK INTEGRATION"}, { 0x00, 0x80, 0xAC, "IMLOGIX, DIVISION OF GENESYS"}, { 0x00, 0x80, 0xAD, "CNET TECHNOLOGY, INC."}, { 0x00, 0x80, 0xAE, "HUGHES NETWORK SYSTEMS"}, { 0x00, 0x80, 0xAF, "ALLUMER CO., LTD."}, { 0x00, 0x80, 0xB0, "ADVANCED INFORMATION"}, { 0x00, 0x80, 0xB1, "SOFTCOM A/S"}, { 0x00, 0x80, 0xB2, "NETWORK EQUIPMENT TECHNOLOGIES"}, { 0x00, 0x80, 0xB3, "AVAL DATA CORPORATION"}, { 0x00, 0x80, 0xB4, "SOPHIA SYSTEMS"}, { 0x00, 0x80, 0xB5, "UNITED NETWORKS INC."}, { 0x00, 0x80, 0xB6, "THEMIS COMPUTER"}, { 0x00, 0x80, 0xB7, "STELLAR COMPUTER"}, { 0x00, 0x80, 0xB8, "BUG, INCORPORATED"}, { 0x00, 0x80, 0xB9, "ARCHE TECHNOLIGIES INC."}, { 0x00, 0x80, 0xBA, "SPECIALIX (ASIA) PTE, LTD"}, { 0x00, 0x80, 0xBB, "HUGHES LAN SYSTEMS"}, { 0x00, 0x80, 0xBC, "HITACHI ENGINEERING CO., LTD"}, { 0x00, 0x80, 0xBD, "THE FURUKAWA ELECTRIC CO., LTD"}, { 0x00, 0x80, 0xBE, "ARIES RESEARCH"}, { 0x00, 0x80, 0xBF, "TAKAOKA ELECTRIC MFG. CO. LTD."}, { 0x00, 0x80, 0xC0, "PENRIL DATACOMM"}, { 0x00, 0x80, 0xC1, "LANEX CORPORATION"}, { 0x00, 0x80, 0xC2, "IEEE 802 COMMITTEE"}, { 0x00, 0x80, 0xC3, "BICC INFORMATION SYSTEMS & SVC"}, { 0x00, 0x80, 0xC4, "DOCUMENT TECHNOLOGIES, INC."}, { 0x00, 0x80, 0xC5, "NOVELLCO DE MEXICO"}, { 0x00, 0x80, 0xC6, "NATIONAL DATACOMM CORPORATION"}, { 0x00, 0x80, 0xC7, "XIRCOM"}, { 0x00, 0x80, 0xC8, "D-LINK SYSTEMS, INC."}, { 0x00, 0x80, 0xC9, "ALBERTA MICROELECTRONIC CENTRE"}, { 0x00, 0x80, 0xCA, "NETCOM RESEARCH INCORPORATED"}, { 0x00, 0x80, 0xCB, "FALCO DATA PRODUCTS"}, { 0x00, 0x80, 0xCC, "MICROWAVE BYPASS SYSTEMS"}, { 0x00, 0x80, 0xCD, "MICRONICS COMPUTER, INC."}, { 0x00, 0x80, 0xCE, "BROADCAST TELEVISION SYSTEMS"}, { 0x00, 0x80, 0xCF, "EMBEDDED PERFORMANCE INC."}, { 0x00, 0x80, 0xD0, "COMPUTER PERIPHERALS, INC."}, { 0x00, 0x80, 0xD1, "KIMTRON CORPORATION"}, { 0x00, 0x80, 0xD2, "SHINNIHONDENKO CO., LTD."}, { 0x00, 0x80, 0xD3, "SHIVA CORP."}, { 0x00, 0x80, 0xD4, "CHASE RESEARCH LTD."}, { 0x00, 0x80, 0xD5, "CADRE TECHNOLOGIES"}, { 0x00, 0x80, 0xD6, "NUVOTECH, INC."}, { 0x00, 0x80, 0xD7, "Fantum Engineering"}, { 0x00, 0x80, 0xD8, "NETWORK PERIPHERALS INC."}, { 0x00, 0x80, 0xD9, "EMK ELEKTRONIK"}, { 0x00, 0x80, 0xDA, "BRUEL & KJAER"}, { 0x00, 0x80, 0xDB, "GRAPHON CORPORATION"}, { 0x00, 0x80, 0xDC, "PICKER INTERNATIONAL"}, { 0x00, 0x80, 0xDD, "GMX INC/GIMIX"}, { 0x00, 0x80, 0xDE, "GIPSI S.A."}, { 0x00, 0x80, 0xDF, "ADC CODENOLL TECHNOLOGY CORP."}, { 0x00, 0x80, 0xE0, "XTP SYSTEMS, INC."}, { 0x00, 0x80, 0xE1, "STMICROELECTRONICS"}, { 0x00, 0x80, 0xE2, "T.D.I. CO., LTD."}, { 0x00, 0x80, 0xE3, "CORAL NETWORK CORPORATION"}, { 0x00, 0x80, 0xE4, "NORTHWEST DIGITAL SYSTEMS, INC"}, { 0x00, 0x80, 0xE5, "MYLEX CORPORATION"}, { 0x00, 0x80, 0xE6, "PEER NETWORKS, INC."}, { 0x00, 0x80, 0xE7, "LYNWOOD SCIENTIFIC DEV. LTD."}, { 0x00, 0x80, 0xE8, "CUMULUS CORPORATIION"}, { 0x00, 0x80, 0xE9, "MADGE NETWORKS"}, { 0x00, 0x80, 0xEA, "ADVA Optical Networking Ltd."}, { 0x00, 0x80, 0xEB, "COMPCONTROL B.V."}, { 0x00, 0x80, 0xEC, "SUPERCOMPUTING SOLUTIONS, INC."}, { 0x00, 0x80, 0xED, "IQ TECHNOLOGIES, INC."}, { 0x00, 0x80, 0xEE, "THOMSON CSF"}, { 0x00, 0x80, 0xEF, "RATIONAL"}, { 0x00, 0x80, 0xF0, "KYUSHU MATSUSHITA ELECTRIC CO."}, { 0x00, 0x80, 0xF1, "OPUS SYSTEMS"}, { 0x00, 0x80, 0xF2, "RAYCOM SYSTEMS INC"}, { 0x00, 0x80, 0xF3, "SUN ELECTRONICS CORP."}, { 0x00, 0x80, 0xF4, "TELEMECANIQUE ELECTRIQUE"}, { 0x00, 0x80, 0xF5, "QUANTEL LTD"}, { 0x00, 0x80, 0xF6, "SYNERGY MICROSYSTEMS"}, { 0x00, 0x80, 0xF7, "ZENITH ELECTRONICS"}, { 0x00, 0x80, 0xF8, "MIZAR, INC."}, { 0x00, 0x80, 0xF9, "HEURIKON CORPORATION"}, { 0x00, 0x80, 0xFA, "RWT GMBH"}, { 0x00, 0x80, 0xFB, "BVM LIMITED"}, { 0x00, 0x80, 0xFC, "AVATAR CORPORATION"}, { 0x00, 0x80, 0xFD, "EXSCEED CORPRATION"}, { 0x00, 0x80, 0xFE, "AZURE TECHNOLOGIES, INC."}, { 0x00, 0x80, 0xFF, "SOC. DE TELEINFORMATIQUE RTC"}, { 0x00, 0x90, 0x00, "DIAMOND MULTIMEDIA"}, { 0x00, 0x90, 0x01, "NISHIMU ELECTRONICS INDUSTRIES CO., LTD."}, { 0x00, 0x90, 0x02, "ALLGON AB"}, { 0x00, 0x90, 0x03, "APLIO"}, { 0x00, 0x90, 0x04, "3COM EUROPE LTD."}, { 0x00, 0x90, 0x05, "PROTECH SYSTEMS CO., LTD."}, { 0x00, 0x90, 0x06, "HAMAMATSU PHOTONICS K.K."}, { 0x00, 0x90, 0x07, "DOMEX TECHNOLOGY CORP."}, { 0x00, 0x90, 0x08, "HanA Systems Inc."}, { 0x00, 0x90, 0x09, "i Controls, Inc."}, { 0x00, 0x90, 0x0A, "PROTON ELECTRONIC INDUSTRIAL CO., LTD."}, { 0x00, 0x90, 0x0B, "LANNER ELECTRONICS, INC."}, { 0x00, 0x90, 0x0C, "CISCO SYSTEMS, INC."}, { 0x00, 0x90, 0x0D, "OVERLAND DATA INC."}, { 0x00, 0x90, 0x0E, "HANDLINK TECHNOLOGIES, INC."}, { 0x00, 0x90, 0x0F, "KAWASAKI HEAVY INDUSTRIES, LTD"}, { 0x00, 0x90, 0x10, "SIMULATION LABORATORIES, INC."}, { 0x00, 0x90, 0x11, "WAVTrace, Inc."}, { 0x00, 0x90, 0x12, "GLOBESPAN SEMICONDUCTOR, INC."}, { 0x00, 0x90, 0x13, "SAMSAN CORP."}, { 0x00, 0x90, 0x14, "ROTORK INSTRUMENTS, LTD."}, { 0x00, 0x90, 0x15, "CENTIGRAM COMMUNICATIONS CORP."}, { 0x00, 0x90, 0x16, "ZAC"}, { 0x00, 0x90, 0x17, "ZYPCOM, INC."}, { 0x00, 0x90, 0x18, "ITO ELECTRIC INDUSTRY CO, LTD."}, { 0x00, 0x90, 0x19, "HERMES ELECTRONICS CO., LTD."}, { 0x00, 0x90, 0x1A, "UNISPHERE SOLUTIONS"}, { 0x00, 0x90, 0x1B, "DIGITAL CONTROLS"}, { 0x00, 0x90, 0x1C, "mps Software Gmbh"}, { 0x00, 0x90, 0x1D, "PEC (NZ) LTD."}, { 0x00, 0x90, 0x1E, "SELESTA INGEGNE RIA S.P.A."}, { 0x00, 0x90, 0x1F, "ADTEC PRODUCTIONS, INC."}, { 0x00, 0x90, 0x20, "PHILIPS ANALYTICAL X-RAY B.V."}, { 0x00, 0x90, 0x21, "CISCO SYSTEMS, INC."}, { 0x00, 0x90, 0x22, "IVEX"}, { 0x00, 0x90, 0x23, "ZILOG INC."}, { 0x00, 0x90, 0x24, "PIPELINKS, INC."}, { 0x00, 0x90, 0x25, "VISION SYSTEMS LTD. PTY"}, { 0x00, 0x90, 0x26, "ADVANCED SWITCHING COMMUNICATIONS, INC."}, { 0x00, 0x90, 0x27, "INTEL CORPORATION"}, { 0x00, 0x90, 0x28, "NIPPON SIGNAL CO., LTD."}, { 0x00, 0x90, 0x29, "CRYPTO AG"}, { 0x00, 0x90, 0x2A, "COMMUNICATION DEVICES, INC."}, { 0x00, 0x90, 0x2B, "CISCO SYSTEMS, INC."}, { 0x00, 0x90, 0x2C, "DATA & CONTROL EQUIPMENT LTD."}, { 0x00, 0x90, 0x2D, "DATA ELECTRONICS (AUST.) PTY, LTD."}, { 0x00, 0x90, 0x2E, "NAMCO LIMITED"}, { 0x00, 0x90, 0x2F, "NETCORE SYSTEMS, INC."}, { 0x00, 0x90, 0x30, "HONEYWELL-DATING"}, { 0x00, 0x90, 0x31, "MYSTICOM, LTD."}, { 0x00, 0x90, 0x32, "PELCOMBE GROUP LTD."}, { 0x00, 0x90, 0x33, "INNOVAPHONE GmbH"}, { 0x00, 0x90, 0x34, "IMAGIC, INC."}, { 0x00, 0x90, 0x35, "ALPHA TELECOM, INC."}, { 0x00, 0x90, 0x36, "ens, inc."}, { 0x00, 0x90, 0x37, "ACUCOMM, INC."}, { 0x00, 0x90, 0x38, "FOUNTAIN TECHNOLOGIES, INC."}, { 0x00, 0x90, 0x39, "SHASTA NETWORKS"}, { 0x00, 0x90, 0x3A, "NIHON MEDIA TOOL INC."}, { 0x00, 0x90, 0x3B, "TriEMS Research Lab, Inc."}, { 0x00, 0x90, 0x3C, "ATLANTIC NETWORK SYSTEMS"}, { 0x00, 0x90, 0x3D, "BIOPAC SYSTEMS, INC."}, { 0x00, 0x90, 0x3E, "N.V. PHILIPS INDUSTRIAL ACTIVITIES"}, { 0x00, 0x90, 0x3F, "AZTEC RADIOMEDIA"}, { 0x00, 0x90, 0x40, "CASTLE NETWORKS, INC."}, { 0x00, 0x90, 0x41, "APPLIED DIGITAL ACCESS"}, { 0x00, 0x90, 0x42, "ECCS, Inc."}, { 0x00, 0x90, 0x43, "NICHIBEI DENSHI CO., LTD."}, { 0x00, 0x90, 0x44, "ASSURED DIGITAL, INC."}, { 0x00, 0x90, 0x45, "Marconi Communications"}, { 0x00, 0x90, 0x46, "DEXDYNE, LTD."}, { 0x00, 0x90, 0x47, "GIGA FAST E. LTD."}, { 0x00, 0x90, 0x48, "ZEAL CORPORATION"}, { 0x00, 0x90, 0x49, "ENTRIDIA CORPORATION"}, { 0x00, 0x90, 0x4A, "CONCUR SYSTEM TECHNOLOGIES"}, { 0x00, 0x90, 0x4B, "GemTek Technology Co., Ltd."}, { 0x00, 0x90, 0x4C, "EPIGRAM, INC."}, { 0x00, 0x90, 0x4D, "SPEC S.A."}, { 0x00, 0x90, 0x4E, "DELEM BV"}, { 0x00, 0x90, 0x4F, "ABB POWER T&D COMPANY, INC."}, { 0x00, 0x90, 0x50, "TELESTE OY"}, { 0x00, 0x90, 0x51, "ULTIMATE TECHNOLOGY CORP."}, { 0x00, 0x90, 0x52, "SELCOM ELETTRONICA S.R.L."}, { 0x00, 0x90, 0x53, "DAEWOO ELECTRONICS CO., LTD."}, { 0x00, 0x90, 0x54, "INNOVATIVE SEMICONDUCTORS, INC"}, { 0x00, 0x90, 0x55, "PARKER HANNIFIN CORPORATION COMPUMOTOR DIVISION"}, { 0x00, 0x90, 0x56, "TELESTREAM, INC."}, { 0x00, 0x90, 0x57, "AANetcom, Inc."}, { 0x00, 0x90, 0x58, "Ultra Electronics Ltd., Command and Control Systems"}, { 0x00, 0x90, 0x59, "TELECOM DEVICE K.K."}, { 0x00, 0x90, 0x5A, "DEARBORN GROUP, INC."}, { 0x00, 0x90, 0x5B, "RAYMOND AND LAE ENGINEERING"}, { 0x00, 0x90, 0x5C, "EDMI"}, { 0x00, 0x90, 0x5D, "NETCOM SICHERHEITSTECHNIK GmbH"}, { 0x00, 0x90, 0x5E, "RAULAND-BORG CORPORATION"}, { 0x00, 0x90, 0x5F, "CISCO SYSTEMS, INC."}, { 0x00, 0x90, 0x60, "SYSTEM CREATE CORP."}, { 0x00, 0x90, 0x61, "PACIFIC RESEARCH & ENGINEERING CORPORATION"}, { 0x00, 0x90, 0x62, "ICP VORTEX COMPUTERSYSTEME GmbH"}, { 0x00, 0x90, 0x63, "COHERENT COMMUNICATIONS SYSTEMS CORPORATION"}, { 0x00, 0x90, 0x64, "THOMSON BROADCAST SYSTEMS"}, { 0x00, 0x90, 0x65, "FINISAR CORPORATION"}, { 0x00, 0x90, 0x66, "Troika Networks, Inc."}, { 0x00, 0x90, 0x67, "WalkAbout Computers, Inc."}, { 0x00, 0x90, 0x68, "DVT CORP."}, { 0x00, 0x90, 0x69, "JUNIPER NETWORKS, INC."}, { 0x00, 0x90, 0x6A, "TURNSTONE SYSTEMS, INC."}, { 0x00, 0x90, 0x6B, "APPLIED RESOURCES, INC."}, { 0x00, 0x90, 0x6C, "GWT GLOBAL WEIGHING TECHNOLOGIES GmbH"}, { 0x00, 0x90, 0x6D, "CISCO SYSTEMS, INC."}, { 0x00, 0x90, 0x6E, "PRAXON, INC."}, { 0x00, 0x90, 0x6F, "CISCO SYSTEMS, INC."}, { 0x00, 0x90, 0x70, "NEO NETWORKS, INC."}, { 0x00, 0x90, 0x71, "BADGER TECHNOLOGY, INC."}, { 0x00, 0x90, 0x72, "SIMRAD AS"}, { 0x00, 0x90, 0x73, "GAIO TECHNOLOGY"}, { 0x00, 0x90, 0x74, "ARGON NETWORKS, INC."}, { 0x00, 0x90, 0x75, "NEC DO BRASIL S.A."}, { 0x00, 0x90, 0x76, "FMT AIRCRAFT GATE SUPPORT SYSTEMS AB"}, { 0x00, 0x90, 0x77, "ADVANCED FIBRE COMMUNICATIONS"}, { 0x00, 0x90, 0x78, "MER TELEMANAGEMENT SOLUTIONS, LTD."}, { 0x00, 0x90, 0x79, "ClearOne, Inc."}, { 0x00, 0x90, 0x7A, "SPECTRALINK CORP."}, { 0x00, 0x90, 0x7B, "E-TECH, INC."}, { 0x00, 0x90, 0x7C, "DIGITALCAST, INC."}, { 0x00, 0x90, 0x7D, "Lake Communications"}, { 0x00, 0x90, 0x7E, "VETRONIX CORP."}, { 0x00, 0x90, 0x7F, "WatchGuard Technologies, Inc."}, { 0x00, 0x90, 0x80, "NOT LIMITED, INC."}, { 0x00, 0x90, 0x81, "ALOHA NETWORKS, INC."}, { 0x00, 0x90, 0x82, "FORCE INSTITUTE"}, { 0x00, 0x90, 0x83, "TURBO COMMUNICATION, INC."}, { 0x00, 0x90, 0x84, "ATECH SYSTEM"}, { 0x00, 0x90, 0x85, "GOLDEN ENTERPRISES, INC."}, { 0x00, 0x90, 0x86, "CISCO SYSTEMS, INC."}, { 0x00, 0x90, 0x87, "ITIS"}, { 0x00, 0x90, 0x88, "BAXALL SECURITY LTD."}, { 0x00, 0x90, 0x89, "SOFTCOM MICROSYSTEMS, INC."}, { 0x00, 0x90, 0x8A, "BAYLY COMMUNICATIONS, INC."}, { 0x00, 0x90, 0x8B, "CELL COMPUTING, INC."}, { 0x00, 0x90, 0x8C, "ETREND ELECTRONICS, INC."}, { 0x00, 0x90, 0x8D, "VICKERS ELECTRONICS SYSTEMS"}, { 0x00, 0x90, 0x8E, "Nortel Networks Broadband Access"}, { 0x00, 0x90, 0x8F, "AUDIO CODES LTD."}, { 0x00, 0x90, 0x90, "I-BUS"}, { 0x00, 0x90, 0x91, "DigitalScape, Inc."}, { 0x00, 0x90, 0x92, "CISCO SYSTEMS, INC."}, { 0x00, 0x90, 0x93, "NANAO CORPORATION"}, { 0x00, 0x90, 0x94, "OSPREY TECHNOLOGIES, INC."}, { 0x00, 0x90, 0x95, "UNIVERSAL AVIONICS"}, { 0x00, 0x90, 0x96, "ASKEY COMPUTER CORP."}, { 0x00, 0x90, 0x97, "SYCAMORE NETWORKS"}, { 0x00, 0x90, 0x98, "SBC DESIGNS, INC."}, { 0x00, 0x90, 0x99, "ALLIED TELESIS, K.K."}, { 0x00, 0x90, 0x9A, "ONE WORLD SYSTEMS, INC."}, { 0x00, 0x90, 0x9B, "MARKPOINT AB"}, { 0x00, 0x90, 0x9C, "COMBOX, LTD."}, { 0x00, 0x90, 0x9D, "GSE SYSTEMS, INC."}, { 0x00, 0x90, 0x9E, "Broadband Storage, Inc."}, { 0x00, 0x90, 0x9F, "DIGI-DATA CORPORATION"}, { 0x00, 0x90, 0xA0, "8X8 INC."}, { 0x00, 0x90, 0xA1, "FLYING PIG SYSTEMS, LTD."}, { 0x00, 0x90, 0xA2, "CYBERTAN TECHNOLOGY, INC."}, { 0x00, 0x90, 0xA3, "Corecess Inc."}, { 0x00, 0x90, 0xA4, "ALTIGA NETWORKS"}, { 0x00, 0x90, 0xA5, "SPECTRA LOGIC"}, { 0x00, 0x90, 0xA6, "CISCO SYSTEMS, INC."}, { 0x00, 0x90, 0xA7, "CLIENTEC CORPORATION"}, { 0x00, 0x90, 0xA8, "NineTiles Networks, Ltd."}, { 0x00, 0x90, 0xA9, "WESTERN DIGITAL"}, { 0x00, 0x90, 0xAA, "INDIGO ACTIVE VISION SYSTEMS LIMITED"}, { 0x00, 0x90, 0xAB, "CISCO SYSTEMS, INC."}, { 0x00, 0x90, 0xAC, "OPTIVISION, INC."}, { 0x00, 0x90, 0xAD, "ASPECT ELECTRONICS, INC."}, { 0x00, 0x90, 0xAE, "ITALTEL S.p.A."}, { 0x00, 0x90, 0xAF, "J. MORITA MFG. CORP."}, { 0x00, 0x90, 0xB0, "VADEM"}, { 0x00, 0x90, 0xB1, "CISCO SYSTEMS, INC."}, { 0x00, 0x90, 0xB2, "AVICI SYSTEMS INC."}, { 0x00, 0x90, 0xB3, "AGRANAT SYSTEMS"}, { 0x00, 0x90, 0xB4, "WILLOWBROOK TECHNOLOGIES"}, { 0x00, 0x90, 0xB5, "NIKON CORPORATION"}, { 0x00, 0x90, 0xB6, "FIBEX SYSTEMS"}, { 0x00, 0x90, 0xB7, "DIGITAL LIGHTWAVE, INC."}, { 0x00, 0x90, 0xB8, "ROHDE & SCHWARZ GMBH & CO. KG"}, { 0x00, 0x90, 0xB9, "BERAN INSTRUMENTS LTD."}, { 0x00, 0x90, 0xBA, "VALID NETWORKS, INC."}, { 0x00, 0x90, 0xBB, "TAINET COMMUNICATION SYSTEM Corp."}, { 0x00, 0x90, 0xBC, "TELEMANN CO., LTD."}, { 0x00, 0x90, 0xBD, "OMNIA COMMUNICATIONS, INC."}, { 0x00, 0x90, 0xBE, "IBC/INTEGRATED BUSINESS COMPUTERS"}, { 0x00, 0x90, 0xBF, "CISCO SYSTEMS, INC."}, { 0x00, 0x90, 0xC0, "K.J. LAW ENGINEERS, INC."}, { 0x00, 0x90, 0xC1, "Peco II, Inc."}, { 0x00, 0x90, 0xC2, "JK microsystems, Inc."}, { 0x00, 0x90, 0xC3, "TOPIC SEMICONDUCTOR CORP."}, { 0x00, 0x90, 0xC4, "JAVELIN SYSTEMS, INC."}, { 0x00, 0x90, 0xC5, "INTERNET MAGIC, INC."}, { 0x00, 0x90, 0xC6, "OPTIM SYSTEMS, INC."}, { 0x00, 0x90, 0xC7, "ICOM INC."}, { 0x00, 0x90, 0xC8, "WAVERIDER COMMUNICATIONS (CANADA) INC."}, { 0x00, 0x90, 0xC9, "PRODUCTIVITY ENHANCEMENT PRODUCTS., INC."}, { 0x00, 0x90, 0xCA, "ACCORD VIDEO TELECOMMUNICATIONS, LTD."}, { 0x00, 0x90, 0xCB, "Wireless OnLine, Inc."}, { 0x00, 0x90, 0xCC, "PLANET COMMUNICATIONS, INC."}, { 0x00, 0x90, 0xCD, "ENT-EMPRESA NACIONAL DE TELECOMMUNICACOES, S.A."}, { 0x00, 0x90, 0xCE, "TETRA GmbH"}, { 0x00, 0x90, 0xCF, "NORTEL"}, { 0x00, 0x90, 0xD0, "ALCATEL BELL"}, { 0x00, 0x90, 0xD1, "LEICHU ENTERPRISE CO., LTD."}, { 0x00, 0x90, 0xD2, "ARTEL VIDEO SYSTEMS"}, { 0x00, 0x90, 0xD3, "GIESECKE & DEVRIENT GmbH"}, { 0x00, 0x90, 0xD4, "BindView Development Corp."}, { 0x00, 0x90, 0xD5, "EUPHONIX, INC."}, { 0x00, 0x90, 0xD6, "CRYSTAL GROUP"}, { 0x00, 0x90, 0xD7, "NetBoost Corp."}, { 0x00, 0x90, 0xD8, "WHITECROSS SYSTEMS"}, { 0x00, 0x90, 0xD9, "CISCO SYSTEMS, INC."}, { 0x00, 0x90, 0xDA, "DYNARC, INC."}, { 0x00, 0x90, 0xDB, "NEXT LEVEL COMMUNICATIONS"}, { 0x00, 0x90, 0xDC, "TECO INFORMATION SYSTEMS"}, { 0x00, 0x90, 0xDD, "THE MIHARU COMMUNICATIONS CO., LTD."}, { 0x00, 0x90, 0xDE, "CARDKEY SYSTEMS, INC."}, { 0x00, 0x90, 0xDF, "MITSUBISHI CHEMICAL AMERICA, INC."}, { 0x00, 0x90, 0xE0, "SYSTRAN CORP."}, { 0x00, 0x90, 0xE1, "TELENA S.P.A."}, { 0x00, 0x90, 0xE2, "DISTRIBUTED PROCESSING TECHNOLOGY"}, { 0x00, 0x90, 0xE3, "AVEX ELECTRONICS INC."}, { 0x00, 0x90, 0xE4, "NEC AMERICA, INC."}, { 0x00, 0x90, 0xE5, "TEKNEMA, INC."}, { 0x00, 0x90, 0xE6, "ACER LABORATORIES, INC."}, { 0x00, 0x90, 0xE7, "HORSCH ELEKTRONIK AG"}, { 0x00, 0x90, 0xE8, "MOXA TECHNOLOGIES CORP., LTD."}, { 0x00, 0x90, 0xE9, "JANZ COMPUTER AG"}, { 0x00, 0x90, 0xEA, "ALPHA TECHNOLOGIES, INC."}, { 0x00, 0x90, 0xEB, "SENTRY TELECOM SYSTEMS"}, { 0x00, 0x90, 0xEC, "PYRESCOM"}, { 0x00, 0x90, 0xED, "CENTRAL SYSTEM RESEARCH CO., LTD."}, { 0x00, 0x90, 0xEE, "PERSONAL COMMUNICATIONS TECHNOLOGIES"}, { 0x00, 0x90, 0xEF, "INTEGRIX, INC."}, { 0x00, 0x90, 0xF0, "HARMONIC LIGHTWAVES, LTD."}, { 0x00, 0x90, 0xF1, "DOT HILL SYSTEMS CORPORATION"}, { 0x00, 0x90, 0xF2, "CISCO SYSTEMS, INC."}, { 0x00, 0x90, 0xF3, "ASPECT COMMUNICATIONS"}, { 0x00, 0x90, 0xF4, "LIGHTNING INSTRUMENTATION"}, { 0x00, 0x90, 0xF5, "CLEVO CO."}, { 0x00, 0x90, 0xF6, "ESCALATE NETWORKS, INC."}, { 0x00, 0x90, 0xF7, "NBASE COMMUNICATIONS LTD."}, { 0x00, 0x90, 0xF8, "MEDIATRIX TELECOM"}, { 0x00, 0x90, 0xF9, "LEITCH"}, { 0x00, 0x90, 0xFA, "GigaNet, Inc."}, { 0x00, 0x90, 0xFB, "PORTWELL, INC."}, { 0x00, 0x90, 0xFC, "NETWORK COMPUTING DEVICES"}, { 0x00, 0x90, 0xFD, "CopperCom, Inc."}, { 0x00, 0x90, 0xFE, "ELECOM CO., LTD. (LANEED DIV.)"}, { 0x00, 0x90, 0xFF, "TELLUS TECHNOLOGY INC."}, { 0x00, 0x9D, 0x8E, "CARDIAC RECORDERS, INC."}, { 0x00, 0xA0, 0x00, "CENTILLION NETWORKS, INC."}, { 0x00, 0xA0, 0x01, "WATKINS-JOHNSON COMPANY"}, { 0x00, 0xA0, 0x02, "LEEDS & NORTHRUP AUSTRALIA PTY LTD"}, { 0x00, 0xA0, 0x03, "STAEFA CONTROL SYSTEM"}, { 0x00, 0xA0, 0x04, "NETPOWER, INC."}, { 0x00, 0xA0, 0x05, "DANIEL INSTRUMENTS, LTD."}, { 0x00, 0xA0, 0x06, "IMAGE DATA PROCESSING SYSTEM GROUP"}, { 0x00, 0xA0, 0x07, "APEXX TECHNOLOGY, INC."}, { 0x00, 0xA0, 0x08, "NETCORP"}, { 0x00, 0xA0, 0x09, "WHITETREE NETWORK"}, { 0x00, 0xA0, 0x0A, "R.D.C. COMMUNICATION"}, { 0x00, 0xA0, 0x0B, "COMPUTEX CO., LTD."}, { 0x00, 0xA0, 0x0C, "KINGMAX TECHNOLOGY, INC."}, { 0x00, 0xA0, 0x0D, "THE PANDA PROJECT"}, { 0x00, 0xA0, 0x0E, "VISUAL NETWORKS, INC."}, { 0x00, 0xA0, 0x0F, "Broadband Technologies"}, { 0x00, 0xA0, 0x10, "SYSLOGIC DATENTECHNIK AG"}, { 0x00, 0xA0, 0x11, "MUTOH INDUSTRIES LTD."}, { 0x00, 0xA0, 0x12, "B.A.T.M. ADVANCED TECHNOLOGIES"}, { 0x00, 0xA0, 0x13, "TELTREND LTD."}, { 0x00, 0xA0, 0x14, "CSIR"}, { 0x00, 0xA0, 0x15, "WYLE"}, { 0x00, 0xA0, 0x16, "MICROPOLIS CORP."}, { 0x00, 0xA0, 0x17, "J B M CORPORATION"}, { 0x00, 0xA0, 0x18, "CREATIVE CONTROLLERS, INC."}, { 0x00, 0xA0, 0x19, "NEBULA CONSULTANTS, INC."}, { 0x00, 0xA0, 0x1A, "BINAR ELEKTRONIK AB"}, { 0x00, 0xA0, 0x1B, "PREMISYS COMMUNICATIONS, INC."}, { 0x00, 0xA0, 0x1C, "NASCENT NETWORKS CORPORATION"}, { 0x00, 0xA0, 0x1D, "SIXNET"}, { 0x00, 0xA0, 0x1E, "EST CORPORATION"}, { 0x00, 0xA0, 0x1F, "TRICORD SYSTEMS, INC."}, { 0x00, 0xA0, 0x20, "CITICORP/TTI"}, { 0x00, 0xA0, 0x21, "GENERAL DYNAMICS-"}, { 0x00, 0xA0, 0x22, "CENTRE FOR DEVELOPMENT OF ADVANCED COMPUTING"}, { 0x00, 0xA0, 0x23, "APPLIED CREATIVE TECHNOLOGY, INC."}, { 0x00, 0xA0, 0x24, "3COM CORPORATION"}, { 0x00, 0xA0, 0x25, "REDCOM LABS INC."}, { 0x00, 0xA0, 0x26, "TELDAT, S.A."}, { 0x00, 0xA0, 0x27, "FIREPOWER SYSTEMS, INC."}, { 0x00, 0xA0, 0x28, "CONNER PERIPHERALS"}, { 0x00, 0xA0, 0x29, "COULTER CORPORATION"}, { 0x00, 0xA0, 0x2A, "TRANCELL SYSTEMS"}, { 0x00, 0xA0, 0x2B, "TRANSITIONS RESEARCH CORP."}, { 0x00, 0xA0, 0x2C, "interWAVE Communications"}, { 0x00, 0xA0, 0x2D, "1394 Trade Association"}, { 0x00, 0xA0, 0x2E, "BRAND COMMUNICATIONS, LTD."}, { 0x00, 0xA0, 0x2F, "PIRELLI CAVI"}, { 0x00, 0xA0, 0x30, "CAPTOR NV/SA"}, { 0x00, 0xA0, 0x31, "HAZELTINE CORPORATION, MS 1-17"}, { 0x00, 0xA0, 0x32, "GES SINGAPORE PTE. LTD."}, { 0x00, 0xA0, 0x33, "imc MeBsysteme GmbH"}, { 0x00, 0xA0, 0x34, "AXEL"}, { 0x00, 0xA0, 0x35, "CYLINK CORPORATION"}, { 0x00, 0xA0, 0x36, "APPLIED NETWORK TECHNOLOGY"}, { 0x00, 0xA0, 0x37, "DATASCOPE CORPORATION"}, { 0x00, 0xA0, 0x38, "EMAIL ELECTRONICS"}, { 0x00, 0xA0, 0x39, "ROSS TECHNOLOGY, INC."}, { 0x00, 0xA0, 0x3A, "KUBOTEK CORPORATION"}, { 0x00, 0xA0, 0x3B, "TOSHIN ELECTRIC CO., LTD."}, { 0x00, 0xA0, 0x3C, "EG&G NUCLEAR INSTRUMENTS"}, { 0x00, 0xA0, 0x3D, "OPTO-22"}, { 0x00, 0xA0, 0x3E, "ATM FORUM"}, { 0x00, 0xA0, 0x3F, "COMPUTER SOCIETY MICROPROCESSOR & MICROPROCESSOR STANDARDS C"}, { 0x00, 0xA0, 0x40, "APPLE COMPUTER"}, { 0x00, 0xA0, 0x41, "LEYBOLD-INFICON"}, { 0x00, 0xA0, 0x42, "SPUR PRODUCTS CORP."}, { 0x00, 0xA0, 0x43, "AMERICAN TECHNOLOGY LABS, INC."}, { 0x00, 0xA0, 0x44, "NTT INTELLIGENT TECHNOLOGY"}, { 0x00, 0xA0, 0x45, "PHOENIX CONTACT GMBH & CO."}, { 0x00, 0xA0, 0x46, "SCITEX CORP. LTD."}, { 0x00, 0xA0, 0x47, "INTEGRATED FITNESS CORP."}, { 0x00, 0xA0, 0x48, "QUESTECH, LTD."}, { 0x00, 0xA0, 0x49, "DIGITECH INDUSTRIES, INC."}, { 0x00, 0xA0, 0x4A, "NISSHIN ELECTRIC CO., LTD."}, { 0x00, 0xA0, 0x4B, "TFL LAN INC."}, { 0x00, 0xA0, 0x4C, "INNOVATIVE SYSTEMS & TECHNOLOGIES, INC."}, { 0x00, 0xA0, 0x4D, "EDA INSTRUMENTS, INC."}, { 0x00, 0xA0, 0x4E, "VOELKER TECHNOLOGIES, INC."}, { 0x00, 0xA0, 0x4F, "AMERITEC CORP."}, { 0x00, 0xA0, 0x50, "CYPRESS SEMICONDUCTOR"}, { 0x00, 0xA0, 0x51, "ANGIA COMMUNICATIONS. INC."}, { 0x00, 0xA0, 0x52, "STANILITE ELECTRONICS PTY. LTD"}, { 0x00, 0xA0, 0x53, "COMPACT DEVICES, INC."}, { 0x00, 0xA0, 0x55, "LINKTECH, INC."}, { 0x00, 0xA0, 0x56, "MICROPROSS"}, { 0x00, 0xA0, 0x57, "LANCOM Systems GmbH"}, { 0x00, 0xA0, 0x58, "GLORY, LTD."}, { 0x00, 0xA0, 0x59, "HAMILTON HALLMARK"}, { 0x00, 0xA0, 0x5A, "KOFAX IMAGE PRODUCTS"}, { 0x00, 0xA0, 0x5B, "MARQUIP, INC."}, { 0x00, 0xA0, 0x5C, "INVENTORY CONVERSION, INC./"}, { 0x00, 0xA0, 0x5D, "CS COMPUTER SYSTEME GmbH"}, { 0x00, 0xA0, 0x5E, "MYRIAD LOGIC INC."}, { 0x00, 0xA0, 0x5F, "BTG ENGINEERING BV"}, { 0x00, 0xA0, 0x60, "ACER PERIPHERALS, INC."}, { 0x00, 0xA0, 0x61, "PURITAN BENNETT"}, { 0x00, 0xA0, 0x62, "AES PRODATA"}, { 0x00, 0xA0, 0x63, "JRL SYSTEMS, INC."}, { 0x00, 0xA0, 0x64, "KVB/ANALECT"}, { 0x00, 0xA0, 0x65, "NEXLAND, INC."}, { 0x00, 0xA0, 0x66, "ISA CO., LTD."}, { 0x00, 0xA0, 0x67, "NETWORK SERVICES GROUP"}, { 0x00, 0xA0, 0x69, "TrueTime"}, { 0x00, 0xA0, 0x6A, "VERILINK CORP."}, { 0x00, 0xA0, 0x6B, "DMS DORSCH MIKROSYSTEM GMBH"}, { 0x00, 0xA0, 0x6C, "SHINDENGEN ELECTRIC MFG. CO., LTD."}, { 0x00, 0xA0, 0x6D, "MANNESMANN TALLY CORPORATION"}, { 0x00, 0xA0, 0x6E, "AUSTRON, INC."}, { 0x00, 0xA0, 0x6F, "THE APPCON GROUP, INC."}, { 0x00, 0xA0, 0x70, "COASTCOM"}, { 0x00, 0xA0, 0x71, "VIDEO LOTTERY TECHNOLOGIES,INC"}, { 0x00, 0xA0, 0x72, "OVATION SYSTEMS LTD."}, { 0x00, 0xA0, 0x73, "COM21, INC."}, { 0x00, 0xA0, 0x74, "PERCEPTION TECHNOLOGY"}, { 0x00, 0xA0, 0x75, "MICRON TECHNOLOGY, INC."}, { 0x00, 0xA0, 0x76, "CARDWARE LAB, INC."}, { 0x00, 0xA0, 0x77, "FUJITSU NEXION, INC."}, { 0x00, 0xA0, 0x78, "Marconi Communications"}, { 0x00, 0xA0, 0x79, "ALPS ELECTRIC (USA), INC."}, { 0x00, 0xA0, 0x7A, "ADVANCED PERIPHERALS TECHNOLOGIES, INC."}, { 0x00, 0xA0, 0x7B, "DAWN COMPUTER INCORPORATION"}, { 0x00, 0xA0, 0x7C, "TONYANG NYLON CO., LTD."}, { 0x00, 0xA0, 0x7D, "SEEQ TECHNOLOGY, INC."}, { 0x00, 0xA0, 0x7E, "AVID TECHNOLOGY, INC."}, { 0x00, 0xA0, 0x7F, "GSM-SYNTEL, LTD."}, { 0x00, 0xA0, 0x80, "ANTARES MICROSYSTEMS"}, { 0x00, 0xA0, 0x81, "ALCATEL DATA NETWORKS"}, { 0x00, 0xA0, 0x82, "NKT ELEKTRONIK A/S"}, { 0x00, 0xA0, 0x83, "ASIMMPHONY TURKEY"}, { 0x00, 0xA0, 0x84, "DATAPLEX PTY. LTD."}, { 0x00, 0xA0, 0x86, "AMBER WAVE SYSTEMS, INC."}, { 0x00, 0xA0, 0x87, "Zarlink Semiconductor Ltd."}, { 0x00, 0xA0, 0x88, "ESSENTIAL COMMUNICATIONS"}, { 0x00, 0xA0, 0x89, "XPOINT TECHNOLOGIES, INC."}, { 0x00, 0xA0, 0x8A, "BROOKTROUT TECHNOLOGY, INC."}, { 0x00, 0xA0, 0x8B, "ASTON ELECTRONIC DESIGNS LTD."}, { 0x00, 0xA0, 0x8C, "MultiMedia LANs, Inc."}, { 0x00, 0xA0, 0x8D, "JACOMO CORPORATION"}, { 0x00, 0xA0, 0x8E, "Nokia Internet Communications"}, { 0x00, 0xA0, 0x8F, "DESKNET SYSTEMS, INC."}, { 0x00, 0xA0, 0x90, "TimeStep Corporation"}, { 0x00, 0xA0, 0x91, "APPLICOM INTERNATIONAL"}, { 0x00, 0xA0, 0x92, "H. BOLLMANN MANUFACTURERS, LTD"}, { 0x00, 0xA0, 0x93, "B/E AEROSPACE, Inc."}, { 0x00, 0xA0, 0x94, "COMSAT CORPORATION"}, { 0x00, 0xA0, 0x95, "ACACIA NETWORKS, INC."}, { 0x00, 0xA0, 0x96, "MITUMI ELECTRIC CO., LTD."}, { 0x00, 0xA0, 0x97, "JC INFORMATION SYSTEMS"}, { 0x00, 0xA0, 0x98, "NETWORK APPLIANCE CORP."}, { 0x00, 0xA0, 0x99, "K-NET LTD."}, { 0x00, 0xA0, 0x9A, "NIHON KOHDEN AMERICA"}, { 0x00, 0xA0, 0x9B, "QPSX COMMUNICATIONS, LTD."}, { 0x00, 0xA0, 0x9C, "Xyplex, Inc."}, { 0x00, 0xA0, 0x9D, "JOHNATHON FREEMAN TECHNOLOGIES"}, { 0x00, 0xA0, 0x9E, "ICTV"}, { 0x00, 0xA0, 0x9F, "COMMVISION CORP."}, { 0x00, 0xA0, 0xA0, "COMPACT DATA, LTD."}, { 0x00, 0xA0, 0xA1, "EPIC DATA INC."}, { 0x00, 0xA0, 0xA2, "DIGICOM S.P.A."}, { 0x00, 0xA0, 0xA3, "RELIABLE POWER METERS"}, { 0x00, 0xA0, 0xA4, "MICROS SYSTEMS, INC."}, { 0x00, 0xA0, 0xA5, "TEKNOR MICROSYSTEME, INC."}, { 0x00, 0xA0, 0xA6, "M.I. SYSTEMS, K.K."}, { 0x00, 0xA0, 0xA7, "VORAX CORPORATION"}, { 0x00, 0xA0, 0xA8, "RENEX CORPORATION"}, { 0x00, 0xA0, 0xA9, "GN NETTEST (CANADA) NAVTEL DIVISION"}, { 0x00, 0xA0, 0xAA, "SPACELABS MEDICAL"}, { 0x00, 0xA0, 0xAB, "NETCS INFORMATIONSTECHNIK GMBH"}, { 0x00, 0xA0, 0xAC, "GILAT SATELLITE NETWORKS, LTD."}, { 0x00, 0xA0, 0xAD, "MARCONI SPA"}, { 0x00, 0xA0, 0xAE, "NUCOM SYSTEMS, INC."}, { 0x00, 0xA0, 0xAF, "WMS INDUSTRIES"}, { 0x00, 0xA0, 0xB0, "I-O DATA DEVICE, INC."}, { 0x00, 0xA0, 0xB1, "FIRST VIRTUAL CORPORATION"}, { 0x00, 0xA0, 0xB2, "SHIMA SEIKI"}, { 0x00, 0xA0, 0xB3, "ZYKRONIX"}, { 0x00, 0xA0, 0xB4, "TEXAS MICROSYSTEMS, INC."}, { 0x00, 0xA0, 0xB5, "3H TECHNOLOGY"}, { 0x00, 0xA0, 0xB6, "SANRITZ AUTOMATION CO., LTD."}, { 0x00, 0xA0, 0xB7, "CORDANT, INC."}, { 0x00, 0xA0, 0xB8, "SYMBIOS LOGIC INC."}, { 0x00, 0xA0, 0xB9, "EAGLE TECHNOLOGY, INC."}, { 0x00, 0xA0, 0xBA, "PATTON ELECTRONICS CO."}, { 0x00, 0xA0, 0xBB, "HILAN GMBH"}, { 0x00, 0xA0, 0xBC, "VIASAT, INCORPORATED"}, { 0x00, 0xA0, 0xBD, "I-TECH CORP."}, { 0x00, 0xA0, 0xBE, "INTEGRATED CIRCUIT SYSTEMS, INC. COMMUNICATIONS GROUP"}, { 0x00, 0xA0, 0xBF, "WIRELESS DATA GROUP MOTOROLA"}, { 0x00, 0xA0, 0xC0, "DIGITAL LINK CORP."}, { 0x00, 0xA0, 0xC1, "ORTIVUS MEDICAL AB"}, { 0x00, 0xA0, 0xC2, "R.A. SYSTEMS CO., LTD."}, { 0x00, 0xA0, 0xC3, "UNICOMPUTER GMBH"}, { 0x00, 0xA0, 0xC4, "CRISTIE ELECTRONICS LTD."}, { 0x00, 0xA0, 0xC5, "ZYXEL COMMUNICATION"}, { 0x00, 0xA0, 0xC6, "QUALCOMM INCORPORATED"}, { 0x00, 0xA0, 0xC7, "TADIRAN TELECOMMUNICATIONS"}, { 0x00, 0xA0, 0xC8, "ADTRAN INC."}, { 0x00, 0xA0, 0xC9, "INTEL CORPORATION - HF1-06"}, { 0x00, 0xA0, 0xCA, "FUJITSU DENSO LTD."}, { 0x00, 0xA0, 0xCB, "ARK TELECOMMUNICATIONS, INC."}, { 0x00, 0xA0, 0xCC, "LITE-ON COMMUNICATIONS, INC."}, { 0x00, 0xA0, 0xCD, "DR. JOHANNES HEIDENHAIN GmbH"}, { 0x00, 0xA0, 0xCE, "ASTROCOM CORPORATION"}, { 0x00, 0xA0, 0xCF, "SOTAS, INC."}, { 0x00, 0xA0, 0xD0, "TEN X TECHNOLOGY, INC."}, { 0x00, 0xA0, 0xD1, "INVENTEC CORPORATION"}, { 0x00, 0xA0, 0xD2, "ALLIED TELESIS INTERNATIONAL CORPORATION"}, { 0x00, 0xA0, 0xD3, "INSTEM COMPUTER SYSTEMS, LTD."}, { 0x00, 0xA0, 0xD4, "RADIOLAN, INC."}, { 0x00, 0xA0, 0xD5, "SIERRA WIRELESS INC."}, { 0x00, 0xA0, 0xD6, "SBE, INC."}, { 0x00, 0xA0, 0xD7, "KASTEN CHASE APPLIED RESEARCH"}, { 0x00, 0xA0, 0xD8, "SPECTRA - TEK"}, { 0x00, 0xA0, 0xD9, "CONVEX COMPUTER CORPORATION"}, { 0x00, 0xA0, 0xDA, "INTEGRATED SYSTEMS Technology, Inc."}, { 0x00, 0xA0, 0xDB, "FISHER & PAYKEL PRODUCTION"}, { 0x00, 0xA0, 0xDC, "O.N. ELECTRONIC CO., LTD."}, { 0x00, 0xA0, 0xDD, "AZONIX CORPORATION"}, { 0x00, 0xA0, 0xDE, "YAMAHA CORPORATION"}, { 0x00, 0xA0, 0xDF, "STS TECHNOLOGIES, INC."}, { 0x00, 0xA0, 0xE0, "TENNYSON TECHNOLOGIES PTY LTD"}, { 0x00, 0xA0, 0xE1, "WESTPORT RESEARCH ASSOCIATES, INC."}, { 0x00, 0xA0, 0xE2, "KEISOKU GIKEN CORP."}, { 0x00, 0xA0, 0xE3, "XKL SYSTEMS CORP."}, { 0x00, 0xA0, 0xE4, "OPTIQUEST"}, { 0x00, 0xA0, 0xE5, "NHC COMMUNICATIONS"}, { 0x00, 0xA0, 0xE6, "DIALOGIC CORPORATION"}, { 0x00, 0xA0, 0xE7, "CENTRAL DATA CORPORATION"}, { 0x00, 0xA0, 0xE8, "REUTERS HOLDINGS PLC"}, { 0x00, 0xA0, 0xE9, "ELECTRONIC RETAILING SYSTEMS INTERNATIONAL"}, { 0x00, 0xA0, 0xEA, "ETHERCOM CORP."}, { 0x00, 0xA0, 0xEB, "FASTCOMM COMMUNICATIONS CORP."}, { 0x00, 0xA0, 0xEC, "TRANSMITTON LTD."}, { 0x00, 0xA0, 0xED, "PRI AUTOMATION"}, { 0x00, 0xA0, 0xEE, "NASHOBA NETWORKS"}, { 0x00, 0xA0, 0xEF, "LUCIDATA LTD."}, { 0x00, 0xA0, 0xF0, "TORONTO MICROELECTRONICS INC."}, { 0x00, 0xA0, 0xF1, "MTI"}, { 0x00, 0xA0, 0xF2, "INFOTEK COMMUNICATIONS, INC."}, { 0x00, 0xA0, 0xF3, "STAUBLI"}, { 0x00, 0xA0, 0xF4, "GE"}, { 0x00, 0xA0, 0xF5, "RADGUARD LTD."}, { 0x00, 0xA0, 0xF6, "AutoGas Systems Inc."}, { 0x00, 0xA0, 0xF7, "V.I COMPUTER CORP."}, { 0x00, 0xA0, 0xF8, "SYMBOL TECHNOLOGIES, INC."}, { 0x00, 0xA0, 0xF9, "BINTEC COMMUNICATIONS GMBH"}, { 0x00, 0xA0, 0xFA, "Marconi Communication GmbH"}, { 0x00, 0xA0, 0xFB, "TORAY ENGINEERING CO., LTD."}, { 0x00, 0xA0, 0xFC, "IMAGE SCIENCES, INC."}, { 0x00, 0xA0, 0xFD, "SCITEX DIGITAL PRINTING, INC."}, { 0x00, 0xA0, 0xFE, "BOSTON TECHNOLOGY, INC."}, { 0x00, 0xA0, 0xFF, "TELLABS OPERATIONS, INC."}, { 0x00, 0xAA, 0x00, "INTEL CORPORATION"}, { 0x00, 0xAA, 0x01, "INTEL CORPORATION"}, { 0x00, 0xAA, 0x02, "INTEL CORPORATION"}, { 0x00, 0xAA, 0x3C, "OLIVETTI TELECOM SPA (OLTECO)"}, { 0x00, 0xB0, 0x09, "Grass Valley Group"}, { 0x00, 0xB0, 0x17, "InfoGear Technology Corp."}, { 0x00, 0xB0, 0x19, "Casi-Rusco"}, { 0x00, 0xB0, 0x1C, "Westport Technologies"}, { 0x00, 0xB0, 0x1E, "Rantic Labs, Inc."}, { 0x00, 0xB0, 0x2A, "ORSYS GmbH"}, { 0x00, 0xB0, 0x2D, "ViaGate Technologies, Inc."}, { 0x00, 0xB0, 0x3B, "HiQ Networks"}, { 0x00, 0xB0, 0x48, "Marconi Communications Inc."}, { 0x00, 0xB0, 0x4A, "Cisco Systems, Inc."}, { 0x00, 0xB0, 0x52, "Intellon Corporation"}, { 0x00, 0xB0, 0x64, "Cisco Systems, Inc."}, { 0x00, 0xB0, 0x69, "Honewell Oy"}, { 0x00, 0xB0, 0x6D, "Jones Futurex Inc."}, { 0x00, 0xB0, 0x80, "Mannesmann Ipulsys B.V."}, { 0x00, 0xB0, 0x86, "LocSoft Limited"}, { 0x00, 0xB0, 0x8E, "Cisco Systems, Inc."}, { 0x00, 0xB0, 0x91, "Transmeta Corp."}, { 0x00, 0xB0, 0x94, "Alaris, Inc."}, { 0x00, 0xB0, 0x9A, "Morrow Technologies Corp."}, { 0x00, 0xB0, 0x9D, "Point Grey Research Inc."}, { 0x00, 0xB0, 0xAC, "SIAE-Microelettronica S.p.A."}, { 0x00, 0xB0, 0xAE, "Symmetricom"}, { 0x00, 0xB0, 0xB3, "Xstreamis PLC"}, { 0x00, 0xB0, 0xC2, "Cisco Systems, Inc."}, { 0x00, 0xB0, 0xC7, "Tellabs Operations, Inc."}, { 0x00, 0xB0, 0xCE, "TECHNOLOGY RESCUE"}, { 0x00, 0xB0, 0xD0, "Dell Computer Corp."}, { 0x00, 0xB0, 0xDB, "Nextcell, Inc."}, { 0x00, 0xB0, 0xDF, "Reliable Data Technology, Inc."}, { 0x00, 0xB0, 0xE7, "British Federal Ltd."}, { 0x00, 0xB0, 0xEC, "EACEM"}, { 0x00, 0xB0, 0xEE, "Ajile Systems, Inc."}, { 0x00, 0xB0, 0xF0, "CALY NETWORKS"}, { 0x00, 0xB0, 0xF5, "NetWorth Technologies, Inc."}, { 0x00, 0xBB, 0x01, "OCTOTHORPE CORP."}, { 0x00, 0xBB, 0xF0, "UNGERMANN-BASS INC."}, { 0x00, 0xC0, 0x00, "LANOPTICS, LTD."}, { 0x00, 0xC0, 0x01, "DIATEK PATIENT MANAGMENT"}, { 0x00, 0xC0, 0x02, "SERCOMM CORPORATION"}, { 0x00, 0xC0, 0x03, "GLOBALNET COMMUNICATIONS"}, { 0x00, 0xC0, 0x04, "JAPAN BUSINESS COMPUTER CO.LTD"}, { 0x00, 0xC0, 0x05, "LIVINGSTON ENTERPRISES, INC."}, { 0x00, 0xC0, 0x06, "NIPPON AVIONICS CO., LTD."}, { 0x00, 0xC0, 0x07, "PINNACLE DATA SYSTEMS, INC."}, { 0x00, 0xC0, 0x08, "SECO SRL"}, { 0x00, 0xC0, 0x09, "KT TECHNOLOGY (S) PTE LTD"}, { 0x00, 0xC0, 0x0A, "MICRO CRAFT"}, { 0x00, 0xC0, 0x0B, "NORCONTROL A.S."}, { 0x00, 0xC0, 0x0C, "RELIA TECHNOLGIES"}, { 0x00, 0xC0, 0x0D, "ADVANCED LOGIC RESEARCH, INC."}, { 0x00, 0xC0, 0x0E, "PSITECH, INC."}, { 0x00, 0xC0, 0x0F, "QUANTUM SOFTWARE SYSTEMS LTD."}, { 0x00, 0xC0, 0x10, "HIRAKAWA HEWTECH CORP."}, { 0x00, 0xC0, 0x11, "INTERACTIVE COMPUTING DEVICES"}, { 0x00, 0xC0, 0x12, "NETSPAN CORPORATION"}, { 0x00, 0xC0, 0x13, "NETRIX"}, { 0x00, 0xC0, 0x14, "TELEMATICS CALABASAS INT'L,INC"}, { 0x00, 0xC0, 0x15, "NEW MEDIA CORPORATION"}, { 0x00, 0xC0, 0x16, "ELECTRONIC THEATRE CONTROLS"}, { 0x00, 0xC0, 0x17, "FORTE NETWORKS"}, { 0x00, 0xC0, 0x18, "LANART CORPORATION"}, { 0x00, 0xC0, 0x19, "LEAP TECHNOLOGY, INC."}, { 0x00, 0xC0, 0x1A, "COROMETRICS MEDICAL SYSTEMS"}, { 0x00, 0xC0, 0x1B, "SOCKET COMMUNICATIONS, INC."}, { 0x00, 0xC0, 0x1C, "INTERLINK COMMUNICATIONS LTD."}, { 0x00, 0xC0, 0x1D, "GRAND JUNCTION NETWORKS, INC."}, { 0x00, 0xC0, 0x1E, "LA FRANCAISE DES JEUX"}, { 0x00, 0xC0, 0x1F, "S.E.R.C.E.L."}, { 0x00, 0xC0, 0x20, "ARCO ELECTRONIC, CONTROL LTD."}, { 0x00, 0xC0, 0x21, "NETEXPRESS"}, { 0x00, 0xC0, 0x22, "LASERMASTER TECHNOLOGIES, INC."}, { 0x00, 0xC0, 0x23, "TUTANKHAMON ELECTRONICS"}, { 0x00, 0xC0, 0x24, "EDEN SISTEMAS DE COMPUTACAO SA"}, { 0x00, 0xC0, 0x25, "DATAPRODUCTS CORPORATION"}, { 0x00, 0xC0, 0x26, "LANS TECHNOLOGY CO., LTD."}, { 0x00, 0xC0, 0x27, "CIPHER SYSTEMS, INC."}, { 0x00, 0xC0, 0x28, "JASCO CORPORATION"}, { 0x00, 0xC0, 0x29, "Nexans Deutschland AG - ANS"}, { 0x00, 0xC0, 0x2A, "OHKURA ELECTRIC CO., LTD."}, { 0x00, 0xC0, 0x2B, "GERLOFF GESELLSCHAFT FUR"}, { 0x00, 0xC0, 0x2C, "CENTRUM COMMUNICATIONS, INC."}, { 0x00, 0xC0, 0x2D, "FUJI PHOTO FILM CO., LTD."}, { 0x00, 0xC0, 0x2E, "NETWIZ"}, { 0x00, 0xC0, 0x2F, "OKUMA CORPORATION"}, { 0x00, 0xC0, 0x30, "INTEGRATED ENGINEERING B. V."}, { 0x00, 0xC0, 0x31, "DESIGN RESEARCH SYSTEMS, INC."}, { 0x00, 0xC0, 0x32, "I-CUBED LIMITED"}, { 0x00, 0xC0, 0x33, "TELEBIT COMMUNICATIONS APS"}, { 0x00, 0xC0, 0x34, "TRANSACTION NETWORK"}, { 0x00, 0xC0, 0x35, "QUINTAR COMPANY"}, { 0x00, 0xC0, 0x36, "RAYTECH ELECTRONIC CORP."}, { 0x00, 0xC0, 0x37, "DYNATEM"}, { 0x00, 0xC0, 0x38, "RASTER IMAGE PROCESSING SYSTEM"}, { 0x00, 0xC0, 0x39, "TDK SEMICONDUCTOR CORPORATION"}, { 0x00, 0xC0, 0x3A, "MEN-MIKRO ELEKTRONIK GMBH"}, { 0x00, 0xC0, 0x3B, "MULTIACCESS COMPUTING CORP."}, { 0x00, 0xC0, 0x3C, "TOWER TECH S.R.L."}, { 0x00, 0xC0, 0x3D, "WIESEMANN & THEIS GMBH"}, { 0x00, 0xC0, 0x3E, "FA. GEBR. HELLER GMBH"}, { 0x00, 0xC0, 0x3F, "STORES AUTOMATED SYSTEMS, INC."}, { 0x00, 0xC0, 0x40, "ECCI"}, { 0x00, 0xC0, 0x41, "DIGITAL TRANSMISSION SYSTEMS"}, { 0x00, 0xC0, 0x42, "DATALUX CORP."}, { 0x00, 0xC0, 0x43, "STRATACOM"}, { 0x00, 0xC0, 0x44, "EMCOM CORPORATION"}, { 0x00, 0xC0, 0x45, "ISOLATION SYSTEMS, LTD."}, { 0x00, 0xC0, 0x46, "KEMITRON LTD."}, { 0x00, 0xC0, 0x47, "UNIMICRO SYSTEMS, INC."}, { 0x00, 0xC0, 0x48, "BAY TECHNICAL ASSOCIATES"}, { 0x00, 0xC0, 0x49, "U.S. ROBOTICS, INC."}, { 0x00, 0xC0, 0x4A, "GROUP 2000 AG"}, { 0x00, 0xC0, 0x4B, "CREATIVE MICROSYSTEMS"}, { 0x00, 0xC0, 0x4C, "DEPARTMENT OF FOREIGN AFFAIRS"}, { 0x00, 0xC0, 0x4D, "MITEC, INC."}, { 0x00, 0xC0, 0x4E, "COMTROL CORPORATION"}, { 0x00, 0xC0, 0x4F, "DELL COMPUTER CORPORATION"}, { 0x00, 0xC0, 0x50, "TOYO DENKI SEIZO K.K."}, { 0x00, 0xC0, 0x51, "ADVANCED INTEGRATION RESEARCH"}, { 0x00, 0xC0, 0x52, "BURR-BROWN"}, { 0x00, 0xC0, 0x53, "DAVOX CORPORATION"}, { 0x00, 0xC0, 0x54, "NETWORK PERIPHERALS, LTD."}, { 0x00, 0xC0, 0x55, "MODULAR COMPUTING TECHNOLOGIES"}, { 0x00, 0xC0, 0x56, "SOMELEC"}, { 0x00, 0xC0, 0x57, "MYCO ELECTRONICS"}, { 0x00, 0xC0, 0x58, "DATAEXPERT CORP."}, { 0x00, 0xC0, 0x59, "NIPPON DENSO CO., LTD."}, { 0x00, 0xC0, 0x5A, "SEMAPHORE COMMUNICATIONS CORP."}, { 0x00, 0xC0, 0x5B, "NETWORKS NORTHWEST, INC."}, { 0x00, 0xC0, 0x5C, "ELONEX PLC"}, { 0x00, 0xC0, 0x5D, "L&N TECHNOLOGIES"}, { 0x00, 0xC0, 0x5E, "VARI-LITE, INC."}, { 0x00, 0xC0, 0x5F, "FINE-PAL COMPANY LIMITED"}, { 0x00, 0xC0, 0x60, "ID SCANDINAVIA AS"}, { 0x00, 0xC0, 0x61, "SOLECTEK CORPORATION"}, { 0x00, 0xC0, 0x62, "IMPULSE TECHNOLOGY"}, { 0x00, 0xC0, 0x63, "MORNING STAR TECHNOLOGIES, INC"}, { 0x00, 0xC0, 0x64, "GENERAL DATACOMM IND. INC."}, { 0x00, 0xC0, 0x65, "SCOPE COMMUNICATIONS, INC."}, { 0x00, 0xC0, 0x66, "DOCUPOINT, INC."}, { 0x00, 0xC0, 0x67, "UNITED BARCODE INDUSTRIES"}, { 0x00, 0xC0, 0x68, "PHILIP DRAKE ELECTRONICS LTD."}, { 0x00, 0xC0, 0x69, "ADAPTIVE BROADBAND CORPORATION"}, { 0x00, 0xC0, 0x6A, "ZAHNER-ELEKTRIK GMBH & CO. KG"}, { 0x00, 0xC0, 0x6B, "OSI PLUS CORPORATION"}, { 0x00, 0xC0, 0x6C, "SVEC COMPUTER CORP."}, { 0x00, 0xC0, 0x6D, "BOCA RESEARCH, INC."}, { 0x00, 0xC0, 0x6E, "HAFT TECHNOLOGY, INC."}, { 0x00, 0xC0, 0x6F, "KOMATSU LTD."}, { 0x00, 0xC0, 0x70, "SECTRA SECURE-TRANSMISSION AB"}, { 0x00, 0xC0, 0x71, "AREANEX COMMUNICATIONS, INC."}, { 0x00, 0xC0, 0x72, "KNX LTD."}, { 0x00, 0xC0, 0x73, "XEDIA CORPORATION"}, { 0x00, 0xC0, 0x74, "TOYODA AUTOMATIC LOOM"}, { 0x00, 0xC0, 0x75, "XANTE CORPORATION"}, { 0x00, 0xC0, 0x76, "I-DATA INTERNATIONAL A-S"}, { 0x00, 0xC0, 0x77, "DAEWOO TELECOM LTD."}, { 0x00, 0xC0, 0x78, "COMPUTER SYSTEMS ENGINEERING"}, { 0x00, 0xC0, 0x79, "FONSYS CO.,LTD."}, { 0x00, 0xC0, 0x7A, "PRIVA B.V."}, { 0x00, 0xC0, 0x7B, "ASCEND COMMUNICATIONS, INC."}, { 0x00, 0xC0, 0x7C, "HIGHTECH INFORMATION"}, { 0x00, 0xC0, 0x7D, "RISC DEVELOPMENTS LTD."}, { 0x00, 0xC0, 0x7E, "KUBOTA CORPORATION ELECTRONIC"}, { 0x00, 0xC0, 0x7F, "NUPON COMPUTING CORP."}, { 0x00, 0xC0, 0x80, "NETSTAR, INC."}, { 0x00, 0xC0, 0x81, "METRODATA LTD."}, { 0x00, 0xC0, 0x82, "MOORE PRODUCTS CO."}, { 0x00, 0xC0, 0x83, "TRACE MOUNTAIN PRODUCTS, INC."}, { 0x00, 0xC0, 0x84, "DATA LINK CORP. LTD."}, { 0x00, 0xC0, 0x85, "ELECTRONICS FOR IMAGING, INC."}, { 0x00, 0xC0, 0x86, "THE LYNK CORPORATION"}, { 0x00, 0xC0, 0x87, "UUNET TECHNOLOGIES, INC."}, { 0x00, 0xC0, 0x88, "EKF ELEKTRONIK GMBH"}, { 0x00, 0xC0, 0x89, "TELINDUS DISTRIBUTION"}, { 0x00, 0xC0, 0x8A, "LAUTERBACH DATENTECHNIK GMBH"}, { 0x00, 0xC0, 0x8B, "RISQ MODULAR SYSTEMS, INC."}, { 0x00, 0xC0, 0x8C, "PERFORMANCE TECHNOLOGIES, INC."}, { 0x00, 0xC0, 0x8D, "TRONIX PRODUCT DEVELOPMENT"}, { 0x00, 0xC0, 0x8E, "NETWORK INFORMATION TECHNOLOGY"}, { 0x00, 0xC0, 0x8F, "MATSUSHITA ELECTRIC WORKS, LTD"}, { 0x00, 0xC0, 0x90, "PRAIM S.R.L."}, { 0x00, 0xC0, 0x91, "JABIL CIRCUIT, INC."}, { 0x00, 0xC0, 0x92, "MENNEN MEDICAL INC."}, { 0x00, 0xC0, 0x93, "ALTA RESEARCH CORP."}, { 0x00, 0xC0, 0x94, "VMX INC."}, { 0x00, 0xC0, 0x95, "ZNYX"}, { 0x00, 0xC0, 0x96, "TAMURA CORPORATION"}, { 0x00, 0xC0, 0x97, "ARCHIPEL SA"}, { 0x00, 0xC0, 0x98, "CHUNTEX ELECTRONIC CO., LTD."}, { 0x00, 0xC0, 0x99, "YOSHIKI INDUSTRIAL CO.,LTD."}, { 0x00, 0xC0, 0x9A, "PHOTONICS CORPORATION"}, { 0x00, 0xC0, 0x9B, "RELIANCE COMM/TEC, R-TEC"}, { 0x00, 0xC0, 0x9C, "TOA ELECTRONIC LTD."}, { 0x00, 0xC0, 0x9D, "DISTRIBUTED SYSTEMS INT'L, INC"}, { 0x00, 0xC0, 0x9E, "CACHE COMPUTERS, INC."}, { 0x00, 0xC0, 0x9F, "QUANTA COMPUTER, INC."}, { 0x00, 0xC0, 0xA0, "ADVANCE MICRO RESEARCH, INC."}, { 0x00, 0xC0, 0xA1, "TOKYO DENSHI SEKEI CO."}, { 0x00, 0xC0, 0xA2, "INTERMEDIUM A/S"}, { 0x00, 0xC0, 0xA3, "DUAL ENTERPRISES CORPORATION"}, { 0x00, 0xC0, 0xA4, "UNIGRAF OY"}, { 0x00, 0xC0, 0xA5, "DICKENS DATA SYSTEMS"}, { 0x00, 0xC0, 0xA6, "EXICOM AUSTRALIA PTY. LTD"}, { 0x00, 0xC0, 0xA7, "SEEL LTD."}, { 0x00, 0xC0, 0xA8, "GVC CORPORATION"}, { 0x00, 0xC0, 0xA9, "BARRON MCCANN LTD."}, { 0x00, 0xC0, 0xAA, "SILICON VALLEY COMPUTER"}, { 0x00, 0xC0, 0xAB, "Telco Systems, Inc."}, { 0x00, 0xC0, 0xAC, "GAMBIT COMPUTER COMMUNICATIONS"}, { 0x00, 0xC0, 0xAD, "MARBEN COMMUNICATION SYSTEMS"}, { 0x00, 0xC0, 0xAE, "TOWERCOM CO. INC. DBA PC HOUSE"}, { 0x00, 0xC0, 0xAF, "TEKLOGIX INC."}, { 0x00, 0xC0, 0xB0, "GCC TECHNOLOGIES,INC."}, { 0x00, 0xC0, 0xB1, "GENIUS NET CO."}, { 0x00, 0xC0, 0xB2, "NORAND CORPORATION"}, { 0x00, 0xC0, 0xB3, "COMSTAT DATACOMM CORPORATION"}, { 0x00, 0xC0, 0xB4, "MYSON TECHNOLOGY, INC."}, { 0x00, 0xC0, 0xB5, "CORPORATE NETWORK SYSTEMS,INC."}, { 0x00, 0xC0, 0xB6, "MERIDIAN DATA, INC."}, { 0x00, 0xC0, 0xB7, "AMERICAN POWER CONVERSION CORP"}, { 0x00, 0xC0, 0xB8, "FRASER'S HILL LTD."}, { 0x00, 0xC0, 0xB9, "FUNK SOFTWARE, INC."}, { 0x00, 0xC0, 0xBA, "NETVANTAGE"}, { 0x00, 0xC0, 0xBB, "FORVAL CREATIVE, INC."}, { 0x00, 0xC0, 0xBC, "TELECOM AUSTRALIA/CSSC"}, { 0x00, 0xC0, 0xBD, "INEX TECHNOLOGIES, INC."}, { 0x00, 0xC0, 0xBE, "ALCATEL - SEL"}, { 0x00, 0xC0, 0xBF, "TECHNOLOGY CONCEPTS, LTD."}, { 0x00, 0xC0, 0xC0, "SHORE MICROSYSTEMS, INC."}, { 0x00, 0xC0, 0xC1, "QUAD/GRAPHICS, INC."}, { 0x00, 0xC0, 0xC2, "INFINITE NETWORKS LTD."}, { 0x00, 0xC0, 0xC3, "ACUSON COMPUTED SONOGRAPHY"}, { 0x00, 0xC0, 0xC4, "COMPUTER OPERATIONAL"}, { 0x00, 0xC0, 0xC5, "SID INFORMATICA"}, { 0x00, 0xC0, 0xC6, "PERSONAL MEDIA CORP."}, { 0x00, 0xC0, 0xC7, "SPARKTRUM MICROSYSTEMS, INC."}, { 0x00, 0xC0, 0xC8, "MICRO BYTE PTY. LTD."}, { 0x00, 0xC0, 0xC9, "ELSAG BAILEY PROCESS"}, { 0x00, 0xC0, 0xCA, "ALFA, INC."}, { 0x00, 0xC0, 0xCB, "CONTROL TECHNOLOGY CORPORATION"}, { 0x00, 0xC0, 0xCC, "TELESCIENCES CO SYSTEMS, INC."}, { 0x00, 0xC0, 0xCD, "COMELTA, S.A."}, { 0x00, 0xC0, 0xCE, "CEI SYSTEMS & ENGINEERING PTE"}, { 0x00, 0xC0, 0xCF, "IMATRAN VOIMA OY"}, { 0x00, 0xC0, 0xD0, "RATOC SYSTEM INC."}, { 0x00, 0xC0, 0xD1, "COMTREE TECHNOLOGY CORPORATION"}, { 0x00, 0xC0, 0xD2, "SYNTELLECT, INC."}, { 0x00, 0xC0, 0xD3, "OLYMPUS IMAGE SYSTEMS, INC."}, { 0x00, 0xC0, 0xD4, "AXON NETWORKS, INC."}, { 0x00, 0xC0, 0xD5, "QUANCOM ELECTRONIC GMBH"}, { 0x00, 0xC0, 0xD6, "J1 SYSTEMS, INC."}, { 0x00, 0xC0, 0xD7, "TAIWAN TRADING CENTER DBA"}, { 0x00, 0xC0, 0xD8, "UNIVERSAL DATA SYSTEMS"}, { 0x00, 0xC0, 0xD9, "QUINTE NETWORK CONFIDENTIALITY"}, { 0x00, 0xC0, 0xDA, "NICE SYSTEMS LTD."}, { 0x00, 0xC0, 0xDB, "IPC CORPORATION (PTE) LTD."}, { 0x00, 0xC0, 0xDC, "EOS TECHNOLOGIES, INC."}, { 0x00, 0xC0, 0xDD, "QLogic Corporation"}, { 0x00, 0xC0, 0xDE, "ZCOMM, INC."}, { 0x00, 0xC0, 0xDF, "KYE SYSTEMS CORP."}, { 0x00, 0xC0, 0xE0, "DSC COMMUNICATION CORP."}, { 0x00, 0xC0, 0xE1, "SONIC SOLUTIONS"}, { 0x00, 0xC0, 0xE2, "CALCOMP, INC."}, { 0x00, 0xC0, 0xE3, "OSITECH COMMUNICATIONS, INC."}, { 0x00, 0xC0, 0xE4, "SIEMENS BUILDING"}, { 0x00, 0xC0, 0xE5, "GESPAC, S.A."}, { 0x00, 0xC0, 0xE6, "Verilink Corporation"}, { 0x00, 0xC0, 0xE7, "FIBERDATA AB"}, { 0x00, 0xC0, 0xE8, "PLEXCOM, INC."}, { 0x00, 0xC0, 0xE9, "OAK SOLUTIONS, LTD."}, { 0x00, 0xC0, 0xEA, "ARRAY TECHNOLOGY LTD."}, { 0x00, 0xC0, 0xEB, "SEH COMPUTERTECHNIK GMBH"}, { 0x00, 0xC0, 0xEC, "DAUPHIN TECHNOLOGY"}, { 0x00, 0xC0, 0xED, "US ARMY ELECTRONIC"}, { 0x00, 0xC0, 0xEE, "KYOCERA CORPORATION"}, { 0x00, 0xC0, 0xEF, "ABIT CORPORATION"}, { 0x00, 0xC0, 0xF0, "KINGSTON TECHNOLOGY CORP."}, { 0x00, 0xC0, 0xF1, "SHINKO ELECTRIC CO., LTD."}, { 0x00, 0xC0, 0xF2, "TRANSITION NETWORKS"}, { 0x00, 0xC0, 0xF3, "NETWORK COMMUNICATIONS CORP."}, { 0x00, 0xC0, 0xF4, "INTERLINK SYSTEM CO., LTD."}, { 0x00, 0xC0, 0xF5, "METACOMP, INC."}, { 0x00, 0xC0, 0xF6, "CELAN TECHNOLOGY INC."}, { 0x00, 0xC0, 0xF7, "ENGAGE COMMUNICATION, INC."}, { 0x00, 0xC0, 0xF8, "ABOUT COMPUTING INC."}, { 0x00, 0xC0, 0xF9, "HARRIS AND JEFFRIES, INC."}, { 0x00, 0xC0, 0xFA, "CANARY COMMUNICATIONS, INC."}, { 0x00, 0xC0, 0xFB, "ADVANCED TECHNOLOGY LABS"}, { 0x00, 0xC0, 0xFC, "ELASTIC REALITY, INC."}, { 0x00, 0xC0, 0xFD, "PROSUM"}, { 0x00, 0xC0, 0xFE, "APTEC COMPUTER SYSTEMS, INC."}, { 0x00, 0xC0, 0xFF, "DOT HILL SYSTEMS CORPORATION"}, { 0x00, 0xCB, 0xBD, "Cambridge Broadband Ltd."}, { 0x00, 0xCF, 0x1C, "COMMUNICATION MACHINERY CORP."}, { 0x00, 0xD0, 0x00, "FERRAN SCIENTIFIC, INC."}, { 0x00, 0xD0, 0x01, "VST TECHNOLOGIES, INC."}, { 0x00, 0xD0, 0x02, "DITECH CORPORATION"}, { 0x00, 0xD0, 0x03, "COMDA ENTERPRISES CORP."}, { 0x00, 0xD0, 0x04, "PENTACOM LTD."}, { 0x00, 0xD0, 0x05, "ZHS ZEITMANAGEMENTSYSTEME"}, { 0x00, 0xD0, 0x06, "CISCO SYSTEMS, INC."}, { 0x00, 0xD0, 0x07, "MIC ASSOCIATES, INC."}, { 0x00, 0xD0, 0x08, "MACTELL CORPORATION"}, { 0x00, 0xD0, 0x09, "HSING TECH. ENTERPRISE CO. LTD"}, { 0x00, 0xD0, 0x0A, "LANACCESS TELECOM S.A."}, { 0x00, 0xD0, 0x0B, "RHK TECHNOLOGY, INC."}, { 0x00, 0xD0, 0x0C, "SNIJDER MICRO SYSTEMS"}, { 0x00, 0xD0, 0x0D, "MICROMERITICS INSTRUMENT"}, { 0x00, 0xD0, 0x0E, "PLURIS, INC."}, { 0x00, 0xD0, 0x0F, "SPEECH DESIGN GMBH"}, { 0x00, 0xD0, 0x10, "CONVERGENT NETWORKS, INC."}, { 0x00, 0xD0, 0x11, "PRISM VIDEO, INC."}, { 0x00, 0xD0, 0x12, "GATEWORKS CORP."}, { 0x00, 0xD0, 0x13, "PRIMEX AEROSPACE COMPANY"}, { 0x00, 0xD0, 0x14, "ROOT, INC."}, { 0x00, 0xD0, 0x15, "UNIVEX MICROTECHNOLOGY CORP."}, { 0x00, 0xD0, 0x16, "SCM MICROSYSTEMS, INC."}, { 0x00, 0xD0, 0x17, "SYNTECH INFORMATION CO., LTD."}, { 0x00, 0xD0, 0x18, "QWES. COM, INC."}, { 0x00, 0xD0, 0x19, "DAINIPPON SCREEN CORPORATE"}, { 0x00, 0xD0, 0x1A, "URMET SUD S.P.A."}, { 0x00, 0xD0, 0x1B, "MIMAKI ENGINEERING CO., LTD."}, { 0x00, 0xD0, 0x1C, "SBS TECHNOLOGIES,"}, { 0x00, 0xD0, 0x1D, "FURUNO ELECTRIC CO., LTD."}, { 0x00, 0xD0, 0x1E, "PINGTEL CORP."}, { 0x00, 0xD0, 0x1F, "CTAM PTY. LTD."}, { 0x00, 0xD0, 0x20, "AIM SYSTEM, INC."}, { 0x00, 0xD0, 0x21, "REGENT ELECTRONICS CORP."}, { 0x00, 0xD0, 0x22, "INCREDIBLE TECHNOLOGIES, INC."}, { 0x00, 0xD0, 0x23, "INFORTREND TECHNOLOGY, INC."}, { 0x00, 0xD0, 0x24, "Cognex Corporation"}, { 0x00, 0xD0, 0x25, "XROSSTECH, INC."}, { 0x00, 0xD0, 0x26, "HIRSCHMANN AUSTRIA GMBH"}, { 0x00, 0xD0, 0x27, "APPLIED AUTOMATION, INC."}, { 0x00, 0xD0, 0x28, "OMNEON VIDEO NETWORKS"}, { 0x00, 0xD0, 0x29, "WAKEFERN FOOD CORPORATION"}, { 0x00, 0xD0, 0x2A, "FLEXION SYSTEMS"}, { 0x00, 0xD0, 0x2B, "JETCELL, INC."}, { 0x00, 0xD0, 0x2C, "CAMPBELL SCIENTIFIC, INC."}, { 0x00, 0xD0, 0x2D, "ADEMCO"}, { 0x00, 0xD0, 0x2E, "COMMUNICATION AUTOMATION CORP."}, { 0x00, 0xD0, 0x2F, "VLSI TECHNOLOGY INC."}, { 0x00, 0xD0, 0x30, "SAFETRAN SYSTEMS CORP."}, { 0x00, 0xD0, 0x31, "INDUSTRIAL LOGIC CORPORATION"}, { 0x00, 0xD0, 0x32, "YANO ELECTRIC CO., LTD."}, { 0x00, 0xD0, 0x33, "DALIAN DAXIAN NETWORK"}, { 0x00, 0xD0, 0x34, "ORMEC SYSTEMS CORP."}, { 0x00, 0xD0, 0x35, "BEHAVIOR TECH. COMPUTER CORP."}, { 0x00, 0xD0, 0x36, "TECHNOLOGY ATLANTA CORP."}, { 0x00, 0xD0, 0x37, "PHILIPS-DVS-LO BDR"}, { 0x00, 0xD0, 0x38, "FIVEMERE, LTD."}, { 0x00, 0xD0, 0x39, "UTILICOM, INC."}, { 0x00, 0xD0, 0x3A, "ZONEWORX, INC."}, { 0x00, 0xD0, 0x3B, "VISION PRODUCTS PTY. LTD."}, { 0x00, 0xD0, 0x3C, "Vieo, Inc."}, { 0x00, 0xD0, 0x3E, "ROCKETCHIPS, INC."}, { 0x00, 0xD0, 0x3F, "AMERICAN COMMUNICATION"}, { 0x00, 0xD0, 0x40, "SYSMATE CO., LTD."}, { 0x00, 0xD0, 0x41, "AMIGO TECHNOLOGY CO., LTD."}, { 0x00, 0xD0, 0x42, "MAHLO GMBH & CO. UG"}, { 0x00, 0xD0, 0x43, "ZONAL RETAIL DATA SYSTEMS"}, { 0x00, 0xD0, 0x44, "ALIDIAN NETWORKS, INC."}, { 0x00, 0xD0, 0x45, "KVASER AB"}, { 0x00, 0xD0, 0x46, "DOLBY LABORATORIES, INC."}, { 0x00, 0xD0, 0x47, "XN TECHNOLOGIES"}, { 0x00, 0xD0, 0x48, "ECTON, INC."}, { 0x00, 0xD0, 0x49, "IMPRESSTEK CO., LTD."}, { 0x00, 0xD0, 0x4A, "PRESENCE TECHNOLOGY GMBH"}, { 0x00, 0xD0, 0x4B, "LA CIE GROUP S.A."}, { 0x00, 0xD0, 0x4C, "EUROTEL TELECOM LTD."}, { 0x00, 0xD0, 0x4D, "DIV OF RESEARCH & STATISTICS"}, { 0x00, 0xD0, 0x4E, "LOGIBAG"}, { 0x00, 0xD0, 0x4F, "BITRONICS, INC."}, { 0x00, 0xD0, 0x50, "ISKRATEL"}, { 0x00, 0xD0, 0x51, "O2 MICRO, INC."}, { 0x00, 0xD0, 0x52, "ASCEND COMMUNICATIONS, INC."}, { 0x00, 0xD0, 0x53, "CONNECTED SYSTEMS"}, { 0x00, 0xD0, 0x54, "SAS INSTITUTE INC."}, { 0x00, 0xD0, 0x55, "KATHREIN-WERKE KG"}, { 0x00, 0xD0, 0x56, "SOMAT CORPORATION"}, { 0x00, 0xD0, 0x57, "ULTRAK, INC."}, { 0x00, 0xD0, 0x58, "CISCO SYSTEMS, INC."}, { 0x00, 0xD0, 0x59, "AMBIT MICROSYSTEMS CORP."}, { 0x00, 0xD0, 0x5A, "SYMBIONICS, LTD."}, { 0x00, 0xD0, 0x5B, "ACROLOOP MOTION CONTROL"}, { 0x00, 0xD0, 0x5C, "TECHNOTREND SYSTEMTECHNIK GMBH"}, { 0x00, 0xD0, 0x5D, "INTELLIWORXX, INC."}, { 0x00, 0xD0, 0x5E, "STRATABEAM TECHNOLOGY, INC."}, { 0x00, 0xD0, 0x5F, "VALCOM, INC."}, { 0x00, 0xD0, 0x60, "PANASONIC EUROPEAN"}, { 0x00, 0xD0, 0x61, "TREMON ENTERPRISES CO., LTD."}, { 0x00, 0xD0, 0x62, "DIGIGRAM"}, { 0x00, 0xD0, 0x63, "CISCO SYSTEMS, INC."}, { 0x00, 0xD0, 0x64, "MULTITEL"}, { 0x00, 0xD0, 0x65, "TOKO ELECTRIC"}, { 0x00, 0xD0, 0x66, "WINTRISS ENGINEERING CORP."}, { 0x00, 0xD0, 0x67, "CAMPIO COMMUNICATIONS"}, { 0x00, 0xD0, 0x68, "IWILL CORPORATION"}, { 0x00, 0xD0, 0x69, "TECHNOLOGIC SYSTEMS"}, { 0x00, 0xD0, 0x6A, "LINKUP SYSTEMS CORPORATION"}, { 0x00, 0xD0, 0x6B, "SR TELECOM INC."}, { 0x00, 0xD0, 0x6C, "SHAREWAVE, INC."}, { 0x00, 0xD0, 0x6D, "ACRISON, INC."}, { 0x00, 0xD0, 0x6E, "TRENDVIEW RECORDERS LTD."}, { 0x00, 0xD0, 0x6F, "KMC CONTROLS"}, { 0x00, 0xD0, 0x70, "LONG WELL ELECTRONICS CORP."}, { 0x00, 0xD0, 0x71, "ECHELON CORP."}, { 0x00, 0xD0, 0x72, "BROADLOGIC"}, { 0x00, 0xD0, 0x73, "ACN ADVANCED COMMUNICATIONS"}, { 0x00, 0xD0, 0x74, "TAQUA SYSTEMS, INC."}, { 0x00, 0xD0, 0x75, "ALARIS MEDICAL SYSTEMS, INC."}, { 0x00, 0xD0, 0x76, "MERRILL LYNCH & CO., INC."}, { 0x00, 0xD0, 0x77, "LUCENT TECHNOLOGIES"}, { 0x00, 0xD0, 0x78, "ELTEX OF SWEDEN AB"}, { 0x00, 0xD0, 0x79, "CISCO SYSTEMS, INC."}, { 0x00, 0xD0, 0x7A, "AMAQUEST COMPUTER CORP."}, { 0x00, 0xD0, 0x7B, "COMCAM INTERNATIONAL LTD."}, { 0x00, 0xD0, 0x7C, "KOYO ELECTRONICS INC. CO.,LTD."}, { 0x00, 0xD0, 0x7D, "COSINE COMMUNICATIONS"}, { 0x00, 0xD0, 0x7E, "KEYCORP LTD."}, { 0x00, 0xD0, 0x7F, "STRATEGY & TECHNOLOGY, LIMITED"}, { 0x00, 0xD0, 0x80, "EXABYTE CORPORATION"}, { 0x00, 0xD0, 0x81, "REAL TIME DEVICES USA, INC."}, { 0x00, 0xD0, 0x82, "IOWAVE INC."}, { 0x00, 0xD0, 0x83, "INVERTEX, INC."}, { 0x00, 0xD0, 0x84, "NEXCOMM SYSTEMS, INC."}, { 0x00, 0xD0, 0x85, "OTIS ELEVATOR COMPANY"}, { 0x00, 0xD0, 0x86, "FOVEON, INC."}, { 0x00, 0xD0, 0x87, "MICROFIRST INC."}, { 0x00, 0xD0, 0x88, "MAINSAIL NETWORKS, INC."}, { 0x00, 0xD0, 0x89, "DYNACOLOR, INC."}, { 0x00, 0xD0, 0x8A, "PHOTRON USA"}, { 0x00, 0xD0, 0x8B, "ADVA Limited"}, { 0x00, 0xD0, 0x8C, "GENOA TECHNOLOGY, INC."}, { 0x00, 0xD0, 0x8D, "PHOENIX GROUP, INC."}, { 0x00, 0xD0, 0x8E, "NVISION INC."}, { 0x00, 0xD0, 0x8F, "ARDENT TECHNOLOGIES, INC."}, { 0x00, 0xD0, 0x90, "CISCO SYSTEMS, INC."}, { 0x00, 0xD0, 0x91, "SMARTSAN SYSTEMS, INC."}, { 0x00, 0xD0, 0x92, "GLENAYRE WESTERN MULTIPLEX"}, { 0x00, 0xD0, 0x93, "TQ - COMPONENTS GMBH"}, { 0x00, 0xD0, 0x94, "TIMELINE VISTA, INC."}, { 0x00, 0xD0, 0x95, "XYLAN CORPORATION"}, { 0x00, 0xD0, 0x96, "3COM EUROPE LTD."}, { 0x00, 0xD0, 0x97, "CISCO SYSTEMS, INC."}, { 0x00, 0xD0, 0x98, "Photon Dynamics Canada Inc."}, { 0x00, 0xD0, 0x99, "ELCARD OY"}, { 0x00, 0xD0, 0x9A, "FILANET CORPORATION"}, { 0x00, 0xD0, 0x9B, "SPECTEL LTD."}, { 0x00, 0xD0, 0x9C, "KAPADIA COMMUNICATIONS"}, { 0x00, 0xD0, 0x9D, "VERIS INDUSTRIES"}, { 0x00, 0xD0, 0x9E, "2WIRE, INC."}, { 0x00, 0xD0, 0x9F, "NOVTEK TEST SYSTEMS"}, { 0x00, 0xD0, 0xA0, "MIPS DENMARK"}, { 0x00, 0xD0, 0xA1, "OSKAR VIERLING GMBH + CO. KG"}, { 0x00, 0xD0, 0xA2, "INTEGRATED DEVICE"}, { 0x00, 0xD0, 0xA3, "VOCAL DATA, INC."}, { 0x00, 0xD0, 0xA4, "ALANTRO COMMUNICATIONS"}, { 0x00, 0xD0, 0xA5, "AMERICAN ARIUM"}, { 0x00, 0xD0, 0xA6, "LANBIRD TECHNOLOGY CO., LTD."}, { 0x00, 0xD0, 0xA7, "TOKYO SOKKI KENKYUJO CO., LTD."}, { 0x00, 0xD0, 0xA8, "NETWORK ENGINES, INC."}, { 0x00, 0xD0, 0xA9, "SHINANO KENSHI CO., LTD."}, { 0x00, 0xD0, 0xAA, "CHASE COMMUNICATIONS"}, { 0x00, 0xD0, 0xAB, "DELTAKABEL TELECOM CV"}, { 0x00, 0xD0, 0xAC, "GRAYSON WIRELESS"}, { 0x00, 0xD0, 0xAD, "TL INDUSTRIES"}, { 0x00, 0xD0, 0xAE, "ORESIS COMMUNICATIONS, INC."}, { 0x00, 0xD0, 0xAF, "CUTLER-HAMMER, INC."}, { 0x00, 0xD0, 0xB0, "BITSWITCH LTD."}, { 0x00, 0xD0, 0xB1, "OMEGA ELECTRONICS SA"}, { 0x00, 0xD0, 0xB2, "XIOTECH CORPORATION"}, { 0x00, 0xD0, 0xB3, "DRS FLIGHT SAFETY AND"}, { 0x00, 0xD0, 0xB4, "KATSUJIMA CO., LTD."}, { 0x00, 0xD0, 0xB5, "DOTCOM"}, { 0x00, 0xD0, 0xB6, "CRESCENT NETWORKS, INC."}, { 0x00, 0xD0, 0xB7, "INTEL CORPORATION"}, { 0x00, 0xD0, 0xB8, "IOMEGA CORP."}, { 0x00, 0xD0, 0xB9, "MICROTEK INTERNATIONAL, INC."}, { 0x00, 0xD0, 0xBA, "CISCO SYSTEMS, INC."}, { 0x00, 0xD0, 0xBB, "CISCO SYSTEMS, INC."}, { 0x00, 0xD0, 0xBC, "CISCO SYSTEMS, INC."}, { 0x00, 0xD0, 0xBD, "SICAN GMBH"}, { 0x00, 0xD0, 0xBE, "EMUTEC INC."}, { 0x00, 0xD0, 0xBF, "PIVOTAL TECHNOLOGIES"}, { 0x00, 0xD0, 0xC0, "CISCO SYSTEMS, INC."}, { 0x00, 0xD0, 0xC1, "HARMONIC DATA SYSTEMS, LTD."}, { 0x00, 0xD0, 0xC2, "BALTHAZAR TECHNOLOGY AB"}, { 0x00, 0xD0, 0xC3, "VIVID TECHNOLOGY PTE, LTD."}, { 0x00, 0xD0, 0xC4, "TERATECH CORPORATION"}, { 0x00, 0xD0, 0xC5, "COMPUTATIONAL SYSTEMS, INC."}, { 0x00, 0xD0, 0xC6, "THOMAS & BETTS CORP."}, { 0x00, 0xD0, 0xC7, "PATHWAY, INC."}, { 0x00, 0xD0, 0xC8, "I/O CONSULTING A/S"}, { 0x00, 0xD0, 0xC9, "ADVANTECH CO., LTD."}, { 0x00, 0xD0, 0xCA, "INTRINSYC SOFTWARE INC."}, { 0x00, 0xD0, 0xCB, "DASAN CO., LTD."}, { 0x00, 0xD0, 0xCC, "TECHNOLOGIES LYRE INC."}, { 0x00, 0xD0, 0xCD, "ATAN TECHNOLOGY INC."}, { 0x00, 0xD0, 0xCE, "ASYST ELECTRONIC"}, { 0x00, 0xD0, 0xCF, "MORETON BAY"}, { 0x00, 0xD0, 0xD0, "ZHONGXING TELECOM LTD."}, { 0x00, 0xD0, 0xD1, "SIROCCO SYSTEMS, INC."}, { 0x00, 0xD0, 0xD2, "EPILOG CORPORATION"}, { 0x00, 0xD0, 0xD3, "CISCO SYSTEMS, INC."}, { 0x00, 0xD0, 0xD4, "V-BITS, INC."}, { 0x00, 0xD0, 0xD5, "GRUNDIG AG"}, { 0x00, 0xD0, 0xD6, "AETHRA TELECOMUNICAZIONI"}, { 0x00, 0xD0, 0xD7, "B2C2, INC."}, { 0x00, 0xD0, 0xD8, "3Com Corporation"}, { 0x00, 0xD0, 0xD9, "DEDICATED MICROCOMPUTERS"}, { 0x00, 0xD0, 0xDA, "TAICOM DATA SYSTEMS CO., LTD."}, { 0x00, 0xD0, 0xDB, "MCQUAY INTERNATIONAL"}, { 0x00, 0xD0, 0xDC, "MODULAR MINING SYSTEMS, INC."}, { 0x00, 0xD0, 0xDD, "SUNRISE TELECOM, INC."}, { 0x00, 0xD0, 0xDE, "PHILIPS MULTIMEDIA NETWORK"}, { 0x00, 0xD0, 0xDF, "KUZUMI ELECTRONICS, INC."}, { 0x00, 0xD0, 0xE0, "DOOIN ELECTRONICS CO."}, { 0x00, 0xD0, 0xE1, "AVIONITEK ISRAEL INC."}, { 0x00, 0xD0, 0xE2, "MRT MICRO, INC."}, { 0x00, 0xD0, 0xE3, "ELE-CHEM ENGINEERING CO., LTD."}, { 0x00, 0xD0, 0xE4, "CISCO SYSTEMS, INC."}, { 0x00, 0xD0, 0xE5, "SOLIDUM SYSTEMS CORP."}, { 0x00, 0xD0, 0xE6, "IBOND INC."}, { 0x00, 0xD0, 0xE7, "VCON TELECOMMUNICATION LTD."}, { 0x00, 0xD0, 0xE8, "MAC SYSTEM CO., LTD."}, { 0x00, 0xD0, 0xE9, "ADVANTAGE CENTURY"}, { 0x00, 0xD0, 0xEA, "NEXTONE COMMUNICATIONS, INC."}, { 0x00, 0xD0, 0xEB, "LIGHTERA NETWORKS, INC."}, { 0x00, 0xD0, 0xEC, "NAKAYO TELECOMMUNICATIONS, INC"}, { 0x00, 0xD0, 0xED, "XIOX"}, { 0x00, 0xD0, 0xEE, "DICTAPHONE CORPORATION"}, { 0x00, 0xD0, 0xEF, "IGT"}, { 0x00, 0xD0, 0xF0, "CONVISION TECHNOLOGY GMBH"}, { 0x00, 0xD0, 0xF1, "SEGA ENTERPRISES, LTD."}, { 0x00, 0xD0, 0xF2, "MONTEREY NETWORKS"}, { 0x00, 0xD0, 0xF3, "SOLARI DI UDINE SPA"}, { 0x00, 0xD0, 0xF4, "CARINTHIAN TECH INSTITUTE"}, { 0x00, 0xD0, 0xF5, "ORANGE MICRO, INC."}, { 0x00, 0xD0, 0xF6, "Alcatel Canada"}, { 0x00, 0xD0, 0xF7, "NEXT NETS CORPORATION"}, { 0x00, 0xD0, 0xF8, "FUJIAN STAR TERMINAL"}, { 0x00, 0xD0, 0xF9, "ACUTE COMMUNICATIONS CORP."}, { 0x00, 0xD0, 0xFA, "RACAL GUARDATA"}, { 0x00, 0xD0, 0xFB, "TEK MICROSYSTEMS, INCORPORATED"}, { 0x00, 0xD0, 0xFC, "GRANITE MICROSYSTEMS"}, { 0x00, 0xD0, 0xFD, "OPTIMA TELE.COM, INC."}, { 0x00, 0xD0, 0xFE, "ASTRAL POINT"}, { 0x00, 0xD0, 0xFF, "CISCO SYSTEMS, INC."}, { 0x00, 0xDD, 0x00, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x01, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x02, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x03, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x04, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x05, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x06, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x07, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x08, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x09, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x0A, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x0B, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x0C, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x0D, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x0E, "UNGERMANN-BASS INC."}, { 0x00, 0xDD, 0x0F, "UNGERMANN-BASS INC."}, { 0x00, 0xE0, 0x00, "FUJITSU, LTD"}, { 0x00, 0xE0, 0x01, "STRAND LIGHTING LIMITED"}, { 0x00, 0xE0, 0x02, "CROSSROADS SYSTEMS, INC."}, { 0x00, 0xE0, 0x03, "NOKIA WIRELESS BUSINESS COMMUN"}, { 0x00, 0xE0, 0x04, "PMC-SIERRA, INC."}, { 0x00, 0xE0, 0x05, "TECHNICAL CORP."}, { 0x00, 0xE0, 0x06, "SILICON INTEGRATED SYS. CORP."}, { 0x00, 0xE0, 0x07, "NETWORK ALCHEMY LTD."}, { 0x00, 0xE0, 0x08, "AMAZING CONTROLS! INC."}, { 0x00, 0xE0, 0x09, "MARATHON TECHNOLOGIES CORP."}, { 0x00, 0xE0, 0x0A, "DIBA, INC."}, { 0x00, 0xE0, 0x0B, "ROOFTOP COMMUNICATIONS CORP."}, { 0x00, 0xE0, 0x0C, "MOTOROLA"}, { 0x00, 0xE0, 0x0D, "RADIANT SYSTEMS"}, { 0x00, 0xE0, 0x0E, "AVALON IMAGING SYSTEMS, INC."}, { 0x00, 0xE0, 0x0F, "SHANGHAI BAUD DATA"}, { 0x00, 0xE0, 0x10, "HESS SB-AUTOMATENBAU GmbH"}, { 0x00, 0xE0, 0x11, "UNIDEN SAN DIEGO R&D CENTER, INC."}, { 0x00, 0xE0, 0x12, "PLUTO TECHNOLOGIES INTERNATIONAL INC."}, { 0x00, 0xE0, 0x13, "EASTERN ELECTRONIC CO., LTD."}, { 0x00, 0xE0, 0x14, "CISCO SYSTEMS, INC."}, { 0x00, 0xE0, 0x15, "HEIWA CORPORATION"}, { 0x00, 0xE0, 0x16, "RAPID CITY COMMUNICATIONS"}, { 0x00, 0xE0, 0x17, "EXXACT GmbH"}, { 0x00, 0xE0, 0x18, "ASUSTEK COMPUTER INC."}, { 0x00, 0xE0, 0x19, "ING. GIORDANO ELETTRONICA"}, { 0x00, 0xE0, 0x1A, "COMTEC SYSTEMS. CO., LTD."}, { 0x00, 0xE0, 0x1B, "SPHERE COMMUNICATIONS, INC."}, { 0x00, 0xE0, 0x1C, "MOBILITY ELECTRONICSY"}, { 0x00, 0xE0, 0x1D, "WebTV NETWORKS, INC."}, { 0x00, 0xE0, 0x1E, "CISCO SYSTEMS, INC."}, { 0x00, 0xE0, 0x1F, "AVIDIA Systems, Inc."}, { 0x00, 0xE0, 0x20, "TECNOMEN OY"}, { 0x00, 0xE0, 0x21, "FREEGATE CORP."}, { 0x00, 0xE0, 0x22, "MediaLight, Inc."}, { 0x00, 0xE0, 0x23, "TELRAD"}, { 0x00, 0xE0, 0x24, "GADZOOX NETWORKS"}, { 0x00, 0xE0, 0x25, "dit CO., LTD."}, { 0x00, 0xE0, 0x26, "EASTMAN KODAK CO."}, { 0x00, 0xE0, 0x27, "DUX, INC."}, { 0x00, 0xE0, 0x28, "APTIX CORPORATION"}, { 0x00, 0xE0, 0x29, "STANDARD MICROSYSTEMS CORP."}, { 0x00, 0xE0, 0x2A, "TANDBERG TELEVISION AS"}, { 0x00, 0xE0, 0x2B, "EXTREME NETWORKS"}, { 0x00, 0xE0, 0x2C, "AST COMPUTER"}, { 0x00, 0xE0, 0x2D, "InnoMediaLogic, Inc."}, { 0x00, 0xE0, 0x2E, "SPC ELECTRONICS CORPORATION"}, { 0x00, 0xE0, 0x2F, "MCNS HOLDINGS, L.P."}, { 0x00, 0xE0, 0x30, "MELITA INTERNATIONAL CORP."}, { 0x00, 0xE0, 0x31, "HAGIWARA ELECTRIC CO., LTD."}, { 0x00, 0xE0, 0x32, "MISYS FINANCIAL SYSTEMS, LTD."}, { 0x00, 0xE0, 0x33, "E.E.P.D. GmbH"}, { 0x00, 0xE0, 0x34, "CISCO SYSTEMS, INC."}, { 0x00, 0xE0, 0x35, "LOUGHBOROUGH SOUND IMAGES, PLC"}, { 0x00, 0xE0, 0x36, "PIONEER CORPORATION"}, { 0x00, 0xE0, 0x37, "CENTURY CORPORATION"}, { 0x00, 0xE0, 0x38, "PROXIMA CORPORATION"}, { 0x00, 0xE0, 0x39, "PARADYNE CORP."}, { 0x00, 0xE0, 0x3A, "CABLETRON SYSTEMS, INC."}, { 0x00, 0xE0, 0x3B, "PROMINET CORPORATION"}, { 0x00, 0xE0, 0x3C, "AdvanSys"}, { 0x00, 0xE0, 0x3D, "FOCON ELECTRONIC SYSTEMS A/S"}, { 0x00, 0xE0, 0x3E, "ALFATECH, INC."}, { 0x00, 0xE0, 0x3F, "JATON CORPORATION"}, { 0x00, 0xE0, 0x40, "DeskStation Technology, Inc."}, { 0x00, 0xE0, 0x41, "CSPI"}, { 0x00, 0xE0, 0x42, "Pacom Systems Ltd."}, { 0x00, 0xE0, 0x43, "VitalCom"}, { 0x00, 0xE0, 0x44, "LSICS CORPORATION"}, { 0x00, 0xE0, 0x45, "TOUCHWAVE, INC."}, { 0x00, 0xE0, 0x46, "BENTLY NEVADA CORP."}, { 0x00, 0xE0, 0x47, "INFOCUS SYSTEMS"}, { 0x00, 0xE0, 0x48, "SDL COMMUNICATIONS, INC."}, { 0x00, 0xE0, 0x49, "MICROWI ELECTRONIC GmbH"}, { 0x00, 0xE0, 0x4A, "ENHANCED MESSAGING SYSTEMS, INC"}, { 0x00, 0xE0, 0x4B, "JUMP INDUSTRIELLE COMPUTERTECHNIK GmbH"}, { 0x00, 0xE0, 0x4C, "REALTEK SEMICONDUCTOR CORP."}, { 0x00, 0xE0, 0x4D, "INTERNET INITIATIVE JAPAN, INC"}, { 0x00, 0xE0, 0x4E, "SANYO DENKI CO., LTD."}, { 0x00, 0xE0, 0x4F, "CISCO SYSTEMS, INC."}, { 0x00, 0xE0, 0x50, "EXECUTONE INFORMATION SYSTEMS, INC."}, { 0x00, 0xE0, 0x51, "TALX CORPORATION"}, { 0x00, 0xE0, 0x52, "FOUNDRY NETWORKS, INC."}, { 0x00, 0xE0, 0x53, "CELLPORT LABS, INC."}, { 0x00, 0xE0, 0x54, "KODAI HITEC CO., LTD."}, { 0x00, 0xE0, 0x55, "INGENIERIA ELECTRONICA COMERCIAL INELCOM S.A."}, { 0x00, 0xE0, 0x56, "HOLONTECH CORPORATION"}, { 0x00, 0xE0, 0x57, "HAN MICROTELECOM. CO., LTD."}, { 0x00, 0xE0, 0x58, "PHASE ONE DENMARK A/S"}, { 0x00, 0xE0, 0x59, "CONTROLLED ENVIRONMENTS, LTD."}, { 0x00, 0xE0, 0x5A, "GALEA NETWORK SECURITY"}, { 0x00, 0xE0, 0x5B, "WEST END SYSTEMS CORP."}, { 0x00, 0xE0, 0x5C, "MATSUSHITA KOTOBUKI ELECTRONICS INDUSTRIES, LTD."}, { 0x00, 0xE0, 0x5D, "UNITEC CO., LTD."}, { 0x00, 0xE0, 0x5E, "JAPAN AVIATION ELECTRONICS INDUSTRY, LTD."}, { 0x00, 0xE0, 0x5F, "e-Net, Inc."}, { 0x00, 0xE0, 0x60, "SHERWOOD"}, { 0x00, 0xE0, 0x61, "EdgePoint Networks, Inc."}, { 0x00, 0xE0, 0x62, "HOST ENGINEERING"}, { 0x00, 0xE0, 0x63, "CABLETRON - YAGO SYSTEMS, INC."}, { 0x00, 0xE0, 0x64, "SAMSUNG ELECTRONICS"}, { 0x00, 0xE0, 0x65, "OPTICAL ACCESS INTERNATIONAL"}, { 0x00, 0xE0, 0x66, "ProMax Systems, Inc."}, { 0x00, 0xE0, 0x67, "eac AUTOMATION-CONSULTING GmbH"}, { 0x00, 0xE0, 0x68, "MERRIMAC SYSTEMS INC."}, { 0x00, 0xE0, 0x69, "JAYCOR"}, { 0x00, 0xE0, 0x6A, "KAPSCH AG"}, { 0x00, 0xE0, 0x6B, "W&G SPECIAL PRODUCTS"}, { 0x00, 0xE0, 0x6C, "BALTIMORE TECHNOLOGIES, LTD."}, { 0x00, 0xE0, 0x6D, "COMPUWARE CORPORATION"}, { 0x00, 0xE0, 0x6E, "FAR SYSTEMS S.p.A."}, { 0x00, 0xE0, 0x6F, "TERAYON CORP."}, { 0x00, 0xE0, 0x70, "DH TECHNOLOGY"}, { 0x00, 0xE0, 0x71, "EPIS MICROCOMPUTER"}, { 0x00, 0xE0, 0x72, "LYNK"}, { 0x00, 0xE0, 0x73, "NATIONAL AMUSEMENT NETWORK, INC."}, { 0x00, 0xE0, 0x74, "TIERNAN COMMUNICATIONS, INC."}, { 0x00, 0xE0, 0x75, "ATLAS COMPUTER EQUIPMENT, INC."}, { 0x00, 0xE0, 0x76, "DEVELOPMENT CONCEPTS, INC."}, { 0x00, 0xE0, 0x77, "WEBGEAR, INC."}, { 0x00, 0xE0, 0x78, "BERKELEY NETWORKS"}, { 0x00, 0xE0, 0x79, "A.T.N.R."}, { 0x00, 0xE0, 0x7A, "MIKRODIDAKT AB"}, { 0x00, 0xE0, 0x7B, "BAY NETWORKS"}, { 0x00, 0xE0, 0x7C, "METTLER-TOLEDO, INC."}, { 0x00, 0xE0, 0x7D, "NETRONIX, INC."}, { 0x00, 0xE0, 0x7E, "WALT DISNEY IMAGINEERING"}, { 0x00, 0xE0, 0x7F, "LOGISTISTEM s.r.l."}, { 0x00, 0xE0, 0x80, "CONTROL RESOURCES CORPORATION"}, { 0x00, 0xE0, 0x81, "TYAN COMPUTER CORP."}, { 0x00, 0xE0, 0x82, "ANERMA"}, { 0x00, 0xE0, 0x83, "JATO TECHNOLOGIES, INC."}, { 0x00, 0xE0, 0x84, "COMPULITE R&D"}, { 0x00, 0xE0, 0x85, "GLOBAL MAINTECH, INC."}, { 0x00, 0xE0, 0x86, "CYBEX COMPUTER PRODUCTS"}, { 0x00, 0xE0, 0x87, "LeCroy - Networking Productions Division"}, { 0x00, 0xE0, 0x88, "LTX CORPORATION"}, { 0x00, 0xE0, 0x89, "ION Networks, Inc."}, { 0x00, 0xE0, 0x8A, "GEC AVERY, LTD."}, { 0x00, 0xE0, 0x8B, "QLogic Corp."}, { 0x00, 0xE0, 0x8C, "NEOPARADIGM LABS, INC."}, { 0x00, 0xE0, 0x8D, "PRESSURE SYSTEMS, INC."}, { 0x00, 0xE0, 0x8E, "UTSTARCOM"}, { 0x00, 0xE0, 0x8F, "CISCO SYSTEMS, INC."}, { 0x00, 0xE0, 0x90, "BECKMAN LAB. AUTOMATION DIV."}, { 0x00, 0xE0, 0x91, "LG ELECTRONICS, INC."}, { 0x00, 0xE0, 0x92, "ADMTEK INCORPORATED"}, { 0x00, 0xE0, 0x93, "ACKFIN NETWORKS"}, { 0x00, 0xE0, 0x94, "OSAI SRL"}, { 0x00, 0xE0, 0x95, "ADVANCED-VISION TECHNOLGIES CORP."}, { 0x00, 0xE0, 0x96, "SHIMADZU CORPORATION"}, { 0x00, 0xE0, 0x97, "CARRIER ACCESS CORPORATION"}, { 0x00, 0xE0, 0x98, "AboCom Systems, Inc."}, { 0x00, 0xE0, 0x99, "SAMSON AG"}, { 0x00, 0xE0, 0x9A, "POSITRON INDUSTRIES, INC."}, { 0x00, 0xE0, 0x9B, "ENGAGE NETWORKS, INC."}, { 0x00, 0xE0, 0x9C, "MII"}, { 0x00, 0xE0, 0x9D, "SARNOFF CORPORATION"}, { 0x00, 0xE0, 0x9E, "QUANTUM CORPORATION"}, { 0x00, 0xE0, 0x9F, "PIXEL VISION"}, { 0x00, 0xE0, 0xA0, "WILTRON CO."}, { 0x00, 0xE0, 0xA1, "HIMA PAUL HILDEBRANDT GmbH Co. KG"}, { 0x00, 0xE0, 0xA2, "MICROSLATE INC."}, { 0x00, 0xE0, 0xA3, "CISCO SYSTEMS, INC."}, { 0x00, 0xE0, 0xA4, "ESAOTE S.p.A."}, { 0x00, 0xE0, 0xA5, "ComCore Semiconductor, Inc."}, { 0x00, 0xE0, 0xA6, "TELOGY NETWORKS, INC."}, { 0x00, 0xE0, 0xA7, "IPC INFORMATION SYSTEMS, INC."}, { 0x00, 0xE0, 0xA8, "SAT GmbH & Co."}, { 0x00, 0xE0, 0xA9, "FUNAI ELECTRIC CO., LTD."}, { 0x00, 0xE0, 0xAA, "ELECTROSONIC LTD."}, { 0x00, 0xE0, 0xAB, "DIMAT S.A."}, { 0x00, 0xE0, 0xAC, "MIDSCO, INC."}, { 0x00, 0xE0, 0xAD, "EES TECHNOLOGY, LTD."}, { 0x00, 0xE0, 0xAE, "XAQTI CORPORATION"}, { 0x00, 0xE0, 0xAF, "GENERAL DYNAMICS INFORMATION SYSTEMS"}, { 0x00, 0xE0, 0xB0, "CISCO SYSTEMS, INC."}, { 0x00, 0xE0, 0xB1, "PACKET ENGINES, INC."}, { 0x00, 0xE0, 0xB2, "TELMAX COMMUNICATIONS CORP."}, { 0x00, 0xE0, 0xB3, "EtherWAN Systems, Inc."}, { 0x00, 0xE0, 0xB4, "TECHNO SCOPE CO., LTD."}, { 0x00, 0xE0, 0xB5, "ARDENT COMMUNICATIONS CORP."}, { 0x00, 0xE0, 0xB6, "Entrada Networks"}, { 0x00, 0xE0, 0xB7, "PI GROUP, LTD."}, { 0x00, 0xE0, 0xB8, "GATEWAY 2000"}, { 0x00, 0xE0, 0xB9, "BYAS SYSTEMS"}, { 0x00, 0xE0, 0xBA, "BERGHOF AUTOMATIONSTECHNIK GmbH"}, { 0x00, 0xE0, 0xBB, "NBX CORPORATION"}, { 0x00, 0xE0, 0xBC, "SYMON COMMUNICATIONS, INC."}, { 0x00, 0xE0, 0xBD, "INTERFACE SYSTEMS, INC."}, { 0x00, 0xE0, 0xBE, "GENROCO INTERNATIONAL, INC."}, { 0x00, 0xE0, 0xBF, "TORRENT NETWORKING TECHNOLOGIES CORP."}, { 0x00, 0xE0, 0xC0, "SEIWA ELECTRIC MFG. CO., LTD."}, { 0x00, 0xE0, 0xC1, "MEMOREX TELEX JAPAN, LTD."}, { 0x00, 0xE0, 0xC2, "NECSY S.p.A."}, { 0x00, 0xE0, 0xC3, "SAKAI SYSTEM DEVELOPMENT CORP."}, { 0x00, 0xE0, 0xC4, "HORNER ELECTRIC, INC."}, { 0x00, 0xE0, 0xC5, "BCOM ELECTRONICS INC."}, { 0x00, 0xE0, 0xC6, "LINK2IT, L.L.C."}, { 0x00, 0xE0, 0xC7, "EUROTECH SRL"}, { 0x00, 0xE0, 0xC8, "VIRTUAL ACCESS, LTD."}, { 0x00, 0xE0, 0xC9, "AutomatedLogic Corporation"}, { 0x00, 0xE0, 0xCA, "BEST DATA PRODUCTS"}, { 0x00, 0xE0, 0xCB, "RESON, INC."}, { 0x00, 0xE0, 0xCC, "HERO SYSTEMS, LTD."}, { 0x00, 0xE0, 0xCD, "SENSIS CORPORATION"}, { 0x00, 0xE0, 0xCE, "ARN"}, { 0x00, 0xE0, 0xCF, "INTEGRATED DEVICE TECHNOLOGY, INC."}, { 0x00, 0xE0, 0xD0, "NETSPEED, INC."}, { 0x00, 0xE0, 0xD1, "TELSIS LIMITED"}, { 0x00, 0xE0, 0xD2, "VERSANET COMMUNICATIONS, INC."}, { 0x00, 0xE0, 0xD3, "DATENTECHNIK GmbH"}, { 0x00, 0xE0, 0xD4, "EXCELLENT COMPUTER"}, { 0x00, 0xE0, 0xD5, "ARCXEL TECHNOLOGIES, INC."}, { 0x00, 0xE0, 0xD6, "COMPUTER & COMMUNICATION RESEARCH LAB."}, { 0x00, 0xE0, 0xD7, "SUNSHINE ELECTRONICS, INC."}, { 0x00, 0xE0, 0xD8, "LANBit Computer, Inc."}, { 0x00, 0xE0, 0xD9, "TAZMO CO., LTD."}, { 0x00, 0xE0, 0xDA, "ASSURED ACCESS TECHNOLOGY, INC."}, { 0x00, 0xE0, 0xDB, "ViaVideo Communications, Inc."}, { 0x00, 0xE0, 0xDC, "NEXWARE CORP."}, { 0x00, 0xE0, 0xDD, "ZENITH ELECTRONICS CORPORATION"}, { 0x00, 0xE0, 0xDE, "DATAX NV"}, { 0x00, 0xE0, 0xDF, "KE KOMMUNIKATIONS-ELECTRONIK"}, { 0x00, 0xE0, 0xE0, "SI ELECTRONICS, LTD."}, { 0x00, 0xE0, 0xE1, "G2 NETWORKS, INC."}, { 0x00, 0xE0, 0xE2, "INNOVA CORP."}, { 0x00, 0xE0, 0xE3, "SK-ELEKTRONIK GmbH"}, { 0x00, 0xE0, 0xE4, "FANUC ROBOTICS NORTH AMERICA, Inc."}, { 0x00, 0xE0, 0xE5, "CINCO NETWORKS, INC."}, { 0x00, 0xE0, 0xE6, "INCAA DATACOM B.V."}, { 0x00, 0xE0, 0xE7, "RAYTHEON E-SYSTEMS, INC."}, { 0x00, 0xE0, 0xE8, "GRETACODER Data Systems AG"}, { 0x00, 0xE0, 0xE9, "DATA LABS, INC."}, { 0x00, 0xE0, 0xEA, "INNOVAT COMMUNICATIONS, INC."}, { 0x00, 0xE0, 0xEB, "DIGICOM SYSTEMS, INCORPORATED"}, { 0x00, 0xE0, 0xEC, "CELESTICA INC."}, { 0x00, 0xE0, 0xED, "SILICOM, LTD."}, { 0x00, 0xE0, 0xEE, "MAREL HF"}, { 0x00, 0xE0, 0xEF, "DIONEX"}, { 0x00, 0xE0, 0xF0, "ABLER TECHNOLOGY, INC."}, { 0x00, 0xE0, 0xF1, "THAT CORPORATION"}, { 0x00, 0xE0, 0xF2, "ARLOTTO COMNET, INC."}, { 0x00, 0xE0, 0xF3, "WebSprint Communications, Inc."}, { 0x00, 0xE0, 0xF4, "INSIDE Technology A/S"}, { 0x00, 0xE0, 0xF5, "TELES AG"}, { 0x00, 0xE0, 0xF6, "DECISION EUROPE"}, { 0x00, 0xE0, 0xF7, "CISCO SYSTEMS, INC."}, { 0x00, 0xE0, 0xF8, "DICNA CONTROL AB"}, { 0x00, 0xE0, 0xF9, "CISCO SYSTEMS, INC."}, { 0x00, 0xE0, 0xFA, "TRL TECHNOLOGY, LTD."}, { 0x00, 0xE0, 0xFB, "LEIGHTRONIX, INC."}, { 0x00, 0xE0, 0xFC, "HUAWEI TECHNOLOGIES CO., LTD."}, { 0x00, 0xE0, 0xFD, "A-TREND TECHNOLOGY CO., LTD."}, { 0x00, 0xE0, 0xFE, "CISCO SYSTEMS, INC."}, { 0x00, 0xE0, 0xFF, "SECURITY DYNAMICS TECHNOLOGIES, Inc."}, { 0x00, 0xE6, 0xD3, "NIXDORF COMPUTER CORP."}, { 0x02, 0x07, 0x01, "RACAL-DATACOM"}, { 0x02, 0x1C, 0x7C, "PERQ SYSTEMS CORPORATION"}, { 0x02, 0x60, 0x86, "LOGIC REPLACEMENT TECH. LTD."}, { 0x02, 0x60, 0x8C, "3COM CORPORATION"}, { 0x02, 0x70, 0x01, "RACAL-DATACOM"}, { 0x02, 0x70, 0xB0, "M/A-COM INC. COMPANIES"}, { 0x02, 0x70, 0xB3, "DATA RECALL LTD"}, { 0x02, 0x9D, 0x8E, "CARDIAC RECORDERS INC."}, { 0x02, 0xAA, 0x3C, "OLIVETTI TELECOMM SPA (OLTECO)"}, { 0x02, 0xBB, 0x01, "OCTOTHORPE CORP."}, { 0x02, 0xC0, 0x8C, "3COM CORPORATION"}, { 0x02, 0xCF, 0x1C, "COMMUNICATION MACHINERY CORP."}, { 0x02, 0xE6, 0xD3, "NIXDORF COMPUTER CORPORATION"}, { 0x04, 0x0A, 0xE0, "XMIT AG COMPUTER NETWORKS"}, { 0x04, 0xE0, 0xC4, "TRIUMPH-ADLER AG"}, { 0x08, 0x00, 0x01, "COMPUTERVISION CORPORATION"}, { 0x08, 0x00, 0x02, "BRIDGE COMMUNICATIONS INC."}, { 0x08, 0x00, 0x03, "ADVANCED COMPUTER COMM."}, { 0x08, 0x00, 0x04, "CROMEMCO INCORPORATED"}, { 0x08, 0x00, 0x05, "SYMBOLICS INC."}, { 0x08, 0x00, 0x06, "SIEMENS AG"}, { 0x08, 0x00, 0x07, "APPLE COMPUTER INC."}, { 0x08, 0x00, 0x08, "BOLT BERANEK AND NEWMAN INC."}, { 0x08, 0x00, 0x09, "HEWLETT PACKARD"}, { 0x08, 0x00, 0x0A, "NESTAR SYSTEMS INCORPORATED"}, { 0x08, 0x00, 0x0B, "UNISYS CORPORATION"}, { 0x08, 0x00, 0x0C, "MIKLYN DEVELOPMENT CO."}, { 0x08, 0x00, 0x0D, "INTERNATIONAL COMPUTERS LTD."}, { 0x08, 0x00, 0x0E, "NCR CORPORATION"}, { 0x08, 0x00, 0x0F, "MITEL CORPORATION"}, { 0x08, 0x00, 0x11, "TEKTRONIX INC."}, { 0x08, 0x00, 0x12, "BELL ATLANTIC INTEGRATED SYST."}, { 0x08, 0x00, 0x13, "EXXON"}, { 0x08, 0x00, 0x14, "EXCELAN"}, { 0x08, 0x00, 0x15, "STC BUSINESS SYSTEMS"}, { 0x08, 0x00, 0x16, "BARRISTER INFO SYS CORP"}, { 0x08, 0x00, 0x17, "NATIONAL SEMICONDUCTOR"}, { 0x08, 0x00, 0x18, "PIRELLI FOCOM NETWORKS"}, { 0x08, 0x00, 0x19, "GENERAL ELECTRIC CORPORATION"}, { 0x08, 0x00, 0x1A, "TIARA/ 10NET"}, { 0x08, 0x00, 0x1B, "DATA GENERAL"}, { 0x08, 0x00, 0x1C, "KDD-KOKUSAI DEBNSIN DENWA CO."}, { 0x08, 0x00, 0x1D, "ABLE COMMUNICATIONS INC."}, { 0x08, 0x00, 0x1E, "APOLLO COMPUTER INC."}, { 0x08, 0x00, 0x1F, "SHARP CORPORATION"}, { 0x08, 0x00, 0x20, "SUN MICROSYSTEMS INC."}, { 0x08, 0x00, 0x21, "3M COMPANY"}, { 0x08, 0x00, 0x22, "NBI INC."}, { 0x08, 0x00, 0x23, "MATSUHITA GRAPHIC COMM SYS INC"}, { 0x08, 0x00, 0x24, "10NET COMMUNICATIONS/DCA"}, { 0x08, 0x00, 0x25, "CONTROL DATA"}, { 0x08, 0x00, 0x26, "NORSK DATA A.S."}, { 0x08, 0x00, 0x27, "CADMUS COMPUTER SYSTEMS"}, { 0x08, 0x00, 0x28, "Texas Instruments"}, { 0x08, 0x00, 0x29, "MEGATEK CORPORATION"}, { 0x08, 0x00, 0x2A, "MOSAIC TECHNOLOGIES INC."}, { 0x08, 0x00, 0x2B, "DIGITAL EQUIPMENT CORPORATION"}, { 0x08, 0x00, 0x2C, "BRITTON LEE INC."}, { 0x08, 0x00, 0x2D, "LAN-TEC INC."}, { 0x08, 0x00, 0x2E, "METAPHOR COMPUTER SYSTEMS"}, { 0x08, 0x00, 0x2F, "PRIME COMPUTER INC."}, { 0x08, 0x00, 0x30, "NETWORK RESEARCH CORPORATION"}, { 0x08, 0x00, 0x30, "CERN"}, { 0x08, 0x00, 0x30, "ROYAL MELBOURNE INST OF TECH"}, { 0x08, 0x00, 0x31, "LITTLE MACHINES INC."}, { 0x08, 0x00, 0x32, "TIGAN INCORPORATED"}, { 0x08, 0x00, 0x33, "BAUSCH & LOMB"}, { 0x08, 0x00, 0x34, "FILENET CORPORATION"}, { 0x08, 0x00, 0x35, "MICROFIVE CORPORATION"}, { 0x08, 0x00, 0x36, "INTERGRAPH CORPORATION"}, { 0x08, 0x00, 0x37, "FUJI-XEROX CO. LTD."}, { 0x08, 0x00, 0x38, "CII HONEYWELL BULL"}, { 0x08, 0x00, 0x39, "SPIDER SYSTEMS LIMITED"}, { 0x08, 0x00, 0x3A, "ORCATECH INC."}, { 0x08, 0x00, 0x3B, "TORUS SYSTEMS LIMITED"}, { 0x08, 0x00, 0x3C, "SCHLUMBERGER WELL SERVICES"}, { 0x08, 0x00, 0x3D, "CADNETIX CORPORATIONS"}, { 0x08, 0x00, 0x3E, "CODEX CORPORATION"}, { 0x08, 0x00, 0x3F, "FRED KOSCHARA ENTERPRISES"}, { 0x08, 0x00, 0x40, "FERRANTI COMPUTER SYS. LIMITED"}, { 0x08, 0x00, 0x41, "RACAL-MILGO INFORMATION SYS.."}, { 0x08, 0x00, 0x42, "JAPAN MACNICS CORP."}, { 0x08, 0x00, 0x43, "PIXEL COMPUTER INC."}, { 0x08, 0x00, 0x44, "DAVID SYSTEMS INC."}, { 0x08, 0x00, 0x45, "CONCURRENT COMPUTER CORP."}, { 0x08, 0x00, 0x46, "SONY CORPORATION LTD."}, { 0x08, 0x00, 0x47, "SEQUENT COMPUTER SYSTEMS INC."}, { 0x08, 0x00, 0x48, "EUROTHERM GAUGING SYSTEMS"}, { 0x08, 0x00, 0x49, "UNIVATION"}, { 0x08, 0x00, 0x4A, "BANYAN SYSTEMS INC."}, { 0x08, 0x00, 0x4B, "PLANNING RESEARCH CORP."}, { 0x08, 0x00, 0x4C, "HYDRA COMPUTER SYSTEMS INC."}, { 0x08, 0x00, 0x4D, "CORVUS SYSTEMS INC."}, { 0x08, 0x00, 0x4E, "3COM EUROPE LTD."}, { 0x08, 0x00, 0x4F, "CYGNET SYSTEMS"}, { 0x08, 0x00, 0x50, "DAISY SYSTEMS CORP."}, { 0x08, 0x00, 0x51, "EXPERDATA"}, { 0x08, 0x00, 0x52, "INSYSTEC"}, { 0x08, 0x00, 0x53, "MIDDLE EAST TECH. UNIVERSITY"}, { 0x08, 0x00, 0x55, "STANFORD TELECOMM. INC."}, { 0x08, 0x00, 0x56, "STANFORD LINEAR ACCEL. CENTER"}, { 0x08, 0x00, 0x57, "EVANS & SUTHERLAND"}, { 0x08, 0x00, 0x58, "SYSTEMS CONCEPTS"}, { 0x08, 0x00, 0x59, "A/S MYCRON"}, { 0x08, 0x00, 0x5A, "IBM CORPORATION"}, { 0x08, 0x00, 0x5B, "VTA TECHNOLOGIES INC."}, { 0x08, 0x00, 0x5C, "FOUR PHASE SYSTEMS"}, { 0x08, 0x00, 0x5D, "GOULD INC."}, { 0x08, 0x00, 0x5E, "COUNTERPOINT COMPUTER INC."}, { 0x08, 0x00, 0x5F, "SABER TECHNOLOGY CORP."}, { 0x08, 0x00, 0x60, "INDUSTRIAL NETWORKING INC."}, { 0x08, 0x00, 0x61, "JAROGATE LTD."}, { 0x08, 0x00, 0x62, "GENERAL DYNAMICS"}, { 0x08, 0x00, 0x63, "PLESSEY"}, { 0x08, 0x00, 0x64, "AUTOPHON AG"}, { 0x08, 0x00, 0x65, "GENRAD INC."}, { 0x08, 0x00, 0x66, "AGFA CORPORATION"}, { 0x08, 0x00, 0x67, "COMDESIGN"}, { 0x08, 0x00, 0x68, "RIDGE COMPUTERS"}, { 0x08, 0x00, 0x69, "SILICON GRAPHICS INC."}, { 0x08, 0x00, 0x6A, "ATT BELL LABORATORIES"}, { 0x08, 0x00, 0x6B, "ACCEL TECHNOLOGIES INC."}, { 0x08, 0x00, 0x6C, "SUNTEK TECHNOLOGY INT'L"}, { 0x08, 0x00, 0x6D, "WHITECHAPEL COMPUTER WORKS"}, { 0x08, 0x00, 0x6E, "MASSCOMP"}, { 0x08, 0x00, 0x6F, "PHILIPS APELDOORN B.V."}, { 0x08, 0x00, 0x70, "MITSUBISHI ELECTRIC CORP."}, { 0x08, 0x00, 0x71, "MATRA (DSIE)"}, { 0x08, 0x00, 0x72, "XEROX CORP UNIV GRANT PROGRAM"}, { 0x08, 0x00, 0x73, "TECMAR INC."}, { 0x08, 0x00, 0x74, "CASIO COMPUTER CO. LTD."}, { 0x08, 0x00, 0x75, "DANSK DATA ELECTRONIK"}, { 0x08, 0x00, 0x76, "PC LAN TECHNOLOGIES"}, { 0x08, 0x00, 0x77, "TSL COMMUNICATIONS LTD."}, { 0x08, 0x00, 0x78, "ACCELL CORPORATION"}, { 0x08, 0x00, 0x79, "THE DROID WORKS"}, { 0x08, 0x00, 0x7A, "INDATA"}, { 0x08, 0x00, 0x7B, "SANYO ELECTRIC CO. LTD."}, { 0x08, 0x00, 0x7C, "VITALINK COMMUNICATIONS CORP."}, { 0x08, 0x00, 0x7E, "AMALGAMATED WIRELESS(AUS) LTD"}, { 0x08, 0x00, 0x7F, "CARNEGIE-MELLON UNIVERSITY"}, { 0x08, 0x00, 0x80, "AES DATA INC."}, { 0x08, 0x00, 0x81, ",ASTECH INC."}, { 0x08, 0x00, 0x82, "VERITAS SOFTWARE"}, { 0x08, 0x00, 0x83, "SEIKO INSTRUM. AND ELECTRONICS"}, { 0x08, 0x00, 0x84, "TOMEN ELECTRONICS CORP."}, { 0x08, 0x00, 0x85, "ELXSI"}, { 0x08, 0x00, 0x86, "IMAGEN CORPORATION"}, { 0x08, 0x00, 0x87, "XYPLEX"}, { 0x08, 0x00, 0x88, "MCDATA CORPORATION"}, { 0x08, 0x00, 0x89, "KINETICS"}, { 0x08, 0x00, 0x8A, "PERFORMANCE TECHNOLOGY"}, { 0x08, 0x00, 0x8B, "PYRAMID TECHNOLOGY CORP."}, { 0x08, 0x00, 0x8C, "NETWORK RESEARCH CORPORATION"}, { 0x08, 0x00, 0x8D, "XYVISION INC."}, { 0x08, 0x00, 0x8E, "TANDEM COMPUTERS"}, { 0x08, 0x00, 0x8F, "CHIPCOM CORPORATION"}, { 0x08, 0x00, 0x90, "SONOMA SYSTEMS"}, { 0x08, 0x14, 0x43, "UNIBRAIN S.A."}, { 0x08, 0xBB, 0xCC, "AK-NORD EDV VERTRIEBSGES. mbH"}, { 0x10, 0x00, 0x5A, "IBM CORPORATION"}, { 0x10, 0x00, 0xE8, "NATIONAL SEMICONDUCTOR"}, { 0x80, 0x00, 0x10, "ATT BELL LABORATORIES"}, { 0xA0, 0x6A, 0x00, "Verilink Corporation"}, { 0xAA, 0x00, 0x00, "DIGITAL EQUIPMENT CORPORATION"}, { 0xAA, 0x00, 0x01, "DIGITAL EQUIPMENT CORPORATION"}, { 0xAA, 0x00, 0x02, "DIGITAL EQUIPMENT CORPORATION"}, { 0xAA, 0x00, 0x03, "DIGITAL EQUIPMENT CORPORATION"}, { 0xAA, 0x00, 0x04, "DIGITAL EQUIPMENT CORPORATION"} }; int i = sizeof(oui_list) / sizeof(oui_list[1]) - 1; while (i > 0) { if (oui_list[i].oui1 == mac[0] && oui_list[i].oui2 == mac[1] && oui_list[i].oui3 == mac[2]) return oui_list[i].organization; i--; } return _("Unknown or Private"); } ap-utils-1.5/lib/radio.c000066400000000000000000000207431117246662700151470ustar00rootroot00000000000000/* * radio.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include "ap-utils.h" #define RADIO_HELP _("[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu") #define ANTENNA _("Antenna:") #define ANTENNA_LEFT _("[L] Left:") #define ANTENNA_RIGHT _("[R] Right:") extern WINDOW *main_sub; extern short ap_type; void power() { char TestModeRadioConfiguration[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x08, 0x08, 0x00 }; char operAntennaSettings[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x0C, 0x00 }; #if defined(WORDS_BIGENDIAN) struct twobytes_antenna_struct { int reserv2:6; int trans_right:1; int trans_left:1; int reserv1:6; int recv_right:1; int recv_left:1; }; struct onebyte_antenna_struct { int reserv:6; int right:1; int left:1; }; #else /* !WORDS_BIGENDIAN */ struct twobytes_antenna_struct { int recv_left:1; int recv_right:1; int reserv1:6; int trans_left:1; int trans_right:1; int reserv2:6; }; struct onebyte_antenna_struct { int left:1; int right:1; int reserv:6; }; #endif /* !WORDS_BIGENDIAN */ union antenna_union { struct twobytes_antenna_struct antennas_tb; unsigned short antennai; struct onebyte_antenna_struct antennas_ob; char antennac; } antenna; char message[1024]; unsigned char power[14], m_power = 0, a[] = { 0, 0 }, m_antenna = 0; varbind varbinds[2]; int i, c = 0, antenna_vlen; if (ap_type == ATMEL12350) { TestModeRadioConfiguration[5] = 0xE0; TestModeRadioConfiguration[6] = 0x3E; operAntennaSettings[5] = 0xE0; operAntennaSettings[6] = 0x3E; } varbinds[0].oid = TestModeRadioConfiguration; varbinds[0].len_oid = sizeof(TestModeRadioConfiguration); varbinds[0].value = TestModeRadioConfiguration; varbinds[0].len_val = 0; varbinds[0].type = NULL_VALUE; varbinds[1].oid = operAntennaSettings; varbinds[1].value = TestModeRadioConfiguration; varbinds[1].len_oid = sizeof(operAntennaSettings); varbinds[1].len_val = 0; varbinds[1].type = NULL_VALUE; print_help(WAIT_RET); if (snmp(varbinds, 2, GET) < 2) { print_helperr(ERR_RET); goto exit; } print_help(RADIO_HELP); memcpy(power, varbinds[0].value, 14); antenna_vlen = varbinds[1].len_val; print_top(NULL, _("Radio Configuration")); mvwaddstr(main_sub, 0, 1, _("Output RF signal power level (CR31 register values)")); mvwaddstr(main_sub, 1, 1, "---------------------------------------------------"); mvwaddstr(main_sub, 2, 1, _("Key Channel Level")); for (i = 0; i < 14; i++) { sprintf(message, "[%X] %02u %3u", i + 1, i + 1, power[i]); mvwaddstr(main_sub, i + 3, 1, message); } if (antenna_vlen == 2) { memcpy(&antenna.antennai, varbinds[1].value, 2); antenna.antennai = ntohs(antenna.antennai); sprintf(message, "%s %s %3s, %s %3s", ANTENNA_RX, ANTENNA_RX_LEFT, (antenna.antennas_tb.recv_left) ? ON : OFF, ANTENNA_RX_RIGHT, (antenna.antennas_tb.recv_right) ? ON : OFF); mvwaddstr(main_sub, 18, 1, message); sprintf(message, "%s %s %3s, %s %3s", ANTENNA_TX, ANTENNA_TX_LEFT, (antenna.antennas_tb.trans_left) ? ON : OFF, ANTENNA_TX_RIGHT, (antenna.antennas_tb.trans_right) ? ON : OFF); mvwaddstr(main_sub, 19, 1, message); } else { /* antenna_vlen == 1 */ antenna.antennac = *varbinds[1].value; sprintf(message, "%s %s %3s, %s %3s", ANTENNA, ANTENNA_LEFT, (antenna.antennas_ob.left) ? ON : OFF, ANTENNA_RIGHT, (antenna.antennas_ob.right) ? ON : OFF); mvwaddstr(main_sub, 18, 1, message); } wrefresh(main_sub); noecho(); while (1) { c = getch(); switch (c) { case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'a': case 'b': case 'c': case 'd': case 'e': case 'A': case 'B': case 'C': case 'D': case 'E': a[0] = c; i = strtol(a, NULL, 16); get_value(message, i + 2, 14, 4, INT_STRING, 0, 255, RADIO_HELP); c = atoi(message) & 0xFF; power[i - 1] = c; m_power = 1; continue; case 'i': case 'I': if (antenna_vlen == 1) continue; i = strlen(ANTENNA_RX) + 1 + strlen(ANTENNA_RX_LEFT) + 6 + strlen(ANTENNA_RX_RIGHT) + 2; m_antenna = on_off(18, i); antenna.antennas_tb.recv_right = (m_antenna == 2) ? 0 : 1; sprintf(message, "%3s", (antenna.antennas_tb.recv_right) ? ON : OFF); print_menusel(18, i, NULL, message); continue; case 'u': case 'U': if (antenna_vlen == 1) continue; i = strlen(ANTENNA_RX) + 1 + strlen(ANTENNA_RX_LEFT) + 2; m_antenna = on_off(18, i); antenna.antennas_tb.recv_left = (m_antenna == 2) ? 0 : 1; sprintf(message, "%3s", (antenna.antennas_tb.recv_left) ? ON : OFF); print_menusel(18, i, NULL, message); continue; case 'p': case 'P': if (antenna_vlen == 1) continue; i = strlen(ANTENNA_TX) + 1 + strlen(ANTENNA_TX_LEFT) + 6 + strlen(ANTENNA_TX_RIGHT) + 2; m_antenna = on_off(19, i); antenna.antennas_tb.trans_right = (m_antenna == 2) ? 0 : 1; sprintf(message, "%3s", (antenna.antennas_tb.trans_right) ? ON : OFF); print_menusel(19, i, NULL, message); continue; case 'o': case 'O': if (antenna_vlen == 1) continue; i = strlen(ANTENNA_TX) + 1 + strlen(ANTENNA_TX_LEFT) + 2; m_antenna = on_off(19, i); antenna.antennas_tb.trans_left = (m_antenna == 2) ? 0 : 1; sprintf(message, "%3s", (antenna.antennas_tb.trans_left) ? ON : OFF); print_menusel(19, i, NULL, message); continue; case 'r': case 'R': if (antenna_vlen == 2) continue; i = strlen(ANTENNA) + 1 + strlen(ANTENNA_LEFT) + 6 + strlen(ANTENNA_RIGHT) + 2; m_antenna = on_off(18, i); antenna.antennas_ob.right = (m_antenna == 2) ? 0 : 1; sprintf(message, "%3s", (antenna.antennas_ob.right) ? ON : OFF); print_menusel(18, i, NULL, message); continue; case 'l': case 'L': if (antenna_vlen == 2) continue; i = strlen(ANTENNA) + 1 + strlen(ANTENNA_LEFT) + 2; m_antenna = on_off(18, i); antenna.antennas_ob.left = (m_antenna == 2) ? 0 : 1; sprintf(message, "%3s", (antenna.antennas_ob.left) ? ON : OFF); print_menusel(18, i, NULL, message); continue; case 'q': case 'Q': goto quit; case 'w': case 'W': i = 0; if (m_power) { varbinds[i].oid = TestModeRadioConfiguration; varbinds[i].len_oid = sizeof(TestModeRadioConfiguration); varbinds[i].value = power; varbinds[i].len_val = 14; varbinds[i].type = STRING_VALUE; i++; } if (m_antenna) { if ( (antenna_vlen == 1 && (antenna.antennas_ob.left == 0 && antenna.antennas_ob.right == 0)) || (antenna_vlen == 2 && ( (antenna.antennas_tb.trans_left == 0 && antenna.antennas_tb.trans_right == 0) || (antenna.antennas_tb.recv_left == 0 && antenna.antennas_tb.recv_right == 0))) ) { print_helperr (_ ("You can't disable both antennas; unable to save antenna-config. Press any key.")); getch(); } else { varbinds[i].oid = operAntennaSettings; varbinds[i].len_oid = sizeof(operAntennaSettings); if (antenna_vlen == 2) { unsigned short antenna_hw = htons(antenna.antennai); varbinds[i].value = (char *) &antenna_hw; } else /* antenna_vlen == 1 */ varbinds[i].value = &antenna.antennac; varbinds[i].type = INT_VALUE; varbinds[i].len_val = antenna_vlen; i++; } } print_help(WAIT_SET); if (snmp(varbinds, i, SET) <= 0) { print_helperr(ERR_SET); goto exit; } wbkgd(main_sub, A_NORMAL); wrefresh(main_sub); break; default: continue; } break; } print_help(ANY_KEY); exit: getch(); quit: print_top(NULL, NULL); clear_main(0); } ap-utils-1.5/lib/reset.c000066400000000000000000000033471117246662700151740ustar00rootroot00000000000000/* * reset.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include "ap-utils.h" int SysReset() { char sysReset[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x02, 0x00 }, enable = 1; varbind varbinds[1]; char operESSID[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x09, 0x01 }; extern short ap_type; if (ap_type == ATMEL12350) { sysReset[5] = 0xe0; sysReset[6] = 0x3e; } if(ap_type == ATMEL410 || ap_type == ATMEL12350){ varbinds[0].oid = sysReset; varbinds[0].len_oid = sizeof(sysReset); varbinds[0].value = &enable; varbinds[0].len_val = 1; varbinds[0].type = INT_VALUE; } else { varbinds[0].len_val = 0; varbinds[0].type = NULL_VALUE; varbinds[0].oid = operESSID; varbinds[0].len_oid = sizeof(operESSID); if (snmp(varbinds, 1, GET) <= 0) return -1; varbinds[0].type = STRING_VALUE; } if (snmp(varbinds, 1, SET) <= 0) return -1; else { if(ap_type==NWN) sleep(15); return 0; } } ap-utils-1.5/lib/scr.c000066400000000000000000000134541117246662700146410ustar00rootroot00000000000000/* * scr.c from Access Point SNMP Utils for Linux * program output & screen related functions * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include "ap-utils.h" #include extern WINDOW *main_sub, *win_for_help, *main_win; extern short ap_type, ap_vendorext; enum { dBm, percentage, rawval } sts_viewtype = dBm; void scroll_rows(struct MacListStat *first, int begin, int end, int row, int stat) { int i = 1; struct MacListStat *curr = first; char message[100]; clear_main(row); while (i++ < begin) curr = curr->next; i = 0; while (end-- > begin) { if (stat == 1) { /* NWN STAtions listing */ sprintf(message, "%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, curr->quality, curr->idle, conv_rssi(curr->rssi) ); } else if (stat == 2) { /* 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, parentmac, rssi, quality, status, port, ip ); } else { /* 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 ); } mvwaddstr(main_sub, row + i, 0, message); i++; curr = curr->next; } wrefresh(main_sub); } void print_help(char *mess) { unsigned short int j, len = (COLS - strlen(mess))/2; werase(win_for_help); for (j = 0; j <= len; j++) { mvwaddch(win_for_help, 0, j, ' '); mvwaddch(win_for_help, 0, COLS - j - 1, ' '); } mvwaddstr(win_for_help, 0, len, mess); wrefresh(win_for_help); } void print_helperr(char *mess) { wattrset(win_for_help, COLOR_PAIR(14) | A_BOLD); print_help(mess); wattrset(win_for_help, COLOR_PAIR(11)); } void print_bold(WINDOW *wptr, char *mess) { wattrset(wptr, A_BOLD); waddstr(wptr, mess); wattrset(wptr, A_NORMAL); wrefresh(wptr); } void print_menusel(int y, int x, char *mess1, char *mess2) { mvwaddstr(main_sub, y, x, mess1); print_bold(main_sub, mess2); } void print_bottom(char *mess) { int i; char message[100]; extern short ap_type, ap_vendorext; extern char *ap_types[], *ap_vendorexts[][3]; sprintf(message, _("Current AP: %s Type: %s Ext: %s"), mess, ap_types[ap_type], ap_vendorexts[ap_type][ap_vendorext]); /* íÁÌÀÀ ÒÁÍËÕ */ for (i = 0; i < COLS - MCOLS - 1; i++) mvwaddch(main_win, LINES - 3, i, ACS_BSBS); wmove(main_win, LINES - 3, COLS - MCOLS - strlen(message) - 1); print_bold(main_win, message); } void print_top(char *title_left, char *title_right) { int i = 0; wmove(main_win, 0, 0); while (i++ < COLS - MCOLS - 1) waddch(main_win, ACS_BSBS); wattrset(main_win, A_BOLD); if (title_left) mvwaddstr(main_win, 0, 2, title_left); if (title_right) mvwaddstr(main_win, 0, COLS - MCOLS - strlen(title_right) - 2, title_right); wattrset(main_win, A_NORMAL); wrefresh(main_win); } void print_top_rssi(char *message_r) { char message_l[200]; sprintf(message_l, "%s", "RSSI: "); switch (sts_viewtype) { case dBm: strcat(message_l, "dBm"); break; case percentage: strcat(message_l, "%"); break; case rawval: strcat(message_l, "raw"); } print_top(message_l, message_r); } void clear_main(int m) { clear_main_new(m, LINES - 4); } void clear_main_new(int m, int n) { int i, j; wmove(main_sub, m, 0); for (i = m; i < n; i++) for (j = 0; j < COLS - MCOLS - 1; j++) waddch(main_sub, ' '); wrefresh(main_sub); } int conv_rssi(int raw_rssi) { switch (sts_viewtype) { case dBm: return (dbmconv(raw_rssi)); case percentage: return ((int)((minimum (raw_rssi, 40)) * (float)2.5)); case rawval: return raw_rssi; } /* Should never happen */ return -1; } ap-utils-1.5/lib/set_community.c000066400000000000000000000106541117246662700167500ustar00rootroot00000000000000/* * auth.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include #include "ap-utils.h" #define COMMUNITY_TOP_HEADER _("Set community/password") #define COMMUNITY_HEADER1 _("Key Access level") #define COMMUNITY_HEADER2 _("Community/Password") #define COMMUNITY_USER _("[U] User ") #define COMMUNITY_ADMIN _("[A] Administrator ") #define COMMUNITY_MANUF _("[M] Manufacturer ") #define COMMUNITY_HELP _("[key] - set community/password; W - write config to AP; Q - quit to menu") extern WINDOW *main_sub; extern short ap_type; void AuthorizedSettings() { char AuthorizedUserPass[3][12] = { {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x09, 0x01, 0x00}, {0x2B, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x02, 0x01, 0x02, 0x01, 0x00}, {0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x09, 0x01, 0x00} }; char AuthorizedAdminPass[3][12] = { {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x09, 0x02, 0x00}, {0x2B, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x02, 0x01, 0x02, 0x02, 0x00}, {0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x09, 0x02, 0x00} }; char AuthorizedManufactPass[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x09, 0x03, 0x00 }; varbind varbinds[3]; char user[16], admin[16], manufact[16]; int i; if (ap_type == ATMEL12350) { AuthorizedManufactPass[5] = 0xE0; AuthorizedManufactPass[6] = 0x3E; } user[0] = admin[0] = manufact[0] = '\0'; print_top(NULL, COMMUNITY_TOP_HEADER); mvwaddstr(main_sub, 0, 0, COMMUNITY_HEADER1); mvwaddstr(main_sub, 0, 37, COMMUNITY_HEADER2); mvwaddstr(main_sub, 1, 0, COMMUNITY_USER); mvwaddstr(main_sub, 2, 0, COMMUNITY_ADMIN); if (ap_type == ATMEL410 || ap_type == ATMEL12350) { mvwaddstr(main_sub, 3, 0, COMMUNITY_MANUF); } wrefresh(main_sub); noecho(); print_help(COMMUNITY_HELP); while (1) { switch (getch()) { default: continue; case 'U': case 'u': /* 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, 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, 37, sizeof(manufact), ANY_STRING, 0, 0, NULL); */ get_pass(manufact, 3, 37, sizeof(manufact)); continue; case 'Q': case 'q': goto quit; case 'W': case 'w': i = 0; if (strlen(user)) { varbinds[i].oid = AuthorizedUserPass[ap_type]; varbinds[i].len_oid = sizeof(AuthorizedUserPass[ap_type]); varbinds[i].value = user; varbinds[i].len_val = strlen(user); varbinds[i].type = STRING_VALUE; i++; } if (strlen(admin)) { varbinds[i].oid = AuthorizedAdminPass[ap_type]; varbinds[i].len_oid = sizeof(AuthorizedAdminPass[ap_type]); varbinds[i].value = admin; varbinds[i].len_val = strlen(admin); varbinds[i].type = STRING_VALUE; i++; } if ((ap_type == ATMEL410 || ap_type == ATMEL12350) && strlen(manufact)) { varbinds[i].oid = AuthorizedManufactPass; varbinds[i].len_oid = sizeof(AuthorizedManufactPass); varbinds[i].value = manufact; varbinds[i].len_val = strlen(manufact); varbinds[i].type = STRING_VALUE; i++; } print_help(WAIT_SET); if (snmp(varbinds, i, SET) <= 0) { print_helperr(ERR_SET); goto exit; } wbkgd(main_sub, A_NORMAL); wrefresh(main_sub); break; } break; } print_help(DONE_SET); exit: getch(); quit: print_help(""); print_top(NULL, NULL); clear_main(0); } ap-utils-1.5/lib/set_oeminfo.c000066400000000000000000000344571117246662700163670ustar00rootroot00000000000000/* * set_oeminfo.c from Access Point SNMP Utils for Linux * * Copyright (c) 2005 Jan Rafaj * * 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 #include #include #include #include #include "ap-utils.h" #define S_STRUCTVERSION _("Info structure version: ") #define S_MAC _("[M] Device MAC address: ") #define V_OUI _(" Manufacturer with this OUI: ") #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_COUNTRYC _("[O] Country code: ") #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; extern short ap_type; extern char *channels[]; extern rdprops regdom_types[]; // TODO: test & fix for big-endian archs void atmel_set_oeminfo() { char sysDeviceInfo[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x05, 0x00 }; // 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, st_len; varbind varbinds[1]; struct sysDeviceInfo_128 str128; /* SHORTst */ struct sysDeviceInfo_160 str160; /* LONGst */ /* * 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 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 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(); wattrset(main_sub, A_BOLD); mvwaddstr(main_sub, 2, 4, _("THIS IS A SECRET MENU LEADING TO VERY DANGEROUS OPTIONS.")); mvwaddstr(main_sub, 3, 8, _("It is intended only for WISPs and repair shops.")); wattrset(main_sub, A_NORMAL); mvwaddstr(main_sub, 5, 1, _("It allows to set OEM information stored in the AP (like its")); mvwaddstr(main_sub, 6, 1, _("MAC address, manuf. name, OEM ID, etc.). BE ABSOLUTELY SURE")); mvwaddstr(main_sub, 7, 1, _("THAT YOU KNOW WHAT YOU ARE DOING, AND THAT YOU HAVE THE")); mvwaddstr(main_sub, 8, 1, _("LEGAL RIGHT TO DO ANY MODIFICATION. Disobserving of these")); mvwaddstr(main_sub, 9, 1, _("rules may lead you into a conflict with your local")); mvwaddstr(main_sub, 10, 1, _("regulations and/or law.")); mvwaddstr(main_sub, 11, 1, _("Also be warned that the setting of any from these options")); mvwaddstr(main_sub, 12, 1, _("may DAMAGE YOUR AP (other reason why this menu is hidden).")); mvwaddstr(main_sub, 13, 1, _("Values changed here will NOT be restored upon reset")); mvwaddstr(main_sub, 14, 1, _("of the device to factory defaults! It is advisable to")); mvwaddstr(main_sub, 15, 1, _("write them down somewhere prior their changing.")); mvwaddstr(main_sub, 16, 1, _("Finally, note that you need to use MANUFACTURER community, ")); mvwaddstr(main_sub, 17, 1, _("in order to be able to do any OEM info modification.")); mvwaddstr(main_sub, 18, 1, _("Proceed further only at your full risk and responsibility. ")); mvwaddstr(main_sub, 19, 1, _("You got the warnings.")); wrefresh(main_sub); if (help_ysn()) return; print_top(NULL, _("OEM Info settings")); if (ap_type == ATMEL12350) { sysDeviceInfo[5] = 0xE0; sysDeviceInfo[6] = 0x3E; } varbinds[0].oid = sysDeviceInfo; varbinds[0].len_oid = sizeof(sysDeviceInfo); varbinds[0].value = sysDeviceInfo; varbinds[0].len_val = 0; varbinds[0].type = NULL_VALUE; print_help(WAIT_RET); if (snmp(varbinds, 1, GET) <= 0) { print_helperr(ERR_RET); goto exit; } 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); sprintf(message, "%s%u", S_STRUCTVERSION, StructVersion); mvwaddstr(main_sub, 0, 0, message); sprintf(message, "%s%02X%02X%02X%02X%02X%02X", S_MAC, MacAddress[0] & 0xFF, MacAddress[1] & 0xFF, MacAddress[2] & 0xFF, MacAddress[3] & 0xFF, MacAddress[4] & 0xFF, MacAddress[5] & 0xFF); mvwaddstr(main_sub, 1, 0, message); sprintf(message, "%s%s", V_OUI, oui2manufacturer(MacAddress)); mvwaddstr(main_sub, 2, 0, message); rd_idx = regdom_idx(RegulatoryDomain); sprintf(message, "%s%s [%d]", S_REGDOM, regdom_types[rd_idx].desc, RegulatoryDomain); mvwaddstr(main_sub, 3, 0, message); mvwaddstr(main_sub, 4, 0, S_OEMNAME); for (i = 0; i < 32 && OEMName[i]; i++) waddch(main_sub, OEMName[i]); sprintf(message, "%s%u", S_OEMID, OEMID); mvwaddstr(main_sub, 5, 0, message); mvwaddstr(main_sub, 6, 0, S_PRODNAME); for (i = 0; i < 32 && ProductName[i]; i++) waddch(main_sub, ProductName[i]); sprintf(message, _("%s%u"), S_PRODTYPE, ProductType); mvwaddstr(main_sub, 7, 0, message); sprintf(message, "%s%u", S_HWREV, HardwareRevision); mvwaddstr(main_sub, 8, 0, message); 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, 10, 0, message); sprintf(message, "%s%02u (%u MHz)", S_DEFCHAN, Channel, 2407 + 5 * Channel); mvwaddstr(main_sub, 11, 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, 13, 0, message); #if 0 /* DEBUG */ wmove(main_sub, 18, 0); for (i = 0; i < 14; i++) { sprintf(message, "%-3u ", TxPower[i] & 0xFF); waddstr(main_sub, message); } #endif /* DEBUG */ 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); print_help(OEMSET_HELP); while (1) { c = getch(); switch (c) { case 'm': case 'M': get_mac(MacAddress, 1, strlen(S_MAC)); clear_main_new(2, 3); sprintf(message, "%s%s", V_OUI, oui2manufacturer(MacAddress)); mvwaddstr(main_sub, 2, 0, message); wrefresh(main_sub); continue; case 'd': case 'D': for (i = 0; regdom_types[i].code; i++); regdoms = malloc(i * sizeof(char *)); for (i = 0; regdom_types[i].code; i++) { sprintf(message, "[%3u] %s", regdom_types[i].code, regdom_types[i].desc); regdoms[i] = (char *) malloc(strlen(message) + 1); strcpy(regdoms[i], message); } rd_idx = menu_choose(3, strlen(S_REGDOM), regdoms, i); clear_main_new(3, 4); RegulatoryDomain = regdom_types[rd_idx].code; sprintf(message, "%s [%d]", regdom_types[rd_idx].desc, RegulatoryDomain); print_menusel(3, 0, S_REGDOM, message); while (i-- != 0) free(regdoms[i]); free(regdoms); if (st_len == 160) { Channel = regdom_types[rd_idx].first_ch; sprintf(message, "%02u (%u MHz)", Channel, 2407 + 5 * Channel); print_menusel(11, 0, S_DEFCHAN, message); } continue; case 'e': case 'E': get_value(OEMName, 4, strlen(S_OEMNAME), -32, ANY_STRING, 0, 0, NULL); continue; case 'i': case 'I': get_value(message, 5, strlen(S_OEMID), 11, INT_STRING, 0, 0xFFFFFFFF, OEMSET_HELP); OEMID = atoi(message); continue; case 'n': case 'N': get_value(ProductName, 6, strlen(S_PRODNAME), -32, ANY_STRING, 0, 0, NULL); continue; case 't': case 'T': get_value(message, 7, strlen(S_PRODTYPE), 11, INT_STRING, 0, 0xFFFFFFFF, OEMSET_HELP); ProductType = atoi(message); continue; case 'h': case 'H': get_value(message, 8, strlen(S_HWREV), 11, 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 (st_len == 92 || st_len == 128) continue; 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; #else channels, 14) + 1; #endif sprintf(message, "%02u (%u MHz)", Channel, 2407 + 5 * Channel); print_menusel(11, 0, S_DEFCHAN, message); continue; case 'a': case 'A': if (st_len == 92 || st_len == 128) continue; 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 (st_len == 92 || st_len == 128) continue; 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': goto quit; case 'w': case 'W': varbinds[0].oid = sysDeviceInfo; varbinds[0].len_oid = sizeof(sysDeviceInfo); varbinds[0].type = STRING_VALUE; 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_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; } print_help(WAIT_SET); if (snmp(varbinds, 1, SET) <= 0) { print_helperr(ERR_SET); goto exit; } 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_160 here */ varbinds[0].value = (char *) &str160.CountryCode; varbinds[0].len_val = 32; if (snmp(varbinds, 1, SET) <= 0) { print_helperr(ERR_SET); goto exit; } } wbkgd(main_sub, A_NORMAL); wrefresh(main_sub); print_help(DONE_SET); goto exit; } } exit: getch(); quit: print_top(NULL, NULL); clear_main(0); } ap-utils-1.5/lib/snmp.c000066400000000000000000000176161117246662700150330ustar00rootroot00000000000000/* * snmp.c from Access Point SNMP Utils for Linux * basic snmp packets assembly/disassembly and send/receive functions * * Copyright (c) Roman Festchook * * 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 #include #include #include #include #include #include #include #include "ap-utils.h" extern char *community; extern short ap_type; extern struct in_addr ap_ip; 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() { close_sockfd(); return (open_sockfd()); } /* unsigned int ber_decode_uint(unsigned char *bevp, int len) { unsigned int out = 0; while (len--) { out = (out << 7) | (*bevp & (*bevp & 0x80 ? 0x7f : 0xff)); bevp++; } return out; } */ int ber(char *message, varbind * varbindlist, int num, int type) { char pdu1[1024], pdu[1024], *list = pdu1; int len_var = 0, lenp, len_tmp, len = 0, community_len = strlen(community), i; char snmp_ver[] = { 0x02, 0x01, 0x00 }; const char req_id[] = { 0x02, 0x01 }, err[] = { 0x02, 0x01, 0x00}; for (i = 0; i < num; i++) { *(pdu1 + len++) = ASN_HEADER; len_tmp = (varbindlist + i)->len_oid + (varbindlist + i)->len_val + 4; if (!(ap_type == NWN && type == SET)) { *(pdu1 + len++) = 0x82; *(pdu1 + len++) = (len_tmp - (len_tmp % 256)) / 256; } *(pdu1 + len++) = len_tmp % 256; *(pdu1 + len++) = OID_VALUE; *(pdu1 + len++) = (varbindlist + i)->len_oid; memcpy(pdu1 + len, (varbindlist + i)->oid, (varbindlist + i)->len_oid); len += (varbindlist + i)->len_oid; *(pdu1 + len++) = (varbindlist + i)->type; *(pdu1 + len++) = (varbindlist + i)->len_val; memcpy(pdu1 + len, (varbindlist + i)->value, (varbindlist + i)->len_val); len += (varbindlist + i)->len_val; } len_var = len; lenp = 0; len_tmp = len_var + ((ap_type == NWN && type == SET) ? 11 : 13); *(pdu + lenp++) = type; if (!(ap_type == NWN && type == SET)) { *(pdu + lenp++) = 0x82; *(pdu + lenp++) = (len_tmp - (len_tmp % 256)) / 256; } *(pdu + lenp++) = len_tmp % 256; memcpy(pdu + lenp, req_id, sizeof(req_id)); lenp += sizeof(req_id); *(pdu + lenp++) = (1 + (int) (255.0 * rand() / (RAND_MAX + 1.0))) & 0xFF; memcpy(pdu + lenp, err, sizeof(err)); lenp += sizeof(err); memcpy(pdu + lenp, err, sizeof(err)); lenp += sizeof(err); *(pdu + lenp++) = ASN_HEADER; len_tmp = len_var; if (!(ap_type == NWN && type == SET)) { *(pdu + lenp++) = 0x82; *(pdu + lenp++) = (len_tmp - (len_tmp % 256)) / 256; } *(pdu + lenp++) = len_tmp % 256; memcpy(pdu + lenp, list, len_var); lenp += len_var; *message = ASN_HEADER; len = 1; i = lenp + community_len + 5; if (!(ap_type == NWN && type == SET)) { *(message + len++) = 0x82; *(message + len++) = (i - (i % 256)) / 256; } *(message + len++) = i % 256; memcpy(message + len, snmp_ver, 3); len += 3; *(message + len++) = STRING_VALUE; *(message + len++) = community_len & 0xFF; memcpy(message + len, community, community_len); len += community_len; memcpy(message + len, pdu, lenp); len += lenp; return len; } int snmp(varbind * varbindlist, int num, int type) { static char buf[1024]; unsigned char *start; unsigned int num_reply; 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; while (tries--) { len = ber(buf, varbindlist, num, type); if (sendto(sockfd, buf, len, 0, (struct sockaddr *) &server, SIZE) == -1) { 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; } } if (!tries) return 0; start = buf; num_reply = 0; if (*start != ASN_HEADER) { return 0; } if (start[1] & 0x80) { start += (start[1] & 0x7F) + 2; len -= ((start[1] & 0x7F) + 2); } else { start += 2; len -= 2; } len -= *(start + 4) + 5; start += *(start + 4) + 5; if (*(start) != RESPONSE) { return 0; } if (start[1] & 0x80) { start += (start[1] & 0x7F) + 2; len -= ((start[1] & 0x7F) + 2); } else { start += 2; len -= 2; } if (*(start + 5)) return -*(start + 8); start += 9; len -= 9; if (*(start) != ASN_HEADER) { return 0; } if (start[1] & 0x80) { start += (start[1] & 0x7F) + 2; len -= ((start[1] & 0x7F) + 2); } else { start += 2; len -= 2; } while (len) { if (*(start) != ASN_HEADER) { return num_reply; } if (start[1] & 0x80) { start += (start[1] & 0x7F) + 2; len -= ((start[1] & 0x7F) + 2); } else { start += 2; len -= 2; } varbindlist[num_reply].len_oid = start[1]; /* if(varbindlist[num_reply].oid) free(varbindlist[num_reply].oid); varbindlist[num_reply].oid = (char *) malloc(varbindlist[num_reply].len_oid); memcpy(varbindlist[num_reply].oid, start + 2, varbindlist[num_reply].len_oid); */ varbindlist[num_reply].oid = start + 2; len -= *(start + 1) + 2; start += *(start + 1) + 2; varbindlist[num_reply].type = *(start); if (start[1] & 0x80) { varbindlist[num_reply].len_val = start[2]; start += (start[1] & 0x7F) + 2; len -= ((start[1] & 0x7F) + 2); } else { varbindlist[num_reply].len_val = start[1]; start += 2; len -= 2; } /* if(varbindlist[num_reply].value) free(varbindlist[num_reply].value); varbindlist[num_reply].value = (char *) malloc(varbindlist[num_reply].len_val); memcpy(varbindlist[num_reply].value, start, varbindlist[num_reply].len_val); */ varbindlist[num_reply].value = start; len -= varbindlist[num_reply].len_val; start += varbindlist[num_reply].len_val; num_reply++; } return num_reply; } ap-utils-1.5/lib/stat.c000066400000000000000000000426121117246662700150230ustar00rootroot00000000000000/* * stat.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include #include #include #include "ap-utils.h" #define ETH_STAT _("Ethernet Statistics") #define W_STAT _("Wireless Statistics") extern WINDOW *main_sub; extern short ap_type; extern int wait_mode, poll_delay; void EthStat() { struct EthRxStatistics_s *EthRxStat = NULL; struct EthTxStatistics_s *EthTxStat = NULL; char EthRxStatistics[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x07, 0x01, 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) { EthRxStatistics[5] = 0xE0; EthRxStatistics[6] = 0x3E; EthTxStatistics[5] = 0xE0; EthTxStatistics[6] = 0x3E; } print_top(wait_mode == WAIT_TIMEOUT ? POLL_ON : POLL_OFF, ETH_STAT); noecho(); if (wait_mode == WAIT_TIMEOUT) print_help(QT_HELP); 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 = EthRxStatistics; varbinds[0].len_val = 0; varbinds[0].type = NULL_VALUE; // 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) < 2) { print_helperr(ERR_RET); getch(); goto quit; } if (wait_mode == WAIT_FOREVER) print_help(QT_HELP); 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 { print_helperr(_("EthRxStat packet error. Press any key.")); getch(); goto quit; } 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 { print_helperr(_("EthTxStat packet error. Press any key.")); getch(); goto quit; } mvwaddstr(main_sub, 1, 2, _("Received:")); mvwaddstr(main_sub, 1, 30, _("Transmitted:")); sprintf(message, "TotalBytes %10u TotalBytes %10u", swap4(EthRxStat->TotalBytesRx), swap4(EthTxStat->TotalBytesTx)); mvwaddstr(main_sub, 3, 2, message); sprintf(message, "TotalPackets %10u TotalPackets %10u", swap4(EthRxStat->TotalPacketsRx), swap4(EthTxStat->TotalPacketsTx)); mvwaddstr(main_sub, 4, 2, message); sprintf(message, "PacketCRCError %10u PacketCRCError %10u", swap4(EthRxStat->PacketCRCErrorRx), swap4(EthTxStat->PacketCRCErrorTx)); mvwaddstr(main_sub, 5, 2, message); sprintf(message, "FalseCarrier %10u", swap4(EthRxStat->FalseCarrierRx)); mvwaddstr(main_sub, 6, 2, message); sprintf(message, "MulticastPacket %10u MulticastPacket %10u", swap4(EthRxStat->MulticastPacketRx), swap4(EthTxStat->MulticastPacketTx)); mvwaddstr(main_sub, 7, 2, message); sprintf(message, "BroadcastPacket %10u BroadcastPacket %10u", swap4(EthRxStat->BroadcastPacketRx), swap4(EthTxStat->BroadcastPacketTx)); mvwaddstr(main_sub, 8, 2, message); sprintf(message, "ControlFrames %10u UnicastPacket %10u", swap4(EthRxStat->ControlFramesRx), swap4(EthTxStat->UnicastPacketTx)); mvwaddstr(main_sub, 9, 2, message); sprintf(message, "PauseFrames %10u PauseFrames %10u", swap4(EthRxStat->PauseFramesRx), swap4(EthTxStat->PauseFramesTx)); mvwaddstr(main_sub, 10, 2, message); sprintf(message, "UnknownOPCode %10u SingleDeferPacket %10u", swap4(EthRxStat->UnknownOPCodeRx), swap4(EthTxStat->SingleDeferPacketTx)); mvwaddstr(main_sub, 11, 2, message); sprintf(message, "AlignmentError %10u MultiDeferPackets %10u", swap4(EthRxStat->AlignmentRxError), swap4(EthTxStat->MultiDeferPacketsTx)); mvwaddstr(main_sub, 12, 2, message); sprintf(message, "LengthOutOfRange %10u", swap4(EthRxStat->LengthOutOfRangeRx)); mvwaddstr(main_sub, 13, 2, message); sprintf(message, "CodeError %10u SingleCollisions %10u", swap4(EthRxStat->CodeErrorRx), swap4(EthTxStat->SingleCollisionsTx)); mvwaddstr(main_sub, 14, 2, message); sprintf(message, "TotalFragments %10u MultiCollisions %10u", swap4(EthRxStat->TotalFragmentsRx), swap4(EthTxStat->MultiCollisionsTx)); mvwaddstr(main_sub, 15, 2, message); sprintf(message, "OversizePackets %10u LateCollisions %10u", swap4(EthRxStat->OversizePacketsRx), swap4(EthTxStat->LateCollisionsTx)); mvwaddstr(main_sub, 16, 2, message); sprintf(message, "UndersizePackets %10u ExcessiveCollision %10u", swap4(EthRxStat->UndersizePacketsRx), swap4(EthTxStat->ExcessiveCollisionTx)); mvwaddstr(main_sub, 17, 2, message); sprintf(message, "TotalJabber %10u TotalCollisions %10u", swap4(EthRxStat->TotalJabberRx), swap4(EthTxStat->TotalCollisionsTx)); mvwaddstr(main_sub, 18, 2, message); wrefresh(main_sub); i = wait_key(poll_delay); if (i == -1) goto quit; switch((char) i) { case 'q': case 'Q': goto quit; case 't': case 'T': wait_mode = (wait_mode == WAIT_FOREVER ? WAIT_TIMEOUT : WAIT_FOREVER); print_top(wait_mode == WAIT_TIMEOUT ? POLL_ON : POLL_OFF, ETH_STAT); } /* either timeout for user input (i == 0) or invalid key => continue */ } quit: if (EthRxStat) free(EthRxStat); if (EthTxStat) free(EthTxStat); wclear(main_sub); print_top(NULL, NULL); clear_main(0); return; } void WirelessStat() { struct wirelessStatistics_s *WirelessStat = NULL; 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) { wirelessStatistics[5] = 0xE0; wirelessStatistics[6] = 0x3E; } print_top(wait_mode == WAIT_TIMEOUT ? POLL_ON : POLL_OFF, W_STAT); noecho(); if (wait_mode == WAIT_TIMEOUT) print_help(QT_HELP); varbinds[0].oid = wirelessStatistics; varbinds[0].len_oid = sizeof(wirelessStatistics); while (1) { varbinds[0].value = wirelessStatistics; varbinds[0].len_val = 0; varbinds[0].type = NULL_VALUE; if (wait_mode == WAIT_FOREVER) print_help(WAIT_RET); if (snmp(varbinds, 1, GET) <= 0) { print_helperr(ERR_RET); getch(); goto quit; } if (wait_mode == WAIT_FOREVER) print_help(QT_HELP); 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_s *) malloc(varbinds[0].len_val); memcpy(WirelessStat, varbinds[0].value, varbinds[0].len_val); } else { print_helperr (_("WirelessStat packet error. Press any key.")); getch(); goto quit; } sprintf(message, "UnicastPacketsTx %10u UnicastPacketsRx %10u", swap4(WirelessStat->UnicastTransmittedPackets), swap4(WirelessStat->UnicastReceivedPackets)); mvwaddstr(main_sub, 1, 1, message); sprintf(message, "BroadcastPacketsTx %10u BroadcastPacketsRx %10u", swap4(WirelessStat->BroadcastTransmittedPackets), swap4(WirelessStat->BroadcastReceivedPackets)); mvwaddstr(main_sub, 2, 1, message); sprintf(message, "MulticastPacketsTx %10u MulticastPacketsRx %10u", swap4(WirelessStat->MulticastTransmittedPackets), swap4(WirelessStat->MulticastReceivedPackets)); mvwaddstr(main_sub, 3, 1, message); sprintf(message, "BeaconTx %10u BeaconRx %10u", swap4(WirelessStat->TransmittedBeacon), swap4(WirelessStat->ReceivedBeacon)); mvwaddstr(main_sub, 4, 1, message); sprintf(message, "ACKTx %10u ACKRx %10u", swap4(WirelessStat->TransmittedACK), swap4(WirelessStat->ReceivedACK)); mvwaddstr(main_sub, 5, 1, message); sprintf(message, "RTSTx %10u RTSRx %10u", swap4(WirelessStat->TransmittedRTS), swap4(WirelessStat->ReceivedRTS)); mvwaddstr(main_sub, 6, 1, message); sprintf(message, "CTSTx %10u CTSRx %10u", swap4(WirelessStat->TransmittedCTS), swap4(WirelessStat->ReceivedCTS)); mvwaddstr(main_sub, 7, 1, message); sprintf(message, "ACKFailure %10u", swap4(WirelessStat->ACKFailure)); mvwaddstr(main_sub, 8, 1, message); sprintf(message, "CTSFailure %10u", swap4(WirelessStat->CTSFailure)); mvwaddstr(main_sub, 9, 1, message); sprintf(message, "RetryPackets %10u", swap4(WirelessStat->RetryPackets)); mvwaddstr(main_sub, 10, 1, message); sprintf(message, "ReceivedDuplicate %10u", swap4(WirelessStat->ReceivedDuplicate)); mvwaddstr(main_sub, 11, 1, message); sprintf(message, "FailedPackets %10u", swap4(WirelessStat->FailedPackets)); mvwaddstr(main_sub, 12, 1, message); sprintf(message, "AgedPackets %10u", swap4(WirelessStat->AgedPackets)); mvwaddstr(main_sub, 13, 1, message); sprintf(message, "FCSError %10u", swap4(WirelessStat->FCSError)); mvwaddstr(main_sub, 14, 1, message); sprintf(message, "InvalidPLCP %10u", swap4(WirelessStat->InvalidPLCP)); mvwaddstr(main_sub, 15, 1, message); /* 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", swap4(WirelessStat->TransmittedPackets_11Mbps)); mvwaddstr(main_sub, 17, 1, message); sprintf(message, "* at 5.5 Mbps %10u", swap4(WirelessStat->TransmittedPackets_55Mbps)); mvwaddstr(main_sub, 18, 1, message); sprintf(message, "* at 2 Mbps %10u", swap4(WirelessStat->TransmittedPackets_2Mbps)); mvwaddstr(main_sub, 19, 1, message); sprintf(message, "* at 1 Mbps %10u", swap4(WirelessStat->TransmittedPackets_1Mbps)); mvwaddstr(main_sub, 20, 1, message); } wrefresh(main_sub); i = wait_key(poll_delay); if (i == -1) goto quit; switch((char) i) { case 'q': case 'Q': goto quit; case 't': case 'T': wait_mode = (wait_mode == WAIT_FOREVER ? WAIT_TIMEOUT : WAIT_FOREVER); print_top(wait_mode == WAIT_TIMEOUT ? POLL_ON : POLL_OFF, W_STAT); } /* either timeout for user input (i == 0) or invalid key => continue */ } quit: if (WirelessStat) free(WirelessStat); wclear(main_sub); print_top(NULL, NULL); clear_main(0); } void nwn_wireless_stat() { char oid_dot11TransmittedFragmentCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x01, 0x01 }; char oid_dot11MulticastTransmittedFrameCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x02, 0x01 }; char oid_dot11FailedCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x03, 0x01 }; char oid_dot11RetryCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x04, 0x01 }; char oid_dot11MultipleRetryCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x05, 0x01 }; char oid_dot11FrameDuplicateCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x06, 0x01 }; char oid_dot11RTSSuccessCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x07, 0x01 }; char oid_dot11RTSFailureCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x08, 0x01 }; char oid_dot11ACKFailureCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x09, 0x01 }; char oid_dot11ReceivedFragmentCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x0a, 0x01 }; char oid_dot11MulticastReceivedFrameCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x0b, 0x01 }; char oid_dot11FCSErrorCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x0c, 0x01 }; char oid_dot11TransmittedFrameCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x0d, 0x01 }; char oid_dot11WEPUndecryptableCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x0e, 0x01 }; char oid_dot11WEPICVErrorCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x05, 0x01, 0x05, 0x01 }; char oid_dot11WEPExcludedCount[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x05, 0x01, 0x06, 0x01 }; char message[80]; int i; varbind varbinds[16]; curs_set(0); print_top(wait_mode == WAIT_TIMEOUT ? POLL_ON : POLL_OFF, W_STAT); noecho(); if (wait_mode == WAIT_TIMEOUT) print_help(QT_HELP); varbinds[0].oid = oid_dot11TransmittedFragmentCount; varbinds[0].len_oid = sizeof(oid_dot11TransmittedFragmentCount); varbinds[1].oid = oid_dot11MulticastTransmittedFrameCount; varbinds[1].len_oid = sizeof(oid_dot11MulticastTransmittedFrameCount); varbinds[2].oid = oid_dot11FailedCount; varbinds[2].len_oid = sizeof(oid_dot11FailedCount); varbinds[3].oid = oid_dot11RetryCount; varbinds[3].len_oid = sizeof(oid_dot11RetryCount); varbinds[4].oid = oid_dot11MultipleRetryCount; varbinds[4].len_oid = sizeof(oid_dot11MultipleRetryCount); varbinds[5].oid = oid_dot11FrameDuplicateCount; varbinds[5].len_oid = sizeof(oid_dot11FrameDuplicateCount); varbinds[6].oid = oid_dot11RTSSuccessCount; varbinds[6].len_oid = sizeof(oid_dot11RTSSuccessCount); varbinds[7].oid = oid_dot11RTSFailureCount; varbinds[7].len_oid = sizeof(oid_dot11RTSFailureCount); varbinds[8].oid = oid_dot11ACKFailureCount; varbinds[8].len_oid = sizeof(oid_dot11ACKFailureCount); varbinds[9].oid = oid_dot11ReceivedFragmentCount; varbinds[9].len_oid = sizeof(oid_dot11ReceivedFragmentCount); varbinds[10].oid = oid_dot11MulticastReceivedFrameCount; varbinds[10].len_oid = sizeof(oid_dot11MulticastReceivedFrameCount); varbinds[11].oid = oid_dot11FCSErrorCount; varbinds[11].len_oid = sizeof(oid_dot11FCSErrorCount); varbinds[12].oid = oid_dot11TransmittedFrameCount; varbinds[12].len_oid = sizeof(oid_dot11TransmittedFrameCount); varbinds[13].oid = oid_dot11WEPUndecryptableCount; varbinds[13].len_oid = sizeof(oid_dot11WEPUndecryptableCount); varbinds[14].oid = oid_dot11WEPICVErrorCount; varbinds[14].len_oid = sizeof(oid_dot11WEPICVErrorCount); varbinds[15].oid = oid_dot11WEPExcludedCount; varbinds[15].len_oid = sizeof(oid_dot11WEPExcludedCount); while (1) { for (i = 0; i < 16; i++) { varbinds[i].value = oid_dot11TransmittedFragmentCount; varbinds[i].len_val = 0; varbinds[i].type = 0x05; } if (wait_mode == WAIT_FOREVER) print_help(WAIT_RET); if (snmp(varbinds, 16, GET) < 16) { print_helperr(ERR_RET); getch(); goto quit; } if (wait_mode == WAIT_FOREVER) print_help(QT_HELP); sprintf(message, "FragmentTx %10lu FragmentRx %10lu", (long) swap4(*varbinds[0].value), (long) swap4(*varbinds[9].value)); mvwaddstr(main_sub, 1, 1, message); sprintf(message, "TransmittedFrame %10lu", (long) swap4(*varbinds[12].value)); mvwaddstr(main_sub, 2, 1, message); sprintf(message, "MulticasFrameTx %10lu MulticastFrameRx %10lu", (long) swap4(*varbinds[1].value), (long) swap4(*varbinds[10].value)); mvwaddstr(main_sub, 3, 1, message); sprintf(message, "WEPUndecryptable %10lu WEPExcluded %10lu", (long) swap4(*varbinds[13].value), (long) swap4(*varbinds[15].value)); mvwaddstr(main_sub, 4, 1, message); sprintf(message, "RTSSuccess %10lu RTSFailure %10lu", (long) swap4(*varbinds[6].value), (long) swap4(*varbinds[7].value)); mvwaddstr(main_sub, 5, 1, message); sprintf(message, "ACKFailure %10lu", (long) swap4(*varbinds[8].value)); mvwaddstr(main_sub, 6, 1, message); sprintf(message, "Retry %10lu MultipleRetry %10lu", (long) swap4(*varbinds[3].value), (long) swap4(*varbinds[4].value)); mvwaddstr(main_sub, 7, 1, message); sprintf(message, "FrameDuplicate %10lu", (long) swap4(*varbinds[5].value)); mvwaddstr(main_sub, 8, 1, message); sprintf(message, "Failed %10lu", (long) swap4(*varbinds[2].value)); mvwaddstr(main_sub, 9, 1, message); sprintf(message, "FCSError %10lu WEPICVError %10lu", (long) swap4(*(varbinds[11].value)), (long) swap4(*(varbinds[14].value))); mvwaddstr(main_sub, 10, 1, message); wrefresh(main_sub); i = wait_key(poll_delay); if (i == -1) goto quit; switch((char) i) { case 'q': case 'Q': goto quit; case 't': case 'T': wait_mode = (wait_mode == WAIT_FOREVER ? WAIT_TIMEOUT : WAIT_FOREVER); print_top(wait_mode == WAIT_TIMEOUT ? POLL_ON : POLL_OFF, W_STAT); } /* either timeout for user input (i == 0) or invalid key => continue */ } quit: wclear(main_sub); print_top(NULL, NULL); clear_main(0); } ap-utils-1.5/lib/sysinfo.c000066400000000000000000000370221117246662700155410ustar00rootroot00000000000000/* * sysinfo.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include #include #include "ap-utils.h" #define SYS_DESCR _("System Description: ") #define SYSINFO _("System Info") #define OID_NUM 11 extern WINDOW *main_sub; extern char* bridge_modes[6]; extern int poll_delay; void atmel_sysinfo() { char sysDescr[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x01, 0x00 }; char sysDeviceInfo[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x05, 0x00 }; 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[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_{128,160} members */ uint32_t ap_sversion; char *ap_macaddr; uint32_t ap_regdomain; uint32_t ap_prodtype; char *ap_oemname; uint32_t ap_oemid; char *ap_prodname; uint32_t ap_hwrev; if (ap_type == ATMEL12350) { sysDescr[5] = 0xE0; 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); if (wait_mode == WAIT_TIMEOUT) print_help(QT_HELP); while (1) { i = 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[i].oid = sysDeviceInfo; varbinds[i].len_oid = sizeof(sysDeviceInfo); varbinds[i].value = sysDeviceInfo; varbinds[i].len_val = 0; varbinds[i].type = NULL_VALUE; i++; 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) < i) { print_helperr(ERR_RET); getch(); goto quit; } if (wait_mode == WAIT_FOREVER) print_help(QT_HELP); mvwaddstr(main_sub, 0, 0, _("Device hardware/software/name info:")); for (i = 0; i < varbinds[0].len_val && *(varbinds[0].value + i); i++) mvwaddch(main_sub, 1, i + 1, *(varbinds[0].value + i)); 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, 3, 0, message); mvwaddstr(main_sub, 4, 0, _("Product name: ")); for (i = 0; i < 32 && ap_prodname[i]; i++) waddch(main_sub, ap_prodname[i]); sprintf(message, _("Product type: %u"), swap4(ap_prodtype)); mvwaddstr(main_sub, 5, 0, message); mvwaddstr(main_sub, 6, 0, _("OEM name: ")); for (i = 0; i < 32 && ap_oemname[i]; i++) waddch(main_sub, ap_oemname[i]); sprintf(message, "OEM ID: %u", swap4(ap_oemid)); mvwaddstr(main_sub, 7, 0, message); sprintf(message, _("Hardware revision: %u"), swap4(ap_hwrev)); 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, 9, 0, message); sprintf(message, _("Info structure version: %u"), swap4(ap_sversion)); 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, 11, 0, message); if (ap_type == ATMEL12350 && ap_vendorext == EZYNET) { unsigned int j = 0; 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[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, 12, 0, message); } wrefresh(main_sub); i = wait_key(poll_delay); if (i == -1) goto quit; switch((char) i) { case 'q': case 'Q': goto quit; case 't': case 'T': wait_mode = (wait_mode == WAIT_FOREVER ? WAIT_TIMEOUT : WAIT_FOREVER); print_top(wait_mode == WAIT_TIMEOUT ? POLL_ON : POLL_OFF, SYSINFO); } /* either timeout for user input (i == 0) or invalid key => continue */ } quit: print_top(NULL, NULL); clear_main(0); } int get_RegDomain() { char oid_dot11CurrentRegDomain[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x01, 0x01, 0x02, 0x01 }; varbind varbinds[1]; varbinds[0].oid = oid_dot11CurrentRegDomain; varbinds[0].len_oid = sizeof(oid_dot11CurrentRegDomain); varbinds[0].value = oid_dot11CurrentRegDomain; varbinds[0].type = NULL_VALUE; varbinds[0].len_val = 0; if (snmp(varbinds, 1, GET) <= 0) return 0; return *(varbinds[0].value); } void nwn_sysinfo() { char oid_mac[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x01, 0x01, 0x01, 0x01 }; char oid_manufacturerID[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x01, 0x01, 0x08, 0x01 }; char oid_productID[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x01, 0x01, 0x09, 0x01 }; char oid_dot11manufacturerOUI[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x03, 0x01, 0x02, 0x01, 0x01, 0x01 }; char oid_dot11manufacturerName[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01 }; char oid_dot11manufacturerProductName[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x03, 0x01, 0x02, 0x01, 0x03, 0x01 }; char oid_dot11manufacturerProductVersion[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x03, 0x01, 0x02, 0x01, 0x04, 0x01 }; char oid_dot11PHYType[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01 }; char oid_dot11TempType[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x01, 0x01, 0x03, 0x01 }; char oid_TxPowerLevel1[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x03, 0x01, 0x02, 0x01 }; char oid_dot11PrivacyOptionImplemented[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x07, 0x01 }; char oid_dot11DiversitySupport[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x02, 0x01, 0x03, 0x01 }; char oid_sysDescr[] = { 0x2b, 0x06, 0x01, 0x02, 0x01, 0x01, 0x01, 0x00 }; char oid_sysUptime[] = { 0x2b, 0x06, 0x01, 0x02, 0x01, 0x01, 0x03, 0x00 }; char oid_ip[] = { 0x2b, 0x06, 0x01, 0x02, 0x01, 0x04, 0x14, 0x01, 0x01 }; char *types[3] = { _("FHSS 2.4 GHz"), _("DSSS 2.4 GHz"), _("IR Baseband") }; char *temp[3] = { _("Commercial range 0..40 C"), _("Industrial range -30..70 C"), _("unknown") }, *diversity[3] = { _("manual"), _("notsupported"), _("dynamic")}; char message[300]; int i, hand, c, min, sec; struct in_addr ip; varbind varbinds[OID_NUM]; size_t time_stamp; extern int wait_mode; print_top(wait_mode == WAIT_TIMEOUT ? POLL_ON : POLL_OFF, SYSINFO); if (wait_mode == WAIT_TIMEOUT) print_help(QT_HELP); while (1) { for (i = 0; i < OID_NUM; i++) { varbinds[i].value = oid_mac; varbinds[i].type = NULL_VALUE; varbinds[i].len_val = 0; } varbinds[0].oid = oid_mac; varbinds[0].len_oid = sizeof(oid_mac); varbinds[1].oid = oid_manufacturerID; varbinds[1].len_oid = sizeof(oid_manufacturerID); varbinds[2].oid = oid_productID; varbinds[2].len_oid = sizeof(oid_productID); varbinds[3].oid = oid_dot11manufacturerOUI; varbinds[3].len_oid = sizeof(oid_dot11manufacturerOUI); varbinds[4].oid = oid_dot11manufacturerName; varbinds[4].len_oid = sizeof(oid_dot11manufacturerName); varbinds[5].oid = oid_dot11manufacturerProductName; varbinds[5].len_oid = sizeof(oid_dot11manufacturerProductName); varbinds[6].oid = oid_dot11manufacturerProductVersion; varbinds[6].len_oid = sizeof(oid_dot11manufacturerProductVersion); varbinds[7].oid = oid_dot11PHYType; varbinds[7].len_oid = sizeof(oid_dot11PHYType); varbinds[8].oid = oid_dot11TempType; varbinds[8].len_oid = sizeof(oid_dot11TempType); varbinds[9].oid = oid_TxPowerLevel1; varbinds[9].len_oid = sizeof(oid_TxPowerLevel1); if (wait_mode == WAIT_FOREVER) print_help(WAIT_RET); if (snmp(varbinds, OID_NUM - 1, GET) < OID_NUM - 1) { print_helperr(ERR_RET); getch(); goto quit; } 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); mvwaddstr(main_sub, 0, 0, message); mvwaddstr(main_sub, 3, 0, _("Manufacturer:")); i = 0; while (varbinds[4].len_val > i) mvwaddch(main_sub, 3, i + 20, *(varbinds[4].value + i++)); mvwaddstr(main_sub, 4, 0, _("Manufacturer ID:")); i = 0; while (varbinds[1].len_val > i) mvwaddch(main_sub, 4, i + 20, *(varbinds[1].value + i++)); sprintf(message, _("Manufacturer OUI: %02X %02X %02X (%s)"), varbinds[3].value[0] & 0xFF, varbinds[3].value[1] & 0xFF, varbinds[3].value[2] & 0xFF, oui2manufacturer(varbinds[3].value)); mvwaddstr(main_sub, 5, 0, message); sprintf(message, _("Product Name:")); mvwaddstr(main_sub, 6, 0, message); i = 0; while (varbinds[5].len_val > i) mvwaddch(main_sub, 6, i + 20, *(varbinds[5].value + i++)); sprintf(message, _("Product ID:")); mvwaddstr(main_sub, 7, 0, message); i = 0; while (varbinds[2].len_val > i) mvwaddch(main_sub, 7, i + 20, *(varbinds[2].value + i++)); sprintf(message, _("Product Version:")); mvwaddstr(main_sub, 8, 0, message); i = 0; while (varbinds[6].len_val > i) mvwaddch(main_sub, 8, i + 20, *(varbinds[6].value + i++)); sprintf(message, _("PHYType: %s"), types[*(varbinds[7].value) - 1]); mvwaddstr(main_sub, 9, 0, message); sprintf(message, _("Temperature: %s"), temp[*(varbinds[8].value) - 1]); mvwaddstr(main_sub, 10, 0, message); if ((i = get_RegDomain()) == 0) { print_helperr(ERR_RET); getch(); goto quit; } sprintf(message, _("Regulatory Domain: %s"), (i == 0x10) ? _("FCC (USA)") : (i == 0x20) ? _("DOC (Canada)") : (i == 0x30) ? _("ETSI (Europe)") : (i == 0x31) ? _("Spain") : (i == 0x32) ? _("France") : (i == 0x40) ? _("MKK (Japan)") : _("unknown")); mvwaddstr(main_sub, 11, 0, message); sprintf(message, _("Transmit Power: %u mW"), *(varbinds[9].value)); mvwaddstr(main_sub, 12, 0, message); varbinds[0].oid = oid_dot11PrivacyOptionImplemented; varbinds[0].len_oid = sizeof(oid_dot11PrivacyOptionImplemented); varbinds[0].value = oid_mac; varbinds[0].type = NULL_VALUE; varbinds[0].len_val = 0; varbinds[1].oid = oid_dot11DiversitySupport; varbinds[1].len_oid = sizeof(oid_dot11DiversitySupport); varbinds[1].value = oid_mac; varbinds[1].type = NULL_VALUE; varbinds[1].len_val = 0; varbinds[2].oid = oid_sysDescr; varbinds[2].len_oid = sizeof(oid_sysDescr); varbinds[2].value = oid_mac; varbinds[2].type = NULL_VALUE; varbinds[2].len_val = 0; varbinds[3].oid = oid_sysUptime; varbinds[3].len_oid = sizeof(oid_sysUptime); varbinds[3].value = oid_mac; varbinds[3].type = NULL_VALUE; varbinds[3].len_val = 0; if (snmp(varbinds, 4, GET) < 4) { print_helperr(ERR_RET); getch(); goto quit; } sprintf(message, _("WEP implemented: %s"), (*(varbinds[0].value) == 1) ? ON : OFF); mvwaddstr(main_sub, 13, 0, message); sprintf(message, _("Diversity: %s"), diversity[*(varbinds[1].value) - 1]); mvwaddstr(main_sub, 14, 0, message); mvwaddstr(main_sub, LINES - 8, 0, SYS_DESCR); i = 0; while (varbinds[2].len_val > i && varbinds[2].value[i]) { message[i] = varbinds[2].value[i]; i++; } message[i] = '\0'; mvwaddstr(main_sub, LINES - 8, strlen(SYS_DESCR) + 1, message); time_stamp = 0; i = 1; for (c = 1; c <= varbinds[3].len_val; c++) { time_stamp += (unsigned char) varbinds[3].value[varbinds[3].len_val - c] * i; i *= 256; } hand = time_stamp % 100; time_stamp = time_stamp / 100; sec = time_stamp % 60; time_stamp = time_stamp / 60; min = time_stamp % 60; time_stamp = time_stamp / 60; sprintf(message, _("Uptime: %u:%02u:%02u.%02u"), time_stamp, min, sec, hand); mvwaddstr(main_sub, 15, 0, message); varbinds[0].oid = oid_ip; varbinds[0].len_oid = sizeof(oid_ip); varbinds[0].value = oid_mac; varbinds[0].type = NULL_VALUE; varbinds[0].len_val = 0; if (snmp(varbinds, 1, GET_NEXT) <= 0) { print_helperr(ERR_RET); getch(); goto quit; } if (wait_mode == WAIT_FOREVER) print_help(QT_HELP); memcpy(&ip.s_addr, varbinds[0].value, 4); sprintf(message, _("IP Address: %s"), inet_ntoa(ip)); mvwaddstr(main_sub, 1, 0, message); wrefresh(main_sub); i = wait_key(poll_delay); if (i == -1) goto quit; switch((char) i) { case 'q': case 'Q': goto quit; case 't': case 'T': wait_mode = (wait_mode == WAIT_FOREVER ? WAIT_TIMEOUT : WAIT_FOREVER); print_top(wait_mode == WAIT_TIMEOUT ? POLL_ON : POLL_OFF, SYSINFO); } /* either timeout for user input (i == 0) or invalid key => continue */ } quit: print_top(NULL, NULL); clear_main(0); } ap-utils-1.5/lib/test.c000066400000000000000000000175731117246662700150370ustar00rootroot00000000000000/* * test.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include "ap-utils.h" #define TEST_MODE _("[T] Test mode: ") #define ANTENNA _("[A] Antenna: ") #define SIGLEVEL _("[S] Signal level: ") #define RATE _("[R] Rate: ") #define FILER _("[F] TxFiler: ") #define COMMAND _("[O] Command: ") #define __HELP _("T - Test mode On/Off; CASRFO - set options; Q - quit to menu") extern WINDOW *main_sub; extern short ap_type; extern char *channels[]; void test() { struct TestModeCommandStruct_ATMEL410 { unsigned char Channel; unsigned char Antenna; unsigned char RegCR31; unsigned char Rate; unsigned char TxFiler; //US 01 - JPN 02 unsigned char Command; //CMD_CONTINUOUS_TX 0x01, CMD_CONTINUOUS_RX 0x02, CMD_CARRIER_ACCURACY 0x03, CMD_IDLE 0x04 unsigned char Res1; unsigned char Res2; } testmode; struct TestModeStatistics { unsigned long SuccessFrames; unsigned long FailedFrames; } *teststat = NULL; char TestModeOnOff[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x08, 0x01, 0x00 }; char TestModeCommandStruct[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x08, 0x02, 0x00 }; char TestModeStatistics[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x08, 0x09, 0x00 }; char message[1024], *antenna[2] = { _("Left"), _("Right") }, *filer[2] = { "EN", "US"}, *rates[4] = { "1", "2", "5.5", "11"}; char teston = 2, *commands[4] = { "CONTINUOUS_TX", "CONTINUOUS_RX", "CARRIER_ACCURACY", "IDLE" }; 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; TestModeCommandStruct[6] = 0x3E; TestModeStatistics[5] = 0xE0; TestModeStatistics[6] = 0x3E; } print_top(NULL, _("Test mode")); mvwaddstr(main_sub, 3, 6, _ ("Using the \"Test mode\" may cause loss of your current")); mvwaddstr(main_sub, 4, 6, _("configuration.")); mvwaddstr(main_sub, 6, 20, _("Do you want to continue? ")); wrefresh(main_sub); if (help_ysn()) goto quit; print_help(__HELP); sprintf(message, "%s%s", TEST_MODE, OFF); mvwaddstr(main_sub, 0, 0, message); mvwaddstr(main_sub, 2, 1, _("Options:")); testmode.Channel = 1; sprintf(message, "%s%02u (%u MHz)", CHANNEL, testmode.Channel, 2407 + 5 * testmode.Channel); mvwaddstr(main_sub, 3, 0, message); testmode.Antenna = 1; sprintf(message, "%s%s", ANTENNA, antenna[testmode.Antenna - 1]); mvwaddstr(main_sub, 4, 0, message); testmode.RegCR31 = 128; sprintf(message, "%s%u", SIGLEVEL, testmode.RegCR31); mvwaddstr(main_sub, 5, 0, message); testmode.Rate = 2; sprintf(message, "%s%.1f Mbit/s", RATE, (float) testmode.Rate / 2); mvwaddstr(main_sub, 6, 0, message); testmode.TxFiler = 1; sprintf(message, "%s%s", FILER, filer[testmode.TxFiler - 1]); mvwaddstr(main_sub, 7, 0, message); testmode.Command = 1; sprintf(message, "%s%s", COMMAND, commands[testmode.Command - 1]); mvwaddstr(main_sub, 8, 0, message); mvwaddstr(main_sub, 10, 1, _("Statistics:")); mvwaddstr(main_sub, 11, 0, _("Success Frames: 0 Failed Frames: 0")); wrefresh(main_sub); noecho(); while (1) { switch (getch()) { case 'Q': case 'q': if (teston == 1) { teston = 2; varbinds[0].oid = TestModeOnOff; varbinds[0].len_oid = sizeof(TestModeOnOff); varbinds[0].value = &teston; varbinds[0].len_val = 1; varbinds[0].type = INT_VALUE; if (snmp(varbinds, 1, SET) <= 0) { print_helperr(ERR_RET); goto exit; } } goto quit; case 'T': case 't': teston = on_off(0, 1 + strlen(TEST_MODE)); if (teston == 1) { clear_main_new(0, 1); print_menusel(0, 0, TEST_MODE, ON); varbinds[0].oid = TestModeOnOff; varbinds[0].len_oid = sizeof(TestModeOnOff); varbinds[0].value = &teston; varbinds[0].len_val = 1; varbinds[0].type = INT_VALUE; varbinds[1].oid = TestModeCommandStruct; varbinds[1].len_oid = sizeof(TestModeCommandStruct); varbinds[1].len_val = sizeof(testmode); varbinds[1].value = (char *) &testmode; varbinds[1].type = STRING_VALUE; if (snmp(varbinds, 2, SET) <= 0) { print_helperr(ERR_RET); goto exit; } } else { varbinds[0].oid = TestModeStatistics; varbinds[0].len_oid = sizeof(TestModeStatistics); varbinds[0].value = TestModeStatistics; varbinds[0].len_val = 0; varbinds[0].type = NULL_VALUE; if (snmp(varbinds, 1, GET) <= 0) { print_helperr(ERR_RET); getch(); print_help(__HELP); } else { teststat = (struct TestModeStatistics *) malloc(varbinds[0]. len_val); memcpy(teststat, varbinds[0].value, sizeof(struct TestModeStatistics)); clear_main_new(11, 12); sprintf(message, _("Success Frames: %lu Failed Frames: %lu"), swap4(teststat->SuccessFrames), swap4(teststat->FailedFrames)); mvwaddstr(main_sub, 11, 0, message); free(teststat); } clear_main_new(0, 1); sprintf(message, "%s%s", TEST_MODE, OFF); mvwaddstr(main_sub, 0, 0, message); varbinds[0].oid = TestModeOnOff; varbinds[0].len_oid = sizeof(TestModeOnOff); varbinds[0].value = &teston; varbinds[0].len_val = 1; varbinds[0].type = INT_VALUE; if (snmp(varbinds, 1, SET) <= 0) { print_helperr(ERR_RET); goto exit; } wrefresh(main_sub); } continue; case 'C': case 'c': testmode.Channel = menu_choose(3, strlen(CHANNEL), channels, 14) + 1; clear_main_new(3, 4); sprintf(message, "%02u (%u MHz)", testmode.Channel, 2407 + 5 * testmode.Channel); print_menusel(3, 0, CHANNEL, message); continue; case 'R': case 'r': switch (menu_choose(6, strlen(RATE), rates, 4)) { case 0: testmode.Rate = 2; break; case 1: testmode.Rate = 4; break; case 2: testmode.Rate = 11; break; case 3: testmode.Rate = 22; } clear_main_new(6, 7); sprintf(message, "%.1f Mbit/s", (float) testmode.Rate / 2); print_menusel(6, 0, RATE, message); continue; case 'A': case 'a': testmode.Antenna = menu_choose(4, strlen(ANTENNA), antenna, 2) + 1; clear_main_new(4, 5); print_menusel(4, 0, ANTENNA, antenna[testmode.Antenna - 1]); continue; case 'O': case 'o': testmode.Command = menu_choose(8, strlen(COMMAND), commands, 4) + 1; clear_main_new(8, 9); print_menusel(8, 0, COMMAND, commands[testmode.Command - 1]); continue; case 'F': case 'f': testmode.TxFiler = menu_choose(7, strlen(FILER), filer, 2) + 1; clear_main_new(7, 8); print_menusel(7, 0, FILER, filer[testmode.TxFiler - 1]); continue; case 'S': case 's': // make_field(5, strlen(SIGLEVEL), 4); get_value(message, 5, strlen(SIGLEVEL), 4, INT_STRING, 0, 255, __HELP); print_menusel(5, 0, SIGLEVEL, message); testmode.RegCR31 = atoi(message) & 0xFF; continue; default: continue; } break; } print_help(ANY_KEY); exit: getch(); quit: print_top(NULL, NULL); clear_main(0); } ap-utils-1.5/lib/wep.c000066400000000000000000000273641117246662700146520ustar00rootroot00000000000000/* * wep.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include #include "ap-utils.h" #define PRIVSETTINGS _("Privacy Settings") #define ENCRYPT _("[E] Standard encryption mechanism: ") #define ALLOW _("[A] Allow unencrypted: ") #define DEFAULT _("[K] Default WEP key: ") #define PUBLIC _("[P] Public key: ") extern WINDOW *main_sub; extern short ap_type; void wep() { char defaultWEPKey[4][12] = { {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x02, 0x01, 0x00}, {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x02, 0x02, 0x00}, {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x02, 0x03, 0x00}, {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x02, 0x04, 0x00} }; char privacyWEPEnable[] = {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x02, 0x05, 0x00 }; char privacyDefaultWEPKeyID[] = {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x02, 0x06, 0x00 }; char message[1024], m_wep = 0, m_wepid = 0, wepkey[4][13], m_wepkey[4] = { 0, 0, 0, 0 }; char *weps[3] = { "WEP64", OFF, "WEP128" }, *keys[4] = {"1", "2", "3", "4"}; int wep, wepid, i, c = 0; varbind varbinds[6]; unsigned int wepid_hw, wep_hw; if (ap_type == ATMEL12350) { privacyDefaultWEPKeyID[5] = 0xE0; privacyDefaultWEPKeyID[6] = 0x3E; privacyWEPEnable[5] = 0xE0; privacyWEPEnable[6] = 0x3E; for (i = 0; i < 4; i++) { defaultWEPKey[i][5] = 0xE0; defaultWEPKey[i][6] = 0x3E; } } varbinds[0].oid = privacyWEPEnable; varbinds[0].len_oid = sizeof(privacyWEPEnable); varbinds[0].type = NULL_VALUE; varbinds[0].len_val = 0; varbinds[1].oid = privacyDefaultWEPKeyID; varbinds[1].len_oid = sizeof(privacyDefaultWEPKeyID); varbinds[1].type = NULL_VALUE; varbinds[1].len_val = 0; print_help(WAIT_RET); if (snmp(varbinds, 2, GET) < 2) { print_helperr(ERR_RET); goto exit; } wep = *(varbinds[0].value); wepid = *(varbinds[1].value); print_help(_("EK1234 - set; W - write conf; Q - quit to menu")); print_top(NULL, PRIVSETTINGS); sprintf(message, "%s%s", ENCRYPT, weps[wep - 1]); mvwaddstr(main_sub, 0, 0, message); sprintf(message, "%s%d", DEFAULT, wepid); mvwaddstr(main_sub, 1, 0, message); mvwaddstr(main_sub, 3, 2, _("Key WEP")); for (i = 0; i < 4; i++) { sprintf(message, "[%d] 00.00.00.00.00.00.00.00.00.00.00.00.00", i + 1); mvwaddstr(main_sub, i + 4, 2, message); } mvwaddstr(main_sub, LAST_ROW, 1, _("Hint! Confused by WEP key values? See man ap-config for info...")); wrefresh(main_sub); noecho(); while (1) { c = getch(); switch (c) { case 'q': case 'Q': goto quit; case 'e': case 'E': wep = menu_choose(0, strlen(ENCRYPT), weps, 3) + 1; clear_main_new(0, 1); print_menusel(0, 0, ENCRYPT, weps[wep - 1]); m_wep = 1; continue; case 'k': case 'K': wepid = menu_choose(1, strlen(DEFAULT), keys, 4) + 1; clear_main_new(1, 2); sprintf(message, "%d", wepid); print_menusel(1, 0, DEFAULT, message); wrefresh(main_sub); m_wepid = 1; continue; case '1': case '2': case '3': case '4': c = c -'0'; /* message[1] = '\0'; c = strtol(message, NULL, 16); for (i = 0; i < 13; i++) */ for (i = 0; i < 13; i++) { get_value(message, c + 3, 7 + i * 3, 3, HEX_STRING, 0, 0, NULL); wepkey[c - 1][i] = strtol(message, NULL, 16); } m_wepkey[c - 1] = 1; continue; case 'w': case 'W': i = 0; if (m_wep) { wep_hw = swap4(wep); varbinds[i].oid = privacyWEPEnable; varbinds[i].len_oid = sizeof(privacyWEPEnable); varbinds[i].type = INT_VALUE; varbinds[i].value = (char *) &wep_hw; varbinds[i].len_val = 1; i++; } if (m_wepid) { wepid_hw = swap4(wepid); varbinds[i].oid = privacyDefaultWEPKeyID; varbinds[i].len_oid = sizeof(privacyDefaultWEPKeyID); varbinds[i].type = INT_VALUE; varbinds[i].value = (char *) &wepid_hw; varbinds[i].len_val = 1; i++; } for (c = 0; c < 4; c++) if (m_wepkey[c]) { varbinds[i].oid = defaultWEPKey[c]; varbinds[i].len_oid = sizeof(defaultWEPKey[c]); varbinds[i].type = STRING_VALUE; varbinds[i].value = wepkey[c]; varbinds[i].len_val = 13; i++; } print_help(WAIT_SET); if (snmp(varbinds, i, SET) <= 0) { print_helperr(ERR_SET); goto exit; } print_help(DONE_SET); goto exit; } continue; } exit: getch(); quit: print_top(NULL, NULL); clear_main(0); } void nwn_wep() { char defaultWEPKey[4][11] = { { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x03, 0x01, 0x02, 0x01, 0x01}, { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02}, { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x03, 0x01, 0x02, 0x01, 0x03}, { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x03, 0x01, 0x02, 0x01, 0x04}, }; char privacyWEPEnable[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x05, 0x01, 0x01, 0x01 }; char privacyDefaultWEPKeyID[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x05, 0x01, 0x02, 0x01 }; char oid_dot11ExcludeUnencrypted[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x05, 0x01, 0x04, 0x01 }; char oid_smtPublicKeyEnable[] = { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x02, 0x01, 0x0a, 0x00 }; char message[1024], m_wep = 0, m_wepid = 0, wepkey[4][5], m_wepkey[4] = { 0, 0, 0, 0 }, exclude, m_exclude = 0; char *weps[2] = { "WEP64", OFF }, publickey, m_publickey = 0, *keys[4] = {"1", "2", "3", "4"}, wepid=0, wepid_hw; int wep, i, c=0; varbind varbinds[15]; varbinds[0].oid = privacyWEPEnable; varbinds[0].len_oid = sizeof(privacyWEPEnable); varbinds[0].type = NULL_VALUE; varbinds[0].len_val = 0; varbinds[1].oid = oid_smtPublicKeyEnable; varbinds[1].len_oid = sizeof(oid_smtPublicKeyEnable); varbinds[1].type = NULL_VALUE; varbinds[1].len_val = 0; varbinds[2].oid = oid_dot11ExcludeUnencrypted; varbinds[2].len_oid = sizeof(oid_dot11ExcludeUnencrypted); varbinds[2].type = NULL_VALUE; varbinds[2].len_val = 0; varbinds[3].oid = privacyDefaultWEPKeyID; varbinds[3].len_oid = sizeof(privacyDefaultWEPKeyID); varbinds[3].type = NULL_VALUE; varbinds[3].len_val = 0; print_help(WAIT_RET); if (snmp(varbinds, 4, GET) < 4) { print_helperr(ERR_RET); goto exit; } wep = *(varbinds[0].value); exclude = *(varbinds[2].value); publickey = *(varbinds[1].value); wepid=*(varbinds[3].value); print_help(_("AEPK1234 - set options; W - write conf; Q - quit to menu")); print_top(NULL, PRIVSETTINGS); sprintf(message, "%s%s", ENCRYPT, weps[wep - 1]); mvwaddstr(main_sub, 1, 0, message); sprintf(message, "%s%s", ALLOW, (exclude == 2) ? ON : OFF); mvwaddstr(main_sub, 2, 0, message); sprintf(message, "%s%d", DEFAULT, wepid+1); mvwaddstr(main_sub, 3, 0, message); sprintf(message, "%s%s", PUBLIC, (publickey == 1) ? ON : OFF); mvwaddstr(main_sub, 10, 0, message); mvwaddstr(main_sub, 4, 2, _("Key WEP")); for (i = 0; i < 4; i++) { sprintf(message, "[%d] 00.00.00.00.00", i + 1); mvwaddstr(main_sub, i + 5, 2, message); } wrefresh(main_sub); noecho(); while (1) { switch (c = getch()) { case 'Q': case 'q': goto quit; case 'E': case 'e': wep = menu_choose(1, strlen(ENCRYPT), weps, 2) + 1; clear_main_new(1, 2); print_menusel(1, 0, ENCRYPT, weps[wep - 1]); m_wep = 1; continue; case 'a': case 'A': exclude = on_off(2, strlen(ALLOW)); exclude = (exclude == 2) ? 1 : 2; clear_main_new(2, 3); print_menusel(2, 0, ALLOW, (exclude == 2) ? ON : OFF); m_exclude = 1; continue; case 'p': case 'P': publickey = on_off(10, strlen(PUBLIC)); clear_main_new(10, 11); print_menusel(10, 0, PUBLIC, (publickey == 1) ? ON : OFF); m_publickey = 1; continue; case 'k': case 'K': wepid = menu_choose(3, strlen(DEFAULT), keys, 4); clear_main_new(3, 4); sprintf(message, "%d", wepid+1); print_menusel(3, 0, DEFAULT, message); m_wepid = 1; continue; case '1': case '2': case '3': case '4': // message[0] = c; // message[1] = '\0'; // c = strtol(message, NULL, 16); c = c - '0'; /* for (i = 0; i < 5; i++)*/ for (i = 0; i < 5; i++) { get_value(message, c + 4, 7 + i * 3, 3, HEX_STRING, 0, 0, NULL); wepkey[c - 1][i] = strtol(message, NULL, 16); } m_wepkey[c - 1] = 1; continue; /* case '1': for (i = 0; i < 5; i++) { get_value(message, 5, 7 + i * 3, 3, HEX_STRING, 0, 0, NULL); wepkey[i] = strtol(message, NULL, 16); } m_wepkey = 1; continue; */ case 'w': case 'W': i = 0; if (m_wep) { varbinds[i].oid = privacyWEPEnable; varbinds[i].len_oid = sizeof(privacyWEPEnable); varbinds[i].type = 0x02; varbinds[i].value = (char *) &wep; varbinds[i].len_val = 1; i++; } /* m_wep = 0; varbinds[i].oid = privacyDefaultWEPKeyID; varbinds[i].len_oid = sizeof(privacyDefaultWEPKeyID); varbinds[i].type = INT_VALUE; varbinds[i].value = &m_wep; varbinds[i].len_val = 1; i++; */ if (m_exclude) { varbinds[i].oid = oid_dot11ExcludeUnencrypted; varbinds[i].len_oid = sizeof(oid_dot11ExcludeUnencrypted); varbinds[i].type = 0x02; varbinds[i].value = &exclude; varbinds[i].len_val = 1; i++; } if (m_publickey) { varbinds[i].oid = oid_smtPublicKeyEnable; varbinds[i].len_oid = sizeof(oid_smtPublicKeyEnable); varbinds[i].type = 0x02; varbinds[i].value = &publickey; varbinds[i].len_val = 1; i++; } /* if (m_wepkey) { varbinds[i].oid = defaultWEPKey; varbinds[i].len_oid = sizeof(defaultWEPKey); varbinds[i].type = STRING_VALUE; varbinds[i].value = wepkey; varbinds[i].len_val = 5; i++; } */ if (m_wepid) { wepid_hw = swap4(wepid); varbinds[i].oid = privacyDefaultWEPKeyID; varbinds[i].len_oid = sizeof(privacyDefaultWEPKeyID); varbinds[i].type = INT_VALUE; varbinds[i].value = (char *) &wepid_hw; varbinds[i].len_val = 1; i++; } print_help(WAIT_SET); if (snmp(varbinds, i, SET) <= 0) { print_helperr(ERR_SET); goto exit; } i=0; for (c = 0; c < 4; c++) if (m_wepkey[c]) { varbinds[i].oid = defaultWEPKey[c]; varbinds[i].len_oid = sizeof(defaultWEPKey[c]); varbinds[i].type = STRING_VALUE; varbinds[i].value = wepkey[c]; varbinds[i].len_val = 5; i++; } if (snmp(varbinds, i, SET) <= 0) { print_helperr(ERR_SET); goto exit; } print_help(DONE_SET); goto exit; } continue; } print_help(ANY_KEY); exit: getch(); quit: print_top(NULL, NULL); clear_main(0); } ap-utils-1.5/lib/wlan.c000066400000000000000000001012401117246662700150020ustar00rootroot00000000000000/* * wlan.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include #include "ap-utils.h" #define ESSID _("[E] ESSID: ") #define AP_NAME _("[N] AP name: ") #define CONTACT _("[K] AP contact: ") #define LOCATION _("[L] AP location: ") #define RTS_TR _("[R] RTS threshold: ") #define FRG_TR _("[F] Fragmentation threshold: ") #define PREAMBULE _("[P] Preambule type: ") #define AUTH _("[A] Auth type: ") #define OSYS _("Open system") #define SH_KEY _("Shared key") #define BOTH_TYPE _("Both types") #define RETRAIN _("[U] Auto rate fallback: ") #define HIDE_ESSID _("[S] Insert ESSID in broadcast packets: ") #define RATES _("Basic and Supported rates:") #define RATES_HEAD _("Key Rate Status") #define RATES_RECORD "[%d] %4.1fM " #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 (2nd+ interframe spacing, usec): ") #define WLAN_HELP _("[key] - set option; W - write conf; Q - quit to menu") extern short ap_type, ap_vendorext; void atmel_wireless() { char sysDeviceInfo[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x05, 0x00 }; char operChannelID[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x01, 0x00 }; char operESSIDLength[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x02, 0x00 }; char operESSID[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x03, 0x00 }; char operRTSThreshold[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x04, 0x00 }; char operFragmentationThreshold[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x05, 0x00 }; char operPreambleType[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x06, 0x00 }; char operAuthenticationType[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x07, 0x00 }; char operBasicRates[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x08, 0x00 }; char operAutoRateFallBack[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x09, 0x00 }; char operAccessPointName[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x0A, 0x00 }; char operSSIDBroadcasting[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x0B, 0x00 }; /* This one is ATMEL12350 MIB specific. */ char operInterRoaming[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x01, 0x0D, 0x00 }; /* 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 EZYNET MIB specific. */ char operSIFSTIME[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x01, 0x10, 0x00 }; extern WINDOW *main_sub; extern rdprops regdom_types[]; extern char *channels[]; varbind varbinds[16]; unsigned short int RTSThreshold, FragmentationThreshold, InterRoaming, m_basic_rates = 0, BeaconPeriod = 0, sifs = 0; unsigned char dtim, ch; char *AuthenticationTypes[3] = { OSYS, SH_KEY, BOTH_TYPE }, message[1024]; 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, m_sifs = 0; char *rates[3] = { ON, OFF, BASIC }, *preambules[2] = { _("Short"), _("Long")}; short __rates[4] = { 2, 4, 11, 22 }; int i, c = 0, rd_idx; unsigned short ap_regdomain; struct sysDeviceInfo_128 str128; struct sysDeviceInfo_160 str160; if (ap_type == ATMEL12350) { sysDeviceInfo[5] = 0xE0; sysDeviceInfo[6] = 0x3E; operChannelID[5] = 0xE0; operChannelID[6] = 0x3E; operESSIDLength[5] = 0xE0; operESSIDLength[6] = 0x3E; operESSID[5] = 0xE0; operESSID[6] = 0x3E; operRTSThreshold[5] = 0xE0; operRTSThreshold[6] = 0x3E; operFragmentationThreshold[5] = 0xE0; operFragmentationThreshold[6] = 0x3E; operPreambleType[5] = 0xE0; operPreambleType[6] = 0x3E; operAuthenticationType[5] = 0xE0; operAuthenticationType[6] = 0x3E; operBasicRates[5] = 0xE0; operBasicRates[6] = 0x3E; operAutoRateFallBack[5] = 0xE0; operAutoRateFallBack[6] = 0x3E; operAccessPointName[5] = 0xE0; operAccessPointName[6] = 0x3E; operSSIDBroadcasting[5] = 0xE0; operSSIDBroadcasting[6] = 0x3E; } for (i = 0; i < 16; i++) { varbinds[i].type = NULL_VALUE; varbinds[i].len_val = 0; varbinds[i].len_oid = sizeof(operChannelID); } i = 0; varbinds[i++].oid = operChannelID; varbinds[i++].oid = operESSIDLength; varbinds[i++].oid = operESSID; varbinds[i++].oid = operSSIDBroadcasting; varbinds[i++].oid = operBasicRates; varbinds[i++].oid = operAutoRateFallBack; varbinds[i++].oid = operRTSThreshold; varbinds[i++].oid = operFragmentationThreshold; varbinds[i++].oid = operPreambleType; varbinds[i++].oid = operAuthenticationType; varbinds[i++].oid = operAccessPointName; varbinds[i++].oid = sysDeviceInfo; if (ap_type == ATMEL12350) { varbinds[i++].oid = operInterRoaming; if (ap_vendorext == GEMTEK || ap_vendorext == EZYNET) { varbinds[i++].oid = operBeaconPeriod; varbinds[i++].oid = operDTIM; } if (ap_vendorext == EZYNET) varbinds[i++].oid = operSIFSTIME; } print_help(WAIT_RET); if (snmp(varbinds, i, GET) < i) { print_helperr(ERR_RET); goto exit; } 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); memcpy(&RTSThreshold, varbinds[6].value, 2); RTSThreshold = ntohs(RTSThreshold); memcpy(&FragmentationThreshold, varbinds[7].value, 2); FragmentationThreshold = ntohs(FragmentationThreshold); 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 == 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 == 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 (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); print_top(NULL, _("Wireless Settings")); sprintf(message, "%s%02u (%u MHz)", CHANNEL, channel, 2407 + 5 * channel); mvwaddstr(main_sub, 0, 0, message); mvwaddstr(main_sub, 1, 0, ESSID); waddnstr(main_sub, domain, c); mvwaddstr(main_sub, 2, 0, AP_NAME); for (i = 0; i < 32 && ap_name[i]; i++) mvwaddch(main_sub, 2, strlen(AP_NAME) + i, ap_name[i]); sprintf(message, "%s%d", RTS_TR, RTSThreshold); mvwaddstr(main_sub, 3, 0, message); sprintf(message, "%s%d", FRG_TR, FragmentationThreshold); mvwaddstr(main_sub, 4, 0, message); sprintf(message, "%s%s", PREAMBULE, preambules[PreambleType - 1]); mvwaddstr(main_sub, 5, 0, message); sprintf(message, "%s%s", AUTH, AuthenticationTypes[AuthenticationType - 1]); mvwaddstr(main_sub, 6, 0, message); sprintf(message, "%s%s", RETRAIN, (AutoRateFallBack == 1) ? ON : OFF); mvwaddstr(main_sub, 7, 0, message); sprintf(message, "%s%s", HIDE_ESSID, (SSIDBroadcasting == 1) ? ON : OFF); mvwaddstr(main_sub, 8, 0, message); mvwaddstr(main_sub, 9, 0, RATES); mvwaddstr(main_sub, 10, 2, RATES_HEAD); for (i = 0; i < 4; i++) { sprintf(message, RATES_RECORD "%s", i + 1, (float) __rates[i] / 2, basic(basic_rates[i])); mvwaddstr(main_sub, 11 + i, 2, message); } if (ap_type == ATMEL12350) { sprintf(message, "%s%s", INT_ROAMING, (InterRoaming == 1) ? ON : OFF); mvwaddstr(main_sub, 15, 0, message); 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 == EZYNET) { sprintf(message, "%s%u", SIFS_T, sifs); mvwaddstr(main_sub, 18, 0, message); } } wrefresh(main_sub); noecho(); print_help(WLAN_HELP); while (1) { c = getch(); switch (c) { case 'Q': case 'q': goto quit; case '1': case '2': case '3': case '4': message[0] = c; message[1] = '\0'; i = atoi(message); switch (menu_choose(10 + i, 15, rates, 3)) { case 0: basic_rates[i - 1] = __rates[i - 1]; break; case 1: basic_rates[i - 1] = 0; break; case 2: basic_rates[i - 1] = __rates[i - 1] + 0x80; } clear_main_new(10 + i, 11 + i); sprintf(message, RATES_RECORD, i, (float) __rates[i - 1] / 2); print_menusel(10 + i, 2, message, basic(basic_rates[i - 1])); m_basic_rates = 1; break; case 'C': case 'c': channel = menu_choose(0, strlen(CHANNEL), #ifndef NO_REG_DOMAIN channels + regdom_types[rd_idx].first_ch - 1, regdom_types[rd_idx].chans) + regdom_types[rd_idx].first_ch; #else channels, 14) + 1; #endif sprintf(message, "%02u (%u MHz)", channel, 2407 + 5 * channel); print_menusel(0, 0, CHANNEL, message); m_channel = 1; continue; case 'A': case 'a': AuthenticationType = menu_choose(6, strlen(AUTH), AuthenticationTypes, 3) + 1; clear_main_new(6, 7); print_menusel(6, 0, AUTH, AuthenticationTypes[AuthenticationType - 1]); m_auth = 1; continue; case 'P': case 'p': PreambleType = menu_choose(5, strlen(PREAMBULE), preambules, 2) + 1; clear_main_new(5, 6); print_menusel(5, 0, PREAMBULE, preambules[PreambleType - 1]); m_preambule = 1; continue; case 'U': case 'u': AutoRateFallBack = on_off(7, strlen(RETRAIN)); clear_main_new(7, 8); print_menusel(7, 0, RETRAIN, (AutoRateFallBack == 1) ? ON : OFF); m_auto_rate = 1; continue; case 'S': case 's': SSIDBroadcasting = on_off(8, strlen(HIDE_ESSID)); clear_main_new(8, 9); print_menusel(8, 0, HIDE_ESSID, (SSIDBroadcasting == 1) ? ON : OFF); m_broadcast = 1; continue; case 'N': case 'n': // 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), 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), 5, INT_STRING, 256, 2346, WLAN_HELP); FragmentationThreshold = atoi(message); m_fragment = 1; continue; case 'R': case 'r': // make_field(3, strlen(RTS_TR), 6); get_value(message, 3, strlen(RTS_TR), 5, INT_STRING, 0, 2347, WLAN_HELP); RTSThreshold = atoi(message); m_rts = 1; continue; case 'I': case 'i': if (ap_type == ATMEL410) continue; InterRoaming = on_off(15, strlen(INT_ROAMING)); clear_main_new(15, 16); print_menusel(15, 0, INT_ROAMING, (InterRoaming == 1) ? ON : OFF); m_inter_roaming = 1; continue; case 'B': case 'b': if (ap_vendorext != GEMTEK && ap_vendorext != EZYNET) continue; get_value(message, 16, strlen(BEACON_PER), 6, INT_STRING, 0, 65535, WLAN_HELP); BeaconPeriod = atoi(message); m_beacon = 1; continue; case 'D': case 'd': if (ap_vendorext != GEMTEK && ap_vendorext != EZYNET) continue; get_value(message, 17, strlen(DTIM_I), 4, INT_STRING, 0, 255, WLAN_HELP); dtim = atoi(message); m_dtim = 1; continue; case 'T': case 't': if (ap_vendorext != EZYNET) continue; get_value(message, 18, strlen(SIFS_T), 6, INT_STRING, 0, 65535, WLAN_HELP); sifs = atoi(message); m_sifs = 1; continue; case 'w': case 'W': i = 0; if (m_channel) { varbinds[i].oid = operChannelID; varbinds[i].len_oid = sizeof(operChannelID); varbinds[i].value = (char *) &channel; varbinds[i].len_val = 1; varbinds[i].type = INT_VALUE; i++; } if (m_basic_rates) { for (m_basic_rates = 0; m_basic_rates < 2; m_basic_rates++) { c = basic_rates[3 - m_basic_rates]; basic_rates[3 - m_basic_rates] = basic_rates[m_basic_rates]; basic_rates[m_basic_rates] = c; } varbinds[i].oid = operBasicRates; varbinds[i].len_oid = sizeof(operBasicRates); varbinds[i].value = basic_rates; varbinds[i].len_val = 4; varbinds[i].type = INT_VALUE; i++; } if (m_broadcast) { varbinds[i].oid = operSSIDBroadcasting; varbinds[i].len_oid = sizeof(operSSIDBroadcasting); varbinds[i].value = (char *) &SSIDBroadcasting; varbinds[i].len_val = 1; varbinds[i].type = INT_VALUE; i++; } if (m_auth) { varbinds[i].oid = operAuthenticationType; varbinds[i].len_oid = sizeof(operAuthenticationType); varbinds[i].value = &AuthenticationType; varbinds[i].len_val = 1; varbinds[i].type = INT_VALUE; i++; } if (m_preambule) { varbinds[i].oid = operPreambleType; varbinds[i].len_oid = sizeof(operPreambleType); varbinds[i].value = &PreambleType; varbinds[i].len_val = 1; varbinds[i].type = INT_VALUE; i++; } if (m_auto_rate) { varbinds[i].oid = operAutoRateFallBack; varbinds[i].len_oid = sizeof(operAutoRateFallBack); varbinds[i].value = &AutoRateFallBack; varbinds[i].len_val = 1; varbinds[i].type = INT_VALUE; i++; } if (m_ap_name) { c = strlen(ap_name); varbinds[i].oid = operAccessPointName; varbinds[i].len_oid = sizeof(operAccessPointName); varbinds[i].value = ap_name; varbinds[i].len_val = c; varbinds[i].type = STRING_VALUE; i++; } if (m_fragment) { varbinds[i].oid = operFragmentationThreshold; varbinds[i].len_oid = sizeof(operFragmentationThreshold); FragmentationThreshold = htons(FragmentationThreshold); varbinds[i].value = (char *) &FragmentationThreshold; varbinds[i].len_val = 2; varbinds[i].type = INT_VALUE; i++; } if (m_rts) { varbinds[i].oid = operRTSThreshold; varbinds[i].len_oid = sizeof(operRTSThreshold); RTSThreshold = htons(RTSThreshold); varbinds[i].value = (char *) &RTSThreshold; varbinds[i].len_val = 2; varbinds[i].type = INT_VALUE; i++; } if (m_essid) { ch = strlen(domain); varbinds[i].oid = operESSIDLength; varbinds[i].len_oid = sizeof(operESSIDLength); varbinds[i].value = (char *)&ch; varbinds[i].len_val = 1; varbinds[i].type = INT_VALUE; i++; varbinds[i].oid = operESSID; varbinds[i].len_oid = sizeof(operESSID); varbinds[i].value = domain; varbinds[i].len_val = ch; varbinds[i].type = STRING_VALUE; i++; } if (m_inter_roaming) { varbinds[i].oid = operInterRoaming; varbinds[i].len_oid = sizeof(operInterRoaming); varbinds[i].value = (char *) &InterRoaming; varbinds[i].len_val = 1; varbinds[i].type = INT_VALUE; i++; } if (m_beacon) { varbinds[i].oid = operBeaconPeriod; varbinds[i].len_oid = sizeof(operBeaconPeriod); BeaconPeriod = htons(BeaconPeriod); varbinds[i].value = (char *) &BeaconPeriod; varbinds[i].len_val = 2; varbinds[i].type = INT_VALUE; i++; } if (m_dtim) { varbinds[i].oid = operDTIM; varbinds[i].len_oid = sizeof(operDTIM); varbinds[i].value = (char *) &dtim; varbinds[i].len_val = 1; varbinds[i].type = INT_VALUE; i++; } if (m_sifs) { varbinds[i].oid = operSIFSTIME; varbinds[i].len_oid = sizeof(operSIFSTIME); sifs = htons(sifs); varbinds[i].value = (char *) &sifs; 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); wrefresh(main_sub); print_help(DONE_SET); goto exit; } } exit: getch(); quit: print_top(NULL, NULL); clear_main(0); } void nwn_wireless() { char operESSID[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x09, 0x01 }; char operBasicRates[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x0b, 0x01 }; char OpenSystem[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x02, 0x01, 0x03, 0x01, 0x01 }; char SharedKey[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02 }; char operRTSThreshold[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x01, 0x01, 0x02, 0x01 }; char operFragmentationThreshold[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x01, 0x01, 0x05, 0x01 }; char operChannelID[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x05, 0x01, 0x01, 0x01 }; char oid_dot11SupportedAntenna[][11] = { { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x08, 0x01, 0x02, 0x01, 0x01 }, { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x08, 0x01, 0x02, 0x01, 0x02 }, { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x08, 0x01, 0x03, 0x01, 0x01 }, { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x08, 0x01, 0x03, 0x01, 0x02 }, { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x08, 0x01, 0x04, 0x01, 0x01 }, { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x08, 0x01, 0x04, 0x01, 0x02 } }; char operAccessPointContact[] = { 0x2b, 0x06, 0x01, 0x02, 0x01, 0x01, 0x04, 0x00 }; char operAccessPointName[] = { 0x2b, 0x06, 0x01, 0x02, 0x01, 0x01, 0x05, 0x00 }; char operAccessPointLocation[] = { 0x2b, 0x06, 0x01, 0x02, 0x01, 0x01, 0x06, 0x00 }; char sysTrapSwitch[] = { 0x2b, 0x06, 0x01, 0x02, 0x01, 0x0b, 0x1e, 0x00 }; char ChannelPref[] = { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x02, 0x01, 0x06, 0x00 }; unsigned short int i, RTSThreshold, FragmentationThreshold, m_basic_rates = 0, authi; char *auth[3] = { OSYS, SH_KEY, BOTH_TYPE }, *rates[3] = { ON, OFF, BASIC }, message[1024], m_antenna[6] = { 0, 0, 0, 0, 0, 0 }, antenna[6], channel_pref[2] = { 0, 0 }; extern WINDOW *main_sub; extern rdprops regdom_types[]; extern char *channels[]; char *domain, basic_rates[] = { 0, 0, 0, 0 }, *ap_name, ap_location[32], ap_contact[32], m_ap_contact = 0, m_ap_location = 0; char m_channel = 0, m_essid = 0, m_rts = 0, m_fragment = 0, m_auth = 0, m_ap_name = 0, channel, traps, m_traps = 0; varbind varbinds[11]; int c = 0, reg_domain = 0, rd_idx; short __rates[4] = { 2, 4, 11, 22}; domain = (char *) calloc(32, 1); ap_name = (char *) calloc(32, 1); for (i = 0; i < 8; i++) { varbinds[i].len_val = 0; varbinds[i].type = NULL_VALUE; } varbinds[0].oid = operChannelID; varbinds[0].len_oid = sizeof(operChannelID); varbinds[1].oid = operESSID; varbinds[1].len_oid = sizeof(operESSID); varbinds[2].oid = operRTSThreshold; varbinds[2].len_oid = sizeof(operRTSThreshold); varbinds[3].oid = operFragmentationThreshold; varbinds[3].len_oid = sizeof(operFragmentationThreshold); varbinds[4].oid = operBasicRates; varbinds[4].len_oid = sizeof(operBasicRates); varbinds[5].oid = OpenSystem; varbinds[5].len_oid = sizeof(OpenSystem); varbinds[6].oid = SharedKey; varbinds[6].len_oid = sizeof(SharedKey); varbinds[7].oid = operAccessPointName; varbinds[7].len_oid = sizeof(operAccessPointName); print_help(WAIT_RET); if (snmp(varbinds, 8, GET) < 8) { print_helperr(ERR_RET); goto exit; } channel = *(varbinds[0].value); memcpy(domain, varbinds[1].value, varbinds[1].len_val); memcpy(basic_rates, varbinds[4].value, varbinds[4].len_val); memcpy(&RTSThreshold, (varbinds[2].value), 2); RTSThreshold = ntohs(RTSThreshold); memcpy(&FragmentationThreshold, (varbinds[3].value), 2); FragmentationThreshold = ntohs(FragmentationThreshold); authi = (*(varbinds[5].value) == 1 && *(varbinds[6].value) == 1) ? 2 : (*(varbinds[5].value) == 1) ? 0 : 1; memcpy(ap_name, varbinds[7].value, varbinds[7].len_val); sprintf(message, "%s%02u (%u MHz)", CHANNEL, channel, 2407 + 5 * channel); mvwaddstr(main_sub, 0, 0, message); mvwaddstr(main_sub, 1, 0, ESSID); for (i = 0; i < 32 && domain[i]; i++) mvwaddch(main_sub, 1, strlen(ESSID) + i, domain[i]); mvwaddstr(main_sub, 2, 0, AP_NAME); for (i = 0; i < 32 && ap_name[i]; i++) mvwaddch(main_sub, 2, strlen(AP_NAME) + i, ap_name[i]); sprintf(message, "%s%d", RTS_TR, RTSThreshold); mvwaddstr(main_sub, 3, 0, message); sprintf(message, "%s%d", FRG_TR, FragmentationThreshold); mvwaddstr(main_sub, 4, 0, message); sprintf(message, "%s%s", AUTH, auth[authi]); mvwaddstr(main_sub, 6, 0, message); mvwaddstr(main_sub, 9, 0, RATES); mvwaddstr(main_sub, 10, 2, RATES_HEAD); for(i = 0; i < 4; i++) { sprintf(message, RATES_RECORD "%s", i + 1, (float) __rates[i] / 2, basic(basic_rates[i])); mvwaddstr(main_sub, 11+i, 2, message); } reg_domain = get_RegDomain(); rd_idx = regdom_idx(reg_domain); for (i = 0; i < 9; i++) { varbinds[i].len_val = 0; varbinds[i].type = NULL_VALUE; } for (i = 0; i < 6; i++) { varbinds[i].oid = oid_dot11SupportedAntenna[i]; varbinds[i].len_oid = sizeof(oid_dot11SupportedAntenna[i]); } varbinds[6].oid = sysTrapSwitch; varbinds[6].len_oid = sizeof(sysTrapSwitch); varbinds[7].oid = operAccessPointContact; varbinds[7].len_oid = sizeof(operAccessPointContact); varbinds[8].oid = operAccessPointLocation; varbinds[8].len_oid = sizeof(operAccessPointLocation); if (snmp(varbinds, 9, GET) < 9) { print_helperr(ERR_RET); goto exit; } for (i = 0; i < 6; i++) { antenna[i] = *varbinds[i].value; } traps = *(varbinds[6].value); memcpy(ap_contact, varbinds[7].value, varbinds[7].len_val); if (varbinds[7].len_val < 32) ap_contact[varbinds[7].len_val] = '\0'; memcpy(ap_location, varbinds[8].value, varbinds[8].len_val); if (varbinds[8].len_val < 32) ap_location[varbinds[8].len_val] = '\0'; sprintf(message, "%s%s", LOCATION, ap_location); mvwaddstr(main_sub, 7, 0, message); sprintf(message, "%s%s", CONTACT, ap_contact); mvwaddstr(main_sub, 8, 0, message); sprintf(message, "%s%s", TRAPS, (traps == 1) ? ON : OFF); mvwaddstr(main_sub, 5, 0, message); mvwaddstr(main_sub, 16, 0, _("Antenna Configuration:")); sprintf(message, "%s %s %3s, %s %3s", ANTENNA_RX, ANTENNA_RX_LEFT, (antenna[2] == 1) ? ON : OFF, ANTENNA_RX_RIGHT, (antenna[3] == 1) ? ON : OFF); mvwaddstr(main_sub, 17, 1, message); sprintf(message, "%s %s %3s, %s %3s", ANTENNA_TX, ANTENNA_TX_LEFT, (antenna[0] == 1) ? ON : OFF, ANTENNA_TX_RIGHT, (antenna[1] == 1) ? ON : OFF); mvwaddstr(main_sub, 18, 1, message); sprintf(message, "%s %s %3s, %s %3s", ANTENNA_DV, ANTENNA_DV_LEFT, (antenna[4] == 1) ? ON : OFF, ANTENNA_DV_RIGHT, (antenna[5] == 1) ? ON : OFF); mvwaddstr(main_sub, 19, 1, message); print_top(NULL, _("General Options")); print_help(_ ("UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu")); wrefresh(main_sub); noecho(); while (1) { c = getch(); switch (c) { case 'i': case 'I': i = strlen(ANTENNA_RX) + 1 + strlen(ANTENNA_RX_LEFT) + 6 + strlen(ANTENNA_RX_RIGHT) + 2; antenna[3] = on_off(17, i); sprintf(message, "%3s", (antenna[3] == 1) ? ON : OFF); print_menusel(17, i, NULL, message); m_antenna[3] = 1; continue; case 'u': case 'U': i = strlen(ANTENNA_RX) + 1 + strlen(ANTENNA_RX_LEFT) + 2; antenna[2] = on_off(17, i); sprintf(message, "%3s", (antenna[2] == 1) ? ON : OFF); print_menusel(17, i, NULL, message); m_antenna[2] = 1; continue; case 'p': case 'P': i = strlen(ANTENNA_TX) + 1 + strlen(ANTENNA_TX_LEFT) + 6 + strlen(ANTENNA_TX_RIGHT) + 2; antenna[1] = on_off(18, i); sprintf(message, "%3s", (antenna[1] == 1) ? ON : OFF); print_menusel(18, i, NULL, message); m_antenna[1] = 1; continue; case 'o': case 'O': i = strlen(ANTENNA_TX) + 1 + strlen(ANTENNA_TX_LEFT) + 2; antenna[0] = on_off(18, i); sprintf(message, "%3s", (antenna[0] == 1) ? ON : OFF); print_menusel(18, i, NULL, message); m_antenna[0] = 1; continue; case 'T': case 't': i = strlen(ANTENNA_DV) + 1 + strlen(ANTENNA_DV_LEFT) + 2; antenna[4] = on_off(19, i); sprintf(message, "%3s", (antenna[4] == 1) ? ON : OFF); print_menusel(19, i, NULL, message); m_antenna[4] = 1; continue; case 'Y': case 'y': i = strlen(ANTENNA_DV) + 1 + strlen(ANTENNA_DV_LEFT) + 6 + strlen(ANTENNA_DV_RIGHT) + 2; antenna[5] = on_off(19, i); sprintf(message, "%3s", (antenna[5] == 1) ? ON : OFF); print_menusel(19, i, NULL, message); m_antenna[5] = 1; continue; case 'S': case 's': traps = on_off(5, strlen(TRAPS)); clear_main_new(5, 6); print_menusel(5, 0, TRAPS, (traps == 1) ? ON : OFF); m_traps = 1; continue; case 'Q': case 'q': goto quit; case '1': case '2': case '3': case '4': i = c - '0'; switch (menu_choose(10 + i, 15, rates, 3)) { case 0: basic_rates[i-1] = __rates[i-1]; break; case 1: basic_rates[i-1] = 0; break; case 2: basic_rates[i-1] = __rates[i-1] + 0x80; } clear_main_new(10 + i, 11 + i); sprintf(message, RATES_RECORD, i, (float) __rates[i-1] / 2); print_menusel(10 + i, 2, message, basic(basic_rates[i-1])); m_basic_rates = 1; break; case 'C': case 'c': channel = menu_choose(0, strlen(CHANNEL), #ifndef NO_REG_DOMAIN channels + regdom_types[rd_idx].first_ch - 1, regdom_types[rd_idx].chans) + regdom_types[rd_idx].first_ch; #else channels, 14) + 1; #endif sprintf(message, "%02u (%u MHz)", channel, 2407 + 5 * channel); print_menusel(0, 0, CHANNEL, message); m_channel = 1; continue; case 'A': case 'a': authi = menu_choose(6, strlen(AUTH), auth, 3); clear_main_new(6, 7); print_menusel(6, 0, AUTH, auth[authi]); m_auth = 1; continue; case 'N': case 'n': get_value(ap_name, 2, strlen(AP_NAME), 32, ANY_STRING, 0, 0, NULL); m_ap_name = 1; continue; case 'L': case 'l': get_value(ap_location, 7, strlen(LOCATION), 32, ANY_STRING, 0, 0, NULL); m_ap_location = 1; continue; case 'K': case 'k': get_value(ap_contact, 8, strlen(CONTACT), 32, ANY_STRING, 0, 0, NULL); m_ap_contact = 1; continue; case 'E': case 'e': get_value(domain, 1, strlen(ESSID), 32, ANY_STRING, 0, 0, NULL); m_essid = 1; continue; case 'F': case 'f': 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), 5, INT_STRING, 0, 2347, WLAN_HELP); RTSThreshold = atoi(message); m_rts = 1; continue; case 'w': case 'W': i = 0; if (m_channel) { channel_pref[0] = channel; varbinds[i].oid = ChannelPref; varbinds[i].len_oid = sizeof(ChannelPref); varbinds[i].value = channel_pref; varbinds[i].len_val = 2; varbinds[i].type = STRING_VALUE; i++; varbinds[i].oid = operChannelID; varbinds[i].len_oid = sizeof(operChannelID); varbinds[i].value = (char *) &channel; varbinds[i].len_val = 1; varbinds[i].type = 0x02; i++; } if (m_basic_rates) { varbinds[i].oid = operBasicRates; varbinds[i].len_oid = sizeof(operBasicRates); varbinds[i].value = basic_rates; varbinds[i].len_val = 4; varbinds[i].type = STRING_VALUE; i++; } 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; varbinds[i].oid = OpenSystem; varbinds[i].len_oid = sizeof(OpenSystem); varbinds[i].value = (char *) &m_auth; varbinds[i].len_val = 1; varbinds[i].type = INT_VALUE; i++; varbinds[i].oid = SharedKey; varbinds[i].len_oid = sizeof(SharedKey); varbinds[i].value = (char *) &m_basic_rates; varbinds[i].len_val = 1; varbinds[i].type = INT_VALUE; i++; } 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; varbinds[i].len_oid = sizeof(operAccessPointName); varbinds[i].value = ap_name; varbinds[i].len_val = c; varbinds[i].type = STRING_VALUE; i++; } if (m_ap_location) { c = strlen(ap_location); varbinds[i].oid = operAccessPointLocation; varbinds[i].len_oid = sizeof(operAccessPointLocation); varbinds[i].value = ap_location; varbinds[i].len_val = c; varbinds[i].type = STRING_VALUE; i++; } if (snmp(varbinds, i, SET) <= 0) { print_helperr(ERR_SET); goto exit; } i = 0; if (m_ap_contact) { c = strlen(ap_contact); varbinds[i].oid = operAccessPointContact; varbinds[i].len_oid = sizeof(operAccessPointContact); varbinds[i].value = ap_contact; varbinds[i].len_val = c; varbinds[i].type = STRING_VALUE; i++; } if (m_fragment) { varbinds[i].oid = operFragmentationThreshold; varbinds[i].len_oid = sizeof(operFragmentationThreshold); FragmentationThreshold = htons(FragmentationThreshold); varbinds[i].value = (char *) &FragmentationThreshold; varbinds[i].len_val = 2; varbinds[i].type = 0x02; i++; } if (m_rts) { varbinds[i].oid = operRTSThreshold; varbinds[i].len_oid = sizeof(operRTSThreshold); RTSThreshold = htons(RTSThreshold); varbinds[i].value = (char *) &RTSThreshold; varbinds[i].len_val = 2; varbinds[i].type = 0x02; i++; } if (m_traps) { varbinds[i].oid = sysTrapSwitch; varbinds[i].len_oid = sizeof(sysTrapSwitch); varbinds[i].value = &traps; varbinds[i].len_val = 1; varbinds[i].type = 0x02; i++; } if (snmp(varbinds, i, SET) <= 0) { print_helperr(ERR_SET); goto exit; } c = 0; for (i = 0; i < 4; i++) if (m_antenna[i]) { varbinds[c].oid = oid_dot11SupportedAntenna[i]; varbinds[c].len_oid = sizeof(oid_dot11SupportedAntenna[i]); varbinds[c].value = &antenna[i]; varbinds[c].len_val = 1; varbinds[c].type = INT_VALUE; c++; } if (snmp(varbinds, c, SET) <= 0) { print_helperr(ERR_SET); goto exit; } c = 0; for (i = i; i < 6; i++) if (m_antenna[i]) { varbinds[c].oid = oid_dot11SupportedAntenna[i]; varbinds[c].len_oid = sizeof(oid_dot11SupportedAntenna[i]); varbinds[c].value = &antenna[i]; varbinds[c].len_val = 1; varbinds[c].type = INT_VALUE; c++; } if (snmp(varbinds, c, SET) <= 0) { print_helperr(ERR_SET); goto exit; } i = 0; if (m_essid) { c = strlen(domain); varbinds[i].oid = operESSID; varbinds[i].len_oid = sizeof(operESSID); varbinds[i].value = domain; varbinds[i].len_val = c; varbinds[i].type = 0x04; i++; } 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: continue; } } exit: getch(); quit: print_top(NULL, NULL); free(domain); free(ap_name); clear_main(0); } ap-utils-1.5/po/000077500000000000000000000000001117246662700135475ustar00rootroot00000000000000ap-utils-1.5/po/ChangeLog000066400000000000000000000670141117246662700153310ustar00rootroot00000000000000--- ap-utils-1.4.1/po/pl.po.orig 2004-10-17 19:17:25.000000000 +0200 +++ ap-utils-1.4.1/po/pl.po 2004-10-17 20:43:38.000000000 +0200 @@ -17,12 +17,12 @@ # src/ap-config.c:42 src/bridge.c:166 #: ap-gl/ap-gl.c:47 ap-gl/bridge.c:179 src/ap-config.c:46 src/bridge.c:222 msgid "Bridging" -msgstr "Bridge'owanie" +msgstr "Most" # src/ap-config.c:42 #: ap-gl/ap-gl.c:47 src/ap-config.c:46 msgid "Set bridging and IP-related options" -msgstr "Ustawinaie opcji bridge'a i IP" +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:49 ap-gl/ap-gl.c:85 ap-gl/bridge.c:133 src/ap-config.c:48 @@ -33,23 +33,22 @@ # src/ap-config.c:44 #: ap-gl/ap-gl.c:49 src/ap-config.c:48 msgid "Set wireless options" -msgstr "Ustawianie opcji radiowych" +msgstr "Opcje radiowe" # src/ap-config.c:45 src/ap-config.c:57 #: ap-gl/ap-gl.c:50 src/ap-config.c:49 src/ap-config.c:61 msgid "Privacy" -msgstr "Bezpieczeñstwo" +msgstr "Klucze" # src/ap-config.c:46 src/ap-config.c:58 #: ap-gl/ap-gl.c:51 src/ap-config.c:50 src/ap-config.c:62 -#, fuzzy msgid "MAC auth" -msgstr "Dostêp w/g MAC" +msgstr "Blokuj MAC" # src/ap-config.c:47 src/ap-config.c:59 #: ap-gl/ap-gl.c:52 src/ap-config.c:51 src/ap-config.c:63 msgid "Community" -msgstr "Prawa dostêpu" +msgstr "Dostêp" # src/ap-config.c:48 #: ap-gl/ap-gl.c:53 src/ap-config.c:52 @@ -64,12 +63,12 @@ # src/ap-config.c:78 #: ap-gl/ap-gl.c:66 src/ap-config.c:83 msgid "Upload" -msgstr "Za³aduj do AP" +msgstr "Wy¶lij" # src/ap-config.c:78 #: ap-gl/ap-gl.c:66 src/ap-config.c:83 msgid "Make current configuration active" -msgstr "Zapisuje aktualn± konfiguracje na sta³e" +msgstr "Uczyñ konfiguracjê aktywn±" # src/ap-config.c:79 #: ap-gl/ap-gl.c:67 src/ap-config.c:84 @@ -79,7 +78,7 @@ # src/ap-config.c:79 #: ap-gl/ap-gl.c:67 src/ap-config.c:84 msgid "Restore factory default settings" -msgstr "Ustaw opcje standardowe producenta" +msgstr "Przywróæ ustawienia producenta" # src/ap-config.c:81 src/ap-config.c:89 #: ap-gl/ap-gl.c:69 src/ap-config.c:86 src/ap-config.c:94 @@ -89,12 +88,12 @@ # src/ap-config.c:82 #: ap-gl/ap-gl.c:70 src/ap-config.c:87 msgid "Reset AP. All not uploaded configuration will be lost" -msgstr "Reset Access-pointa. Wszystkie nie za³adowane opcje bêd± utracone" +msgstr "Reset. Wszystkie nie za³adowane opcje bêd± utracone" # src/ap-config.c:84 #: ap-gl/ap-gl.c:72 src/ap-config.c:89 msgid "TestMode" -msgstr "Tryb testowy" +msgstr "TrybTest" # src/ap-config.c:84 #: ap-gl/ap-gl.c:72 src/ap-config.c:89 @@ -115,7 +114,7 @@ # src/ap-config.c:111 #: ap-gl/ap-gl.c:84 src/ap-config.c:117 msgid "Get ethernet port statistics" -msgstr "Pobiera statystyki portu ethernet" +msgstr "Pobierz statystyki ethernetu" # src/ap-config.c:113 src/ap-config.c:122 #: ap-gl/ap-gl.c:86 src/ap-config.c:119 src/ap-config.c:128 @@ -125,22 +124,22 @@ # src/ap-config.c:115 #: ap-gl/ap-gl.c:88 src/ap-config.c:121 msgid "KnownAPs" -msgstr "Znane access-pointy" +msgstr "Znane AP" # src/ap-config.c:115 #: ap-gl/ap-gl.c:88 src/ap-config.c:121 msgid "Get info about known Access Points" -msgstr "Podaje informacje o znanych access-pointach" +msgstr "Podaj informacje o Access Pointach" # src/ap-config.c:141 #: ap-gl/ap-gl.c:105 src/ap-config.c:154 msgid "Info" -msgstr "Informacja" +msgstr "Info" # src/ap-config.c:142 #: ap-gl/ap-gl.c:106 src/ap-config.c:155 msgid "Config" -msgstr "Konfiguracja" +msgstr "Konfig" # src/ap-config.c:143 #: ap-gl/ap-gl.c:107 src/ap-config.c:156 @@ -150,7 +149,7 @@ # src/ap-config.c:143 #: ap-gl/ap-gl.c:107 src/ap-config.c:156 msgid "Execute commands on Access Point" -msgstr "Wykonuje operacje w Access-poincie" +msgstr "Wykonaj operacje w AP" # src/ap-config.c:145 #: ap-gl/ap-gl.c:109 src/ap-config.c:158 @@ -165,12 +164,12 @@ # lib/common.c:50 src/ap-config.c:147 #: ap-gl/ap-gl.c:111 lib/common.c:52 src/ap-config.c:160 msgid "About" -msgstr "Informacja" +msgstr "O..." # src/ap-config.c:148 #: ap-gl/ap-gl.c:112 src/ap-config.c:161 msgid "Shell" -msgstr "Linia komend" +msgstr "Shell" # src/ap-config.c:149 #: ap-gl/ap-gl.c:113 src/ap-config.c:162 @@ -190,31 +189,26 @@ # lib/ap-utils.h:117 #: ap-gl/auth_mac.c:30 src/auth_mac.c:30 -#, fuzzy msgid "[A] MAC authorization: " -msgstr "[A] Ograniczenie dostêpu dla wybranych MAC: %s" +msgstr "[A] Ograniczenie dostêpu dla wybranych MAC: " # lib/ap-utils.h:122 #: ap-gl/auth_mac.c:31 src/auth_mac.c:31 -#, fuzzy msgid "Enter MAC: " -msgstr "Adres fizyczny:" +msgstr "Adres fizyczny: " # lib/ap-utils.h:121 #: ap-gl/auth_mac.c:32 src/auth_mac.c:32 -#, fuzzy msgid "Delete Num: " -msgstr "Skasuj pozycje:" +msgstr "Skasuj pozycjê: " # lib/ap-utils.h:118 #: ap-gl/auth_mac.c:33 src/auth_mac.c:33 -#, fuzzy msgid "Authorized MAC addresses" msgstr "Dostêp w/g MAC" # lib/ap-utils.h:119 #: ap-gl/auth_mac.c:34 src/auth_mac.c:34 -#, fuzzy msgid "NUM MAC address" msgstr "Numer adres fizyczny (MAC)" @@ -222,17 +216,15 @@ #: ap-gl/auth_mac.c:35 src/auth_mac.c:35 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 - Wyj¶cie" +"A W³/Wy³; N - nowe; D - kasuj; strza³ki - przewijanie; W - zapis; Q - Wyjd¼" # src/nwn_advanced.c:70 #: ap-gl/auth_mac.c:36 -#, fuzzy 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:37 -#, fuzzy msgid "A - auth; W - write conf; Q - quit" msgstr "DA - opcje; W - zapis; Q - powrót" @@ -258,7 +250,6 @@ # src/ap-config.c:55 #: ap-gl/auth_mac.c:88 -#, fuzzy msgid "Internal" msgstr "Ogólne" @@ -272,67 +263,58 @@ # src/bridge.c:169 #: ap-gl/bridge.c:28 src/bridge.c:28 -#, fuzzy msgid "[N] Netmask: " -msgstr "[N] Maska: %s" +msgstr "[N] Maska: " # src/bridge.c:171 #: ap-gl/bridge.c:29 src/bridge.c:29 -#, fuzzy msgid "[G] Gateway: " -msgstr "[G] Bramka %s" +msgstr "[G] Bramka: " # src/bridge.c:32 #: ap-gl/bridge.c:30 src/bridge.c:30 -#, fuzzy msgid "[F] Filter non-IP traffic: " -msgstr "[F] Wycinaj ruch nie-IP: %s" +msgstr "[F] Wycinaj ruch nie-IP: " # src/bridge.c:33 #: ap-gl/bridge.c:31 src/bridge.c:31 -#, fuzzy msgid "[P] Primary port: " -msgstr "[P] Port podstawowy: %s" +msgstr "[P] Port podstawowy: " # src/bridge.c:144 #: ap-gl/bridge.c:32 src/bridge.c:32 -#, fuzzy msgid "Attached station MAC: " -msgstr "MAC do³±czonej stacji: %02X:%02X:%02X:%02X:%02X:%02X" +msgstr "MAC do³±czonej stacji:" # src/bridge.c:34 #: ap-gl/bridge.c:33 src/bridge.c:33 -#, fuzzy msgid "[D] DHCP client: " -msgstr "[D] DHCP: %s" +msgstr "[D] Klient DHCP: " # src/bridge.c:35 #: ap-gl/bridge.c:34 src/bridge.c:34 -#, fuzzy msgid "[O] Operational mode: " -msgstr "[O] Tryb pracy: %s" +msgstr "[O] Tryb pracy: " # src/bridge.c:36 #: ap-gl/bridge.c:35 src/bridge.c:35 -#, fuzzy msgid "[M] Preferred BSSID (remote MAC addr.): " -msgstr "[R] Zdalny adres fizyczny: %02X%02X%02X%02X%02X%02X" +msgstr "[M] Zdalny adres fizyczny: " #: ap-gl/bridge.c:37 src/bridge.c:37 msgid "[T] Trap-sending port(s): " -msgstr "" +msgstr "[T] SNMP-Trap na porty: " #: ap-gl/bridge.c:38 src/bridge.c:38 msgid "[R] Forward broadcast traffic: " -msgstr "" +msgstr "[R] Przesy³aj ruch rozg³oszeniowy: " #: ap-gl/bridge.c:40 msgid "[U] Isolate wireless clients: " -msgstr "" +msgstr "[U] Izoluj klientó³ radiowych: " # src/bridge.c:30 #: ap-gl/bridge.c:41 src/bridge.c:41 -#, fuzzy msgid "INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu" msgstr "BPGINFDRT - ustaw; W - Zapisz; Q - powrót" @@ -359,16 +341,16 @@ # src/bridge.c:88 #: ap-gl/bridge.c:129 src/bridge.c:131 msgid "Repeater" -msgstr "Regenerator" +msgstr "Repeater" # src/stations.c:29 #: ap-gl/stations.c:31 src/stations.c:29 msgid "Associated Stations" -msgstr "Przynale¿ne stacje" +msgstr "Pod³±czonych stacji" #: ap-gl/stations.c:83 src/stations.c:87 msgid "AP now in AP Client Mode and don't has any associated stations" -msgstr "" +msgstr "AP jest teraz w trybie klienta i nie ma stacji pod³±czonych" #: ap-gl/stations.c:109 msgid "# MAC LQ RSSI Status Port IP" @@ -386,7 +368,7 @@ #: lib/aps.c:128 msgid "Your Access Point is not in \"AP client\" mode => getting" -msgstr "" +msgstr "Twój AP nie jest w trybie \"klient AP\"" #: lib/aps.c:131 msgid "up-to-date \"Known APs\" info requires your AP to be" @@ -394,7 +376,7 @@ #: lib/aps.c:134 msgid "temporarily configured into \"AP client\" mode and rebooted." -msgstr "" +msgstr "tymczasowo skonfigurowano w tryb klienta AP i zrestartowano." #: lib/aps.c:137 msgid "Your AP will be reconfigured back to original mode by this" @@ -406,7 +388,6 @@ # src/ap-config.c:78 #: lib/aps.c:143 -#, fuzzy msgid "cause loss of Access Point's current configuration." msgstr "Zapisuje aktualn± konfiguracje na sta³e" @@ -416,18 +397,16 @@ # src/ap-config.c:44 #: lib/aps.c:150 -#, fuzzy msgid "via its wireless port." -msgstr "Ustawianie opcji radiowych" +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:152 lib/cmd.c:49 lib/cmd.c:92 lib/test.c:93 msgid "Do you want to continue? " -msgstr "Jeste¶ pewien?" +msgstr "Czesz kontynuowaæ?" # src/aps.c:93 #: lib/aps.c:154 -#, fuzzy msgid "(Y - Yes; N - No (it's safer to answer No)" msgstr "(Y - Tak; N - Nie (lepiej Nie)" @@ -448,9 +427,8 @@ # src/aps.c:191 #: lib/aps.c:352 lib/aps.c:360 lib/aps.c:368 -#, fuzzy msgid "CN: Channel Name; P: Preambule Type (S: Short; L: Long);" -msgstr "P: Typ nag³ówka; S: Krótki; L: D³ugi" +msgstr "P: Typ nag³ówka; P: Preambu³a (S: Krótki; L: D³ugi)" #: lib/aps.c:354 msgid "RSSI: Radio Signal Strength Indicator [%];" @@ -474,7 +452,6 @@ # src/aps.c:194 #: lib/aps.c:378 -#, fuzzy msgid "" "# con. to this AP; R refresh with reset; S refresh w/o reset; T toggle; Q " "quit" @@ -483,7 +460,6 @@ # src/aps.c:194 #: lib/aps.c:380 -#, fuzzy msgid "" "# con. to this AP; R initiate AP scan; S refresh view; T toggle view; Q quit" msgstr "" @@ -491,7 +467,6 @@ # lib/ap_search.c:134 #: lib/aps.c:509 lib/ap_search.c:153 -#, fuzzy, c-format msgid "Failure in sendto(): %s. Press any key." msgstr "B³±d sendto() : %s. Wci¶nij dowolny klawisz." @@ -501,7 +476,7 @@ #: lib/aps.c:521 msgid "take a few seconds for your Access Point to find out some" -msgstr "" +msgstr "potrwa chwilkê, zanim twój AP znajdzie cokolwiek" #: lib/aps.c:524 msgid "values, so expect finishing the scan in about 5 seconds." @@ -525,11 +500,11 @@ #: lib/aps.c:539 msgid "wireless port, you need to wait a bit longer" -msgstr "" +msgstr "port radiowy, musisz poczekaæ trochê d³u¿ej" #: lib/aps.c:542 msgid "after pressing 'S'." -msgstr "" +msgstr "po naci¶niêciu 'S'." #: lib/ap_search.c:50 msgid "# Type IP Description" @@ -537,34 +512,31 @@ #: lib/ap_search.c:89 msgid "Please wait while scanning, or press 'Q' to quit." -msgstr "" +msgstr "Trwa skanowanie, poczekaj chwilê, by przerwaæ wci¶nij 'Q'" # lib/ap_search.c:110 #: lib/ap_search.c:105 -#, fuzzy 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:114 -#, fuzzy 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:120 msgid "Scanning via network interface:" -msgstr "" +msgstr "Szukam poprzez interfejs sieciowy" #: lib/ap_search.c:121 #, c-format msgid " Index: %i" -msgstr "" +msgstr " Indeks: %i" # lib/ap-utils.h:78 #: lib/ap_search.c:123 -#, fuzzy, c-format msgid " Name: %s" -msgstr "[N] Nazwa urz±dzenia:" +msgstr " Nazwa: %s" #: lib/ap_search.c:125 #, c-format @@ -574,7 +546,7 @@ #: lib/ap_search.c:134 #, c-format msgid "Scanning for AP type: %s" -msgstr "" +msgstr "Szukam typu AP: %s" # lib/ap_search.c:128 #: lib/ap_search.c:312 @@ -583,7 +555,6 @@ # src/ap-mrtg.c:178 #: lib/ap_search.c:329 -#, fuzzy msgid "realloc() error." msgstr "B³±d otwarcia socket'a" @@ -593,9 +564,8 @@ # src/stat.c:41 #: lib/ap_search.c:416 -#, fuzzy msgid "No local network interfaces found. Press any key." -msgstr "B³±d tworzenia procesu (fork). Wci¶nij dowolny klawisz." +msgstr "Nie znaleziono interfejsu sieci lokalnej. Wci¶nij dowolny klawisz." #: lib/ap_search.c:418 msgid "No directly reachable Access Points found. Press any key." @@ -607,105 +577,90 @@ # lib/common.c:118 #: lib/ap_search.c:426 -#, fuzzy msgid "# - connect to AP; Q - quit" msgstr "Wybór Access-pointa" # src/sysinfo.c:402 #: lib/ap-utils.h:74 -#, fuzzy msgid "MAC address: " -msgstr "Adres IP: %s" +msgstr "Adres MAC: " # lib/ap-utils.h:80 #: lib/ap-utils.h:75 -#, fuzzy msgid "[S] SNMP traps: " msgstr "[S] Sygnalizacja SNMP: %s" # lib/ap-utils.h:68 #: lib/ap-utils.h:77 -#, fuzzy msgid "[C] Frequency channel: " msgstr "[C] Czêstotliwo¶æ fali: %02u (%u MHz)" # src/stat.c:123 #: lib/ap-utils.h:79 -#, fuzzy msgid "Receive antenna:" msgstr "Odebrane:" # src/test.c:70 #: lib/ap-utils.h:80 -#, fuzzy msgid "[U] Left" -msgstr "Lewa" +msgstr "[U] Lewa" # src/test.c:70 #: lib/ap-utils.h:81 -#, fuzzy msgid "[I] Right" -msgstr "Prawa" +msgstr "[I] Prawa" # src/stat.c:124 #: lib/ap-utils.h:82 -#, fuzzy msgid "Transmit antenna:" -msgstr "Wys³ane:" +msgstr "Antena nadawcza:" # src/test.c:70 #: lib/ap-utils.h:83 -#, fuzzy msgid "[O] Left" -msgstr "Lewa" +msgstr "[O] Lewa" # src/test.c:70 #: lib/ap-utils.h:84 -#, fuzzy msgid "[P] Right" -msgstr "Prawa" +msgstr "[P] Prawa" # src/sysinfo.c:358 #: lib/ap-utils.h:85 -#, fuzzy msgid "Diversity select:" -msgstr "Wiêksza moc: %s" +msgstr "Naprzemian:" # src/test.c:70 #: lib/ap-utils.h:86 -#, fuzzy msgid "[T] Left" -msgstr "Lewa" +msgstr "[T] Lewa" # src/test.c:70 #: lib/ap-utils.h:87 -#, fuzzy msgid "[Y] Right" -msgstr "Prawa" +msgstr "[Y] Prawa" #: lib/ap-utils.h:89 msgid "Yes" -msgstr "" +msgstr "Tak" #: lib/ap-utils.h:90 msgid "No" -msgstr "" +msgstr "Nie" #: lib/ap-utils.h:92 msgid "On" -msgstr "" +msgstr "W³±" # lib/ap-utils.h:55 #: lib/ap-utils.h:93 -#, fuzzy msgid "Off" -msgstr "wy³" +msgstr "Wy³" # lib/ap-utils.h:56 #: lib/ap-utils.h:95 -#, fuzzy msgid "Basic" -msgstr "podstawowy" +msgstr "Podstawowy" # lib/ap-utils.h:58 #: lib/ap-utils.h:97 @@ -734,9 +689,8 @@ # lib/ap-utils.h:86 #: lib/ap-utils.h:103 -#, fuzzy msgid "Configuration written to the AP. Press any key to continue." -msgstr "Nie moge wys³aæ danych do AP. Wci¶nij dowolny klawisz." +msgstr "Konfiguracja zapisana do AP. Wci¶nij dowolny klawisz." # lib/ap-utils.h:92 #: lib/ap-utils.h:105 @@ -760,9 +714,8 @@ # lib/ap-utils.h:104 #: lib/ap-utils.h:110 -#, fuzzy msgid "Run subshell. To return type 'exit'." -msgstr "Uruchomienie shella. Wpisz 'exit' aby wróciæ" +msgstr "Uruchomienie shella. Wpisz 'exit' aby wróciæ." # lib/ap-utils.h:105 #: lib/ap-utils.h:111 @@ -781,55 +734,46 @@ # lib/ap-utils.h:108 #: lib/ap-utils.h:114 -#, fuzzy msgid "Set encryption; edit WEP keys" msgstr "Ustawianie szyfracji, zmiana kluczy" # lib/ap-utils.h:109 #: lib/ap-utils.h:115 -#, fuzzy msgid "Set MAC 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:116 -#, fuzzy 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:117 -#, fuzzy 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:118 -#, fuzzy msgid "Get wireless port statistics" msgstr "Statystyki portu radiowego" # lib/ap-utils.h:113 #: lib/ap-utils.h:119 -#, fuzzy msgid "Get list of currently associated stations (Access Point clients)" msgstr "Lista aktualnie przy³±czonych stacji" # lib/ap-utils.h:114 #: lib/ap-utils.h:120 -#, fuzzy msgid "Get info and statistics from AP" msgstr "Pobieram informacje i statystyki z AP" # lib/ap-utils.h:115 #: lib/ap-utils.h:121 -#, fuzzy msgid "Set various configuration options" msgstr "Ustawianie opcji - ró¿ne" # src/cmd.c:24 #: lib/cmd.c:25 -#, fuzzy msgid "" "(Y - Yes; N - No (it's safer to answer No, unless you really need this.)" msgstr "(Y - Tak; N - Nie (lepiej nie)" @@ -841,7 +785,6 @@ # src/cmd.c:40 #: lib/cmd.c:47 -#, fuzzy msgid "After restoring factory defaults your current configuration." msgstr "Po odtworzeniu ustawieñ fabrycznych CA£O¦Æ ustawien zostanie stracona." @@ -851,7 +794,6 @@ # src/cmd.c:71 #: lib/cmd.c:79 -#, fuzzy msgid "Factory default settings loaded. Press any key to continue." msgstr "Ustawiono konfiguracje domy¶ln±. Wci¶nij dowolny klawisz." @@ -862,7 +804,6 @@ # src/cmd.c:84 #: lib/cmd.c:91 -#, fuzzy msgid "By reset you'll lose all non-uploaded configuration." msgstr "Przy resecie stracisz wszystkie nie za³adowane informacje." @@ -878,7 +819,6 @@ # src/cmd.c:137 #: lib/cmd.c:149 -#, fuzzy msgid "You need to upload the configuration only if you've changed" msgstr "Musisz za³adowaæ konfiguracje tylko je¶li co¶ zmieni³e¶." @@ -888,43 +828,37 @@ # src/ap-config.c:78 #: lib/cmd.c:153 -#, fuzzy msgid "of your current configuration." msgstr "Zapisuje aktualn± konfiguracje na sta³e" # src/cmd.c:163 #: lib/cmd.c:176 -#, fuzzy msgid "Configuration uploaded. Press any key to continue." msgstr "Konfiguracja za³adowana. Wci¶nij dowolny klawisz." #: lib/common.c:30 msgid "Autodetect AP type? " -msgstr "" +msgstr "Wykryæ typ AP? " # lib/common.c:120 #: lib/common.c:31 -#, fuzzy msgid "Access Point IP-address: " -msgstr "Adres IP:" +msgstr "Adres IP Access Pointa:" # lib/common.c:121 #: lib/common.c:32 -#, fuzzy msgid "Password (community): " -msgstr "Has³o (prawa dostêpu):" +msgstr "Has³o (community): " # lib/common.c:122 #: lib/common.c:33 -#, fuzzy msgid "AP type: " -msgstr "Typ Access-pointa" +msgstr "Typ AP: " # lib/common.c:159 #: lib/common.c:34 -#, fuzzy msgid "Save connect-settings: " -msgstr "Zapisaæ na sta³e:" +msgstr "Zapisz na sta³e: " # lib/common.c:67 #: lib/common.c:69 @@ -945,9 +879,8 @@ # lib/common.c:74 #: lib/common.c:76 -#, fuzzy msgid "Copyright (c) Roman Festchook 2001-2004" -msgstr "Prawa autorskie © Roman Festchook 2001-2002" +msgstr "Prawa autorskie - Roman Festchook 2001-2004" # lib/common.c:77 #: lib/common.c:79 @@ -981,13 +914,11 @@ # lib/ap-utils.h:88 #: lib/common.c:171 -#, fuzzy msgid "Determining AP type. Please wait..." msgstr "Pobieram dane z AP. Proszê czekaæ..." # lib/ap-utils.h:87 #: lib/common.c:196 -#, fuzzy msgid "Unable to determine AP type (no response). Press any key." msgstr "Nie moge pobraæ danych z AP. Wci¶nij dowolny klawisz." @@ -1005,9 +936,8 @@ # lib/common.c:118 #: lib/file.c:225 -#, fuzzy msgid "Connect to AP num:" -msgstr "Wybór Access-pointa" +msgstr "Nr AP do pod³. :" # lib/ap-utils.h:121 #: lib/file.c:250 @@ -1016,15 +946,13 @@ # src/bridge.c:31 #: lib/input.c:31 -#, fuzzy 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:32 -#, fuzzy, c-format msgid "Value must be in range %i - %i. Press any key to continue." -msgstr "Nie moge wys³aæ danych do AP. Wci¶nij dowolny klawisz." +msgstr "Warto¶æ musi byæ od %i do %i. Wci¶nij dowolny klawisz." # lib/oui.c:6048 #: lib/oui.c:6052 @@ -1033,28 +961,24 @@ # src/radio.c:93 #: lib/radio.c:27 -#, fuzzy msgid "" "[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu" msgstr "Kl. - moc sygna³y; UIOP - antena; W - Zapis.; Q - Koniec" # src/test.c:28 #: lib/radio.c:29 -#, fuzzy msgid "Antenna:" -msgstr "[A] Antena: %s" +msgstr "Antena:" # src/test.c:70 #: lib/radio.c:30 -#, fuzzy msgid "[L] Left:" -msgstr "Lewa" +msgstr "[L] Lewa" # src/test.c:70 #: lib/radio.c:31 -#, fuzzy msgid "[R] Right:" -msgstr "Prawa" +msgstr "[R] Prawa:" # src/radio.c:100 #: lib/radio.c:114 @@ -1067,13 +991,11 @@ # src/radio.c:103 #: lib/radio.c:117 -#, fuzzy msgid "Key Channel Level" msgstr "Kl. kana³ poziom" # src/radio.c:225 #: lib/radio.c:273 -#, fuzzy msgid "" "You can't disable both antennas; unable to save antenna-config. Press any " "key." @@ -1092,7 +1014,6 @@ # lib/ap-utils.h:96 #: lib/set_community.c:29 -#, fuzzy msgid "Key Access level" msgstr "Kl. Prawa dostêpu" @@ -1113,7 +1034,6 @@ # lib/ap-utils.h:100 #: lib/set_community.c:33 -#, fuzzy 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" @@ -1170,7 +1090,6 @@ # src/stat.c:124 #: lib/stat.c:124 -#, fuzzy msgid "Transmitted:" msgstr "Wys³ane:" @@ -1215,33 +1134,28 @@ # src/sysinfo.c:103 src/sysinfo.c:285 #: lib/sysinfo.c:130 -#, fuzzy msgid "Product name:" msgstr "Nazwa produktu:" # src/sysinfo.c:108 #: lib/sysinfo.c:135 -#, fuzzy, c-format msgid "Product type: %u" msgstr "Typ produktu: %u" # src/sysinfo.c:111 #: lib/sysinfo.c:138 -#, fuzzy, c-format msgid "Hardware revision: %u" -msgstr "Wersja sprzêtu/uk³adu: %u" +msgstr "Wersja sprzêtu: %u" # src/sysinfo.c:116 #: lib/sysinfo.c:141 -#, fuzzy msgid "OEM name:" msgstr "Nazwa OEM:" # src/sysinfo.c:316 #: lib/sysinfo.c:149 -#, fuzzy, c-format msgid "Regulation domain: %s [%d]" -msgstr "Regulacje dot. kana³ów: %s" +msgstr "Regulacje: %s [%d]" # src/sysinfo.c:126 src/sysinfo.c:317 #: lib/sysinfo.c:150 lib/sysinfo.c:337 @@ -1280,7 +1194,6 @@ # src/sysinfo.c:134 #: lib/sysinfo.c:158 -#, fuzzy, c-format msgid "Info structure version: %u" msgstr "StructVersion: %u" @@ -1405,43 +1318,36 @@ # src/test.c:32 #: lib/test.c:27 -#, fuzzy msgid "[T] Test mode: " -msgstr "[T] Tryb testowy: %s" +msgstr "[T] Tryb testowy: " # src/test.c:28 #: lib/test.c:28 -#, fuzzy msgid "[A] Antenna: " -msgstr "[A] Antena: %s" +msgstr "[A] Antena: " # src/test.c:117 #: lib/test.c:29 -#, fuzzy msgid "[S] Signal level: " -msgstr "[S] Poziom sygna³u: %03u" +msgstr "[S] Poziom sygna³u: " # src/test.c:29 #: lib/test.c:30 -#, fuzzy msgid "[R] Rate: " -msgstr "[R] Prêdko¶æ: %.1f Mbit/s" +msgstr "[R] Prêdko¶æ: " # src/test.c:31 #: lib/test.c:31 -#, fuzzy msgid "[F] TxFiler: " -msgstr "[F] TxFiler: %s" +msgstr "[F] TxFiler: " # src/test.c:30 #: lib/test.c:32 -#, fuzzy msgid "[O] Command: " -msgstr "[O] Komenda: %s" +msgstr "[O] Komenda: " # src/test.c:33 #: lib/test.c:33 -#, fuzzy msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu" msgstr "T - Test W³/Wy³; CASRFO - ustawianie; Q - koniecmenu" @@ -1457,32 +1363,28 @@ # src/test.c:78 #: lib/test.c:88 -#, fuzzy msgid "Test mode" msgstr "Tryb testowy" # src/test.c:81 #: lib/test.c:91 -#, fuzzy msgid "Using the \"Test mode\" may cause loss of your current" -msgstr "U¿ycie trybu testowego mo¿e spowodowaæ utrate konfiguracji." +msgstr "U¿ycie trybu testowego mo¿e spowodowaæ utratê konfiguracji." # src/cmd.c:134 #: lib/test.c:92 -#, fuzzy msgid "configuration." -msgstr "Za³aduj konfiguracje" +msgstr "konfiguracja." # src/test.c:84 #: lib/test.c:95 -#, fuzzy msgid "(Y - Yes; N - No (it's safer to answer No.)" -msgstr "(Y - Tak; N - Nie (lepiej nie)" +msgstr "(Y - Tak; N - Nie (bezpieczny wybór)" # src/test.c:106 #: lib/test.c:118 msgid "Options:" -msgstr "Opcje" +msgstr "Opcje:" # src/test.c:132 #: lib/test.c:144 @@ -1502,27 +1404,23 @@ # lib/ap-utils.h:62 #: lib/wep.c:29 -#, fuzzy msgid "[E] Standard encryption mechanism: " -msgstr "[E] Tryb szyfrowania: %s" +msgstr "[E] Tryb szyfrowania: " # src/wep.c:29 #: lib/wep.c:30 -#, fuzzy msgid "[A] Allow unencrypted: " -msgstr "[A] Dopu¶æ bez szyfracji: %s" +msgstr "[A] Dopu¶æ bez szyfracji: " # src/wep.c:31 #: lib/wep.c:31 -#, fuzzy msgid "[K] Default WEP key: " -msgstr "[K] U¿ywany klucz nr: %d" +msgstr "[K] U¿ywany klucz nr: " # src/wep.c:30 #: lib/wep.c:32 -#, fuzzy msgid "[P] Public key: " -msgstr "[P] Klucz publiczny: %s" +msgstr "[P] Klucz publiczny: " # src/wep.c:73 #: lib/wep.c:85 @@ -1554,92 +1452,78 @@ # lib/ap-utils.h:78 #: lib/wlan.c:29 -#, fuzzy msgid "[N] AP name: " -msgstr "[N] Nazwa urz±dzenia:" +msgstr "[N] Nazwa AP: " # src/wlan.c:579 #: lib/wlan.c:31 -#, fuzzy msgid "[K] AP contact: " -msgstr "[E] Osoba kontaktowa: %s" +msgstr "[K] Osoba kontaktowa: " # src/wlan.c:577 #: lib/wlan.c:32 -#, fuzzy msgid "[L] AP location: " -msgstr "[L] Lokalizacja: %s" +msgstr "[L] Lokalizacja: " # lib/ap-utils.h:71 #: lib/wlan.c:34 -#, fuzzy msgid "[R] RTS threshold: " -msgstr "[R] Min. bajtów do RTS: %d" +msgstr "" # lib/ap-utils.h:72 #: lib/wlan.c:35 -#, fuzzy msgid "[F] Fragmentation threshold: " -msgstr "[F] Min. bajtów do fragmentacji: %d" +msgstr "" # src/wlan.c:33 #: lib/wlan.c:36 -#, fuzzy msgid "[P] Preambule type: " -msgstr "[P] Typ nag³ówka: %s" +msgstr "[P] Preambu³a: " # lib/ap-utils.h:69 #: lib/wlan.c:37 -#, fuzzy msgid "[A] Auth type: " -msgstr "[A] Tryb autoryzacji: %s" +msgstr "[A] Tryb autoryzacji: " # lib/ap-utils.h:64 #: lib/wlan.c:38 -#, fuzzy msgid "Open system" -msgstr "Bez kluczy (Open System)" +msgstr "Bez kluczy" # lib/ap-utils.h:65 #: lib/wlan.c:39 -#, fuzzy msgid "Shared key" msgstr "Wspólny klucz" # lib/ap-utils.h:66 #: lib/wlan.c:40 -#, fuzzy msgid "Both types" msgstr "Oba" # src/wlan.c:32 #: lib/wlan.c:41 -#, fuzzy msgid "[U] Auto rate fallback: " -msgstr "[U] Automatyczne spowalnianie: %s" +msgstr "[U] Auto. ustawianie prêdko¶ci: " # src/wlan.c:31 #: lib/wlan.c:42 -#, fuzzy msgid "[S] Insert ESSID in broadcast packets: " -msgstr "[S] Wysy³aæ ESSID w pakietach rozg³oszeniowych (broadcast): %s" +msgstr "[S] Wysy³aæ ESSID w pakietach rozg³oszeniowych (broadcast): " # lib/ap-utils.h:74 #: lib/wlan.c:43 -#, fuzzy msgid "Basic and Supported rates:" msgstr "Podstawowe i obs³ugiwane prêdko¶ci:" # lib/ap-utils.h:75 #: lib/wlan.c:44 msgid "Key Rate Status" -msgstr "Klaw. Prêd. Stan" +msgstr "Klu Prêd Stan" # src/bridge.c:35 #: lib/wlan.c:46 -#, fuzzy msgid "[I] International roaming: " -msgstr "[O] Tryb pracy: %s" +msgstr "" #: lib/wlan.c:47 msgid "[B] Beacon period (msec): " @@ -1652,7 +1536,7 @@ # src/wlan.c:185 #: lib/wlan.c:49 msgid "[key] - set option; W - write conf; Q - quit to menu" -msgstr "[kl] - ustaw opcje; W - zapis; Q - wyj¶ciele menu" +msgstr "[kl] - ustaw opcje; W - zapis; Q - wyj¶cie do menu" # src/wlan.c:100 #: lib/wlan.c:140 @@ -1732,7 +1616,6 @@ # src/ap-mrtg.c:47 #: 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" @@ -1809,12 +1692,11 @@ # src/ap-mrtg.c:60 #: src/ap-mrtg.c:59 -#, fuzzy, c-format msgid "" "ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n" "\n" msgstr "" -"ap-mrtg %s Prawa autorskie © 2002 Roman Festchook\n" +"ap-mrtg %s Prawa autorskie © 2002-2003 Roman Festchook\n" "\n" # src/ap-mrtg.c:142 @@ -1908,7 +1790,6 @@ # lib/ap-utils.h:66 #: src/bridge.c:137 -#, fuzzy msgid "Both" msgstr "Oba" @@ -1957,7 +1838,6 @@ # src/nwn_latest.c:104 #: src/nwn_latest.c:104 -#, fuzzy msgid "Authenticate Fail:" msgstr "B³±d autoryzacji:" @@ -1973,9 +1853,8 @@ # src/stations.c:84 #: src/stations.c:113 -#, fuzzy msgid "Id MAC address" -msgstr "Id Adres fizyczny" +msgstr "Id Adres fizyczny" # src/stations.c:194 src/stations.c:278 #: src/stations.c:223 src/stations.c:307 @@ -1984,9 +1863,8 @@ # src/stations.c:196 #: src/stations.c:225 -#, fuzzy msgid "Id MAC address Quality Age RSSI" -msgstr "Id Adres fizyczny Jako¶æ Wiek RSSI" +msgstr "Id Adres fizyczny Jako¶æ Wiek RSSI" # lib/common.c:66 #~ msgid "Wireless Access Point Configurator" ap-utils-1.5/po/Makefile.in.in000066400000000000000000000243171117246662700162300ustar00rootroot00000000000000# Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datadir = @datadir@ localedir = $(datadir)/locale gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ MKINSTALLDIRS = config/mkinstalldirs mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = xgettext MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in Makevars remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: all-@USE_NLS@ all-yes: $(CATALOGS) all-no: # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update $(POFILES): $(srcdir)/$(DOMAIN).pot @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext"; then \ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common); do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all $(mkinstalldirs) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkinstalldirs) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext"; then \ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: $(mkinstalldirs) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkinstalldirs) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext"; then \ for file in $(DISTFILES.common); do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all dvi info tags TAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(MAKE) update-po @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: $(DISTFILES) dists="$(DISTFILES)"; \ if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir); \ else \ cp -p $(srcdir)/$$file $(distdir); \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ $(SHELL) ./config.status force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ap-utils-1.5/po/Makevars000066400000000000000000000020731117246662700152450ustar00rootroot00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Free Software Foundation, Inc. # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = ap-utils-1.5/po/POTFILES.in000066400000000000000000000010551117246662700153250ustar00rootroot00000000000000# List of source files containing translatable strings. # Copyright (C) 1995 Free Software Foundation, Inc. lib/ap-curses.h lib/aps.c lib/ap_search.c lib/ap-utils.h lib/ber.c lib/cmd.c lib/common.c lib/file.c lib/input.c lib/menu.c lib/oui.c 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.c src/bridge.c src/nwn_advanced.c src/nwn_latest.c src/stations.c ap-utils-1.5/po/ap-utils.pot000066400000000000000000001113011117246662700160260ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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 \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: lib/aps.c:30 msgid "Known Access Points" msgstr "" #: lib/aps.c:130 msgid "Your Access Point is not in \"AP client\" mode => getting" msgstr "" #: lib/aps.c:133 msgid "up-to-date \"Known APs\" info requires your AP to be" msgstr "" #: lib/aps.c:136 msgid "temporarily configured into \"AP client\" mode and rebooted." msgstr "" #: lib/aps.c:139 msgid "Your AP will be reconfigured back to original mode by this" msgstr "" #: lib/aps.c:142 msgid "utility once you quit the \"KnownAP\" view. This, in turn, may" msgstr "" #: lib/aps.c:145 msgid "cause loss of Access Point's current configuration." msgstr "" #: lib/aps.c:149 msgid "Do NOT answer \"Yes\" if you're connected to the Access Point" msgstr "" #: lib/aps.c:152 msgid "via its wireless port." msgstr "" #: 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:208 msgid "NetworkType" msgstr "" #: lib/aps.c:284 msgid "Infrastructure" msgstr "" #: 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:346 msgid "RSSI: Radio Signal Strength Indicator [%]" msgstr "" #: lib/aps.c:348 lib/aps.c:356 msgid "; LQ: Link Quality [%]" msgstr "" #: lib/aps.c:354 msgid "RSSI: Radio Signal Strength Indicator [dBm]" msgstr "" #: lib/aps.c:362 msgid "RSSI: Radio Signal Strength Indicator [raw]" msgstr "" #: lib/aps.c:364 msgid "; LQ: Link Q. [raw]" msgstr "" #: 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:372 msgid "" "# con. to AP #; R initiate AP scan; T toggle view; Q quit; Other = refresh " "view" msgstr "" #: lib/aps.c:501 lib/ap_search.c:173 #, c-format msgid "Failure in sendto(): %s. Press any key." msgstr "" #: lib/aps.c:510 msgid "You have just initiated the AP scan. Be advised that it may" msgstr "" #: lib/aps.c:513 msgid "take a few seconds for your Access Point to find out some" msgstr "" #: lib/aps.c:516 msgid "values, so expect finishing the scan in about 5 seconds." msgstr "" #: lib/aps.c:519 msgid "Also note that your Access Point stops forwarding the network" msgstr "" #: lib/aps.c:522 msgid "traffic while the scan is in progress, but restores itself" msgstr "" #: lib/aps.c:525 msgid "to normal operation in time ranging up to 1 minute." msgstr "" #: lib/aps.c:528 msgid "Hence, if you are connected to target Access Point via its" msgstr "" #: lib/aps.c:531 msgid "wireless port, you need to wait a bit longer" msgstr "" #: lib/aps.c:534 msgid "after pressing 'S'." msgstr "" #: lib/ap_search.c:48 msgid "Community name: " msgstr "" #: lib/ap_search.c:49 msgid " NUM IP ADDRESS MIB TYPE FW TYPE (VERSION) AP NAME" msgstr "" #: lib/ap_search.c:106 msgid "Please wait while scanning, or press 'Q' to quit." msgstr "" #: lib/ap_search.c:122 msgid "Can't set broadcast option on socket. Press any key." msgstr "" #: lib/ap_search.c:131 msgid "Can't set multicast membership on socket. Press any key." msgstr "" #: lib/ap_search.c:138 msgid "Scanning via network interface:" msgstr "" #: lib/ap_search.c:139 #, c-format msgid " Index: %i" msgstr "" #: lib/ap_search.c:141 #, c-format msgid " Name: %s" msgstr "" #: lib/ap_search.c:143 #, c-format msgid " IP: %s" msgstr "" #: lib/ap_search.c:152 #, c-format msgid "Scanning for AP with MIB type: %s" msgstr "" #: lib/ap_search.c:378 msgid "Access Points Search" msgstr "" #: lib/ap_search.c:396 msgid "realloc() error." msgstr "" #: lib/ap_search.c:408 msgid "Network interface discovery error." msgstr "" #: lib/ap_search.c:483 msgid "No local network interfaces found. Press any key." msgstr "" #: lib/ap_search.c:485 msgid "No directly reachable Access Points found. Press any key." msgstr "" #: lib/ap_search.c:490 msgid "Single-screen maximum number of APs found." msgstr "" #: lib/ap_search.c:493 msgid "# - connect to AP; Q - quit" msgstr "" #: lib/ap-utils.h:82 msgid "MAC address: " msgstr "" #: lib/ap-utils.h:83 msgid "[S] SNMP traps: " msgstr "" #: lib/ap-utils.h:85 msgid "[C] Frequency channel: " msgstr "" #: lib/ap-utils.h:87 msgid "Receive antenna:" msgstr "" #: lib/ap-utils.h:88 msgid "[U] Left" msgstr "" #: lib/ap-utils.h:89 msgid "[I] Right" msgstr "" #: lib/ap-utils.h:90 msgid "Transmit antenna:" msgstr "" #: lib/ap-utils.h:91 msgid "[O] Left" msgstr "" #: lib/ap-utils.h:92 msgid "[P] Right" msgstr "" #: lib/ap-utils.h:93 msgid "Diversity select:" msgstr "" #: lib/ap-utils.h:94 msgid "[T] Left" msgstr "" #: lib/ap-utils.h:95 msgid "[Y] Right" msgstr "" #: lib/ap-utils.h:97 msgid "Yes" msgstr "" #: lib/ap-utils.h:98 msgid "No" msgstr "" #: lib/ap-utils.h:100 msgid "On" msgstr "" #: lib/ap-utils.h:101 msgid "Off" msgstr "" #: lib/ap-utils.h:103 msgid "Basic" msgstr "" #: lib/ap-utils.h:105 msgid "Press any key to continue." msgstr "" #: lib/ap-utils.h:106 msgid "Q - quit to menu. T - toggle polling mode, Other key - force update" msgstr "" #: lib/ap-utils.h:108 msgid "Unable to write data to AP. Press any key to continue." msgstr "" #: lib/ap-utils.h:109 msgid "Unable to retrieve (valid) data from AP. Press any key to continue." msgstr "" #: lib/ap-utils.h:110 msgid "Trying to retrieve data from AP - please wait (or press Q to quit)." msgstr "" #: lib/ap-utils.h:111 msgid "Writing data to AP. Please wait..." msgstr "" #: lib/ap-utils.h:112 msgid "Configuration written to the AP. Press any key to continue." msgstr "" #: lib/ap-utils.h:113 msgid "select() function error. Press any key." msgstr "" #: lib/ap-utils.h:114 msgid "socket() or bind() function error. Press any key." msgstr "" #: 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:119 msgid "Back to main menu" msgstr "" #: lib/ap-utils.h:120 msgid "Exit program" msgstr "" #: lib/ap-utils.h:121 msgid "Run subshell. To return type 'exit'." msgstr "" #: 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:124 msgid "Find connected Access Points" msgstr "" #: lib/ap-utils.h:125 msgid "Set connection options: ip and community" msgstr "" #: lib/ap-utils.h:126 msgid "Set encryption; edit WEP keys" msgstr "" #: lib/ap-utils.h:127 msgid "Set authorization; edit MAC authorization table" msgstr "" #: lib/ap-utils.h:128 msgid "Set SNMP community/password for access to the AP" msgstr "" #: lib/ap-utils.h:129 msgid "Get info about AP hardware and firmware" msgstr "" #: lib/ap-utils.h:130 msgid "Get wireless port statistics" msgstr "" #: lib/ap-utils.h:131 msgid "Get list of currently associated stations (Access Point clients)" msgstr "" #: 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:134 msgid "Set various configuration options" msgstr "" #: lib/ap-utils.h:136 msgid "Associated stations" msgstr "" #: lib/ap-utils.h:137 msgid "AP Client link state" msgstr "" #: lib/ap-utils.h:139 msgid "Polling: on" msgstr "" #: lib/ap-utils.h:140 msgid "Polling: off" msgstr "" #: lib/cmd.c:40 msgid "Restore factory default configuration" msgstr "" #: lib/cmd.c:43 msgid "After restoring factory defaults your current configuration" msgstr "" #: lib/cmd.c:44 msgid "will be lost." msgstr "" #: lib/cmd.c:63 msgid "Factory default settings loaded. Press any key to continue." msgstr "" #: lib/cmd.c:71 msgid "Reset Access Point" msgstr "" #: lib/cmd.c:74 msgid "By reset you'll lose all non-uploaded configuration." msgstr "" #: lib/cmd.c:85 msgid "Access Point reset. Press any key to continue." msgstr "" #: lib/cmd.c:117 msgid "Upload configuration" msgstr "" #: lib/cmd.c:119 msgid "You may need to upload the configuration only if you've" msgstr "" #: lib/cmd.c:121 msgid "changed some option values before. Using this option may" msgstr "" #: lib/cmd.c:123 msgid "cause loss of your current configuration." msgstr "" #: lib/cmd.c:135 msgid "Configuration uploaded. Press any key to continue." msgstr "" #: lib/common.c:32 msgid "Access Point IP-address: " msgstr "" #: lib/common.c:33 msgid "Password (community): " msgstr "" #: lib/common.c:34 msgid "Autodetect AP MIB properties? " msgstr "" #: lib/common.c:35 msgid "AP MIB type: " msgstr "" #: lib/common.c:36 msgid "AP MIB vendor extensions: " msgstr "" #: lib/common.c:37 msgid "Do you want to use AP's name as its label? " msgstr "" #: lib/common.c:38 msgid "Access Point label: " msgstr "" #: lib/common.c:39 msgid "Save connect-settings: " msgstr "" #: 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:108 #, c-format msgid "Version %s" msgstr "" #: lib/common.c:111 msgid "Written by Roman Festchook roma@polesye.net" msgstr "" #: lib/common.c:113 msgid "and Jan Rafaj jr-aputils@cedric.unob.cz" msgstr "" #: lib/common.c:115 msgid "Copyright (c) 2001-2005" msgstr "" #: lib/common.c:117 msgid "Roman Festchook and Jan Rafaj" msgstr "" #: lib/common.c:120 msgid "This program is distributed under the terms" msgstr "" #: lib/common.c:122 msgid "of the GNU General Public License version 2." msgstr "" #: lib/common.c:124 msgid "See the included COPYING file for details." msgstr "" #: lib/common.c:165 msgid "Connect options" msgstr "" #: lib/common.c:173 msgid "Enter IP address of your Access Point." msgstr "" #: lib/common.c:182 msgid "Entered characters will not be displayed for security reason." msgstr "" #: lib/common.c:249 msgid "This label will be stored on HDD (independently on AP name!)." msgstr "" #: lib/common.c:362 msgid "Trying to probe AP for MIB properties. Please wait..." msgstr "" #: lib/common.c:391 msgid "" "Unable to determine AP MIB properties (no response from AP). Press any key." msgstr "" #: 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:200 msgid "Choose an AP to connect to" msgstr "" #: lib/file.c:206 msgid "1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll" msgstr "" #: lib/file.c:257 msgid "Connect to AP num:" msgstr "" #: lib/file.c:288 msgid "Delete num:" msgstr "" #: lib/file.c:442 msgid "Unable to write stations file. Press any key." msgstr "" #: lib/file.c:444 msgid "Stations file succesfully written. Press any key." msgstr "" #: lib/input.c:32 msgid "Invalid value. Press any key to continue." msgstr "" #: lib/input.c:33 #, c-format msgid "Value must be in range %u - %u. Press any key to continue." msgstr "" #: lib/input.c:460 msgid "Y - Yes; Any other key - No (it's safer to answer No)" msgstr "" #: lib/oui.c:6061 msgid "Unknown or Private" msgstr "" #: lib/radio.c:26 msgid "" "[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu" msgstr "" #: lib/radio.c:28 msgid "Antenna:" msgstr "" #: lib/radio.c:29 msgid "[L] Left:" msgstr "" #: lib/radio.c:30 msgid "[R] Right:" msgstr "" #: lib/radio.c:120 msgid "Radio Configuration" msgstr "" #: lib/radio.c:121 msgid "Output RF signal power level (CR31 register values)" msgstr "" #: lib/radio.c:123 msgid "Key Channel Level" msgstr "" #: lib/radio.c:279 msgid "" "You can't disable both antennas; unable to save antenna-config. Press any " "key." msgstr "" #: lib/scr.c:157 #, c-format msgid "Current AP: %s Type: %s Ext: %s" msgstr "" #: lib/set_community.c:27 msgid "Set community/password" msgstr "" #: lib/set_community.c:28 msgid "Key Access level" msgstr "" #: lib/set_community.c:29 msgid "Community/Password" msgstr "" #: lib/set_community.c:30 msgid "[U] User " msgstr "" #: lib/set_community.c:31 msgid "[A] Administrator " msgstr "" #: lib/set_community.c:32 msgid "[M] Manufacturer " msgstr "" #: lib/set_community.c:33 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 "" #: lib/stat.c:30 msgid "Wireless Statistics" msgstr "" #: lib/stat.c:98 msgid "EthRxStat packet error. Press any key." msgstr "" #: lib/stat.c:111 msgid "EthTxStat packet error. Press any key." msgstr "" #: lib/stat.c:115 msgid "Received:" msgstr "" #: lib/stat.c:116 msgid "Transmitted:" msgstr "" #: lib/stat.c:270 msgid "WirelessStat packet error. Press any key." msgstr "" #: lib/sysinfo.c:29 msgid "System Description: " msgstr "" #: lib/sysinfo.c:30 msgid "System Info" msgstr "" #: 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:172 #, c-format msgid "Operational mode: %s" msgstr "" #: lib/sysinfo.c:182 msgid "Product name: " msgstr "" #: lib/sysinfo.c:186 #, c-format msgid "Product type: %u" msgstr "" #: lib/sysinfo.c:189 msgid "OEM name: " msgstr "" #: lib/sysinfo.c:196 #, c-format msgid "Hardware revision: %u" msgstr "" #: lib/sysinfo.c:204 #, c-format msgid "Info structure version: %u" msgstr "" #: lib/sysinfo.c:207 lib/sysinfo.c:383 #, c-format msgid "Manufacturer OUI: %02X %02X %02X (%s)" msgstr "" #: lib/sysinfo.c:224 #, c-format msgid "Uptime: %u days, %02u:%02u:%02u hours:mins:secs" msgstr "" #: lib/sysinfo.c:312 msgid "FHSS 2.4 GHz" msgstr "" #: lib/sysinfo.c:312 msgid "DSSS 2.4 GHz" msgstr "" #: lib/sysinfo.c:312 msgid "IR Baseband" msgstr "" #: lib/sysinfo.c:313 msgid "Commercial range 0..40 C" msgstr "" #: lib/sysinfo.c:314 msgid "Industrial range -30..70 C" msgstr "" #: lib/sysinfo.c:317 msgid "manual" msgstr "" #: lib/sysinfo.c:317 msgid "notsupported" msgstr "" #: lib/sysinfo.c:317 msgid "dynamic" msgstr "" #: lib/sysinfo.c:373 msgid "Manufacturer:" msgstr "" #: lib/sysinfo.c:378 msgid "Manufacturer ID:" msgstr "" #: lib/sysinfo.c:389 msgid "Product Name:" msgstr "" #: lib/sysinfo.c:395 msgid "Product ID:" msgstr "" #: 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 ireless, thernet, associated tations " "or 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 "" #: src/ap-mrtg.c:54 src/ap-rrd.c:54 msgid "-r - reset AP when getting LinkQuality stats\n" msgstr "" #: src/ap-mrtg.c:56 #, c-format msgid "" "ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n" "\n" msgstr "" #: src/ap-rrd.c:32 #, c-format msgid "Error getting data from AP %s\n" msgstr "" #: 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 "" #: src/ap-rrd.c:44 msgid "" "Get stats from AP and put it in to specified RRDtool database\n" "\n" msgstr "" #: src/ap-rrd.c:48 msgid "" "-t type - statistics type ireless, thernet, associated tations " "or ink quality in client mode\n" msgstr "" #: 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 "" #: 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 #, c-format msgid "" "ap-rrd %s Copyright (c) 2002-2004 Roman Festchook\n" "\n" msgstr "" #: src/ap-rrd.c:133 msgid "Invalid IP-address\n" msgstr "" #: src/ap-rrd.c:179 #, c-format msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n" msgstr "" #: src/ap-tftp.c:84 msgid "yes" msgstr "" #: src/ap-tftp.c:85 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 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 \n" msgstr "" #: src/ap-tftp.c:379 msgid "Error: invalid IP address format given.\n" msgstr "" #: src/ap-tftp.c:405 msgid "Error: invalid argument combination.\n" msgstr "" #: 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 "" #: src/ap-trapd.c:151 msgid " on " msgstr "" #: src/ap-trapd.c:157 msgid "Unable to fork. Exiting." msgstr "" #: 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 "" #: src/ap-trapd.c:185 #, c-format msgid "Unable to process username %s. Error: %m." msgstr "" #: src/ap-trapd.c:190 #, c-format msgid "Unable to change to uid %d." msgstr "" #: src/ap-trapd.c:239 #, c-format msgid "" "Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s." msgstr "" #: 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 "" #: src/auth.c:30 msgid "APClient authorization credentials" msgstr "" #: src/auth.c:32 msgid "[A] MAC authorization: " msgstr "" #: src/auth.c:33 msgid "Enter MAC: " msgstr "" #: src/auth.c:34 msgid "Delete Num: " msgstr "" #: src/auth.c:35 msgid " NUM MAC address " msgstr "" #: src/auth.c:36 msgid "A: auth; N: new; D: del; arrows: scroll; W: write conf; Q: quit" msgstr "" #: src/auth.c:38 msgid "[I] Radius server IP: " msgstr "" #: src/auth.c:39 msgid "[P] Radius server port: " msgstr "" #: src/auth.c:40 msgid "[S] Radius server secret: " msgstr "" #: src/auth.c:41 msgid "[T] Reauthorization time (minutes): " msgstr "" #: src/auth.c:42 msgid "[F] Radius source port: " msgstr "" #: src/auth.c:43 msgid "" "A: auth; N: new; D: del; IPSTF: set; arrows: scroll; W: write conf; Q: quit" msgstr "" #: src/auth.c:45 msgid "[M] 802.1x authorization: " msgstr "" #: src/auth.c:46 msgid "[T] key broadcasting time period (seconds): " msgstr "" #: 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 msgid "" "A: auth; N: new; D: del; MTIS: set; arrows: scroll; W: write conf; Q: quit" msgstr "" #: src/auth.c:114 msgid "Internal" msgstr "" #: src/auth.c:116 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 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 "" #: src/bridge.c:28 msgid "[N] Netmask: " msgstr "" #: src/bridge.c:29 msgid "[G] Gateway: " msgstr "" #: src/bridge.c:30 msgid "[F] Filter non-IP traffic: " msgstr "" #: src/bridge.c:31 msgid "[P] Primary port: " msgstr "" #: src/bridge.c:32 msgid "Attached station MAC: " msgstr "" #: src/bridge.c:33 msgid "[D] DHCP client: " msgstr "" #: src/bridge.c:34 msgid "[O] Operational mode: " msgstr "" #: 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 "[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:41 msgid "INGFPDOMSCRBUT - set; W - write conf; Q - quit to menu" msgstr "" #: src/bridge.c:128 msgid "Wireless (can be risky)" msgstr "" #: src/bridge.c:129 msgid "Both" msgstr "" #: src/nwn_advanced.c:60 #, c-format msgid "[D] DB Station Timeout: %d" msgstr "" #: src/nwn_advanced.c:62 #, c-format msgid "[A] ACK Window: %d" msgstr "" #: src/nwn_advanced.c:65 msgid "Advanced Options" msgstr "" #: src/nwn_advanced.c:66 msgid "DA - options; W - write conf; Q - quit to menu" msgstr "" #: src/nwn_latest.c:30 #, c-format msgid "Reason: %u Station: %02X%02X%02X%02X%02X%02X" msgstr "" #: src/nwn_latest.c:88 msgid "Latest Events" msgstr "" #: src/nwn_latest.c:89 msgid "Disassociate:" msgstr "" #: src/nwn_latest.c:96 msgid "Deauthenticate:" msgstr "" #: src/nwn_latest.c:103 msgid "Authenticate Fail:" msgstr "" #: src/nwn_latest.c:109 msgid "Last error:" msgstr "" #: src/nwn_latest.c:110 msgid "Error:" msgstr "" #: src/stations.c:82 msgid "Not available (device not in AP mode)." msgstr "" #: src/stations.c:92 msgid " # MAC Parent MAC RSSI LQ Sts MACn IP " msgstr "" #: src/stations.c:136 msgid "AssociatedSTAsInfo packet error" msgstr "" #: 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:193 msgid "Arrows - scroll; S - save to file; Q - return; Other key - refresh" msgstr "" #: src/stations.c:275 msgid "Id MAC address Quality Age RSSI" msgstr "" ap-utils-1.5/po/fr.po000066400000000000000000001676241117246662700145360ustar00rootroot00000000000000# Messages français pour GNU concernant ap-utils. # Copyright © 2004 Free Software Foundation, Inc. # Michel Robitaille , traducteur depuis/since 1996. # msgid "" msgstr "" "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 \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: lib/aps.c:30 msgid "Known Access Points" msgstr "Point d'accès connus" #: lib/aps.c:130 msgid "Your Access Point is not in \"AP client\" mode => getting" msgstr "Votre Point d'accès n'est pas en mode \"Client AP\" => obtention" #: 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: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:139 msgid "Your AP will be reconfigured back to original mode by this" msgstr "Votre Point d'accès sera reconfiguré à son mode d'origine par cet" #: 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:145 msgid "cause loss of Access Point's current configuration." msgstr "provoquer la perte des Points d'accès de la configuration courante." #: lib/aps.c:149 msgid "Do NOT answer \"Yes\" if you're connected to the Access Point" msgstr "Ne PAS répondre par \"Yes\", si vous êtes connecté à un Point d'accès" #: lib/aps.c:152 msgid "via its wireless port." msgstr "via le port sans fil." #: 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:208 msgid "NetworkType" msgstr "Type de réseau" #: lib/aps.c:284 msgid "Infrastructure" msgstr "Infrastructure" #: 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: Nom du canal; P: type de préambule (S: court; L: long);" #: lib/aps.c:346 msgid "RSSI: Radio Signal Strength Indicator [%]" msgstr "RSSI: indicateur de la force du signal radio [%]" #: lib/aps.c:348 lib/aps.c:356 msgid "; LQ: Link Quality [%]" msgstr "; LQ: qualité du lien [%]" #: lib/aps.c:354 msgid "RSSI: Radio Signal Strength Indicator [dBm]" msgstr "RSSI: indicateur de la force du signal radio [dBm]" #: lib/aps.c:362 msgid "RSSI: Radio Signal Strength Indicator [raw]" msgstr "RSSI: indicateur de la force du signal radio [brut]" #: lib/aps.c:364 msgid "; LQ: Link Q. [raw]" msgstr "; LQ: qualité du lien [brut]" #: lib/aps.c:370 msgid "" "# con. to AP #; R refresh with reset; T toggle; Q quit; Other = refr. w/o " "reset" msgstr "" "# 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:372 msgid "" "# con. to AP #; R initiate AP scan; T toggle view; Q quit; Other = refresh " "view" msgstr "" "# 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:501 lib/ap_search.c:173 #, c-format msgid "Failure in sendto(): %s. Press any key." msgstr "Échec de sendto(): %s. Appuyez sur une touche." #: 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:513 msgid "take a few seconds for your Access Point to find out some" msgstr "prendre quelques secondes à votre Point d'accès pour retourner" #: lib/aps.c:516 msgid "values, so expect finishing the scan in about 5 seconds." msgstr "les valeurs, aussi il faut s'attendre à une fin du scan de 5 secondes" #: 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:522 msgid "traffic while the scan is in progress, but restores itself" msgstr "lorsque le scan est lancé, il est restauré par la suite" #: lib/aps.c:525 msgid "to normal operation in time ranging up to 1 minute." msgstr "en mode normal d'opération dans un délais allant jusqu'à 1 minute." #: lib/aps.c:528 msgid "Hence, if you are connected to target Access Point via its" msgstr "Donc, si vous êtes connecté au Point d'accès cible via son" #: lib/aps.c:531 msgid "wireless port, you need to wait a bit longer" msgstr "port sans fil, vous devrez attendre un peut plus longtemps" #: lib/aps.c:534 msgid "after pressing 'S'." msgstr "après avoir appuyé sur la touche 'S'." #: lib/ap_search.c:48 msgid "Community name: " msgstr "Nom de la communauté: " #: lib/ap_search.c:49 #, fuzzy msgid " NUM IP ADDRESS MIB TYPE FW TYPE (VERSION) AP NAME" msgstr " NUM ADRESSE IP MIB TYPE NOM" #: 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:122 msgid "Can't set broadcast option on socket. Press any key." msgstr "" "Ne peut initialiser l'option de diffusion sur le socket. Appuyez sur une " "touche." #: lib/ap_search.c:131 msgid "Can't set multicast membership on socket. Press any key." msgstr "" "Ne peut initialiser le membership multicast sur le socket. Appuyez sur une " "touche." #: lib/ap_search.c:138 msgid "Scanning via network interface:" msgstr "Scan via l'interface réseau:" #: lib/ap_search.c:139 #, c-format msgid " Index: %i" msgstr " Index: %i" #: lib/ap_search.c:141 #, c-format msgid " Name: %s" msgstr " Nom: %s" #: lib/ap_search.c:143 #, c-format msgid " IP: %s" msgstr " IP: %s" #: lib/ap_search.c:152 #, c-format msgid "Scanning for AP with MIB type: %s" msgstr "Scan des Points d'accès ayant le type MIB: %s" #: lib/ap_search.c:378 msgid "Access Points Search" msgstr "Recherche des Points d'accès" #: lib/ap_search.c:396 msgid "realloc() error." msgstr "erreur de realloc()." #: lib/ap_search.c:408 msgid "Network interface discovery error." msgstr "Erreur de l'interface réseau lors de la recherche en mode découverte" #: lib/ap_search.c:483 msgid "No local network interfaces found. Press any key." msgstr "Aucune interface locale réseau retrouvée. Appuyez sur une touche." #: 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: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:493 msgid "# - connect to AP; Q - quit" msgstr "# - connectés au Point d'accès; Q - quitter" #: lib/ap-utils.h:82 msgid "MAC address: " msgstr "adresse MAC: " #: lib/ap-utils.h:83 msgid "[S] SNMP traps: " msgstr "[S] Trappes SNMP: " #: lib/ap-utils.h:85 msgid "[C] Frequency channel: " msgstr "[C] canal de fréquence: " #: lib/ap-utils.h:87 msgid "Receive antenna:" msgstr "Antenne de réception:" #: lib/ap-utils.h:88 msgid "[U] Left" msgstr "[U] Gauche" #: lib/ap-utils.h:89 msgid "[I] Right" msgstr "[I] Droite" #: lib/ap-utils.h:90 msgid "Transmit antenna:" msgstr "Antenne de transmission:" #: lib/ap-utils.h:91 msgid "[O] Left" msgstr "[O] Gauche" #: lib/ap-utils.h:92 msgid "[P] Right" msgstr "[P] Droite" #: lib/ap-utils.h:93 msgid "Diversity select:" msgstr "Sélection de la diversité: " #: lib/ap-utils.h:94 msgid "[T] Left" msgstr "[T] Gauche" #: lib/ap-utils.h:95 msgid "[Y] Right" msgstr "[Y] Droite" #: lib/ap-utils.h:97 msgid "Yes" msgstr "Yes (Oui)" #: lib/ap-utils.h:98 msgid "No" msgstr "No (Non)" #: lib/ap-utils.h:100 msgid "On" msgstr "On" #: lib/ap-utils.h:101 msgid "Off" msgstr "Off" #: lib/ap-utils.h:103 msgid "Basic" msgstr "de base" #: lib/ap-utils.h:105 msgid "Press any key to continue." msgstr "Appuyez sur une touche pour continuer" #: 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: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. Appuyez sur une touche " "pour continuer." #: 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 valides à partir du Point d'accès. " "Appuyez sur une touche pour continuer." #: lib/ap-utils.h:110 #, fuzzy 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: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:112 msgid "Configuration written to the AP. Press any key to continue." msgstr "" "Configuration écrite dans le Point d'accès. Appuyez sur une touche pour " "continuer." #: lib/ap-utils.h:113 msgid "select() function error. Press any key." msgstr "erreur de la fonction select(). Appuyez sur une 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: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:119 msgid "Back to main menu" msgstr "De retour au menu principal" #: lib/ap-utils.h:120 msgid "Exit program" msgstr "Quitter le programme" #: lib/ap-utils.h:121 msgid "Run subshell. To return type 'exit'." msgstr "Exécuter le sous-shell. Pour retourner taper 'exit'." #: 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:124 msgid "Find connected Access Points" msgstr "Repérer les Points d'accès connectés" #: lib/ap-utils.h:125 msgid "Set connection options: ip and community" msgstr "Sélectionnez les options de connexion: IP et Communauté" #: lib/ap-utils.h:126 msgid "Set encryption; edit WEP keys" msgstr "Sélectionnez l'encryptage, éditez les clés WEP" #: lib/ap-utils.h:127 #, fuzzy msgid "Set authorization; edit MAC authorization table" msgstr "" "Sélectionnez le type d'autorisation MAC, éditez la table d'autorisation MAC" #: lib/ap-utils.h:128 msgid "Set SNMP community/password for access to the AP" msgstr "" "Sélectionnez la communauté/mot de passe SNMP pour accéder au Points d'accès" #: lib/ap-utils.h:129 msgid "Get info about AP hardware and firmware" msgstr "" "Obtenir les infos à propos du matériel du Point d'accès matériel et logiciel " "(firmware)" #: lib/ap-utils.h:130 msgid "Get wireless port statistics" msgstr "Obtenir les statistiques des ports sans fil" #: lib/ap-utils.h:131 msgid "Get list of currently associated stations (Access Point clients)" msgstr "" "Obtenir la liste des stations courramment associées (clients des Points " "d'accès)" #: 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 "Obtenir les infos et les statistiques des Points d'accès" #: lib/ap-utils.h:134 msgid "Set various configuration options" msgstr "Initialiser diverses options de configuration" #: lib/ap-utils.h:136 msgid "Associated stations" msgstr "Stations associées" #: 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 "Polling: on" #: lib/ap-utils.h:140 msgid "Polling: off" 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 msgid "After restoring factory defaults your current configuration" msgstr "" "Après la restauration des paramètres du manufacturier, votre configuration " "courante" #: lib/cmd.c:44 msgid "will be lost." msgstr "sera perdue." #: lib/cmd.c:63 msgid "Factory default settings loaded. Press any key to continue." msgstr "" "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" #: lib/cmd.c:74 msgid "By reset you'll lose all non-uploaded configuration." msgstr "" "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." msgstr "" "Réinitialisation de point d'accès. Appuyer sur une touche pour continuer." #: lib/cmd.c:117 msgid "Upload configuration" msgstr "Configuration de chargement à distance" #: lib/cmd.c:119 msgid "You may need to upload the configuration only if you've" msgstr "" "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 "changé des valeurs d'option auparavant. Utiliser cette option peut" #: lib/cmd.c:123 msgid "cause loss of your current configuration." msgstr "peut causer la perte de votre configuration courante." #: lib/cmd.c:135 msgid "Configuration uploaded. Press any key to continue." msgstr "" "Téléchargement de la configuration complété. Appuyez sur une touche pour " "continuer." #: lib/common.c:32 msgid "Access Point IP-address: " msgstr "Adresse-IP du Point d'accès: " #: lib/common.c:33 msgid "Password (community): " msgstr "Mot de passe (communauté): " #: lib/common.c:34 msgid "Autodetect AP MIB properties? " msgstr "Autodétection des propriétés MIB du Point d'accès?" #: lib/common.c:35 msgid "AP MIB type: " msgstr "Type MIB du Point d'accès: " #: lib/common.c:36 msgid "AP MIB vendor extensions: " msgstr "Extension MIB du manufacturier du Point d'accès: " #: lib/common.c:37 msgid "Do you want to use AP's name as its label? " msgstr "Désirez-vous utiliser le nom du Point d'accès comme étiquette? " #: lib/common.c:38 msgid "Access Point label: " msgstr "Étiquette du Point d'accès: " #: lib/common.c:39 msgid "Save connect-settings: " 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:106 #, c-format msgid "From %s" msgstr "À partir de %s" #: lib/common.c:108 #, c-format msgid "Version %s" msgstr "Version %s" #: lib/common.c:111 msgid "Written by Roman Festchook roma@polesye.net" msgstr "Écrit par Roman Festchook (roma@polesye.net)" #: 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:115 #, fuzzy msgid "Copyright (c) 2001-2005" msgstr "Copyright © 2001-2004" #: lib/common.c:117 msgid "Roman Festchook and Jan Rafaj" msgstr "Roman Festchook et Jan Rafaj" #: lib/common.c:120 msgid "This program is distributed under the terms" msgstr "Ce logiciel est distribué selon les termes" #: 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:124 msgid "See the included COPYING file for details." msgstr "Consulter le fichier COPYING pour les détails." #: lib/common.c:165 msgid "Connect options" msgstr "Option d'établissement de connexion" #: 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: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: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:362 msgid "Trying to probe AP for MIB properties. Please wait..." msgstr "" "Tentative de scrutation des propriétés MIB du Point d'accès. SVP patienter..." #: lib/common.c:391 msgid "" "Unable to determine AP MIB properties (no response from AP). Press any key." 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." #: 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 "NUM ADRESSE IP TYPE MIB EXT.MIB ÉTIQUTTE" #: lib/file.c:200 msgid "Choose an AP to connect to" msgstr "Choisir un Point d'accès pour établir une connexion" #: 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:257 msgid "Connect to AP num:" msgstr "Connexion avec AP numéro:" #: lib/file.c:288 msgid "Delete num:" msgstr "Détruire num:" #: lib/file.c:442 msgid "Unable to write stations file. Press any key." msgstr "" "Incapable d'écrire dans le fichier des stations. Appuyez sur une touche pour " "continuer." #: lib/file.c:444 msgid "Stations file succesfully written. Press any key." msgstr "Succès d'écriture au fichier des stations. Appuyez sur une touche." #: lib/input.c:32 msgid "Invalid value. Press any key to continue." msgstr "Valeur invalide. Appuyez sur une touche." #: lib/input.c:33 #, c-format msgid "Value must be in range %u - %u. Press any key to continue." msgstr "" "La valeur doit être contenue entre les bornes %u - %u. Appuyez sur une " "touche pour continuer." #: lib/input.c:460 msgid "Y - Yes; Any other key - No (it's safer to answer No)" msgstr "" "Y - Oui; N'importe quelle autre touche - Non (il est plus sûr de répondre No " "pour non)" #: lib/oui.c:6061 msgid "Unknown or Private" msgstr "Inconnu ou privé" #: lib/radio.c:26 msgid "" "[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu" msgstr "" "[clé] - niveau de puissance; UIOP ou LR - antenne; W - sauvegarder la " "config.; Q - quitter vers le menu" #: lib/radio.c:28 msgid "Antenna:" msgstr "Antenne:" #: lib/radio.c:29 msgid "[L] Left:" msgstr "[L] Gauche:" #: lib/radio.c:30 msgid "[R] Right:" msgstr "[R] Droite:" #: lib/radio.c:120 msgid "Radio Configuration" msgstr "Configuration radio" #: lib/radio.c:121 msgid "Output RF signal power level (CR31 register values)" msgstr "Niveau de puissance du signal RF (valeur de registre CR31)" #: lib/radio.c:123 msgid "Key Channel Level" msgstr "niveau du canal clé" #: lib/radio.c:279 msgid "" "You can't disable both antennas; unable to save antenna-config. Press any " "key." msgstr "" "Vous ne pouvez pas désactiver les deux antennes, incapable de sauvegarder la " "config. des antennes. Appuyez sur une touche." #: lib/scr.c:157 #, c-format msgid "Current AP: %s Type: %s Ext: %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 msgid "Key Access level" msgstr "Niveau d'accès clé" #: lib/set_community.c:29 msgid "Community/Password" msgstr "Communauté/Mot de passe" #: lib/set_community.c:30 msgid "[U] User " msgstr "[U] Usager " #: lib/set_community.c:31 msgid "[A] Administrator " msgstr "[A] Administrateur " #: lib/set_community.c:32 msgid "[M] Manufacturer " msgstr "[M] Manufacturier " #: lib/set_community.c:33 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 vers le menu" #: lib/set_oeminfo.c:28 #, fuzzy msgid "Info structure version: " msgstr "Version des infos de structure: %u" #: lib/set_oeminfo.c:29 #, fuzzy msgid "[M] Device MAC address: " msgstr "adresse MAC: " #: lib/set_oeminfo.c:30 #, fuzzy msgid " Manufacturer with this OUI: " msgstr "Identificateur du manufacturier" #: lib/set_oeminfo.c:31 #, fuzzy msgid "[D] Regulatory domain: " msgstr "Domaine régulateur: %s" #: lib/set_oeminfo.c:32 #, fuzzy msgid "[T] Product type: " msgstr "Type de produit: %u" #: lib/set_oeminfo.c:33 #, fuzzy msgid "[E] OEM name: " msgstr "Nom OEM:" #: lib/set_oeminfo.c:34 #, fuzzy msgid "[I] OEM ID: " msgstr "[I] IP: " #: lib/set_oeminfo.c:35 #, fuzzy msgid "[N] Product name: " msgstr "Nom du produit:" #: lib/set_oeminfo.c:36 #, fuzzy msgid "[H] Hardware revision: " msgstr "Révision matérielle: %u" #: lib/set_oeminfo.c:37 #, fuzzy msgid "[O] Country code: " msgstr "[O] Commande: " #: lib/set_oeminfo.c:38 #, fuzzy msgid "[C] Default channel: " msgstr "[C] canal de fréquence: " #: 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/set_oeminfo.c:41 #, fuzzy 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/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: %u" #: lib/sysinfo.c:204 #, c-format msgid "Info structure version: %u" msgstr "Version des infos de structure: %u" #: 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:224 #, c-format msgid "Uptime: %u days, %02u:%02u:%02u hours:mins:secs" msgstr "Temps de marche (uptime): %u jours, %02u:%02u:%02u heures:mins:secs" #: lib/sysinfo.c:312 msgid "FHSS 2.4 GHz" msgstr "FHSS 2.4 GHz" #: lib/sysinfo.c:312 msgid "DSSS 2.4 GHz" msgstr "DSSS 2.4 GHz" #: lib/sysinfo.c:312 msgid "IR Baseband" msgstr "Fréquence de base IR" #: lib/sysinfo.c:313 msgid "Commercial range 0..40 C" msgstr "Étendue commerciale 0..40 C" #: lib/sysinfo.c:314 msgid "Industrial range -30..70 C" msgstr "Étendue industrielle -30..70 C" #: lib/sysinfo.c:317 msgid "manual" msgstr "manuel" #: lib/sysinfo.c:317 msgid "notsupported" msgstr "non supporté" #: lib/sysinfo.c:317 msgid "dynamic" msgstr "dynamique" #: lib/sysinfo.c:373 msgid "Manufacturer:" msgstr "Manufacturier" #: lib/sysinfo.c:378 msgid "Manufacturer ID:" msgstr "Identificateur du manufacturier" #: lib/sysinfo.c:389 msgid "Product Name:" msgstr "Nom de produit:" #: lib/sysinfo.c:395 msgid "Product ID:" msgstr "Identificateur du produit:" #: lib/sysinfo.c:401 msgid "Product Version:" msgstr "Version du produit:" #: lib/sysinfo.c:407 #, c-format msgid "PHYType: %s" msgstr "Type PHY: %s" #: lib/sysinfo.c:410 #, c-format msgid "Temperature: %s" msgstr "Température: %s" #: lib/sysinfo.c:418 #, c-format msgid "Regulatory Domain: %s" msgstr "Domaine régulateur: %s" #: lib/sysinfo.c:419 msgid "FCC (USA)" msgstr "FCC (EU)" #: lib/sysinfo.c:420 msgid "DOC (Canada)" msgstr "DOC (Canada)" #: lib/sysinfo.c:421 msgid "ETSI (Europe)" msgstr "ETSI (Europe)" #: lib/sysinfo.c:422 msgid "Spain" msgstr "Espagne" #: lib/sysinfo.c:423 msgid "France" msgstr "France" #: lib/sysinfo.c:424 msgid "MKK (Japan)" msgstr "MKK (Japon)" #: lib/sysinfo.c:427 #, c-format msgid "Transmit Power: %u mW" msgstr "Puissance de transmission: %u mW" #: lib/sysinfo.c:457 #, c-format msgid "WEP implemented: %s" msgstr "WEP non implanté: %s" #: lib/sysinfo.c:460 #, c-format msgid "Diversity: %s" msgstr "Diversité: %s" #: lib/sysinfo.c:488 #, c-format msgid "Uptime: %u:%02u:%02u.%02u" msgstr "Temps de marche (uptime): %u:%02u:%02u.%02u" #: lib/sysinfo.c:508 #, c-format msgid "IP Address: %s" msgstr "Adresse IP: %s" #: lib/test.c:26 msgid "[T] Test mode: " msgstr "[T] Mode test: " #: lib/test.c:27 msgid "[A] Antenna: " msgstr "[A] Antenne: " #: lib/test.c:28 msgid "[S] Signal level: " msgstr "[S] niveau du signal: " #: lib/test.c:29 msgid "[R] Rate: " msgstr "[R] Débit: " #: lib/test.c:30 msgid "[F] TxFiler: " msgstr "[F] TxFiler: " #: lib/test.c:31 msgid "[O] Command: " msgstr "[O] Commande: " #: lib/test.c:32 msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu" msgstr "" "T - Mode test On/Off; CASRFO - initialiser les options; Q - quitter vers le " "menu" #: lib/test.c:70 msgid "Left" msgstr "Gauche" #: lib/test.c:70 msgid "Right" msgstr "Droite" #: 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:94 msgid "Using the \"Test mode\" may cause loss of your current" msgstr "" "L'utilisation du \"mode test\" peut causer la perte de la configuration" #: lib/test.c:95 msgid "configuration." msgstr "courante." #: lib/test.c:107 msgid "Options:" msgstr "Options" #: lib/test.c:133 msgid "Statistics:" msgstr "Statistiques:" #: lib/test.c:134 msgid "Success Frames: 0 Failed Frames: 0" msgstr "Trames transmises: 0 Trames non transmises: 0" #: lib/test.c:195 #, c-format msgid "Success Frames: %lu Failed Frames: %lu" msgstr "Trames transmises: %lu Trames non transmises: %lu" #: lib/wep.c:28 msgid "Privacy Settings" msgstr "Configuration privée" #: lib/wep.c:29 msgid "[E] Standard encryption mechanism: " msgstr "[E] mécanisme standard d'encryptage: " #: lib/wep.c:30 msgid "[A] Allow unencrypted: " msgstr "[A] permettre de fonctionner sans encryptage: " #: lib/wep.c:31 msgid "[K] Default WEP key: " msgstr "[K] clé par défaut WEP: " #: lib/wep.c:32 msgid "[P] Public key: " msgstr "[P] Clé publique: " #: lib/wep.c:85 msgid "EK1234 - set; W - write conf; Q - quit to menu" msgstr "" "EK1234 - initialisé; W - sauvegarder la config.; Q - quitter vers le menu" #: lib/wep.c:94 lib/wep.c:263 msgid "Key WEP" msgstr "Clé WEP" #: lib/wep.c:101 msgid "Hint! Confused by WEP key values? See man ap-config for info..." msgstr "" "Un indice! Confus par les valeurs des clés du WEP? Voir man ap-config pour " "info..." #: lib/wep.c:247 msgid "AEPK1234 - set options; W - write conf; Q - quit to menu" msgstr "" "AEPK1234 - options de configuration; W - sauvegarder la configuration; Q - " "quitter vers le menu" #: lib/wlan.c:27 msgid "[E] ESSID: " msgstr "[E] ESSID: " #: lib/wlan.c:28 msgid "[N] AP name: " msgstr "[N] nom du Point d'accès: " #: lib/wlan.c:30 msgid "[K] AP contact: " msgstr "[E] contact du Point d'accès: " #: lib/wlan.c:31 msgid "[L] AP location: " msgstr "[L] localisation du Point d'accès: " #: lib/wlan.c:33 msgid "[R] RTS threshold: " msgstr "[R] Seuil RTS: " #: lib/wlan.c:34 msgid "[F] Fragmentation threshold: " msgstr "[F] Seuil de fragmentation: " #: lib/wlan.c:35 msgid "[P] Preambule type: " msgstr "[P] type de préambule: " #: lib/wlan.c:36 msgid "[A] Auth type: " msgstr "[A] Type auth.: " #: lib/wlan.c:37 msgid "Open system" msgstr "Système ouvert" #: lib/wlan.c:38 msgid "Shared key" msgstr "Clé partagée" #: lib/wlan.c:39 msgid "Both types" msgstr "Les deux types" #: lib/wlan.c:40 msgid "[U] Auto rate fallback: " msgstr "[U] Fallback en mode auto débit: " #: lib/wlan.c:41 msgid "[S] Insert ESSID in broadcast packets: " msgstr "[S] insérer ESSID dans les paquets à diffuser: " #: lib/wlan.c:42 msgid "Basic and Supported rates:" msgstr "Débits de base et supportés:" #: lib/wlan.c:43 msgid "Key Rate Status" msgstr "Clé Débit État" #: lib/wlan.c:45 msgid "[I] International roaming: " msgstr "[I] mode vagabongage international: " #: lib/wlan.c:46 msgid "[B] Beacon period (msec): " msgstr "[B] période de la balise (msec): " #: lib/wlan.c:47 msgid "[D] DTIM sending interval (beacons): " msgstr "[D] intervalle de transmission DTIM (balises): " #: lib/wlan.c:48 #, 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" msgstr "" "[key] - initialiser l'option; W - sauvegarder la config.; Q - quitter vers " "le menu" #: lib/wlan.c:125 msgid "Short" msgstr "Court" #: lib/wlan.c:125 msgid "Long" msgstr "Long" #: lib/wlan.c:239 msgid "Wireless Settings" msgstr "Paramétrage du sans fil" #: lib/wlan.c:735 msgid "Antenna Configuration:" msgstr "Configuration de l'antenne:" #: lib/wlan.c:752 msgid "General Options" msgstr "Options générales" #: 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-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:56 msgid "Set general options" msgstr "Initialiser les options générales" #: src/ap-config.c:57 msgid "Advanced" msgstr "Avancé" #: src/ap-config.c:57 msgid "Set advanced options" msgstr "Initialiser les options avancées" #: 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 ireless, thernet, associated tations " "or ink quality (last one will only " msgstr "" "-t type type de statistiques sans fil, thernet, tations " "associées ou qualité du 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 ireless, thernet, associated tations " "or ink quality in client mode\n" msgstr "" "-t type type de statistiques sans fil, thernet, tations " "associées ou qualité du 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-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 \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 "Adresse IP invalide\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 démarré%s%s" #: src/ap-trapd.c:151 msgid " on " msgstr " on " #: src/ap-trapd.c:157 msgid "Unable to fork. Exiting." msgstr "Incapable de fork(). Fin d'exécution." #: 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:167 msgid "Can't bind socket. Exiting." msgstr "Ne peut établir la liaison sur le socket. Fin d'exécution." #: 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: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:190 #, c-format msgid "Unable to change to uid %d." msgstr "Incapable de changer de UID %d" #: src/ap-trapd.c:239 #, c-format msgid "" "Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s." msgstr "" "Réception d'une trappe SNMP inconnu ver. %d. À partir de %s:%d. Agent: %s. " "Communauté: %s." #: 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.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 " 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 "[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 "[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 "[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:128 #, fuzzy msgid "Wireless (can be risky)" msgstr "Paramétrage du sans fil" #: src/bridge.c:129 msgid "Both" msgstr "Ensemble" #: src/nwn_advanced.c:60 #, c-format msgid "[D] DB Station Timeout: %d" msgstr "[D] DB délai d'oisiveté de la station: %d" #: src/nwn_advanced.c:62 #, c-format msgid "[A] ACK Window: %d" msgstr "[A] fenêtre ACK: %d" #: src/nwn_advanced.c:65 msgid "Advanced Options" msgstr "Options avancées" #: src/nwn_advanced.c:66 msgid "DA - options; W - write conf; Q - quit to menu" msgstr "" "DA - options; W - sauvegarder la configuration; Q - quitter vers le menu" #: src/nwn_latest.c:30 #, c-format msgid "Reason: %u Station: %02X%02X%02X%02X%02X%02X" msgstr "Raison: %u Station: %02X%02X%02X%02X%02X%02X" #: src/nwn_latest.c:88 msgid "Latest Events" msgstr "Derniers événements" #: src/nwn_latest.c:89 msgid "Disassociate:" msgstr "Dissocier:" #: src/nwn_latest.c:96 msgid "Deauthenticate:" msgstr "Désauthentifier:" #: src/nwn_latest.c:103 msgid "Authenticate Fail:" msgstr "Échec d'authentification:" #: src/nwn_latest.c:109 msgid "Last error:" msgstr "Dernière erreur:" #: src/nwn_latest.c:110 msgid "Error:" msgstr "Erreur:" #: src/stations.c:82 msgid "Not available (device not in AP mode)." 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:136 msgid "AssociatedSTAsInfo packet error" msgstr "Erreur de paquet AssociatedSTAsInfo" #: src/stations.c:189 src/stations.c:363 msgid "" "Arrows - scroll; S - save to file; Q - return; T - toggle view; Other - " "refresh" msgstr "" "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:193 msgid "Arrows - scroll; S - save to file; Q - return; Other key - refresh" msgstr "" "Flèches - défiler; S - sauvegarder dans un fichier; Q - quitter vers le " "menu; Autre touche - rafraîchir" #: src/stations.c:275 msgid "Id MAC address Quality Age RSSI" msgstr "Id Adresse MAC Qualité Âge RSSI" #~ msgid "Please enter SNMP community name that will be used for AP detection." #~ msgstr "" #~ "SVP fournir le nom de la communauté SNMP qui sera utilisé pour la " #~ "détection de Points d'accès" #~ msgid "Create socket error. Press any key." #~ msgstr "Erreur de création du socket. Appuyer sur n'importe quelle touche." #~ msgid "Bind socket error. Press any key." #~ msgstr "Erreur de liaison de socket (bind). Appuyer sur une touche." #~ msgid "Create socket error" #~ msgstr "Erreur de création de socket" #~ 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 "" #~ "A - auth; IPSTF - initialiser; W - sauvegarder la config.; Q - quitter" #~ msgid "A - auth; W - write conf; Q - quit" #~ msgstr "A - auth; W - sauvegarder la configuration; Q - quitter" #~ msgid "[I] RADIUS SERVER IP: " #~ msgstr "[I] IP DU SERVEUR RADIUS: " #~ msgid "[P] RADIUS SERVER PORT: " #~ msgstr "[P] PORT DU SERVEUR RADIUS: " #~ msgid "[S] RADIUS SERVER SECRET: " #~ msgstr "[S] SECRET DU SERVEUR RADIUS: " #~ msgid "[T] REAUTHORIZATION TIME: " #~ msgstr "[T] TEMPS DE RÉ-AUTORISATION: " #~ msgid "[F] RADIUS SOURCE PORT: " #~ msgstr "[F] PORT DU RADIUS SOURCE: " #~ msgid "" #~ msgstr "" #~ 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" #~ msgid "Mac Address: %02X%02X%02X%02X%02X%02X" #~ msgstr "Mac Address: %02X%02X%02X%02X%02X%02X" #~ msgid "Transmit Antenna: [O] Left %3s, [P] Right %3s" #~ msgstr "Antenne de transmission: [O] Gauche %3s, [P] Droit %3s" #~ msgid "Receive Antenna: [U] Left %3s, [I] Right %3s" #~ msgstr "Antenne de réception: [U] Gauche %3s, [I] Droit %3s" #~ msgid "Diversity Select: [T] Left %3s, [Y] Right %3s" #~ msgstr "Sélection de la diversité: [T] Gauche %3s, [Y] Droite %3s" #~ msgid "Write configuration to AP done. Press any key to continue." #~ msgstr "" #~ "Sauvegarde de la configuration sur le point d'accès complété. Appuyer sur " #~ "une touche pour continuer." #~ msgid "Invalid multicast address. Press any key." #~ msgstr "Adresse multicast invalide. Appuyer sur une touche." #~ msgid "Searching please wait..." #~ msgstr "Recherche en cours, svp attendre..." #~ msgid "No Access Points found." #~ msgstr "Aucun point d'accès repéré." #~ 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 " #~ "courante." #~ msgid "Output Signal Power Level" #~ msgstr "Niveau de puissance du signal de sortie" #~ msgid "" #~ "Getting known AP's info need to reboot you AP and may cause lost of " #~ "current configuration." #~ msgstr "" #~ "Pour obtenir les infos des points d'accès, il est nécessaire de réamorcer " #~ "le point d'accès et cela peut causer la perte de la configuration " #~ "courante." #~ 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:" #~ msgid "RegulationDomain: %s" #~ msgstr "Domaine de régulation: %s" #~ msgid "Found AP at %s" #~ msgstr "Point d'accès repéré à %s" #~ msgid "Access Point Configurator for Atmel ver. %s" #~ msgstr "Configurateur du point d'accès Atmel de version %s" #~ msgid "Access Point Configurator for NWN ver. %s" #~ msgstr "Configurateur de point d'accès pour NWN version %s" #~ msgid "" #~ "Usage: %s []\n" #~ "ap-mrtg version %s, Copyright (C) 2002 Roman Festchook\n" #~ "Get stats from AP and return it in MRTG parsable format.\n" #~ " ip - AP ip address;\n" #~ " community - SNMP community string;\n" #~ " type - Statistics type ireless, thernet, associated " #~ "tations or ink quality in client mode;\n" #~ " bssid - Mac address of the AP to which get link quality.\n" #~ msgstr "" #~ "Usage: %s []\n" #~ "ap-mrtg version %s, Copyright © 2002 Roman Festchook\n" #~ "Obtenir les statistiques d'un point d'accès et les retourner dans un " #~ "format MRTG.\n" #~ " ip - adresse IP du point d'accès\n" #~ " community - chaîne de la communauté SNMP\n" #~ " type - type de statiques sans fil, Ethernet, tations " #~ "associées ou qualité du ien en mode client\n" #~ " bssid - adresse Mac du point d'accès de laquelle la qualité du lien " #~ "est déterminée\n" #~ msgid "Invalid type of statictics\n" #~ msgstr "Type invalide de statistiques\n" #~ msgid "Pream" #~ msgstr "Préam" #~ msgid "ColdStart" #~ msgstr "DÉmarrage à froid" #~ msgid "WarmStart" #~ msgstr "Démarrage à chaud" #~ msgid "LinkDown" #~ msgstr "Liaison vers le bas (linkdown)" #~ msgid "LinkUp" #~ msgstr "Liaison vers le haut (linkup)" #~ msgid "AuthenticationFailure" #~ msgstr "Échec d'authentification" #~ msgid "EgpNeighborLoss" #~ msgstr "EgpNeighborLoss" #~ msgid "EnterpriseSpecific" #~ msgstr "EnterpriseSpecific" #~ msgid "Reassociation" #~ msgstr "Réassociation" #~ msgid "RoamOut" #~ msgstr "RoamOut" #~ msgid "Association" #~ msgstr "Association" #~ msgid "Disassociation" #~ msgstr "Déassociation" #~ msgid "AssociationExpire" #~ msgstr "Délai d'expiration d'association" #~ msgid "SettingPingIPAddress" #~ msgstr "Configuration d'adresse IP pour le ping" #~ msgid "StartUp" #~ msgstr "Démarrage" #~ msgid "FailedToEraseFlash" #~ msgstr "Échec d'effacement de la mémoire Flash" ap-utils-1.5/po/nl.po000066400000000000000000001504361117246662700145310ustar00rootroot00000000000000# Dutch translation of ap-utils # Copyright (C) 2003 Free Software Foundation, Inc. # This file is distributed under the same license as the ap-utils package. # Elros Cyriatan , 2003. # msgid "" msgstr "" "Project-Id-Version: ap-utils 1.3.2-pre3\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 \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Report-Msgid-Bugs-To: \n" #: lib/aps.c:30 msgid "Known Access Points" msgstr "Bekende Access Points" #: lib/aps.c:130 msgid "Your Access Point is not in \"AP client\" mode => getting" msgstr "" #: lib/aps.c:133 msgid "up-to-date \"Known APs\" info requires your AP to be" msgstr "" #: lib/aps.c:136 msgid "temporarily configured into \"AP client\" mode and rebooted." msgstr "" #: lib/aps.c:139 msgid "Your AP will be reconfigured back to original mode by this" msgstr "" #: lib/aps.c:142 msgid "utility once you quit the \"KnownAP\" view. This, in turn, may" msgstr "" #: lib/aps.c:145 #, fuzzy msgid "cause loss of Access Point's current configuration." msgstr "Draadloos Access Point configurator" #: lib/aps.c:149 msgid "Do NOT answer \"Yes\" if you're connected to the Access Point" msgstr "" #: lib/aps.c:152 #, fuzzy msgid "via its wireless port." msgstr "Draadloze opties instellen" #: 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:208 msgid "NetworkType" msgstr "Soort netwerk" #: lib/aps.c:284 msgid "Infrastructure" msgstr "Infrastructuur" #: 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:346 msgid "RSSI: Radio Signal Strength Indicator [%]" msgstr "" #: lib/aps.c:348 lib/aps.c:356 msgid "; LQ: Link Quality [%]" msgstr "" #: lib/aps.c:354 msgid "RSSI: Radio Signal Strength Indicator [dBm]" msgstr "" #: lib/aps.c:362 msgid "RSSI: Radio Signal Strength Indicator [raw]" msgstr "" #: lib/aps.c:364 msgid "; LQ: Link Q. [raw]" msgstr "" #: lib/aps.c:370 #, fuzzy msgid "" "# con. to AP #; R refresh with reset; T toggle; Q quit; Other = refr. w/o " "reset" msgstr "" "# verbinden met deze AP; R verversen met opnieuw instellen; G verversen " "zonder opnieuw instellen; Q afsluiten" #: lib/aps.c:372 #, fuzzy msgid "" "# con. to AP #; R initiate AP scan; T toggle view; Q quit; Other = refresh " "view" msgstr "" "# verbinden met deze AP; R verversen met opnieuw instellen; G verversen " "zonder opnieuw instellen; Q afsluiten" #: 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:510 msgid "You have just initiated the AP scan. Be advised that it may" msgstr "" #: lib/aps.c:513 msgid "take a few seconds for your Access Point to find out some" msgstr "" #: lib/aps.c:516 msgid "values, so expect finishing the scan in about 5 seconds." msgstr "" #: lib/aps.c:519 msgid "Also note that your Access Point stops forwarding the network" msgstr "" #: lib/aps.c:522 msgid "traffic while the scan is in progress, but restores itself" msgstr "" #: lib/aps.c:525 msgid "to normal operation in time ranging up to 1 minute." msgstr "" #: lib/aps.c:528 msgid "Hence, if you are connected to target Access Point via its" msgstr "" #: lib/aps.c:531 msgid "wireless port, you need to wait a bit longer" msgstr "" #: lib/aps.c:534 msgid "after pressing 'S'." msgstr "" #: lib/ap_search.c:48 #, fuzzy msgid "Community name: " msgstr "Gemeenschap" #: lib/ap_search.c:49 #, fuzzy msgid " NUM IP ADDRESS MIB TYPE FW TYPE (VERSION) AP NAME" msgstr "NUMMER IP ADRES SOORT" #: lib/ap_search.c:106 msgid "Please wait while scanning, or press 'Q' to quit." msgstr "" #: 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: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:138 msgid "Scanning via network interface:" msgstr "" #: lib/ap_search.c:139 #, c-format msgid " Index: %i" msgstr "" #: lib/ap_search.c:141 #, fuzzy, c-format msgid " Name: %s" msgstr "[N] AP naam:" #: lib/ap_search.c:143 #, c-format msgid " IP: %s" msgstr "" #: lib/ap_search.c:152 #, c-format msgid "Scanning for AP with MIB type: %s" msgstr "" #: lib/ap_search.c:378 msgid "Access Points Search" msgstr "Access Points zoeken" #: lib/ap_search.c:396 #, fuzzy msgid "realloc() error." msgstr "Fout bij maken socket" #: lib/ap_search.c:408 msgid "Network interface discovery error." msgstr "" #: 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:485 msgid "No directly reachable Access Points found. Press any key." msgstr "" #: lib/ap_search.c:490 msgid "Single-screen maximum number of APs found." msgstr "" #: lib/ap_search.c:493 #, fuzzy msgid "# - connect to AP; Q - quit" msgstr "Verbinden met AP nummer:" #: lib/ap-utils.h:82 #, fuzzy msgid "MAC address: " msgstr "IP-adres: %s" #: lib/ap-utils.h:83 #, fuzzy msgid "[S] SNMP traps: " msgstr "[S] SNMP vallen: %s" #: lib/ap-utils.h:85 #, fuzzy msgid "[C] Frequency channel: " msgstr "[C] Frequentiekanaal: %02u (%u MHz)" #: lib/ap-utils.h:87 #, fuzzy msgid "Receive antenna:" msgstr "Ontvangen:" #: lib/ap-utils.h:88 #, fuzzy msgid "[U] Left" msgstr "Links" #: lib/ap-utils.h:89 #, fuzzy msgid "[I] Right" msgstr "Rechts" #: lib/ap-utils.h:90 #, fuzzy msgid "Transmit antenna:" msgstr "Verzonden:" #: lib/ap-utils.h:91 #, fuzzy msgid "[O] Left" msgstr "Links" #: lib/ap-utils.h:92 #, fuzzy msgid "[P] Right" msgstr "Rechts" #: lib/ap-utils.h:93 #, fuzzy msgid "Diversity select:" msgstr "Diversiteit: %s" #: lib/ap-utils.h:94 #, fuzzy msgid "[T] Left" msgstr "Links" #: lib/ap-utils.h:95 #, fuzzy msgid "[Y] Right" msgstr "Rechts" #: lib/ap-utils.h:97 msgid "Yes" msgstr "" #: lib/ap-utils.h:98 msgid "No" msgstr "" #: lib/ap-utils.h:100 msgid "On" msgstr "" #: lib/ap-utils.h:101 #, fuzzy msgid "Off" msgstr "uit" #: lib/ap-utils.h:103 #, fuzzy msgid "Basic" msgstr "basis" #: lib/ap-utils.h:105 msgid "Press any key to continue." msgstr "Druk op een toets om door te gaan." #: lib/ap-utils.h:106 msgid "Q - quit to menu. T - toggle polling mode, Other key - force update" msgstr "" #: 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: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:110 #, fuzzy 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:111 msgid "Writing data to AP. Please wait..." msgstr "Bezig met schrijven gegevens naar AP. Even geduld a.u.b...." #: 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:113 #, fuzzy msgid "select() function error. Press any key." msgstr "fcntl() fout. 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: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:119 msgid "Back to main menu" msgstr "Terug naar hoofdmenu" #: lib/ap-utils.h:120 msgid "Exit program" msgstr "Programma afsluiten" #: 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: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:124 msgid "Find connected Access Points" msgstr "Verbonden Access Points zoeken" #: lib/ap-utils.h:125 msgid "Set connection options: ip and community" msgstr "Verbindingsopties instellen: IP en gemeenschap" #: lib/ap-utils.h:126 #, fuzzy msgid "Set encryption; edit WEP keys" msgstr "Codering instellen, WEP-sleutels bewerken" #: lib/ap-utils.h:127 #, fuzzy msgid "Set authorization; edit MAC authorization table" msgstr "Mac toelating instellen, mac toelatingstabel bewerken" #: 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:129 #, fuzzy msgid "Get info about AP hardware and firmware" msgstr "Info opvragen over AP hardware en software" #: lib/ap-utils.h:130 #, fuzzy msgid "Get wireless port statistics" msgstr "Statistieken opvragen over draadloze poorten" #: 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: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:134 #, fuzzy msgid "Set various configuration options" msgstr "Verschillende configuratie-opties instellen" #: lib/ap-utils.h:136 msgid "Associated stations" msgstr "Geassocieerde stations" #: lib/ap-utils.h:137 msgid "AP Client link state" msgstr "" #: lib/ap-utils.h:139 msgid "Polling: on" msgstr "" #: lib/ap-utils.h:140 msgid "Polling: off" msgstr "" #: lib/cmd.c:40 msgid "Restore factory default configuration" msgstr "Fabrieksinstellingen terugzetten" #: lib/cmd.c:43 #, fuzzy msgid "After restoring factory defaults your current configuration" msgstr "" "Na het terugzetten van de fabrieksinstellingen is de huidige configuratie " "verloren." #: lib/cmd.c:44 msgid "will be lost." msgstr "" #: lib/cmd.c:63 #, fuzzy msgid "Factory default settings loaded. Press any key to continue." msgstr "Standaard configuratie geactiveerd. Druk op een toets om door te gaan." #: lib/cmd.c:71 msgid "Reset Access Point" msgstr "Access Point opnieuw instellen" #: lib/cmd.c:74 #, fuzzy msgid "By reset you'll lose all non-uploaded configuration." msgstr "" "Bij het opnieuw instellen gaan alle niet-verzonden instellingen verloren." #: lib/cmd.c:85 msgid "Access Point reset. Press any key to continue." msgstr "Access Point opnieuw ingesteld. Druk op een toets om door te gaan." #: lib/cmd.c:117 msgid "Upload configuration" msgstr "Configuratie uploaden" #: lib/cmd.c:119 #, fuzzy msgid "You may need to upload the configuration only if you've" msgstr "" "U dient de configuratie alleen up te loaden als u instellingen heeft " "gewijzigd." #: lib/cmd.c:121 msgid "changed some option values before. Using this option may" msgstr "" #: lib/cmd.c:123 #, fuzzy msgid "cause loss of your current configuration." msgstr "Huidige configuratie actief maken" #: lib/cmd.c:135 #, fuzzy msgid "Configuration uploaded. Press any key to continue." msgstr "" "Het uploaden van de configuratie is voltooid. Druk op een toets om door te " "gaan." #: lib/common.c:32 #, fuzzy msgid "Access Point IP-address: " msgstr "Access Point IP-adres:" #: lib/common.c:33 #, fuzzy msgid "Password (community): " msgstr "Wachtwoord (gemeenschap):" #: lib/common.c:34 msgid "Autodetect AP MIB properties? " msgstr "" #: lib/common.c:35 #, fuzzy msgid "AP MIB type: " msgstr "AP soort:" #: lib/common.c:36 msgid "AP MIB vendor extensions: " msgstr "" #: lib/common.c:37 #, fuzzy msgid "Do you want to use AP's name as its label? " msgstr "Wilt u doorgaan?" #: lib/common.c:38 #, fuzzy msgid "Access Point label: " msgstr "Access Point" #: lib/common.c:39 #, fuzzy msgid "Save connect-settings: " msgstr "Verbindingsinstellingen opslaan:" #: 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:108 #, c-format msgid "Version %s" msgstr "Versie %s" #: lib/common.c:111 msgid "Written by Roman Festchook roma@polesye.net" msgstr "Geschreven door Roman Festchook roma@polesye.net" #: lib/common.c:113 msgid "and Jan Rafaj jr-aputils@cedric.unob.cz" msgstr "" #: lib/common.c:115 #, fuzzy msgid "Copyright (c) 2001-2005" msgstr "Copyright (c) Roman Festchook 2001-2002" #: lib/common.c:117 msgid "Roman Festchook and Jan Rafaj" msgstr "" #: lib/common.c:120 msgid "This program is distributed under the terms" msgstr "This program is distributed under the terms" #: 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:124 msgid "See the included COPYING file for details." msgstr "See the included COPYING file for details." #: lib/common.c:165 msgid "Connect options" msgstr "Verbindingsopties" #: lib/common.c:173 msgid "Enter IP address of your Access Point." msgstr "Geef het IP-adres van uw Access Point." #: 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:249 msgid "This label will be stored on HDD (independently on AP name!)." msgstr "" #: 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: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/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:200 #, fuzzy msgid "Choose an AP to connect to" msgstr "Kies AP om mee te verbinden" #: 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:257 msgid "Connect to AP num:" msgstr "Verbinden met AP nummer:" #: lib/file.c:288 msgid "Delete num:" msgstr "Nummer verwijderen:" #: 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:444 msgid "Stations file succesfully written. Press any key." msgstr "" #: 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: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: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:6061 msgid "Unknown or Private" msgstr "Onbekend of privé" #: lib/radio.c:26 #, fuzzy msgid "" "[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu" msgstr "" "Toets - vermogenssterkte; UIOP - antenne; W - config schrijven; Q - afsluiten" #: lib/radio.c:28 #, fuzzy msgid "Antenna:" msgstr "[A] Antenne: %s" #: lib/radio.c:29 #, fuzzy msgid "[L] Left:" msgstr "Links" #: lib/radio.c:30 #, fuzzy msgid "[R] Right:" msgstr "Rechts" #: lib/radio.c:120 msgid "Radio Configuration" msgstr "Radio configuratie" #: lib/radio.c:121 msgid "Output RF signal power level (CR31 register values)" msgstr "" #: lib/radio.c:123 #, fuzzy msgid "Key Channel Level" msgstr "sleutel kanaal niveau" #: lib/radio.c:279 #, fuzzy msgid "" "You can't disable both antennas; unable to save antenna-config. Press any " "key." msgstr "" "U kunt niet beide antennes uitzetten; kan antenne instellingen niet opslaan. " "Druk op een toets." #: lib/scr.c:157 #, fuzzy, c-format msgid "Current AP: %s Type: %s Ext: %s" msgstr "Huidige AP: %s Soort: %s" #: lib/set_community.c:27 msgid "Set community/password" msgstr "Gemeenschap/wachtwoord instellen" #: lib/set_community.c:28 #, fuzzy msgid "Key Access level" msgstr "Toegangsniveau sleutel" #: lib/set_community.c:29 msgid "Community/Password" msgstr "Gemeenschap/Wachtwoord" #: lib/set_community.c:30 #, fuzzy msgid "[U] User " msgstr "[U] Gebruiker" #: lib/set_community.c:31 #, fuzzy msgid "[A] Administrator " msgstr "[A] Beheerder" #: lib/set_community.c:32 #, fuzzy msgid "[M] Manufacturer " msgstr "[M] Maker" #: lib/set_community.c:33 #, fuzzy msgid "" "[key] - set community/password; W - write config to AP; Q - quit to menu" 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" #: lib/stat.c:30 msgid "Wireless Statistics" msgstr "Draadloos statistieken" #: lib/stat.c:98 #, fuzzy msgid "EthRxStat packet error. Press any key." msgstr "EthRxStat pakketfout. Druk op Q om door te gaan." #: lib/stat.c:111 #, fuzzy msgid "EthTxStat packet error. Press any key." msgstr "EthTxStat pakketfout. Druk op Q om door te gaan." #: lib/stat.c:115 msgid "Received:" msgstr "Ontvangen:" #: lib/stat.c:116 #, fuzzy msgid "Transmitted:" msgstr "Verzonden:" #: lib/stat.c:270 #, fuzzy msgid "WirelessStat packet error. Press any key." msgstr "WirelessStat pakketfout. Druk op Q om door te gaan." #: lib/sysinfo.c:29 msgid "System Description: " msgstr "Systeemomschrijving:" #: lib/sysinfo.c:30 msgid "System Info" msgstr "Systeeminfo" #: 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:172 #, fuzzy, c-format msgid "Operational mode: %s" msgstr "[O] Operationele modus: %s" #: lib/sysinfo.c:182 #, fuzzy msgid "Product name: " msgstr "Produktnaam:" #: lib/sysinfo.c:186 #, fuzzy, c-format msgid "Product type: %u" msgstr "Produktsoort: %lu" #: lib/sysinfo.c:189 #, fuzzy msgid "OEM name: " msgstr "OEM naam:" #: lib/sysinfo.c:196 #, fuzzy, c-format msgid "Hardware revision: %u" msgstr "Hardware revisie: %lu" #: lib/sysinfo.c:204 #, fuzzy, c-format msgid "Info structure version: %u" msgstr "StructVersie: %lu" #: 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:224 #, fuzzy, c-format msgid "Uptime: %u days, %02u:%02u:%02u hours:mins:secs" msgstr "Uptime: %u:%02u:%02u.%02u" #: lib/sysinfo.c:312 msgid "FHSS 2.4 GHz" msgstr "FHSS 2.4 GHz" #: lib/sysinfo.c:312 msgid "DSSS 2.4 GHz" msgstr "DSSS 2.4 GHz" #: lib/sysinfo.c:312 msgid "IR Baseband" msgstr "IR Baseband" #: lib/sysinfo.c:313 msgid "Commercial range 0..40 C" msgstr "Commercieel bereik 0..40 C" #: lib/sysinfo.c:314 msgid "Industrial range -30..70 C" msgstr "Industrieel bereik -30..70 C" #: lib/sysinfo.c:317 msgid "manual" msgstr "handmatig" #: lib/sysinfo.c:317 msgid "notsupported" msgstr "niet ondersteund" #: lib/sysinfo.c:317 msgid "dynamic" msgstr "dynamisch" #: lib/sysinfo.c:373 msgid "Manufacturer:" msgstr "Maker:" #: lib/sysinfo.c:378 msgid "Manufacturer ID:" msgstr "Maker ID:" #: lib/sysinfo.c:389 msgid "Product Name:" msgstr "Produktnaam:" #: lib/sysinfo.c:395 msgid "Product ID:" msgstr "Produkt ID:" #: lib/sysinfo.c:401 msgid "Product Version:" msgstr "Produktversie:" #: lib/sysinfo.c:407 #, c-format msgid "PHYType: %s" msgstr "PHY soort: %s" #: lib/sysinfo.c:410 #, c-format msgid "Temperature: %s" msgstr "Temperatuur: %s" #: lib/sysinfo.c:418 #, fuzzy, c-format msgid "Regulatory Domain: %s" msgstr "Reguleringsdomein: %s" #: lib/sysinfo.c:419 msgid "FCC (USA)" msgstr "FCC (USA)" #: lib/sysinfo.c:420 msgid "DOC (Canada)" msgstr "DOC (Canada)" #: lib/sysinfo.c:421 msgid "ETSI (Europe)" msgstr "ETSI (Europa)" #: lib/sysinfo.c:422 msgid "Spain" msgstr "Spanje" #: lib/sysinfo.c:423 msgid "France" msgstr "Frankrijk" #: lib/sysinfo.c:424 msgid "MKK (Japan)" msgstr "MKK (Japan)" #: lib/sysinfo.c:427 #, c-format msgid "Transmit Power: %u mW" msgstr "Zendvermogen: %u mW" #: lib/sysinfo.c:457 #, fuzzy, c-format msgid "WEP implemented: %s" msgstr "WEP geïmplementeerd: %s" #: lib/sysinfo.c:460 #, c-format msgid "Diversity: %s" msgstr "Diversiteit: %s" #: lib/sysinfo.c:488 #, c-format msgid "Uptime: %u:%02u:%02u.%02u" msgstr "Uptime: %u:%02u:%02u.%02u" #: lib/sysinfo.c:508 #, c-format msgid "IP Address: %s" msgstr "IP-adres: %s" #: lib/test.c:26 #, fuzzy msgid "[T] Test mode: " msgstr "[T] Testmodus: %s" #: lib/test.c:27 #, fuzzy msgid "[A] Antenna: " msgstr "[A] Antenne: %s" #: lib/test.c:28 #, fuzzy msgid "[S] Signal level: " msgstr "[S] Signaalniveau: %03u" #: lib/test.c:29 #, fuzzy msgid "[R] Rate: " msgstr "[R] Snelheid: %.1f Mbit/s" #: lib/test.c:30 #, fuzzy msgid "[F] TxFiler: " msgstr "[F] TxFiler: %s" #: lib/test.c:31 #, fuzzy msgid "[O] Command: " msgstr "[O] Opdracht: %s" #: lib/test.c:32 #, fuzzy msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu" msgstr "" "T - Testmodus Aan/Uit; CASRFO - opties instellen; Q - afsluiten naar menu" #: lib/test.c:70 msgid "Left" msgstr "Links" #: lib/test.c:70 msgid "Right" msgstr "Rechts" #: 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: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:95 #, fuzzy msgid "configuration." msgstr "Configuratie uploaden" #: lib/test.c:107 msgid "Options:" msgstr "Opties:" #: lib/test.c:133 msgid "Statistics:" msgstr "Statistieken:" #: lib/test.c:134 msgid "Success Frames: 0 Failed Frames: 0" msgstr "Succesvolle frames: 0 Mislukte frames: 0" #: lib/test.c:195 #, c-format msgid "Success Frames: %lu Failed Frames: %lu" msgstr "Succesvolle frames: %lu Mislukte frames: %lu" #: lib/wep.c:28 msgid "Privacy Settings" msgstr "Privacy instellingen" #: lib/wep.c:29 #, fuzzy msgid "[E] Standard encryption mechanism: " msgstr "[E] Standaard coderingsmechanisme: %s" #: lib/wep.c:30 #, fuzzy msgid "[A] Allow unencrypted: " msgstr "[A] Ongecodeerd toestaan: %s" #: lib/wep.c:31 #, fuzzy msgid "[K] Default WEP key: " msgstr "[K] Standaard WEP-sleutel: %d" #: lib/wep.c:32 #, fuzzy msgid "[P] Public key: " msgstr "[P] Openbare sleutel: %s" #: lib/wep.c:85 msgid "EK1234 - set; W - write conf; Q - quit to menu" msgstr "EK1234 - instellen; W - conf schrijven; Q - afsluiten naar menu" #: lib/wep.c:94 lib/wep.c:263 msgid "Key WEP" msgstr "Sleutel WEP" #: lib/wep.c:101 msgid "Hint! Confused by WEP key values? See man ap-config for info..." msgstr "" "Tip! In de war door WEP sleutelwaarden? Zie man ap-config voor meer " "informatie..." #: lib/wep.c:247 msgid "AEPK1234 - set options; W - write conf; Q - quit to menu" msgstr "" "AEPK1234 - opties instellen; W - conf schrijven; Q - afsluiten naar menu" #: lib/wlan.c:27 msgid "[E] ESSID: " msgstr "" #: lib/wlan.c:28 #, fuzzy msgid "[N] AP name: " msgstr "[N] AP naam:" #: lib/wlan.c:30 #, fuzzy msgid "[K] AP contact: " msgstr "[E] AP contact: %s" #: lib/wlan.c:31 #, fuzzy msgid "[L] AP location: " msgstr "[L] AP lokatie: %s" #: lib/wlan.c:33 #, fuzzy msgid "[R] RTS threshold: " msgstr "[R] RTS drempelwaarde: %d" #: lib/wlan.c:34 #, fuzzy msgid "[F] Fragmentation threshold: " msgstr "[F] Fragmentatie drempelwaarde: %d" #: lib/wlan.c:35 msgid "[P] Preambule type: " msgstr "" #: lib/wlan.c:36 #, fuzzy msgid "[A] Auth type: " msgstr "[A] Auth soort: %s" #: lib/wlan.c:37 #, fuzzy msgid "Open system" msgstr "Open systeem" #: lib/wlan.c:38 #, fuzzy msgid "Shared key" msgstr "Gedeelde sleutel" #: lib/wlan.c:39 #, fuzzy msgid "Both types" msgstr "Beide soorten" #: lib/wlan.c:40 #, fuzzy msgid "[U] Auto rate fallback: " msgstr "[U] AutoRateFallBack: %s" #: lib/wlan.c:41 #, fuzzy msgid "[S] Insert ESSID in broadcast packets: " msgstr "[S] ESSID in broadcast pakketjes invoegen: %s" #: lib/wlan.c:42 #, fuzzy msgid "Basic and Supported rates:" msgstr "Basis en ondersteunde snelheden:" #: lib/wlan.c:43 msgid "Key Rate Status" msgstr "Sleutel Snelheid Status" #: lib/wlan.c:45 #, fuzzy msgid "[I] International roaming: " msgstr "[O] Operationele modus: %s" #: 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 "[toets] - optie instellen; W - conf schrijven; Q - afsluiten naar menu" #: lib/wlan.c:125 msgid "Short" msgstr "Kort" #: lib/wlan.c:125 msgid "Long" msgstr "Lang" #: lib/wlan.c:239 msgid "Wireless Settings" msgstr "Draadloos instellingen" #: lib/wlan.c:735 msgid "Antenna Configuration:" msgstr "Antenneconfiguratie:" #: lib/wlan.c:752 msgid "General Options" msgstr "Algemene opties" #: 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-auth.c:32 src/auth.c:28 msgid "AuthorizedMacTableString packet error" msgstr "AuthorizedMacTableString pakketfout" #: 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" "Gebruik:\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 - AP ip-adres\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 gemeenschap - SNMP gemeenschap naam\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 - deze hulp weergeven\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 (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 ireless, thernet, associated tations " "or ink quality (last one will only " msgstr "" "-t type - soort statistieken draadloos, thernet, geassocieerde " "tations of 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: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:56 #, fuzzy, c-format msgid "" "ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n" "\n" msgstr "" "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 ireless, thernet, associated tations " "or ink quality in client mode\n" msgstr "" "-t type - soort statistieken draadloos, thernet, geassocieerde " "tations of 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-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-rrd %s Copyright (c) 2002-2004 Roman Festchook\n" "\n" msgstr "" "ap-mrtg %s Copyright (c) 2002 Roman Festchook\n" "\n" #: src/ap-rrd.c:133 msgid "Invalid IP-address\n" msgstr "Onjuist IP-adres\n" #: src/ap-rrd.c:179 #, c-format msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n" msgstr "" #: 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-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 \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:151 msgid " on " msgstr " aan " #: src/ap-trapd.c:157 msgid "Unable to fork. Exiting." msgstr "fork() mislukt. Afsluiten." #: src/ap-trapd.c:161 msgid "Can't create socket. Exiting." msgstr "Kan socket niet maken. Afsluiten." #: src/ap-trapd.c:167 msgid "Can't bind socket. Exiting." msgstr "Kan socket niet verbinden. Afsluiten." #: 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:185 #, c-format msgid "Unable to process username %s. Error: %m." msgstr "Kan gebruikersnaam %s niet verwerken. Fout: %m." #: 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: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: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.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 "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 "[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: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" #: src/nwn_advanced.c:60 #, c-format msgid "[D] DB Station Timeout: %d" msgstr "[D] DB station time-out: %d" #: src/nwn_advanced.c:62 #, c-format msgid "[A] ACK Window: %d" msgstr "[A] ACK Window: %d" #: src/nwn_advanced.c:65 msgid "Advanced Options" msgstr "Geavanceerde opties" #: src/nwn_advanced.c:66 msgid "DA - options; W - write conf; Q - quit to menu" msgstr "DA - opties; W - conf schrijven; Q - afsluiten naar menu" #: src/nwn_latest.c:30 #, c-format msgid "Reason: %u Station: %02X%02X%02X%02X%02X%02X" msgstr "Reden: %u Station: %02X%02X%02X%02X%02X%02X" #: src/nwn_latest.c:88 msgid "Latest Events" msgstr "Laatste gebeurtenissen" #: src/nwn_latest.c:89 msgid "Disassociate:" msgstr "De-associëren:" #: src/nwn_latest.c:96 msgid "Deauthenticate:" msgstr "De-authentificeren:" #: src/nwn_latest.c:103 #, fuzzy msgid "Authenticate Fail:" msgstr "Authentificatie mislukt:" #: src/nwn_latest.c:109 msgid "Last error:" msgstr "Laatste fout:" #: src/nwn_latest.c:110 msgid "Error:" msgstr "Fout:" #: src/stations.c:82 msgid "Not available (device not in AP mode)." msgstr "" #: src/stations.c:92 msgid " # MAC Parent MAC RSSI LQ Sts MACn IP " msgstr "" #: src/stations.c:136 msgid "AssociatedSTAsInfo packet error" msgstr "AssociatedSTAsInfo pakketfout" #: src/stations.c:189 src/stations.c:363 #, fuzzy msgid "" "Arrows - scroll; S - save to file; Q - return; T - toggle view; Other - " "refresh" msgstr "" "Pijltjes - schuiven; S - opslaan naar bestand; Q - afsluiten naar menu." #: 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: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" #, fuzzy #~ msgid "" #~ "(Y - Yes; N - No (it's safer to answer No, unless you really need this.)" #~ msgstr "" #~ "(J - Ja; N - Nee (het is veiliger om Nee te antwoorden, tenzij u dit echt " #~ "nodig heeft.)" #, fuzzy #~ msgid "Determining AP type. Please wait..." #~ msgstr "Bezig met ontvangen gegevens van AP. Even geduld a.u.b...." #, fuzzy #~ msgid "Regulation domain: %s [%d]" #~ msgstr "Reguleringsdomein: %s" #, fuzzy #~ msgid "(Y - Yes; N - No (it's safer to answer No.)" #~ msgstr "(J - Ja; N - Nee (het is veiliger om Nee te antwoorden.)" #~ msgid "Unable to get data from AP. Press Q to continue." #~ msgstr "Kan geen gegevens opvragen van AP. Druk op Q om door te gaan." #~ msgid "Q - quit to menu." #~ msgstr "Q - afsluiten naar menu." #~ msgid "pipe error. Press any key." #~ msgstr "pijpfout. Druk op een toets." #~ msgid "fork error. Press any key." #~ msgstr "fork() fout. Druk op een toets." #~ msgid "pipe error. Press any key" #~ msgstr "pijpfout. Druk op een toets" #~ msgid "fcntl error. Press any key" #~ msgstr "fcntl() fout. Druk op een toets" #~ msgid "fork error. Press any key" #~ msgstr "fork() fout. Druk op een toets" #, fuzzy #~ msgid "Id MAC address" #~ msgstr "Id MAC adres" #~ msgid "Wireless Access Point Configurator" #~ msgstr "Draadloos Access Point configurator" #~ msgid "Invalid multicast address. Press any key." #~ msgstr "Onjuist multicast adres. Druk op een toets." #~ msgid "Searching please wait..." #~ msgstr "Bezig met zoeken..." #~ msgid "No Access Points found." #~ msgstr "Geen Access Points gevonden." #~ msgid "Output Signal Power Level" #~ msgstr "Vermogen van uitgaande signaal" #~ msgid "SysInfo:" #~ msgstr "Sysinfo:" #~ msgid "RegulationDomain: %s" #~ msgstr "Reguleringsdomein: %s" #~ msgid "Mac Address: %02X%02X%02X%02X%02X%02X" #~ msgstr "Mac adres: %02X%02X%02X%02X%02X%02X" #~ msgid "[T] Test Mode: Off" #~ msgstr "[T] Testmodus: Uit" #~ msgid "on" #~ msgstr "aan" #~ msgid "Transmit Antenna: [O] Left %3s, [P] Right %3s" #~ msgstr "Verzendantenne: [O] Links %3s, [P] Rechts %3s" #~ msgid "Receive Antenna: [U] Left %3s, [I] Right %3s" #~ msgstr "Ontvangantenne: [U] Links %3s, [I] Rechts %3s" #~ msgid "Diversity Select: [T] Left %3s, [Y] Right %3s" #~ msgstr "Diversiteitsselectie: [T] Links %3s, [Y] Rechts %3s" #~ msgid "Write configuration to AP done. Press any key to continue." #~ msgstr "" #~ "Schrijven instellingen naar AP voltooid. Druk op een toets om door te " #~ "gaan." #~ msgid "Using this option may cause lost of current configuration." #~ msgstr "" #~ "Het gebruik van deze optie kan ervoor zorgen dat de huidige configuratie " #~ "verloren gaat." #~ msgid "" #~ "Getting known AP's info need to reboot you AP and may cause lost of " #~ "current configuration." #~ msgstr "" #~ "Om info over bekende APs op te vragen, is het nodig uw AP opnieuw op te " #~ "starten, wat verlies van de huidige configuratie kan opleveren." #~ msgid "CN: Channel; RSSI: Signal Strenght; LQ: Link Quality" #~ msgstr "CN: Kanaal; RSSI: Signaalsterkte; LQ: Verbindingskwaliteit" ap-utils-1.5/po/pl.po000066400000000000000000001721241117246662700145310ustar00rootroot00000000000000# Messages français pour GNU concernant ap-utils. # Copyright © 2002 Free Software Foundation, Inc. # Wojciech Puchar # msgid "" msgstr "" "Project-Id-Version: GNU ap-utils 1.1.1\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 \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8-bit\n" "Report-Msgid-Bugs-To: \n" # src/aps.c:138 #: lib/aps.c:30 msgid "Known Access Points" msgstr "Znane Access pointy" #: 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:133 msgid "up-to-date \"Known APs\" info requires your AP to be" msgstr "" #: 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:139 msgid "Your AP will be reconfigured back to original mode by this" msgstr "" #: 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:145 msgid "cause loss of Access Point's current configuration." msgstr "Zapisuje aktualn± konfiguracje na sta³e" #: 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: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: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:208 msgid "NetworkType" msgstr "Typ sieci" # src/aps.c:176 #: lib/aps.c:284 msgid "Infrastructure" msgstr "Infrastruktura" # src/aps.c:191 #: 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:346 msgid "RSSI: Radio Signal Strength Indicator [%]" msgstr "" #: lib/aps.c:348 lib/aps.c:356 msgid "; LQ: Link Quality [%]" msgstr "" #: lib/aps.c:354 msgid "RSSI: Radio Signal Strength Indicator [dBm]" msgstr "" #: lib/aps.c:362 msgid "RSSI: Radio Signal Strength Indicator [raw]" msgstr "" #: lib/aps.c:364 msgid "; LQ: Link Q. [raw]" msgstr "" # src/aps.c:194 #: lib/aps.c:370 #, fuzzy msgid "" "# con. to AP #; R refresh with reset; T toggle; Q quit; Other = refr. w/o " "reset" 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:372 #, fuzzy msgid "" "# con. to AP #; R initiate AP scan; T toggle view; Q quit; Other = refresh " "view" 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: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: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: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: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: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: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:525 msgid "to normal operation in time ranging up to 1 minute." msgstr "do normalnej pracy po oko³o 1 minucie." #: 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: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:534 msgid "after pressing 'S'." msgstr "po naci¶niêciu klawisza 'S'." # src/ap-config.c:47 src/ap-config.c:59 #: lib/ap_search.c:48 #, fuzzy msgid "Community name: " msgstr "Dostêp" #: lib/ap_search.c:49 msgid " NUM IP ADDRESS MIB TYPE FW TYPE (VERSION) AP NAME" msgstr "" #: 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: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: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:138 msgid "Scanning via network interface:" msgstr "Szukam poprzez interfejs sieciowy: " #: lib/ap_search.c:139 #, c-format msgid " Index: %i" msgstr " Indeks: %i" # lib/ap-utils.h:78 #: lib/ap_search.c:141 #, c-format msgid " Name: %s" msgstr " Nazwa: %s" #: lib/ap_search.c:143 #, c-format msgid " IP: %s" msgstr "" #: 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:128 #: lib/ap_search.c:378 msgid "Access Points Search" msgstr "Szukanie Access-pointów" # src/ap-mrtg.c:178 #: lib/ap_search.c:396 msgid "realloc() error." msgstr "B³±d otwarcia gniazdka" #: lib/ap_search.c:408 msgid "Network interface discovery error." msgstr "B³±d interfejsu sieciowego." # src/stat.c:41 #: 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: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: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:493 msgid "# - connect to AP; Q - quit" msgstr "# - pod³±cz do AP; Q - wyjd¼" # src/sysinfo.c:402 #: lib/ap-utils.h:82 msgid "MAC address: " msgstr "Adres MAC: " # 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:85 msgid "[C] Frequency channel: " msgstr "[C] Czêstotliwo¶æ fali: " # src/stat.c:123 #: lib/ap-utils.h:87 msgid "Receive antenna:" msgstr "Odebrane:" # src/test.c:70 #: lib/ap-utils.h:88 msgid "[U] Left" msgstr "[U] Lewa" # src/test.c:70 #: lib/ap-utils.h:89 msgid "[I] Right" msgstr "[I] Prawa" # src/stat.c:124 #: lib/ap-utils.h:90 msgid "Transmit antenna:" msgstr "Antena nadawcza:" # src/test.c:70 #: lib/ap-utils.h:91 msgid "[O] Left" msgstr "[O] Lewa" # src/test.c:70 #: lib/ap-utils.h:92 msgid "[P] Right" msgstr "[P] Prawa" # src/sysinfo.c:358 #: lib/ap-utils.h:93 msgid "Diversity select:" msgstr "Naprzemienno¶æ:" # src/test.c:70 #: lib/ap-utils.h:94 msgid "[T] Left" msgstr "[T] Lewa" # src/test.c:70 #: lib/ap-utils.h:95 msgid "[Y] Right" msgstr "[Y] Prawa" #: lib/ap-utils.h:97 msgid "Yes" msgstr "Tak" #: lib/ap-utils.h:98 msgid "No" msgstr "Nie" #: lib/ap-utils.h:100 msgid "On" msgstr "w³±" # lib/ap-utils.h:55 #: lib/ap-utils.h:101 msgid "Off" msgstr "wy³" # lib/ap-utils.h:56 #: lib/ap-utils.h:103 msgid "Basic" msgstr "Podstawowy" # lib/ap-utils.h:58 #: lib/ap-utils.h:105 msgid "Press any key to continue." msgstr "Wci¶nij dowolny klawisz aby kontynuowaæ." #: 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: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: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:110 #, fuzzy 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:111 msgid "Writing data to AP. Please wait..." msgstr "Zapisuje dane do AP. Proszê czekaæ..." # lib/ap-utils.h:86 #: 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:113 #, fuzzy msgid "select() function error. Press any key." msgstr "B³±d fcntl(). 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: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:119 msgid "Back to main menu" msgstr "Powrót do menu g³ównego" # lib/ap-utils.h:103 #: lib/ap-utils.h:120 msgid "Exit program" msgstr "Wyj¶cie z programu" # lib/ap-utils.h:104 #: 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:123 msgid "Short info about program" msgstr "O programie" # lib/ap-utils.h:106 #: 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: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:126 msgid "Set encryption; edit WEP keys" msgstr "Ustawianie szyfracji, zmiana kluczy" # lib/ap-utils.h:109 #: 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: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: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:130 msgid "Get wireless port statistics" msgstr "Statystyki portu radiowego" # lib/ap-utils.h:113 #: 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:133 msgid "Get info and statistics from AP" msgstr "Pobieram informacje i statystyki z AP" # lib/ap-utils.h:115 #: 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:136 msgid "Associated stations" msgstr "Pod³±czone stacje" #: lib/ap-utils.h:137 msgid "AP Client link state" msgstr "" #: lib/ap-utils.h:139 msgid "Polling: on" msgstr "" #: lib/ap-utils.h:140 msgid "Polling: off" msgstr "" # src/cmd.c:37 #: lib/cmd.c:40 msgid "Restore factory default configuration" msgstr "Przywróæ ustawienia fabryczne." # src/cmd.c:40 #: lib/cmd.c:43 #, fuzzy msgid "After restoring factory defaults your current configuration" msgstr "Po odtworzeniu ustawieñ fabrycznych CA£O¦Æ ustawien zostanie stracona." #: lib/cmd.c:44 msgid "will be lost." msgstr "" # src/cmd.c:71 #: lib/cmd.c:63 msgid "Factory default settings loaded. Press any key to continue." msgstr "Za³adowano ustawienia producenta. Wci¶nij dowolny klawisz." # src/cmd.c:81 #: lib/cmd.c:71 msgid "Reset Access Point" msgstr "Zresetuj Access pointa" # src/cmd.c:84 #: lib/cmd.c:74 msgid "By reset you'll lose all non-uploaded configuration." msgstr "Przy resecie stracisz wszystkie nie za³adowane informacje." # src/cmd.c:106 #: lib/cmd.c:85 msgid "Access Point reset. Press any key to continue." msgstr "Access point zresetowany. Wci¶nij dowolny klawisz." # src/cmd.c:134 #: lib/cmd.c:117 msgid "Upload configuration" msgstr "Za³aduj konfiguracje" # src/cmd.c:137 #: lib/cmd.c:119 #, fuzzy msgid "You may need to upload the configuration only if you've" msgstr "Musisz za³adowaæ konfiguracje tylko je¶li co¶ zmieni³e¶" #: lib/cmd.c:121 #, fuzzy msgid "changed some option values before. Using this option may" msgstr "jak±¶ opcjê. U¿ywanie tej opcji mo¿e byæ przyczyn± stracenia" # src/ap-config.c:78 #: lib/cmd.c:123 #, fuzzy msgid "cause loss of your current configuration." msgstr "twojej obecnej koniguracji." # src/cmd.c:163 #: lib/cmd.c:135 msgid "Configuration uploaded. Press any key to continue." msgstr "Konfiguracja za³adowana. Wci¶nij dowolny klawisz." # lib/common.c:120 #: lib/common.c:32 msgid "Access Point IP-address: " msgstr "Adres IP Access Pointa: " # lib/common.c:121 #: lib/common.c:33 msgid "Password (community): " msgstr "Has³o (community): " #: lib/common.c:34 #, fuzzy msgid "Autodetect AP MIB properties? " msgstr "Wykryæ typ AP? " # lib/common.c:122 #: lib/common.c:35 #, fuzzy msgid "AP MIB type: " msgstr "Typ AP: " #: 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:37 #, fuzzy msgid "Do you want to use AP's name as its label? " msgstr "Czesz kontynuowaæ?" # src/bridge.c:86 #: lib/common.c:38 #, fuzzy msgid "Access Point label: " msgstr "Access Point" # lib/common.c:159 #: 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:106 #, c-format msgid "From %s" msgstr "Od %s" # lib/common.c:69 #: lib/common.c:108 #, c-format msgid "Version %s" msgstr "Wersja %s" # lib/common.c:72 #: lib/common.c:111 msgid "Written by Roman Festchook roma@polesye.net" msgstr "Napisa³ Roman Festchook (roma@polesye.net)" #: lib/common.c:113 msgid "and Jan Rafaj jr-aputils@cedric.unob.cz" msgstr "" # lib/common.c:74 #: lib/common.c:115 #, fuzzy msgid "Copyright (c) 2001-2005" msgstr "Prawa autorskie - Roman Festchook 2001-2004" #: lib/common.c:117 msgid "Roman Festchook and Jan Rafaj" msgstr "" # lib/common.c:77 #: 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:122 msgid "of the GNU General Public License version 2." msgstr "Publicznej Licencji GNU w wersji 2." # lib/common.c:81 #: 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:165 msgid "Connect options" msgstr "Opcje pod³±czenia" # lib/common.c:124 #: 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: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:249 msgid "This label will be stored on HDD (independently on AP name!)." msgstr "" # lib/ap-utils.h:89 #: 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: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/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:200 msgid "Choose an AP to connect to" msgstr "Wybierz AP do którego chcesz siê pod³±czyæ" #: 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:257 msgid "Connect to AP num:" msgstr "Nr AP do pod³. :" # lib/ap-utils.h:121 #: lib/file.c:288 msgid "Delete num:" msgstr "Skasuj pozycje:" # lib/ap-utils.h:86 #: 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:444 msgid "Stations file succesfully written. Press any key." msgstr "" # src/bridge.c:31 #: 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: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: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:6061 msgid "Unknown or Private" msgstr "Nieznany lub Prywatny" # src/radio.c:93 #: lib/radio.c:26 msgid "" "[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu" msgstr "Kl. - moc sygna³y; UIOP - antena; W - Zapis.; Q - Koniec" # src/test.c:28 #: lib/radio.c:28 msgid "Antenna:" msgstr "Antena:" # src/test.c:70 #: lib/radio.c:29 msgid "[L] Left:" msgstr "[L] Lewa" # src/test.c:70 #: lib/radio.c:30 msgid "[R] Right:" msgstr "[R] Prawa:" # src/radio.c:100 #: lib/radio.c:120 msgid "Radio Configuration" msgstr "Konfiguracja radia" #: lib/radio.c:121 msgid "Output RF signal power level (CR31 register values)" msgstr "" # src/radio.c:103 #: lib/radio.c:123 msgid "Key Channel Level" msgstr "Kl. kana³ poziom" # src/radio.c:225 #: lib/radio.c:279 msgid "" "You can't disable both antennas; unable to save antenna-config. Press any " "key." msgstr "Nie wy³±cza siê wszystkich anten!!! Wci¶nij dowolny klawisz" # lib/scr.c:112 #: lib/scr.c:157 #, fuzzy, c-format msgid "Current AP: %s Type: %s Ext: %s" msgstr "Aktualny AP: %s Typ: %s" # lib/ap-utils.h:95 #: lib/set_community.c:27 msgid "Set community/password" msgstr "Ustawianie hase³" # lib/ap-utils.h:96 #: lib/set_community.c:28 msgid "Key Access level" msgstr "Kl. Prawa dostêpu" # lib/ap-utils.h:97 #: lib/set_community.c:29 msgid "Community/Password" msgstr "Has³o" # lib/ap-utils.h:98 #: lib/set_community.c:30 #, fuzzy msgid "[U] User " msgstr "[U] U¿ytkownik" # lib/ap-utils.h:99 #: lib/set_community.c:31 #, fuzzy msgid "[A] Administrator " msgstr "[A] Administrator" # lib/set_community.c:64 #: lib/set_community.c:32 #, fuzzy msgid "[M] Manufacturer " msgstr "[M] Producent" # lib/ap-utils.h:100 #: lib/set_community.c:33 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" msgstr "Statystyki ethernetu" # src/stat.c:246 src/stat.c:422 #: lib/stat.c:30 msgid "Wireless Statistics" msgstr "Statystyki radiowe" # src/stat.c:108 #: lib/stat.c:98 #, fuzzy msgid "EthRxStat packet error. Press any key." msgstr "B³êdny pakiet EthRxStat. Wci¶nij Q aby kontynuowaæ." # src/stat.c:120 #: lib/stat.c:111 #, fuzzy msgid "EthTxStat packet error. Press any key." msgstr "B³êdny pakiet EthTxStat. Wci¶nij Q aby kontynuowaæ." # src/stat.c:123 #: lib/stat.c:115 msgid "Received:" msgstr "Odebrane:" # src/stat.c:124 #: lib/stat.c:116 msgid "Transmitted:" msgstr "Wys³ane:" # src/stat.c:277 #: lib/stat.c:270 #, fuzzy msgid "WirelessStat packet error. Press any key." msgstr "B³êdny pakiet WirelessStat. Wci¶nij dowolny klawisz." # src/sysinfo.c:42 #: lib/sysinfo.c:29 msgid "System Description: " msgstr "Opis systemu: " # src/sysinfo.c:83 src/sysinfo.c:257 #: lib/sysinfo.c:30 msgid "System Info" msgstr "Informacja o systemie" # 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:182 #, fuzzy msgid "Product name: " msgstr "Produkt:" # src/sysinfo.c:108 #: lib/sysinfo.c:186 #, c-format msgid "Product type: %u" msgstr "Typ produktu: %u" # src/sysinfo.c:116 #: lib/sysinfo.c:189 #, fuzzy msgid "OEM name: " msgstr "Nazwa OEM:" # src/sysinfo.c:111 #: lib/sysinfo.c:196 #, c-format msgid "Hardware revision: %u" msgstr "Wersja sprzêtu: %u" # src/sysinfo.c:134 #: 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: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: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:312 msgid "FHSS 2.4 GHz" msgstr "FHSS 2.4 GHz" # src/sysinfo.c:213 #: lib/sysinfo.c:312 msgid "DSSS 2.4 GHz" msgstr "DSSS 2.4 GHz" # src/sysinfo.c:213 #: lib/sysinfo.c:312 msgid "IR Baseband" msgstr "IR Baseband" # src/sysinfo.c:214 #: lib/sysinfo.c:313 msgid "Commercial range 0..40 C" msgstr "Temp. standardowe: 0..40 C" # src/sysinfo.c:215 #: lib/sysinfo.c:314 msgid "Industrial range -30..70 C" msgstr "Temp przemys³owe: -30..70 C" # src/sysinfo.c:218 #: lib/sysinfo.c:317 msgid "manual" msgstr "rêczne" # src/sysinfo.c:218 #: lib/sysinfo.c:317 msgid "notsupported" msgstr "nie obs³ugiwane" # src/sysinfo.c:218 #: lib/sysinfo.c:317 msgid "dynamic" msgstr "dynamiczne" # src/sysinfo.c:267 #: lib/sysinfo.c:373 msgid "Manufacturer:" msgstr "Producent:" # src/sysinfo.c:273 #: lib/sysinfo.c:378 msgid "Manufacturer ID:" msgstr "ID producenta:" # src/sysinfo.c:103 src/sysinfo.c:285 #: lib/sysinfo.c:389 msgid "Product Name:" msgstr "Nazwa produktu:" # src/sysinfo.c:292 #: lib/sysinfo.c:395 msgid "Product ID:" msgstr "ID produktu:" # src/sysinfo.c:298 #: lib/sysinfo.c:401 msgid "Product Version:" msgstr "Wersja produktu:" # src/sysinfo.c:306 #: lib/sysinfo.c:407 #, c-format msgid "PHYType: %s" msgstr "Typ PHY: %s" # src/sysinfo.c:309 #: lib/sysinfo.c:410 #, c-format msgid "Temperature: %s" msgstr "Temperatura: %s" # src/sysinfo.c:316 #: 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:419 msgid "FCC (USA)" msgstr "FCC (USA)" # src/sysinfo.c:127 src/sysinfo.c:318 #: lib/sysinfo.c:420 msgid "DOC (Canada)" msgstr "DOC (Kanada)" # src/sysinfo.c:128 src/sysinfo.c:319 #: lib/sysinfo.c:421 msgid "ETSI (Europe)" msgstr "ETSI (Europa)" # src/sysinfo.c:129 src/sysinfo.c:320 #: lib/sysinfo.c:422 msgid "Spain" msgstr "Hiszpania" # src/sysinfo.c:130 src/sysinfo.c:321 #: lib/sysinfo.c:423 msgid "France" msgstr "Francja" # src/sysinfo.c:131 src/sysinfo.c:322 #: lib/sysinfo.c:424 msgid "MKK (Japan)" msgstr "MKK (Japonia)" # src/sysinfo.c:325 #: lib/sysinfo.c:427 #, c-format msgid "Transmit Power: %u mW" msgstr "Moc wyj¶ciowa: %u mW" # src/sysinfo.c:355 #: lib/sysinfo.c:457 #, fuzzy, c-format msgid "WEP implemented: %s" msgstr "Obs³uga WEP: %s" # src/sysinfo.c:358 #: lib/sysinfo.c:460 #, c-format msgid "Diversity: %s" msgstr "Naprzemienno¶æ: %s" # src/sysinfo.c:386 #: 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:508 #, c-format msgid "IP Address: %s" msgstr "Adres IP: %s" # src/test.c:32 #: lib/test.c:26 msgid "[T] Test mode: " msgstr "[T] Tryb testowy: " # src/test.c:28 #: lib/test.c:27 msgid "[A] Antenna: " msgstr "[A] Antena: " # src/test.c:117 #: lib/test.c:28 msgid "[S] Signal level: " msgstr "[S] Poziom sygna³u: " # src/test.c:29 #: lib/test.c:29 msgid "[R] Rate: " msgstr "[R] Prêdko¶æ: " # src/test.c:31 #: lib/test.c:30 msgid "[F] TxFiler: " msgstr "[F] TxFiler: " # src/test.c:30 #: lib/test.c:31 msgid "[O] Command: " msgstr "[O] Komenda: " # src/test.c:33 #: lib/test.c:32 msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu" msgstr "T - Test W³/Wy³; CASRFO - ustawianie; Q - koniecmenu" # src/test.c:70 #: lib/test.c:70 msgid "Left" msgstr "Lewa" # src/test.c:70 #: lib/test.c:70 msgid "Right" msgstr "Prawa" #: lib/test.c:79 msgid "Devices with ATMEL12350 MIB not yet supported." msgstr "" # src/test.c:78 #: lib/test.c:91 msgid "Test mode" msgstr "Tryb testowy" # src/test.c:81 #: 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:95 msgid "configuration." msgstr "konfiguracji." # src/test.c:106 #: lib/test.c:107 msgid "Options:" msgstr "Opcje:" # src/test.c:132 #: lib/test.c:133 msgid "Statistics:" msgstr "Statystyki:" # src/test.c:133 #: 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:195 #, c-format msgid "Success Frames: %lu Failed Frames: %lu" msgstr "Ramki OK: %lu Ramki z³e: %lu" # src/wep.c:75 src/wep.c:236 #: lib/wep.c:28 msgid "Privacy Settings" msgstr "Ustawienia szyfracji" # lib/ap-utils.h:62 #: lib/wep.c:29 msgid "[E] Standard encryption mechanism: " msgstr "[E] Tryb szyfrowania: " # src/wep.c:29 #: lib/wep.c:30 msgid "[A] Allow unencrypted: " msgstr "[A] Dopu¶æ bez szyfracji: " # src/wep.c:31 #: lib/wep.c:31 msgid "[K] Default WEP key: " msgstr "[K] U¿ywany klucz nr: " # src/wep.c:30 #: lib/wep.c:32 msgid "[P] Public key: " msgstr "[P] Klucz publiczny: " # src/wep.c:73 #: lib/wep.c:85 msgid "EK1234 - set; W - write conf; Q - quit to menu" msgstr "EK1234 - ustaw; W - zapisz; Q - wyj¶cie" # src/wep.c:82 src/wep.c:250 #: lib/wep.c:94 lib/wep.c:263 msgid "Key WEP" msgstr "Klucz WEP" #: lib/wep.c:101 msgid "Hint! Confused by WEP key values? See man ap-config for info..." msgstr "Podpowied¼! Masz do¶æ opcji WEP? U¿yj komendy man ap-config ..." # src/wep.c:234 #: lib/wep.c:247 msgid "AEPK1234 - set options; W - write conf; Q - quit to menu" msgstr "AEPK1234 - ustaw opcje; W - Zapis; Q - Wyj¶cie" #: lib/wlan.c:27 msgid "[E] ESSID: " msgstr "" # lib/ap-utils.h:78 #: lib/wlan.c:28 msgid "[N] AP name: " msgstr "[N] Nazwa AP: " # src/wlan.c:579 #: lib/wlan.c:30 msgid "[K] AP contact: " msgstr "[K] Osoba kontaktowa: " # src/wlan.c:577 #: lib/wlan.c:31 msgid "[L] AP location: " msgstr "[L] Lokalizacja: " # lib/ap-utils.h:71 #: lib/wlan.c:33 msgid "[R] RTS threshold: " msgstr "" # lib/ap-utils.h:72 #: lib/wlan.c:34 msgid "[F] Fragmentation threshold: " msgstr "" # src/wlan.c:33 #: lib/wlan.c:35 msgid "[P] Preambule type: " msgstr "[P] Preambu³a: " # lib/ap-utils.h:69 #: lib/wlan.c:36 msgid "[A] Auth type: " msgstr "[A] Tryb autoryzacji: " # lib/ap-utils.h:64 #: lib/wlan.c:37 msgid "Open system" msgstr "Bez kluczy" # lib/ap-utils.h:65 #: lib/wlan.c:38 msgid "Shared key" msgstr "Wspólny klucz" # lib/ap-utils.h:66 #: lib/wlan.c:39 msgid "Both types" msgstr "Oba" # src/wlan.c:32 #: lib/wlan.c:40 msgid "[U] Auto rate fallback: " msgstr "[U] Auto. ustawianie prêdko¶ci: " # src/wlan.c:31 #: lib/wlan.c:41 msgid "[S] Insert ESSID in broadcast packets: " msgstr "[S] Wysy³aæ ESSID w pakietach rozg³oszeniowych (broadcast): " # lib/ap-utils.h:74 #: lib/wlan.c:42 msgid "Basic and Supported rates:" msgstr "Podstawowe i obs³ugiwane prêdko¶ci:" # lib/ap-utils.h:75 #: lib/wlan.c:43 msgid "Key Rate Status" msgstr "Klu Prêd Stan" # src/bridge.c:35 #: 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 "" # src/wlan.c:185 #: lib/wlan.c:49 msgid "[key] - set option; W - write conf; Q - quit to menu" msgstr "[kl] - ustaw opcje; W - zapis; Q - wyj¶cie do menu" # src/wlan.c:100 #: lib/wlan.c:125 msgid "Short" msgstr "Krótka" # src/wlan.c:100 #: lib/wlan.c:125 msgid "Long" msgstr "D³uga" # src/wlan.c:104 #: lib/wlan.c:239 msgid "Wireless Settings" msgstr "Parametry radia" # src/wlan.c:584 #: lib/wlan.c:735 msgid "Antenna Configuration:" msgstr "Konfiguracja anten:" # src/wlan.c:596 #: lib/wlan.c:752 msgid "General Options" msgstr "Opcje ogólne" # src/wlan.c:598 #: 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:56 msgid "General" msgstr "Ogólne" # src/ap-config.c:55 #: src/ap-config.c:56 msgid "Set general options" msgstr "Opcje ogólne" # src/ap-config.c:56 #: src/ap-config.c:57 msgid "Advanced" msgstr "Zaawansowane" # src/ap-config.c:56 #: 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: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:125 msgid "Latest" msgstr "Ostatnie" # src/ap-config.c:123 #: src/ap-config.c:125 msgid "Get info about latest events" msgstr "Pobiera info o ostatnich zdarzeniach" # 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" 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: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 ireless, thernet, associated tations " "or ink quality (last one will only " msgstr "" "-t type typ statystyk radio, thernet, tacje lub 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 ireless, thernet, associated tations " "or ink quality in client mode\n" msgstr "" "-t type typ statystyk radio, thernet, tacje lub 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-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 \n" msgstr "" #: src/ap-tftp.c:379 msgid "Error: invalid IP address format given.\n" msgstr "" # src/ap-mrtg.c:142 #: src/ap-tftp.c:405 #, fuzzy msgid "Error: invalid argument combination.\n" msgstr "B³êdny adres IP\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 #: 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:151 msgid " on " msgstr " w³ " # src/ap-trapd.c:157 #: 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:161 msgid "Can't create socket. Exiting." msgstr "Nie moge utworzyæ gniazda. Wychodzê." # src/ap-trapd.c:167 #: 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: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: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: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: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: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.c:35 #, fuzzy 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: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:129 msgid "Both" msgstr "Oba" # src/nwn_advanced.c:64 #: src/nwn_advanced.c:60 #, c-format msgid "[D] DB Station Timeout: %d" msgstr "[D] Czas bezaktywno¶ci stacji DB: %d" # src/nwn_advanced.c:66 #: src/nwn_advanced.c:62 #, c-format msgid "[A] ACK Window: %d" msgstr "[A] Okno potwierdzenia (ACK): %d" # src/nwn_advanced.c:69 #: src/nwn_advanced.c:65 msgid "Advanced Options" msgstr "Opcje zaawansowane" # src/nwn_advanced.c:70 #: src/nwn_advanced.c:66 msgid "DA - options; W - write conf; Q - quit to menu" msgstr "DA - opcje; W - zapis; Q - powrót" # src/nwn_latest.c:31 #: src/nwn_latest.c:30 #, c-format msgid "Reason: %u Station: %02X%02X%02X%02X%02X%02X" msgstr "Przyczyna: %u Stacja: %02X%02X%02X%02X%02X%02X" # src/nwn_latest.c:89 #: src/nwn_latest.c:88 msgid "Latest Events" msgstr "Ostatnie zdarzenia" # src/nwn_latest.c:90 #: src/nwn_latest.c:89 msgid "Disassociate:" msgstr "Oddziel:" # src/nwn_latest.c:97 #: src/nwn_latest.c:96 msgid "Deauthenticate:" msgstr "Usuñ autoryzacjê:" # src/nwn_latest.c:104 #: src/nwn_latest.c:103 msgid "Authenticate Fail:" msgstr "B³±d autoryzacji:" # src/nwn_latest.c:110 #: src/nwn_latest.c:109 msgid "Last error:" msgstr "Ostatni b³±d:" # src/nwn_latest.c:111 #: src/nwn_latest.c:110 msgid "Error:" msgstr "B³±d:" #: src/stations.c:82 msgid "Not available (device not in AP mode)." msgstr "" #: src/stations.c:92 msgid " # MAC Parent MAC RSSI LQ Sts 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:189 src/stations.c:363 #, fuzzy msgid "" "Arrows - scroll; S - save to file; Q - return; T - toggle view; Other - " "refresh" msgstr "Strza³ki - przewijanie; S - zapis do zbioru; Q - powrót." # src/stations.c:132 src/stations.c:284 #: 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: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 "" #~ msgstr "" #~ 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" # src/cmd.c:24 #~ msgid "" #~ "(Y - Yes; N - No (it's safer to answer No, unless you really need this.)" #~ msgstr "(Y - Tak; N - Nie (lepiej nie)" # lib/ap-utils.h:88 #~ msgid "Determining AP type. Please wait..." #~ msgstr "Pobieram dane z AP. Proszê czekaæ..." # src/sysinfo.c:316 #~ msgid "Regulation domain: %s [%d]" #~ msgstr "Regulacje: %s [%d]" # src/test.c:84 #~ msgid "(Y - Yes; N - No (it's safer to answer No.)" #~ msgstr "(Y - Tak; N - Nie (bezpieczny wybór)" # src/stat.c:37 #~ msgid "Unable to get data from AP. Press Q to continue." #~ msgstr "Nie moge pobraæ danych z AP. Wci¶nij Q aby kontynuowaæ." # src/stat.c:38 src/stat.c:423 #~ msgid "Q - quit to menu." #~ msgstr "Q - powrót do menu." # src/stat.c:39 #~ msgid "pipe error. Press any key." #~ msgstr "B³±d 'pipe'. Wci¶nij dowolny klawisz." # src/stat.c:41 #~ msgid "fork error. Press any key." #~ msgstr "B³±d tworzenia procesu (fork). Wci¶nij dowolny klawisz." # src/stat.c:414 #~ msgid "pipe error. Press any key" #~ msgstr "B³±d 'pipe'. Wci¶nij dowolny klawisz." # src/stat.c:419 #~ msgid "fcntl error. Press any key" #~ msgstr "B³±d fcntl(). Wci¶nij dowolny klawisz." # src/stat.c:428 #~ msgid "fork error. Press any key" #~ msgstr "B³±d tworzenia procesu (fork). Wci¶nij dowolny klawisz." # src/stations.c:84 #~ msgid "Id MAC address" #~ msgstr "Id Adres fizyczny" # lib/common.c:66 #~ msgid "Wireless Access Point Configurator" #~ msgstr "Program do konfiguracji Access-pointów radiowych" # lib/ap_search.c:95 #~ msgid "Invalid multicast address. Press any key." #~ msgstr "B³êdny adres multicast. Wci¶nij dowolny klawisz." # lib/ap_search.c:129 #~ msgid "Searching please wait..." #~ msgstr "Proszê czekaæ - wyszukiwanie..." # lib/ap_search.c:194 #~ msgid "No Access Points found." #~ msgstr "Nie znaleziono ¿adnych Access-pointów." # src/radio.c:101 #~ msgid "Output Signal Power Level" #~ msgstr "Moc sygna³u wyj¶ciowego" # src/sysinfo.c:85 #~ msgid "SysInfo:" #~ msgstr "SysInfo:" # src/sysinfo.c:125 #~ msgid "RegulationDomain: %s" #~ msgstr "Regulacje dot. kana³ów: %s" # lib/ap-utils.h:60 #~ msgid "Mac Address: %02X%02X%02X%02X%02X%02X" #~ msgstr "Adres fizyczny: %02X%02X%02X%02X%02X%02X" # src/test.c:104 #~ msgid "[T] Test Mode: Off" #~ msgstr "[T] Test: Off" # lib/ap-utils.h:82 #~ msgid "Transmit Antenna: [O] Left %3s, [P] Right %3s" #~ msgstr "Antena nadawcza: [O] Lewa %3s, [P] Prawa %3s" # lib/ap-utils.h:83 #~ msgid "Receive Antenna: [U] Left %3s, [I] Right %3s" #~ msgstr "Antena odbiorcza: [U] Lewa %3s, [I] Prawa %3s" # lib/ap-utils.h:84 #~ msgid "Diversity Select: [T] Left %3s, [Y] Right %3s" #~ msgstr "Mocniejszy sygna³ na: [T] Lewej %3s, [Y] Prawej %3s" # lib/ap-utils.h:54 #~ msgid "on" #~ msgstr "w³" # lib/ap-utils.h:90 #~ msgid "Write configuration to AP done. Press any key to continue." #~ msgstr "Konfiguracja zapisana. Wci¶nij dowolny klawisz." # src/cmd.c:140 #~ msgid "Using this option may cause lost of current configuration." #~ msgstr "U¿ycie tego mo¿e spowodowaæ strate aktualnej konfiguracji." # src/aps.c:90 #~ msgid "" #~ "Getting known AP's info need to reboot you AP and may cause lost of " #~ "current configuration." #~ msgstr "" #~ "Pobranie informacji o znanych AP mo¿e spowodowaæ strate aktualnej " #~ "konfiguracji." # src/aps.c:189 #~ msgid "CN: Channel; RSSI: Signal Strenght; LQ: Link Quality" #~ msgstr "CN: Kana³; RSSI: Moc sygna³u; LQ: Jako¶æ ³±cza" #~ msgid "Found AP at %s" #~ msgstr "Znaleziono AP pod %s" #~ msgid "Access Point Configurator for Atmel ver. %s" #~ msgstr "Configurateur du point d'accès Atmel de version %s" #~ msgid "Access Point Configurator for NWN ver. %s" #~ msgstr "Configurateur de point d'accès pour NWN version %s" #~ msgid "" #~ "Usage: %s []\n" #~ "ap-mrtg version %s, Copyright (C) 2002 Roman Festchook\n" #~ "Get stats from AP and return it in MRTG parsable format.\n" #~ " ip - AP ip address;\n" #~ " community - SNMP community string;\n" #~ " type - Statistics type ireless, thernet, associated " #~ "tations or ink quality in client mode;\n" #~ " bssid - Mac address of the AP to which get link quality.\n" #~ msgstr "" #~ "Usage: %s []\n" #~ "ap-mrtg version %s, Copyright © 2002 Roman Festchook\n" #~ "Obtenir les statistiques d'un point d'accès et les retourner dans un " #~ "format MRTG.\n" #~ " ip - adresse IP du point d'accès\n" #~ " community - chaîne de la communauté SNMP\n" #~ " type - type de statiques sans fil, Ethernet, tations " #~ "associées ou qualité du ien en mode client\n" #~ " bssid - adresse Mac du point d'accès de laquelle la qualité du lien " #~ "est déterminée\n" #~ msgid "Invalid type of statictics\n" #~ msgstr "Type invalide de statistiques\n" #~ msgid "Pream" #~ msgstr "Préam" #~ msgid "ColdStart" #~ msgstr "DÉmarrage à froid" #~ msgid "WarmStart" #~ msgstr "Démarrage à chaud" #~ msgid "LinkDown" #~ msgstr "Liaison vers le bas (linkdown)" #~ msgid "LinkUp" #~ msgstr "Liaison vers le haut (linkup)" #~ msgid "AuthenticationFailure" #~ msgstr "Échec d'authentification" #~ msgid "EgpNeighborLoss" #~ msgstr "EgpNeighborLoss" #~ msgid "EnterpriseSpecific" #~ msgstr "EnterpriseSpecific" #~ msgid "Reassociation" #~ msgstr "Réassociation" #~ msgid "RoamOut" #~ msgstr "RoamOut" #~ msgid "Association" #~ msgstr "Association" #~ msgid "Disassociation" #~ msgstr "Déassociation" #~ msgid "AssociationExpire" #~ msgstr "Délai d'expiration d'association" #~ msgid "SettingPingIPAddress" #~ msgstr "Configuration d'adresse IP pour le ping" #~ msgid "StartUp" #~ msgstr "Démarrage" #~ msgid "FailedToEraseFlash" #~ msgstr "Échec d'effacement de la mémoire Flash" ap-utils-1.5/po/remove-potcdate.sin000066400000000000000000000006601117246662700173620ustar00rootroot00000000000000# Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } ap-utils-1.5/po/ro.po000066400000000000000000001504341117246662700145360ustar00rootroot00000000000000# Mesajele în limba românã pentru ap-utils. # Copyright (C) 2003 Free Software Foundation, Inc. # Acest fiºier este distribuit sub aceeaºi licenþã ca ºi ap-utils. # Eugen Hoanca , 2003. # msgid "" msgstr "" "Project-Id-Version: ap-utils-1.3.2-pre3\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 \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" "Report-Msgid-Bugs-To: \n" #: lib/aps.c:30 msgid "Known Access Points" msgstr "Access Point-uri Cunoscute" #: lib/aps.c:130 msgid "Your Access Point is not in \"AP client\" mode => getting" msgstr "" #: lib/aps.c:133 msgid "up-to-date \"Known APs\" info requires your AP to be" msgstr "" #: lib/aps.c:136 msgid "temporarily configured into \"AP client\" mode and rebooted." msgstr "" #: lib/aps.c:139 msgid "Your AP will be reconfigured back to original mode by this" msgstr "" #: lib/aps.c:142 msgid "utility once you quit the \"KnownAP\" view. This, in turn, may" msgstr "" #: lib/aps.c:145 #, fuzzy msgid "cause loss of Access Point's current configuration." msgstr "Seteazã configuraþia curentã ca activã" #: lib/aps.c:149 msgid "Do NOT answer \"Yes\" if you're connected to the Access Point" msgstr "" #: lib/aps.c:152 #, fuzzy msgid "via its wireless port." msgstr "Setare opþiuni wireless" #: 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:208 msgid "NetworkType" msgstr "TipReþea" #: lib/aps.c:284 msgid "Infrastructure" msgstr "Infrastructurã" #: 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:346 msgid "RSSI: Radio Signal Strength Indicator [%]" msgstr "" #: lib/aps.c:348 lib/aps.c:356 msgid "; LQ: Link Quality [%]" msgstr "" #: lib/aps.c:354 msgid "RSSI: Radio Signal Strength Indicator [dBm]" msgstr "" #: lib/aps.c:362 msgid "RSSI: Radio Signal Strength Indicator [raw]" msgstr "" #: lib/aps.c:364 msgid "; LQ: Link Q. [raw]" msgstr "" #: lib/aps.c:370 #, fuzzy msgid "" "# con. to AP #; R refresh with reset; T toggle; Q quit; Other = refr. w/o " "reset" msgstr "" "# conectare la acest AP; R împrospãtare cu reset; G împrospãtare fãrã reset; " "Q ieºire" #: lib/aps.c:372 #, fuzzy msgid "" "# con. to AP #; R initiate AP scan; T toggle view; Q quit; Other = refresh " "view" msgstr "" "# conectare la acest AP; R împrospãtare cu reset; G împrospãtare fãrã reset; " "Q ieºire" #: 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:510 msgid "You have just initiated the AP scan. Be advised that it may" msgstr "" #: lib/aps.c:513 msgid "take a few seconds for your Access Point to find out some" msgstr "" #: lib/aps.c:516 msgid "values, so expect finishing the scan in about 5 seconds." msgstr "" #: lib/aps.c:519 msgid "Also note that your Access Point stops forwarding the network" msgstr "" #: lib/aps.c:522 msgid "traffic while the scan is in progress, but restores itself" msgstr "" #: lib/aps.c:525 msgid "to normal operation in time ranging up to 1 minute." msgstr "" #: lib/aps.c:528 msgid "Hence, if you are connected to target Access Point via its" msgstr "" #: lib/aps.c:531 msgid "wireless port, you need to wait a bit longer" msgstr "" #: lib/aps.c:534 msgid "after pressing 'S'." msgstr "" #: lib/ap_search.c:48 #, fuzzy msgid "Community name: " msgstr "Comunitate" #: lib/ap_search.c:49 #, fuzzy msgid " NUM IP ADDRESS MIB TYPE FW TYPE (VERSION) AP NAME" msgstr "NUM ADRES? IP TIP" #: lib/ap_search.c:106 msgid "Please wait while scanning, or press 'Q' to quit." msgstr "" #: 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: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:138 msgid "Scanning via network interface:" msgstr "" #: lib/ap_search.c:139 #, c-format msgid " Index: %i" msgstr "" #: lib/ap_search.c:141 #, fuzzy, c-format msgid " Name: %s" msgstr "[N] Nume AP:" #: lib/ap_search.c:143 #, c-format msgid " IP: %s" msgstr "" #: lib/ap_search.c:152 #, c-format msgid "Scanning for AP with MIB type: %s" msgstr "" #: lib/ap_search.c:378 msgid "Access Points Search" msgstr "Cãutare de Access Points." #: lib/ap_search.c:396 #, fuzzy msgid "realloc() error." msgstr "Eroare în crearea socketului" #: lib/ap_search.c:408 msgid "Network interface discovery error." msgstr "" #: 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:485 msgid "No directly reachable Access Points found. Press any key." msgstr "" #: lib/ap_search.c:490 msgid "Single-screen maximum number of APs found." msgstr "" #: lib/ap_search.c:493 #, fuzzy msgid "# - connect to AP; Q - quit" msgstr "Conectare la AP num:" #: lib/ap-utils.h:82 #, fuzzy msgid "MAC address: " msgstr "Adresã IP: %s" #: lib/ap-utils.h:83 #, fuzzy msgid "[S] SNMP traps: " msgstr "[S] Referinþe(traps) SNMP: %s" #: lib/ap-utils.h:85 #, fuzzy msgid "[C] Frequency channel: " msgstr "[C] Frecvenþã Canal: %02u (%u MHz)" #: lib/ap-utils.h:87 #, fuzzy msgid "Receive antenna:" msgstr "Primite:" #: lib/ap-utils.h:88 #, fuzzy msgid "[U] Left" msgstr "Stânga" #: lib/ap-utils.h:89 #, fuzzy msgid "[I] Right" msgstr "Dreapta" #: lib/ap-utils.h:90 #, fuzzy msgid "Transmit antenna:" msgstr "Transmise:" #: lib/ap-utils.h:91 #, fuzzy msgid "[O] Left" msgstr "Stânga" #: lib/ap-utils.h:92 #, fuzzy msgid "[P] Right" msgstr "Dreapta" #: lib/ap-utils.h:93 #, fuzzy msgid "Diversity select:" msgstr "Variaþie: %s" #: lib/ap-utils.h:94 #, fuzzy msgid "[T] Left" msgstr "Stânga" #: lib/ap-utils.h:95 #, fuzzy msgid "[Y] Right" msgstr "Dreapta" #: lib/ap-utils.h:97 msgid "Yes" msgstr "" #: lib/ap-utils.h:98 msgid "No" msgstr "" #: lib/ap-utils.h:100 msgid "On" msgstr "" #: lib/ap-utils.h:101 #, fuzzy msgid "Off" msgstr "oprit(off)" #: lib/ap-utils.h:103 #, fuzzy msgid "Basic" msgstr "de bazã" #: lib/ap-utils.h:105 msgid "Press any key to continue." msgstr "Apãsaþi o tastã pentru continuare." #: lib/ap-utils.h:106 msgid "Q - quit to menu. T - toggle polling mode, Other key - force update" msgstr "" #: 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: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:110 #, fuzzy 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:111 msgid "Writing data to AP. Please wait..." msgstr "Scriere date în AP. Vã rugãm aºteptaþi..." #: 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:113 #, fuzzy msgid "select() function error. Press any key." msgstr "Eroare fcntl. 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: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:119 msgid "Back to main menu" msgstr "Înapoi în meniul principal" #: lib/ap-utils.h:120 msgid "Exit program" msgstr "Ieºire din program" #: 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: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:124 msgid "Find connected Access Points" msgstr "Cautã Access Pointurile conectate" #: lib/ap-utils.h:125 msgid "Set connection options: ip and community" msgstr "Setare opþiuni conexiune: ip ºi comunitate" #: lib/ap-utils.h:126 #, fuzzy msgid "Set encryption; edit WEP keys" msgstr "Setare encripþie, editare chei WEP" #: lib/ap-utils.h:127 #, fuzzy msgid "Set authorization; edit MAC authorization table" msgstr "Setare autorizare prin mac, editare tabel autorizare prin mac" #: 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:129 #, fuzzy msgid "Get info about AP hardware and firmware" msgstr "Procurare informaþii despre hardware ºi software AP" #: lib/ap-utils.h:130 #, fuzzy msgid "Get wireless port statistics" msgstr "Procurare statistici porturi wireless" #: 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: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:134 #, fuzzy msgid "Set various configuration options" msgstr "Setare diverse opþiuni de configurare" #: lib/ap-utils.h:136 msgid "Associated stations" msgstr "Staþii asociate" #: lib/ap-utils.h:137 msgid "AP Client link state" msgstr "" #: lib/ap-utils.h:139 msgid "Polling: on" msgstr "" #: lib/ap-utils.h:140 msgid "Polling: off" msgstr "" #: lib/cmd.c:40 msgid "Restore factory default configuration" msgstr "Restaureazã configuraþia implicitã din fabricã" #: lib/cmd.c:43 #, fuzzy msgid "After restoring factory defaults your current configuration" msgstr "" "Dupã restaurarea valorilor implicite din fabricã aþi pierdut configuraþia " "curentã." #: lib/cmd.c:44 msgid "will be lost." msgstr "" #: lib/cmd.c:63 #, fuzzy msgid "Factory default settings loaded. Press any key to continue." msgstr "Configuraþia implicitã activatã. Apãsaþi o tastã pentru continuare." #: lib/cmd.c:71 msgid "Reset Access Point" msgstr "Resetare Access Point" #: lib/cmd.c:74 #, fuzzy msgid "By reset you'll lose all non-uploaded configuration." msgstr "Când resetaþi veþi pierde toate configuraþiile ne-uploadate." #: lib/cmd.c:85 msgid "Access Point reset. Press any key to continue." msgstr "Access Point resetat. Apãsaþi o tastã pentru continuare." #: lib/cmd.c:117 msgid "Upload configuration" msgstr "Upload de configuraþie" #: lib/cmd.c:119 #, fuzzy msgid "You may need to upload the configuration only if you've" msgstr "" "E nevoie sã uploadaþi configuraþia numai dacã schimbaþi anumite opþiuni." #: lib/cmd.c:121 msgid "changed some option values before. Using this option may" msgstr "" #: lib/cmd.c:123 #, fuzzy msgid "cause loss of your current configuration." msgstr "Seteazã configuraþia curentã ca activã" #: lib/cmd.c:135 #, fuzzy 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:32 #, fuzzy msgid "Access Point IP-address: " msgstr "Adresã IP Access Point:" #: lib/common.c:33 #, fuzzy msgid "Password (community): " msgstr "Parolã (comunitate):" #: lib/common.c:34 msgid "Autodetect AP MIB properties? " msgstr "" #: lib/common.c:35 #, fuzzy msgid "AP MIB type: " msgstr "Tip AP:" #: lib/common.c:36 msgid "AP MIB vendor extensions: " msgstr "" #: 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:38 #, fuzzy msgid "Access Point label: " msgstr "Access Point" #: lib/common.c:39 #, fuzzy msgid "Save connect-settings: " msgstr "Salvare setãri conectare:" #: 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:108 #, c-format msgid "Version %s" msgstr "Versiunea %s" #: lib/common.c:111 msgid "Written by Roman Festchook roma@polesye.net" msgstr "Scris de Roman Festchook roma@polesye.net" #: lib/common.c:113 msgid "and Jan Rafaj jr-aputils@cedric.unob.cz" msgstr "" #: lib/common.c:115 #, fuzzy msgid "Copyright (c) 2001-2005" msgstr "Copyright (c) Roman Festchook 2001-2002" #: lib/common.c:117 msgid "Roman Festchook and Jan Rafaj" msgstr "" #: lib/common.c:120 msgid "This program is distributed under the terms" msgstr "Acest program este distribuit sub termenii " #: lib/common.c:122 msgid "of the GNU General Public License version 2." msgstr "Licenþei Publice Generale GNU versiunea 2" #: lib/common.c:124 msgid "See the included COPYING file for details." msgstr "Citiþi fiºierul COPYING inclus pentru detalii." #: lib/common.c:165 msgid "Connect options" msgstr "Opþiuni conectare" #: 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: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:249 msgid "This label will be stored on HDD (independently on AP name!)." msgstr "" #: 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: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/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:200 #, fuzzy msgid "Choose an AP to connect to" msgstr "Alege?i AP-ul la care se efectueaz? conexiunea" #: 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:257 msgid "Connect to AP num:" msgstr "Conectare la AP num:" #: lib/file.c:288 msgid "Delete num:" msgstr "ªterge Num:" #: 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:444 msgid "Stations file succesfully written. Press any key." msgstr "" #: 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: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: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:6061 msgid "Unknown or Private" msgstr "Necunoscut sau Privat" #: lib/radio.c:26 #, fuzzy msgid "" "[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu" msgstr "" "Tastã - nivel putere; UIOP - antena; W - scriere configuraþie; Q - ieºire" #: lib/radio.c:28 #, fuzzy msgid "Antenna:" msgstr "[A] Antena: %s" #: lib/radio.c:29 #, fuzzy msgid "[L] Left:" msgstr "Stânga" #: lib/radio.c:30 #, fuzzy msgid "[R] Right:" msgstr "Dreapta" #: lib/radio.c:120 msgid "Radio Configuration" msgstr "Configuraþie Radio" #: lib/radio.c:121 msgid "Output RF signal power level (CR31 register values)" msgstr "" #: lib/radio.c:123 #, fuzzy msgid "Key Channel Level" msgstr "cheie nivel canal" #: lib/radio.c:279 #, fuzzy msgid "" "You can't disable both antennas; unable to save antenna-config. Press any " "key." msgstr "" "Nu puteþi dezactiva ambele antene, nu se poate salva configuraþia antenei. " "Apãsaþi o tastã." #: lib/scr.c:157 #, fuzzy, c-format msgid "Current AP: %s Type: %s Ext: %s" msgstr "AP Current: %s Tip: %s" #: lib/set_community.c:27 msgid "Set community/password" msgstr "Setare comunitate/parolã" #: lib/set_community.c:28 #, fuzzy msgid "Key Access level" msgstr "Nivel Access Cheie(Key)" #: lib/set_community.c:29 msgid "Community/Password" msgstr "Comunitate/Parola" #: lib/set_community.c:30 #, fuzzy msgid "[U] User " msgstr "[U] User" #: lib/set_community.c:31 #, fuzzy msgid "[A] Administrator " msgstr "[A] Administrator" #: lib/set_community.c:32 #, fuzzy msgid "[M] Manufacturer " msgstr "[M] Producãtor" #: lib/set_community.c:33 #, fuzzy msgid "" "[key] - set community/password; W - write config to AP; Q - quit to menu" 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" #: lib/stat.c:30 msgid "Wireless Statistics" msgstr "Statistici Wireless" #: lib/stat.c:98 #, fuzzy msgid "EthRxStat packet error. Press any key." msgstr "Eroare de pachet EthRxStat Apãsaþi Q pentru continuare." #: lib/stat.c:111 #, fuzzy msgid "EthTxStat packet error. Press any key." msgstr "Eroare de pachet EthTxStat. Apãsaþi Q pentru continuare." #: lib/stat.c:115 msgid "Received:" msgstr "Primite:" #: lib/stat.c:116 #, fuzzy msgid "Transmitted:" msgstr "Transmise:" #: lib/stat.c:270 #, fuzzy msgid "WirelessStat packet error. Press any key." msgstr "Eroare de pachet WirelessStat. Apãsaþi Q pentru continuare." #: lib/sysinfo.c:29 msgid "System Description: " msgstr "Descriere sistem: " #: lib/sysinfo.c:30 msgid "System Info" msgstr "Informaþii Sistem" #: 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:172 #, fuzzy, c-format msgid "Operational mode: %s" msgstr "[O] Mod Operaþional: %s" #: lib/sysinfo.c:182 #, fuzzy msgid "Product name: " msgstr "Nume Produs:" #: lib/sysinfo.c:186 #, fuzzy, c-format msgid "Product type: %u" msgstr "TipProdus: %u" #: lib/sysinfo.c:189 #, fuzzy msgid "OEM name: " msgstr "NumeOEM:" #: lib/sysinfo.c:196 #, fuzzy, c-format msgid "Hardware revision: %u" msgstr "RevizieHardware: %u" #: lib/sysinfo.c:204 #, fuzzy, c-format msgid "Info structure version: %u" msgstr "VersiuneStruct: %u" #: 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:224 #, fuzzy, c-format msgid "Uptime: %u days, %02u:%02u:%02u hours:mins:secs" msgstr "Uptime: %u:%02u:%02u.%02u" #: lib/sysinfo.c:312 msgid "FHSS 2.4 GHz" msgstr "FHSS 2.4 GHz" #: lib/sysinfo.c:312 msgid "DSSS 2.4 GHz" msgstr "DSSS 2.4 GHz" #: lib/sysinfo.c:312 msgid "IR Baseband" msgstr "Bandã de bazã IR" #: lib/sysinfo.c:313 msgid "Commercial range 0..40 C" msgstr "Interval comercial 0..40 C" #: lib/sysinfo.c:314 msgid "Industrial range -30..70 C" msgstr "Interval industrial -30..70 C" #: lib/sysinfo.c:317 msgid "manual" msgstr "manual" #: lib/sysinfo.c:317 msgid "notsupported" msgstr "nesuportat" #: lib/sysinfo.c:317 msgid "dynamic" msgstr "dinamic" #: lib/sysinfo.c:373 msgid "Manufacturer:" msgstr "Producãtor:" #: lib/sysinfo.c:378 msgid "Manufacturer ID:" msgstr "ID Producãtor:" #: lib/sysinfo.c:389 msgid "Product Name:" msgstr "Nume Produs:" #: lib/sysinfo.c:395 msgid "Product ID:" msgstr "ID Produs:" #: lib/sysinfo.c:401 msgid "Product Version:" msgstr "Versiune Produs:" #: lib/sysinfo.c:407 #, c-format msgid "PHYType: %s" msgstr "TipPHY: %s" #: lib/sysinfo.c:410 #, c-format msgid "Temperature: %s" msgstr "Temperaturã: %s" #: lib/sysinfo.c:418 #, fuzzy, c-format msgid "Regulatory Domain: %s" msgstr "Domeniu Regularizare: %s" #: lib/sysinfo.c:419 msgid "FCC (USA)" msgstr "FCC (USA)" #: lib/sysinfo.c:420 msgid "DOC (Canada)" msgstr "DOC (Canada)" #: lib/sysinfo.c:421 msgid "ETSI (Europe)" msgstr "ETSI (Europa)" #: lib/sysinfo.c:422 msgid "Spain" msgstr "Spania" #: lib/sysinfo.c:423 msgid "France" msgstr "Franþa" #: lib/sysinfo.c:424 msgid "MKK (Japan)" msgstr "MKK (Japonia)" #: lib/sysinfo.c:427 #, c-format msgid "Transmit Power: %u mW" msgstr "Putere Transmisie: %u mW" #: lib/sysinfo.c:457 #, fuzzy, c-format msgid "WEP implemented: %s" msgstr "WEP inplementat: %s" #: lib/sysinfo.c:460 #, c-format msgid "Diversity: %s" msgstr "Variaþie: %s" #: lib/sysinfo.c:488 #, c-format msgid "Uptime: %u:%02u:%02u.%02u" msgstr "Uptime: %u:%02u:%02u.%02u" #: lib/sysinfo.c:508 #, c-format msgid "IP Address: %s" msgstr "Adresã IP: %s" #: lib/test.c:26 #, fuzzy msgid "[T] Test mode: " msgstr "[T] Mod Testare: %s" #: lib/test.c:27 #, fuzzy msgid "[A] Antenna: " msgstr "[A] Antena: %s" #: lib/test.c:28 #, fuzzy msgid "[S] Signal level: " msgstr "[S] Nivel semnal: %03u" #: lib/test.c:29 #, fuzzy msgid "[R] Rate: " msgstr "[R] Ratã: %.1f Mbit/s" #: lib/test.c:30 #, fuzzy msgid "[F] TxFiler: " msgstr "[F] TxFiler: %s" #: lib/test.c:31 #, fuzzy msgid "[O] Command: " msgstr "[O] Comandã: %s" #: lib/test.c:32 #, fuzzy msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu" msgstr "" "T - ModTest Activat/Dezactivat; CASRFO - setãri opþiuni; Q - ieºire în meniu" #: lib/test.c:70 msgid "Left" msgstr "Stânga" #: lib/test.c:70 msgid "Right" msgstr "Dreapta" #: 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: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:95 #, fuzzy msgid "configuration." msgstr "Upload de configuraþie" #: lib/test.c:107 msgid "Options:" msgstr "Opþiuni:" #: lib/test.c:133 msgid "Statistics:" msgstr "Statistici:" #: 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:195 #, c-format msgid "Success Frames: %lu Failed Frames: %lu" msgstr "Frame-uri cu succes: %lu Frame-uri eºuate: %lu" #: lib/wep.c:28 msgid "Privacy Settings" msgstr "Setãri de Secretizare(Privacy)" #: lib/wep.c:29 #, fuzzy msgid "[E] Standard encryption mechanism: " msgstr "[E] Mecanism de encripþie standard: %s" #: lib/wep.c:30 #, fuzzy msgid "[A] Allow unencrypted: " msgstr "[A] Permite Necriptare: %s" #: lib/wep.c:31 #, fuzzy msgid "[K] Default WEP key: " msgstr "[K] Cheie WEP Implicitã: %d" #: lib/wep.c:32 #, fuzzy msgid "[P] Public key: " msgstr "[P] Cheie Publicã: %s" #: lib/wep.c:85 msgid "EK1234 - set; W - write conf; Q - quit to menu" msgstr "EK1234 - setare; W - scriere configuraþie; Q - ieºire în meniu" #: lib/wep.c:94 lib/wep.c:263 msgid "Key WEP" msgstr "Cheie WEP" #: lib/wep.c:101 msgid "Hint! Confused by WEP key values? See man ap-config for info..." msgstr "" "Sfat! Z?p?ci?i de valorile cheilor WEP? Citi?i man ap-onfig pentru informa?" "ii..." #: lib/wep.c:247 msgid "AEPK1234 - set options; W - write conf; Q - quit to menu" msgstr "" "AEPK1234 - setãri opþiuni; W - scriere configuraþie; Q - ieºire în meniu" #: lib/wlan.c:27 msgid "[E] ESSID: " msgstr "" #: lib/wlan.c:28 #, fuzzy msgid "[N] AP name: " msgstr "[N] Nume AP:" #: lib/wlan.c:30 #, fuzzy msgid "[K] AP contact: " msgstr "[E] Contact AP: %s" #: lib/wlan.c:31 #, fuzzy msgid "[L] AP location: " msgstr "[L] Locaþie AP: %s" #: lib/wlan.c:33 #, fuzzy msgid "[R] RTS threshold: " msgstr "[R] Prag(Threshold) RTS: %d" #: lib/wlan.c:34 #, fuzzy msgid "[F] Fragmentation threshold: " msgstr "[F] Prag(theshold) de Fragmentare: %d" #: lib/wlan.c:35 #, fuzzy msgid "[P] Preambule type: " msgstr "[P] Tip Preambul: %s" #: lib/wlan.c:36 #, fuzzy msgid "[A] Auth type: " msgstr "[A] Tip Autentificare: %s" #: lib/wlan.c:37 #, fuzzy msgid "Open system" msgstr "Sistem Deschis(Open)" #: lib/wlan.c:38 #, fuzzy msgid "Shared key" msgstr "Cheie Partajatã(shared)" #: lib/wlan.c:39 #, fuzzy msgid "Both types" msgstr "Ambele Tipuri" #: lib/wlan.c:40 #, fuzzy msgid "[U] Auto rate fallback: " msgstr "[U] AutoRateFallBack: %s" #: lib/wlan.c:41 #, fuzzy msgid "[S] Insert ESSID in broadcast packets: " msgstr "[S] Insereazã ESSID în pachetele de broadcast: %s" #: lib/wlan.c:42 #, fuzzy msgid "Basic and Supported rates:" msgstr "Rate de bazã ºi suportate:" #: lib/wlan.c:43 msgid "Key Rate Status" msgstr "Cheie Ratã Stare" #: lib/wlan.c:45 #, fuzzy msgid "[I] International roaming: " msgstr "[O] Mod Operaþional: %s" #: 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 "" "[tastã] - setãri opþiuni; W - scriere configuraþie; Q - ieºire în meniu" #: lib/wlan.c:125 msgid "Short" msgstr "Scurt" #: lib/wlan.c:125 msgid "Long" msgstr "Lung" #: lib/wlan.c:239 msgid "Wireless Settings" msgstr "Setãri Wireless" #: lib/wlan.c:735 msgid "Antenna Configuration:" msgstr "Configuraþie Antenã:" #: lib/wlan.c:752 msgid "General Options" msgstr "Opþiuni Generale" #: 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-auth.c:32 src/auth.c:28 msgid "AuthorizedMacTableString packet error" msgstr "Eroare pachet 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" "Folosire:\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 - Adresã de 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 comunitate - SNMP ºir de caractere comunitate\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 - afiºeazã acest ecran de ajutor\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 (c) 2002 Roman Festchook\n" "\n" #: 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 ireless, thernet, associated tations " "or ink quality (last one will only " msgstr "" "-t tip - tip statistici ireless, thernet, taþii asociate sau " "calitate 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: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:56 #, fuzzy, c-format msgid "" "ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n" "\n" msgstr "" "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-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 ireless, thernet, associated tations " "or ink quality in client mode\n" msgstr "" "-t tip - tip statistici ireless, thernet, taþii asociate sau " "calitate 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-rrd %s Copyright (c) 2002-2004 Roman Festchook\n" "\n" msgstr "" "ap-mrtg %s Copyright (c) 2002 Roman Festchook\n" "\n" #: src/ap-rrd.c:133 msgid "Invalid IP-address\n" msgstr "Adresã de IP invalidã\n" #: src/ap-rrd.c:179 #, c-format msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n" msgstr "" #: 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 \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-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 startat%s%s." #: src/ap-trapd.c:151 msgid " on " msgstr " activat " #: src/ap-trapd.c:157 msgid "Unable to fork. Exiting." msgstr "Nu se poate face fork. Ieºire." #: src/ap-trapd.c:161 msgid "Can't create socket. Exiting." msgstr "Nu se poate crea socketul. Ieºire." #: 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: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:185 #, c-format msgid "Unable to process username %s. Error: %m." msgstr "Nu pot procesa username-ul %s. Eroare: %m." #: 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:239 #, c-format msgid "" "Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s." msgstr "" "S-a primit trap necunoscut SNMP ver %d. De la %s:%d. Agent: %s. Comunitate: %" "s." #: 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.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 "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 "[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: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" #: src/nwn_advanced.c:60 #, c-format msgid "[D] DB Station Timeout: %d" msgstr "[D] Timp Limitã(timeout) Staþie DB: %d" #: src/nwn_advanced.c:62 #, c-format msgid "[A] ACK Window: %d" msgstr "[A] Fereastrã ACK: %d" #: src/nwn_advanced.c:65 msgid "Advanced Options" msgstr "Opþiuni Avansate" #: src/nwn_advanced.c:66 msgid "DA - options; W - write conf; Q - quit to menu" msgstr "DA - opþiuni; W - scriere configuraþie; Q - ieºire în meniu" #: src/nwn_latest.c:30 #, c-format msgid "Reason: %u Station: %02X%02X%02X%02X%02X%02X" msgstr "Motiv: %u Staþie: %02X:%02X:%02X:%02X:%02X:%02X" #: src/nwn_latest.c:88 msgid "Latest Events" msgstr "Ultimele Evenimente" #: src/nwn_latest.c:89 msgid "Disassociate:" msgstr "Dezasociere:" #: src/nwn_latest.c:96 msgid "Deauthenticate:" msgstr "Deautentificare:" #: src/nwn_latest.c:103 #, fuzzy msgid "Authenticate Fail:" msgstr "Autentificare Eºuatã:" #: src/nwn_latest.c:109 msgid "Last error:" msgstr "Ultima eroare:" #: src/nwn_latest.c:110 msgid "Error:" msgstr "Eroare:" #: src/stations.c:82 msgid "Not available (device not in AP mode)." msgstr "" #: src/stations.c:92 msgid " # MAC Parent MAC RSSI LQ Sts MACn IP " msgstr "" #: src/stations.c:136 msgid "AssociatedSTAsInfo packet error" msgstr "Eroare pachet AssociatedSTAsInfo" #: 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: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: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" #, fuzzy #~ msgid "" #~ "(Y - Yes; N - No (it's safer to answer No, unless you really need this.)" #~ msgstr "" #~ "(Y - Da; N - Nu (E mai sigur sa raspundeþi Nu, în afarã de cazul când " #~ "aveþi nevoie neapãrat de asta.)" #, fuzzy #~ msgid "Determining AP type. Please wait..." #~ msgstr "Recuperare date din AP. Vã rugãm aºteptaþi..." #, fuzzy #~ msgid "Regulation domain: %s [%d]" #~ msgstr "Domeniu Regularizare: %s" #, fuzzy #~ msgid "(Y - Yes; N - No (it's safer to answer No.)" #~ msgstr "(Y - Da; N - Nu (e mai sigur sa raspundeþi Nu.)" #~ msgid "Unable to get data from AP. Press Q to continue." #~ msgstr "Nu se pot procura date din AP. Apãsaþi Q pentru continuare." #~ msgid "Q - quit to menu." #~ msgstr "Q - ieºire în meniu." #~ msgid "pipe error. Press any key." #~ msgstr "eroare de legãturã(pipe). Apãsaþi o tastã." #~ msgid "fork error. Press any key." #~ msgstr "Eroare la fork. Apãsaþi o tastã." #~ msgid "pipe error. Press any key" #~ msgstr "Eroare de legãturã(pipe). Apãsaþi o tastã" #~ msgid "fcntl error. Press any key" #~ msgstr "Eroare de fcntl. Apãsaþi o tastã" #~ msgid "fork error. Press any key" #~ msgstr "Eroare de fork. Apãsaþi o tastã" #, fuzzy #~ msgid "Id MAC address" #~ msgstr "Id adresã MAC" #~ msgid "Wireless Access Point Configurator" #~ msgstr "Wireless Access Point Configurator" #~ msgid "Invalid multicast address. Press any key." #~ msgstr "Adresã de multicast invalidã. Apãsaþi o tastã." #~ msgid "Searching please wait..." #~ msgstr "Cãutare vã rugãm aºteptaþi..." #~ msgid "No Access Points found." #~ msgstr "Nici un Access Point gãsit" #~ msgid "Output Signal Power Level" #~ msgstr "Nivel Putere Semnal Output" #~ msgid "SysInfo:" #~ msgstr "SysInfo:" #~ msgid "RegulationDomain: %s" #~ msgstr "DomeniuRegularizare: %s" #~ msgid "Mac Address: %02X%02X%02X%02X%02X%02X" #~ msgstr "Adresã Mac: %02X:%02X:%02X:%02X:%02X:%02X" #~ msgid "[T] Test Mode: Off" #~ msgstr "[T] Mod Testare: Dezactivat" #~ msgid "Transmit Antenna: [O] Left %3s, [P] Right %3s" #~ msgstr "Antenã de Transmisie: [O] Stânga %3s, [P] Dreapta %3s" #~ msgid "Receive Antenna: [U] Left %3s, [I] Right %3s" #~ msgstr "Antenã Recepþie: [U] Stânga %3s, [I] Dreapta %3s" #~ msgid "Diversity Select: [T] Left %3s, [Y] Right %3s" #~ msgstr "Selecþie Variaj: [T] Stânga %3s, [Y] Dreapta %3s" #~ msgid "on" #~ msgstr "pornit(on)" #~ msgid "Write configuration to AP done. Press any key to continue." #~ msgstr "" #~ "Scriere configuraþie în AP efectuatã. Apãsaþi o tastã pentru continuare." #~ msgid "Using this option may cause lost of current configuration." #~ msgstr "" #~ "Folosirea acestei opþiuni poate cauza pierderea configuraþiei curente." #~ msgid "" #~ "Getting known AP's info need to reboot you AP and may cause lost of " #~ "current configuration." #~ msgstr "" #~ "Procurarea de informaþii cunoscute din AP necesitã rebootarea AP-ului ºi " #~ "poate cauza pierderea configuraþiei curente." #~ msgid "CN: Channel; RSSI: Signal Strenght; LQ: Link Quality" #~ msgstr "CN: Canal; SS: Putere Semnal; LQ: Calitate Conexiune" ap-utils-1.5/po/tr.po000066400000000000000000001511261117246662700145420ustar00rootroot00000000000000# Turkish translation of ap-utils. # Copyright (C) 2004 Free Software Foundation, Inc. # This file is distributed under the same license as the ap-utils package. # Elif Bilge Maden , 2004. # msgid "" msgstr "" "Project-Id-Version: ap-utils 1.3.2-pre3\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 \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Report-Msgid-Bugs-To: \n" #: lib/aps.c:30 msgid "Known Access Points" msgstr "Tanımlana EriÅŸim Noktaları" #: lib/aps.c:130 msgid "Your Access Point is not in \"AP client\" mode => getting" msgstr "" #: lib/aps.c:133 msgid "up-to-date \"Known APs\" info requires your AP to be" msgstr "" #: lib/aps.c:136 msgid "temporarily configured into \"AP client\" mode and rebooted." msgstr "" #: lib/aps.c:139 msgid "Your AP will be reconfigured back to original mode by this" msgstr "" #: lib/aps.c:142 msgid "utility once you quit the \"KnownAP\" view. This, in turn, may" msgstr "" #: 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:149 msgid "Do NOT answer \"Yes\" if you're connected to the Access Point" msgstr "" #: lib/aps.c:152 #, fuzzy msgid "via its wireless port." msgstr "Kablosuz seçenekleri kur" #: 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:208 msgid "NetworkType" msgstr "AÄŸ Türü" #: lib/aps.c:284 msgid "Infrastructure" msgstr "Altyapı" #: 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:346 msgid "RSSI: Radio Signal Strength Indicator [%]" msgstr "" #: lib/aps.c:348 lib/aps.c:356 msgid "; LQ: Link Quality [%]" msgstr "" #: lib/aps.c:354 msgid "RSSI: Radio Signal Strength Indicator [dBm]" msgstr "" #: lib/aps.c:362 msgid "RSSI: Radio Signal Strength Indicator [raw]" msgstr "" #: lib/aps.c:364 msgid "; LQ: Link Q. [raw]" msgstr "" #: lib/aps.c:370 #, fuzzy msgid "" "# con. to AP #; R refresh with reset; T toggle; Q quit; Other = refr. w/o " "reset" msgstr "" "# bu AP'ye baÄŸlan; R yeniden baÅŸlatarak yenile; G yeniden baÅŸlatmadan " "yenile; Q geri dön" #: lib/aps.c:372 #, fuzzy msgid "" "# con. to AP #; R initiate AP scan; T toggle view; Q quit; Other = refresh " "view" msgstr "" "# bu AP'ye baÄŸlan; R yeniden baÅŸlatarak yenile; G yeniden baÅŸlatmadan " "yenile; Q geri dön" #: 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:510 msgid "You have just initiated the AP scan. Be advised that it may" msgstr "" #: lib/aps.c:513 msgid "take a few seconds for your Access Point to find out some" msgstr "" #: lib/aps.c:516 msgid "values, so expect finishing the scan in about 5 seconds." msgstr "" #: lib/aps.c:519 msgid "Also note that your Access Point stops forwarding the network" msgstr "" #: lib/aps.c:522 msgid "traffic while the scan is in progress, but restores itself" msgstr "" #: lib/aps.c:525 msgid "to normal operation in time ranging up to 1 minute." msgstr "" #: lib/aps.c:528 msgid "Hence, if you are connected to target Access Point via its" msgstr "" #: lib/aps.c:531 msgid "wireless port, you need to wait a bit longer" msgstr "" #: lib/aps.c:534 msgid "after pressing 'S'." msgstr "" #: lib/ap_search.c:48 #, fuzzy msgid "Community name: " msgstr "Topluluk" #: lib/ap_search.c:49 #, fuzzy msgid " NUM IP ADDRESS MIB TYPE FW TYPE (VERSION) AP NAME" msgstr "NO IP ADRESİ TÜR" #: lib/ap_search.c:106 msgid "Please wait while scanning, or press 'Q' to quit." msgstr "" #: 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: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:138 msgid "Scanning via network interface:" msgstr "" #: lib/ap_search.c:139 #, c-format msgid " Index: %i" msgstr "" #: lib/ap_search.c:141 #, fuzzy, c-format msgid " Name: %s" msgstr "(N) AP Adı:" #: lib/ap_search.c:143 #, c-format msgid " IP: %s" msgstr "" #: lib/ap_search.c:152 #, c-format msgid "Scanning for AP with MIB type: %s" msgstr "" #: lib/ap_search.c:378 msgid "Access Points Search" msgstr "EriÅŸim Noktaları AraÅŸtırması" #: lib/ap_search.c:396 #, fuzzy msgid "realloc() error." msgstr "Soket hatası oluÅŸtur" #: lib/ap_search.c:408 msgid "Network interface discovery error." msgstr "" #: 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:485 msgid "No directly reachable Access Points found. Press any key." msgstr "" #: lib/ap_search.c:490 msgid "Single-screen maximum number of APs found." msgstr "" #: lib/ap_search.c:493 #, fuzzy msgid "# - connect to AP; Q - quit" msgstr "AP numarasına baÄŸlan:" #: lib/ap-utils.h:82 #, fuzzy msgid "MAC address: " msgstr "NUM MAKRO adres" #: lib/ap-utils.h:83 #, fuzzy msgid "[S] SNMP traps: " msgstr "(S) SNMP Tuzakları: %s" #: lib/ap-utils.h:85 #, fuzzy msgid "[C] Frequency channel: " msgstr "[C] Sıklık Kanalı: %02u (%u MHz)" #: lib/ap-utils.h:87 #, fuzzy msgid "Receive antenna:" msgstr "Alındı:" #: lib/ap-utils.h:88 #, fuzzy msgid "[U] Left" msgstr "Sol" #: lib/ap-utils.h:89 #, fuzzy msgid "[I] Right" msgstr "SaÄŸ" #: lib/ap-utils.h:90 #, fuzzy msgid "Transmit antenna:" msgstr "İletildi:" #: lib/ap-utils.h:91 #, fuzzy msgid "[O] Left" msgstr "Sol" #: lib/ap-utils.h:92 #, fuzzy msgid "[P] Right" msgstr "SaÄŸ" #: lib/ap-utils.h:93 #, fuzzy msgid "Diversity select:" msgstr "ÇeÅŸitleme: %s" #: lib/ap-utils.h:94 #, fuzzy msgid "[T] Left" msgstr "Sol" #: lib/ap-utils.h:95 #, fuzzy msgid "[Y] Right" msgstr "SaÄŸ" #: lib/ap-utils.h:97 msgid "Yes" msgstr "" #: lib/ap-utils.h:98 msgid "No" msgstr "" #: lib/ap-utils.h:100 msgid "On" msgstr "" #: lib/ap-utils.h:101 #, fuzzy msgid "Off" msgstr "kapama" #: lib/ap-utils.h:103 #, fuzzy msgid "Basic" msgstr "temel" #: 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:106 msgid "Q - quit to menu. T - toggle polling mode, Other key - force update" msgstr "" #: 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: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:110 #, fuzzy 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:111 msgid "Writing data to AP. Please wait..." msgstr "AP' ye veri yazılıyor. Lütfen bekleyin." #: 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:113 #, fuzzy msgid "select() function error. Press any key." msgstr "fcntl hatası: 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: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:119 msgid "Back to main menu" msgstr "Ana menüye geri dön." #: lib/ap-utils.h:120 msgid "Exit program" msgstr "Programdan çık." #: 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: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:124 msgid "Find connected Access Points" msgstr "BaÄŸlantılı EriÅŸim Noktalarını bul." #: 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:126 #, fuzzy msgid "Set encryption; edit WEP keys" msgstr "Kriptolamayı ayarla, WEP tuÅŸlarını düzenle." #: lib/ap-utils.h:127 #, fuzzy msgid "Set authorization; edit MAC authorization table" msgstr "Makro yetkiyi ayarla, makro yetki tablosunu düzelt." #: 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: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:130 #, fuzzy msgid "Get wireless port statistics" msgstr "kablosuz baÄŸlantı noktaları istatistiklerine ulaÅŸ." #: 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: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:134 #, fuzzy msgid "Set various configuration options" msgstr "ÇeÅŸitli yapılandırma seçenekleri kurma " #: lib/ap-utils.h:136 msgid "Associated stations" msgstr "İliÅŸkili istasyonlar" #: lib/ap-utils.h:137 msgid "AP Client link state" msgstr "" #: lib/ap-utils.h:139 msgid "Polling: on" msgstr "" #: lib/ap-utils.h:140 msgid "Polling: off" msgstr "" #: lib/cmd.c:40 msgid "Restore factory default configuration" msgstr "varsayılan fabrika yapılandırmasını geri yükle" #: lib/cmd.c:43 #, fuzzy msgid "After restoring factory defaults your current configuration" msgstr "" "varsayılan fabrika yapılandırmasını geri yükledikten sonra mevcut " "yapılandırma kaybolur " #: lib/cmd.c:44 msgid "will be lost." msgstr "" #: lib/cmd.c:63 #, fuzzy msgid "Factory default settings loaded. Press any key to continue." msgstr "" "Varsayılan yapılandırma aktif hale geçti. Devam etmek için bit tuÅŸa basınız" #: lib/cmd.c:71 msgid "Reset Access Point" msgstr "ErÅŸim Noktasını yeniden baÅŸlat" #: lib/cmd.c:74 #, fuzzy msgid "By reset you'll lose all non-uploaded configuration." msgstr "yeniden baÅŸlatma esnasında tüm yüklenmiÅŸ yapılandırma kaybolur." #: lib/cmd.c:85 msgid "Access Point reset. Press any key to continue." msgstr "EriÅŸim Noktasını yeniden baÅŸlat. Devam etmek için bir tuÅŸa basınız." #: lib/cmd.c:117 msgid "Upload configuration" msgstr "Yapılandırmayı yükle" #: lib/cmd.c:119 #, fuzzy msgid "You may need to upload the configuration only if you've" msgstr "" "yüklenmiÅŸ yapılandırmaya ancak bazı seçenekler deÄŸiÅŸtirilmek istendiÄŸinde " "ihtiyaç duyulur" #: lib/cmd.c:121 msgid "changed some option values before. Using this option may" msgstr "" #: lib/cmd.c:123 #, fuzzy msgid "cause loss of your current configuration." msgstr "Geçerli yapılandırmaları aktif hale getir." #: lib/cmd.c:135 #, fuzzy 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:32 #, fuzzy msgid "Access Point IP-address: " msgstr "EriÅŸim Noktası IP-adresi:" #: lib/common.c:33 #, fuzzy msgid "Password (community): " msgstr "Åžifre ( topluluk):" #: lib/common.c:34 msgid "Autodetect AP MIB properties? " msgstr "" #: lib/common.c:35 #, fuzzy msgid "AP MIB type: " msgstr "AP türü:" #: lib/common.c:36 msgid "AP MIB vendor extensions: " msgstr "" #: 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:38 #, fuzzy msgid "Access Point label: " msgstr "EriÅŸim Noktası" #: lib/common.c:39 #, fuzzy msgid "Save connect-settings: " msgstr "BaÄŸlantı ayarlarını kaydediniz." #: 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:108 #, c-format msgid "Version %s" msgstr "Sürüm %s" #: 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:113 msgid "and Jan Rafaj jr-aputils@cedric.unob.cz" msgstr "" #: lib/common.c:115 #, fuzzy msgid "Copyright (c) 2001-2005" msgstr "Telif Hakkı (c) Roman Festchoo 2001-2002" #: lib/common.c:117 msgid "Roman Festchook and Jan Rafaj" msgstr "" #: 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:122 msgid "of the GNU General Public License version 2." msgstr "denetiminde dağıtılmaktadır. " #: 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:165 msgid "Connect options" msgstr "Seçeneklere baÄŸlan" #: lib/common.c:173 msgid "Enter IP address of your Access Point." msgstr "EriÅŸim Noktanızın IP adresini giriniz." #: 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:249 msgid "This label will be stored on HDD (independently on AP name!)." msgstr "" #: 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: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/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:200 #, fuzzy msgid "Choose an AP to connect to" msgstr "BaÄŸlanmak için AP'yi seç" #: 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:257 msgid "Connect to AP num:" msgstr "AP numarasına baÄŸlan:" #: lib/file.c:288 msgid "Delete num:" msgstr "numarayı sil" #: 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:444 msgid "Stations file succesfully written. Press any key." msgstr "" #: lib/input.c:32 #, fuzzy msgid "Invalid value. Press any key to continue." msgstr "Geçersiz IP- adresi" #: 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: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:6061 msgid "Unknown or Private" msgstr "Bilinmiyor ya da gizli" #: lib/radio.c:26 #, fuzzy msgid "" "[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu" msgstr "TuÅŸ -gücü seviyesi; UIOP - anten; W - yapılandırmayı yaz; Q - çıkış" #: lib/radio.c:28 #, fuzzy msgid "Antenna:" msgstr "(A) Anten: %s" #: lib/radio.c:29 #, fuzzy msgid "[L] Left:" msgstr "Sol" #: lib/radio.c:30 #, fuzzy msgid "[R] Right:" msgstr "SaÄŸ" #: lib/radio.c:120 msgid "Radio Configuration" msgstr "Radyo Yapılandırması" #: lib/radio.c:121 msgid "Output RF signal power level (CR31 register values)" msgstr "" #: lib/radio.c:123 #, fuzzy msgid "Key Channel Level" msgstr "tuÅŸ kanal seviyesi" #: lib/radio.c:279 #, fuzzy msgid "" "You can't disable both antennas; unable to save antenna-config. Press any " "key." msgstr "" "İki anten birden geçersiz kılınamaz, anten yapılandırması kaydedilemiyor. " "Bir tuÅŸa basınız." #: lib/scr.c:157 #, fuzzy, c-format msgid "Current AP: %s Type: %s Ext: %s" msgstr "Geçerli AP: %s ÇeÅŸit: %s" #: lib/set_community.c:27 msgid "Set community/password" msgstr "Topluluk/ ÅŸifre ayarını yapınız." #: lib/set_community.c:28 #, fuzzy msgid "Key Access level" msgstr "TuÅŸ EriÅŸim Düzeyi" #: lib/set_community.c:29 msgid "Community/Password" msgstr "Topluluk/ Åžifre" #: lib/set_community.c:30 #, fuzzy msgid "[U] User " msgstr "(U) Kullanıcı" #: lib/set_community.c:31 #, fuzzy msgid "[A] Administrator " msgstr "(A) Yönetici" #: lib/set_community.c:32 #, fuzzy msgid "[M] Manufacturer " msgstr "(M) Üretici" #: lib/set_community.c:33 #, fuzzy msgid "" "[key] - set community/password; W - write config to AP; Q - quit to menu" 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" #: lib/stat.c:30 msgid "Wireless Statistics" msgstr "Kablosuz İstatistikler" #: lib/stat.c:98 #, fuzzy msgid "EthRxStat packet error. Press any key." msgstr "EthRxStat paket hatası. Devam etmek için Q'ya basınız." #: lib/stat.c:111 #, fuzzy msgid "EthTxStat packet error. Press any key." msgstr "EthTxStat paket hatası. Devam etmek için Q'ya basınız." #: lib/stat.c:115 msgid "Received:" msgstr "Alındı:" #: lib/stat.c:116 #, fuzzy msgid "Transmitted:" msgstr "İletildi:" #: lib/stat.c:270 #, fuzzy msgid "WirelessStat packet error. Press any key." msgstr "Kablosuz İstatistik paket hatası. Devam etmek için bir tuÅŸa basınız." #: lib/sysinfo.c:29 msgid "System Description: " msgstr "Sistem Tanımı:" #: lib/sysinfo.c:30 msgid "System Info" msgstr "Sistem Bilgisi" #: 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:172 #, fuzzy, c-format msgid "Operational mode: %s" msgstr "(O) İşlemsel Kip: %s" #: lib/sysinfo.c:182 #, fuzzy msgid "Product name: " msgstr "Ürün Adı" #: lib/sysinfo.c:186 #, fuzzy, c-format msgid "Product type: %u" msgstr "ÜrünTürü: %lu" #: lib/sysinfo.c:189 #, fuzzy msgid "OEM name: " msgstr "OEMAdı:" #: lib/sysinfo.c:196 #, fuzzy, c-format msgid "Hardware revision: %u" msgstr "DonanımDeÄŸiÅŸiklikleri: %lu" #: lib/sysinfo.c:204 #, fuzzy, c-format msgid "Info structure version: %u" msgstr "YapıSürüm: %lu" #: 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: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:312 msgid "FHSS 2.4 GHz" msgstr "FHSS 2.4 GHz" #: lib/sysinfo.c:312 msgid "DSSS 2.4 GHz" msgstr "DSSS 2.4 GHz" #: lib/sysinfo.c:312 msgid "IR Baseband" msgstr "IR Tabanbant" #: lib/sysinfo.c:313 msgid "Commercial range 0..40 C" msgstr "Ticari Aralık 0..40 C" #: lib/sysinfo.c:314 msgid "Industrial range -30..70 C" msgstr "Endüstriyel aralık -30..70 C" #: lib/sysinfo.c:317 msgid "manual" msgstr "kılavuz" #: lib/sysinfo.c:317 msgid "notsupported" msgstr "desteklenmiyor" #: lib/sysinfo.c:317 msgid "dynamic" msgstr "dinamik" #: lib/sysinfo.c:373 msgid "Manufacturer:" msgstr "Üretici:" #: lib/sysinfo.c:378 msgid "Manufacturer ID:" msgstr "Üretici ID:" #: lib/sysinfo.c:389 msgid "Product Name:" msgstr "Ürün Adı" #: lib/sysinfo.c:395 msgid "Product ID:" msgstr "Ürün ID:" #: lib/sysinfo.c:401 msgid "Product Version:" msgstr "Ürün Sürümü:" #: lib/sysinfo.c:407 #, c-format msgid "PHYType: %s" msgstr "PHYTürü: %s" #: lib/sysinfo.c:410 #, c-format msgid "Temperature: %s" msgstr "Sıcaklık: %s" #: lib/sysinfo.c:418 #, fuzzy, c-format msgid "Regulatory Domain: %s" msgstr "Düzenleme Alanı: %s" #: lib/sysinfo.c:419 msgid "FCC (USA)" msgstr "FCC ( Amerika)" #: lib/sysinfo.c:420 msgid "DOC (Canada)" msgstr "DOC (Kanada)" #: lib/sysinfo.c:421 msgid "ETSI (Europe)" msgstr "ETSI (Avrupa)" #: lib/sysinfo.c:422 msgid "Spain" msgstr "İspanya" #: lib/sysinfo.c:423 msgid "France" msgstr "Fransa" #: lib/sysinfo.c:424 msgid "MKK (Japan)" msgstr "MKK ( Japonya)" #: lib/sysinfo.c:427 #, c-format msgid "Transmit Power: %u mW" msgstr "GeçiÅŸ süresi: %u mW" #: lib/sysinfo.c:457 #, fuzzy, c-format msgid "WEP implemented: %s" msgstr "WEP girildi: %s" #: lib/sysinfo.c:460 #, c-format msgid "Diversity: %s" msgstr "ÇeÅŸitleme: %s" #: lib/sysinfo.c:488 #, c-format msgid "Uptime: %u:%02u:%02u.%02u" msgstr "iÅŸlem süresi: %u:%02u:%02u.%02u" #: lib/sysinfo.c:508 #, c-format msgid "IP Address: %s" msgstr "IP Adresi: %s" #: lib/test.c:26 #, fuzzy msgid "[T] Test mode: " msgstr "[T] Test Kipi: %s" #: lib/test.c:27 #, fuzzy msgid "[A] Antenna: " msgstr "(A) Anten: %s" #: lib/test.c:28 #, fuzzy msgid "[S] Signal level: " msgstr "[S] Sinyal Düzeyi: %03u" #: lib/test.c:29 #, fuzzy msgid "[R] Rate: " msgstr "(R) Rate: %.1f Mbit/s" #: lib/test.c:30 #, fuzzy msgid "[F] TxFiler: " msgstr "(F) TxFiler: %s" #: lib/test.c:31 #, fuzzy msgid "[O] Command: " msgstr "[O] Komut: %s" #: lib/test.c:32 #, fuzzy msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu" msgstr "T - TestKipi Açma/Kapama; CASRFO - seçenekleri kur; Q - menüye dön" #: lib/test.c:70 msgid "Left" msgstr "Sol" #: lib/test.c:70 msgid "Right" msgstr "SaÄŸ" #: 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: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:95 #, fuzzy msgid "configuration." msgstr "Yapılandırmayı yükle" #: lib/test.c:107 msgid "Options:" msgstr "Seçenekler:" #: lib/test.c:133 msgid "Statistics:" msgstr "İstatistikler:" #: 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:195 #, c-format msgid "Success Frames: %lu Failed Frames: %lu" msgstr "BaÅŸarı Profili: %lu BaÅŸarısızlık Profili: %lu" #: lib/wep.c:28 msgid "Privacy Settings" msgstr "KiÅŸisel Ayarlar" #: lib/wep.c:29 #, fuzzy msgid "[E] Standard encryption mechanism: " msgstr "[E] Standart ÅŸifreleme mekanizması:%s" #: lib/wep.c:30 #, fuzzy msgid "[A] Allow unencrypted: " msgstr "(A) Åžifresiz İzin: %s" #: lib/wep.c:31 #, fuzzy msgid "[K] Default WEP key: " msgstr "(K) Varsayılan WEP tuÅŸu: %d" #: lib/wep.c:32 #, fuzzy msgid "[P] Public key: " msgstr "(P) Kamusal Anahtar: %s" #: lib/wep.c:85 msgid "EK1234 - set; W - write conf; Q - quit to menu" msgstr "EK1234 - kur; W - yapılandırmayı yaz; Q - menüye geri dön" #: lib/wep.c:94 lib/wep.c:263 msgid "Key WEP" msgstr "WEP tuÅŸu" #: lib/wep.c:101 msgid "Hint! Confused by WEP key values? See man ap-config for info..." msgstr "" "İpucu! WEP tuÅŸu deÄŸerleri yeterince açık deÄŸilse, bilgi için ap- " "yapılandırması sorumlusunu görün." #: lib/wep.c:247 msgid "AEPK1234 - set options; W - write conf; Q - quit to menu" msgstr "" "AEPK1234 - seçenekleri kur; W - yapılandırmayı yaz; Q - menüye geri dön" #: lib/wlan.c:27 msgid "[E] ESSID: " msgstr "" #: lib/wlan.c:28 #, fuzzy msgid "[N] AP name: " msgstr "(N) AP Adı:" #: lib/wlan.c:30 #, fuzzy msgid "[K] AP contact: " msgstr "(E) AP Kontağı: %s" #: lib/wlan.c:31 #, fuzzy msgid "[L] AP location: " msgstr "(L) AP Konumu: %s" #: lib/wlan.c:33 #, fuzzy msgid "[R] RTS threshold: " msgstr "(R) RTS EÅŸiÄŸi: %d" #: lib/wlan.c:34 #, fuzzy msgid "[F] Fragmentation threshold: " msgstr "(F) Parçalanma EÅŸiÄŸi: %d" #: lib/wlan.c:35 #, fuzzy msgid "[P] Preambule type: " msgstr "(P) BaÅŸlangıç türü: %s" #: lib/wlan.c:36 #, fuzzy msgid "[A] Auth type: " msgstr "(A) Yetki Türü: %s" #: lib/wlan.c:37 #, fuzzy msgid "Open system" msgstr "Açık Sistem" #: lib/wlan.c:38 #, fuzzy msgid "Shared key" msgstr "Paylaşılan TuÅŸ" #: lib/wlan.c:39 #, fuzzy msgid "Both types" msgstr "Her İki Tür" #: lib/wlan.c:40 #, fuzzy msgid "[U] Auto rate fallback: " msgstr "(U) son çare otomatik hız: %s" #: lib/wlan.c:41 #, fuzzy msgid "[S] Insert ESSID in broadcast packets: " msgstr "(S) ESSID'i yayın paketine ekle: %s" #: lib/wlan.c:42 #, fuzzy msgid "Basic and Supported rates:" msgstr "Temel ve Destekli Hız:" #: lib/wlan.c:43 msgid "Key Rate Status" msgstr "TuÅŸ Hızı Durumu" #: lib/wlan.c:45 #, fuzzy msgid "[I] International roaming: " msgstr "(O) İşlemsel Kip: %s" #: 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 "(tuÅŸ) - seçenek kur; W - yapılandırmayı yaz; Q - menüye geri dön" #: lib/wlan.c:125 msgid "Short" msgstr "Kısa" #: lib/wlan.c:125 msgid "Long" msgstr "Uzun" #: lib/wlan.c:239 msgid "Wireless Settings" msgstr "Kablosuz Ayarlar" #: lib/wlan.c:735 msgid "Antenna Configuration:" msgstr "Anten Yapılandırması" #: lib/wlan.c:752 msgid "General Options" msgstr "Genel Seçenekler" #: 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-auth.c:32 src/auth.c:28 msgid "AuthorizedMacTableString packet error" msgstr "YetkiliMacTablosuDizgi paketi hatası" #: 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" "Kullanım:\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 - AP ip adresi\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 topluluk - SNMP topluluk dizgisi\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 - bu yardım ekranını yazdır\n" #: src/ap-auth.c:55 #, fuzzy, c-format msgid "" "ap-auth %s Copyright (c) 2004 Teemu Kiviniemi\n" "\n" msgstr "" "ap-mrtg %s Telifhakkı (c) 2002 Roman Festchook\n" "\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-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 ireless, thernet, associated tations " "or 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:56 #, fuzzy, c-format msgid "" "ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n" "\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 ireless, thernet, associated tations " "or 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-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-rrd %s Copyright (c) 2002-2004 Roman Festchook\n" "\n" msgstr "" "ap-mrtg %s Telifhakkı (c) 2002 Roman Festchook\n" "\n" #: src/ap-rrd.c:133 msgid "Invalid IP-address\n" msgstr "geçersiz IP-adresi\n" #: src/ap-rrd.c:179 #, c-format msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n" msgstr "" #: src/ap-tftp.c:84 msgid "yes" msgstr "" #: src/ap-tftp.c:85 #, fuzzy msgid "no" msgstr "Bilgi" #: 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 "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 \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:151 msgid " on " msgstr "aktif" #: src/ap-trapd.c:157 msgid "Unable to fork. Exiting." msgstr "Çatallayamıyor. Çıkıyor." #: src/ap-trapd.c:161 msgid "Can't create socket. Exiting." msgstr "Yuva oluÅŸturulamıyor. Çıkıyor." #: src/ap-trapd.c:167 msgid "Can't bind socket. Exiting." msgstr "Yuva baÄŸlanamıyor. Çıkıyor." #: 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:185 #, c-format msgid "Unable to process username %s. Error: %m." msgstr "kullanıcı adı iÅŸlemiyor %s. hata: %m." #: 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: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: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.c:30 msgid "APClient authorization credentials" msgstr "" #: src/auth.c:32 #, fuzzy 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 "[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: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" #: src/nwn_advanced.c:60 #, c-format msgid "[D] DB Station Timeout: %d" msgstr "[D] DB İstasyonu Zaman Aşımı %d" #: src/nwn_advanced.c:62 #, c-format msgid "[A] ACK Window: %d" msgstr "(A) ACK Penceresi: %d" #: src/nwn_advanced.c:65 msgid "Advanced Options" msgstr "GeliÅŸmiÅŸ Seçenekler" #: src/nwn_advanced.c:66 msgid "DA - options; W - write conf; Q - quit to menu" msgstr "DA -seçenekler; W - yapılandırmayı yaz; Q - menüye geri dön" #: src/nwn_latest.c:30 #, c-format msgid "Reason: %u Station: %02X%02X%02X%02X%02X%02X" msgstr "Neden: %u İstasyonu: %02X%02X%02X%02X%02X%02X" #: src/nwn_latest.c:88 msgid "Latest Events" msgstr "Son GeliÅŸmeler" #: src/nwn_latest.c:89 msgid "Disassociate:" msgstr "İliÅŸkilendirilmemiÅŸ:" #: src/nwn_latest.c:96 msgid "Deauthenticate:" msgstr "DoÄŸrulanmamış:" #: src/nwn_latest.c:103 #, fuzzy msgid "Authenticate Fail:" msgstr "DoÄŸrulanmış Hata:" #: src/nwn_latest.c:109 msgid "Last error:" msgstr "Son hata:" #: src/nwn_latest.c:110 msgid "Error:" msgstr "Hata" #: src/stations.c:82 msgid "Not available (device not in AP mode)." msgstr "" #: src/stations.c:92 msgid " # MAC Parent MAC RSSI LQ Sts MACn IP " msgstr "" #: src/stations.c:136 msgid "AssociatedSTAsInfo packet error" msgstr "İliÅŸkiliSTAbilgi paketi hatası" #: 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: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: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" #, fuzzy #~ msgid "" #~ "(Y - Yes; N - No (it's safer to answer No, unless you really need this.)" #~ msgstr "(Y - Evet; " #, fuzzy #~ msgid "Determining AP type. Please wait..." #~ msgstr "AP' den veri alınıyor. Lütfen bekleyin." #, fuzzy #~ msgid "Regulation domain: %s [%d]" #~ msgstr "Düzenleme Alanı: %s" #, fuzzy #~ msgid "(Y - Yes; N - No (it's safer to answer No.)" #~ msgstr "(Y - Evet; N - Hayır (Hayır yanıtı daha güvenlidir.)" #~ msgid "Unable to get data from AP. Press Q to continue." #~ msgstr "AP'den veri alınamıyor. Devam etmek için Q'ya basınız." #~ msgid "Q - quit to menu." #~ msgstr "Q - menüye dönüş" #~ msgid "pipe error. Press any key." #~ msgstr "ardışık hata. Bir tuÅŸa basınız." #~ msgid "fork error. Press any key." #~ msgstr "çatal hata. Bir tuÅŸa basınız." #~ msgid "pipe error. Press any key" #~ msgstr "ardışık hata. Bir tuÅŸa basınız." #~ msgid "fcntl error. Press any key" #~ msgstr "fcntl hatası. Bir tuÅŸa basınız" #~ msgid "fork error. Press any key" #~ msgstr "çatal hata. Bir tuÅŸa basınız" #, fuzzy #~ msgid "Id MAC address" #~ msgstr "Id MAC adresi" #~ msgid "on" #~ msgstr "açma" #~ msgid "Mac Address: %02X%02X%02X%02X%02X%02X" #~ msgstr "Mac adresi: %02X%02X%02X%02X%02X%02X" #~ msgid "Transmit Antenna: [O] Left %3s, [P] Right %3s" #~ msgstr "İletim Anteni: (0) Sol %3s, (P) SaÄŸ %3s" #~ msgid "Receive Antenna: [U] Left %3s, [I] Right %3s" #~ msgstr "Alış Anteni: (U) Sol %3s, (I) SaÄŸ %3s" #~ msgid "Diversity Select: [T] Left %3s, [Y] Right %3s" #~ msgstr "ÇeÅŸitleme Seçimi: (T) Sol %3s, (Y] SaÄŸ %3s" #~ msgid "Write configuration to AP done. Press any key to continue." #~ msgstr "" #~ "Tamamlanmış AP' ye yapılandırma yazınız. Devam etmek için bir tuÅŸa " #~ "basınız. " #~ msgid "Invalid multicast address. Press any key." #~ msgstr "Geçersiz çoÄŸa gönderim adresi. Bir tuÅŸa basınız." #~ msgid "Searching please wait..." #~ msgstr "Arıyor lütfen bekleyin..." #~ msgid "No Access Points found." #~ msgstr "EriÅŸim Noktası bulunamadı." #~ msgid "[R] Remote Mac addr: %02X%02X%02X%02X%02X%02X" #~ msgstr "[R] uzak mac adresi: %02X%02X%02X%02X%02X%02X" #~ msgid "[T] Test Mode: Off" #~ msgstr "[T] Test Kipi: Kapalı" #~ msgid "Using this option may cause lost of current configuration." #~ msgstr "Bu seçeneÄŸi kullanmak mevcut birçok yapılandırmayı yokedebilir." #~ msgid "Output Signal Power Level" #~ msgstr "Çıkış Sinyali Gücü Seviyesi" #~ msgid "" #~ "Getting known AP's info need to reboot you AP and may cause lost of " #~ "current configuration." #~ msgstr "" #~ "Tanımlanan AP bilgisi AP önyüklemesi gerektirmektedir ve bu mevcut " #~ "yapılandırmada kayıplara yol açabilir. " #~ msgid "CN: Channel; RSSI: Signal Strenght; LQ: Link Quality" #~ msgstr "CN: Kanal; RSSI: Sinyal Gücü; LQ: BaÄŸlantı Kalitesi" #~ msgid "SysInfo:" #~ msgstr "SistemBilgi:" #~ msgid "RegulationDomain: %s" #~ msgstr "DüzenlemeAlanı: %s" ap-utils-1.5/po/uk.po000066400000000000000000001467071117246662700145450ustar00rootroot00000000000000# Wireless Access Point Utilites for Unix ukrainian translation # Copyright (x) 2002-2004 Roman Festchook # This file is distributed under the same license as the ap-utils package. # Roman Festchook , 2002-2004. # msgid "" msgstr "" "Project-Id-Version: ap-utils 1.4.1\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 \n" "Language-Team: UK \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=koi8-u\n" "Content-Transfer-Encoding: 8bit\n" "Report-Msgid-Bugs-To: \n" #: lib/aps.c:30 msgid "Known Access Points" msgstr "÷¦ÄÏͦ ÔÏÞËÉ ÄÏÓÔÕÐÕ" #: lib/aps.c:130 msgid "Your Access Point is not in \"AP client\" mode => getting" msgstr "÷ÁÛÁ ÔÏÞËÁ ÄÏÓÔÕÐÕ ÎÅ Õ ÒÅÖÉͦ ë̦¤ÎÔÁ, ÏÔÒÉÍÁÎÎÑ ÄÁÎÎÉÈ" #: lib/aps.c:133 msgid "up-to-date \"Known APs\" info requires your AP to be" msgstr "ÐÒÏ ×¦ÄÏͦ ÔÏÞËÉ ÄÏÓÔÕÐÕ ×ÉÍÁÇÁ¤ ÔÉÍÞÁÓÏ×ÏÇÏ ËÏÎÆ¦ÇÕÒÕ×ÁÎÎÑ" #: lib/aps.c:136 msgid "temporarily configured into \"AP client\" mode and rebooted." msgstr "Õ ÒÅÖÉÍ ë̦¤ÎÔÁ ÔÁ ÐÅÒÅÚÁ×ÁÎÔÁÖÅÎÎÑ." #: lib/aps.c:139 msgid "Your AP will be reconfigured back to original mode by this" msgstr "÷ÁÛÕ ÔÏÞËÕ ÄÏÓÔÕÐÕ ÂÕÄÅ ÐÏ×ÅÒÎÅÎÏ ÄÏ ÐÏÞÁÔËÏ×ÏÇÏ ÓÔÁÎÕ ËÏÌÉ" #: lib/aps.c:142 msgid "utility once you quit the \"KnownAP\" view. This, in turn, may" msgstr "÷É ×ÉÊÄÅÔÅ Ú ÒÅÖÉÍÕ \"÷¦ÄÏͦôÏÞËÉ\". ¶ÎËÏÌÉ, ÃÅ ÍÏÖÅ ÓÐÒÉÞÉÎÉÔÉ" #: lib/aps.c:145 msgid "cause loss of Access Point's current configuration." msgstr "×ÔÒÁÔÕ ÐÏÔÏÞÎϧ ËÏÎÆ¦ÇÕÒÁæ§ ÷ÁÛϧ ôÏÞËÉ äÏÓÔÕÐÕ" #: lib/aps.c:149 msgid "Do NOT answer \"Yes\" if you're connected to the Access Point" msgstr "îŠצÄÐÏצÄÁÊÔÅ ôÁË ÑËÝÏ ÷É Ð¦Ä'¤ÄÎÁΦ ÄÏ ÔÏÞËÉ ÄÏÓÔÕÐÕ" #: lib/aps.c:152 msgid "via its wireless port." msgstr "ÞÅÒÅÚ §§ ÒÁĦÏÐÏÒÔ." #: 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:208 msgid "NetworkType" msgstr "ôÉÐ ÍÅÒÅÖ¦" #: lib/aps.c:284 msgid "Infrastructure" msgstr "¶ÎÆÒÁÓÔÒÕËÔÕÒÁ" #: 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:346 msgid "RSSI: Radio Signal Strength Indicator [%]" msgstr "RSSI: ¶ÎÄÉËÁÔÏÒ ÐÏÔÕÖÎÏÓÔ¦ ÓÉÇÎÁÌÕ [%]" #: lib/aps.c:348 lib/aps.c:356 msgid "; LQ: Link Quality [%]" msgstr "; LQ: ñ˦ÓÔØ Ú'¤ÄÎÁÎÎÑ [%]" #: lib/aps.c:354 msgid "RSSI: Radio Signal Strength Indicator [dBm]" msgstr "RSSI: ¶ÎÄÉËÁÔÏÒ ÐÏÔÕÖÎÏÓÔ¦ ÓÉÇÎÁÌÕ [dBm]" #: lib/aps.c:362 msgid "RSSI: Radio Signal Strength Indicator [raw]" msgstr "RSSI: ¶ÎÄÉËÁÔÏÒ ÐÏÔÕÖÎÏÓÔ¦ ÓÉÇÎÁÌÕ [ÎÅÏÂÒÏÂÌÅÎÅ]" #: lib/aps.c:364 msgid "; LQ: Link Q. [raw]" msgstr "; LQ: ñ˦ÓÔØ ̦ÎËÕ [ÎÅÏÂÒÏÂÌÅÎÅ]" #: 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: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:501 lib/ap_search.c:173 #, c-format msgid "Failure in sendto(): %s. Press any key." msgstr "îÅ×iÒÎÉÊ sendto: %s. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: lib/aps.c:510 msgid "You have just initiated the AP scan. Be advised that it may" msgstr "÷É ÚÁÐÕÓÔÉÌÉ ÓËÁÎÕ×ÁÎÎÑ ÄÌÑ ÐÏÛÕËÕ ÔÏÞÏË ÄÏÓÔÕÐÕ. ãÅ ÍÏÖÅ" #: lib/aps.c:513 msgid "take a few seconds for your Access Point to find out some" msgstr "ÚÁÊÎÑÔÉ ÄÅË¦ÌØËÁ ÓÅËÕÎÄ ÄÏËÉ ×ÁÛÁ ÔÏÞËÁ ÄÏÓÔÕÐÕ ÚÎÁÊÄÅ" #: lib/aps.c:516 msgid "values, so expect finishing the scan in about 5 seconds." msgstr "" "ÎÅÏÂȦÄΦ ÄÁÎΦ, ÔÏÖ ÒÁÚÒÁÈÏ×ÕÊÔÅ ÎÁ ÚÁ×ÅÒÛÅÎΦ ÓËÁÎÕ×ÁÎÎÑ ÚÁ 5 ÓÅËÕÎÄ." #: lib/aps.c:519 msgid "Also note that your Access Point stops forwarding the network" msgstr "ôÁËÖ ÚÁÕ×ÁÖÔÅ, ÝÏ ÷ÁÛÁ ÔÏÞËÁ ÄÏÓÔÕÐÕ ÐÒÉÐÉÎѤ ÐÅÒÅÄÁ×ÁÔÉ" #: lib/aps.c:522 msgid "traffic while the scan is in progress, but restores itself" msgstr "ÍÅÒÅÖÅ×ÉÊ ÔÒÁÆ¦Ë ÐÒÉ ÓËÁÎÕ×ÁÎΦ, ÔÁ צÄÎÏ×ÌÀ¤ ÓÅÂÅ Õ ÎÏÒÍÁÌØÎÉÊ" #: lib/aps.c:525 msgid "to normal operation in time ranging up to 1 minute." msgstr "ÒÅÖÉÍ ÒÁÂÏÔÉ ÐÒÉÂÌÉÚÎÏ ÚÁ È×ÉÌÉÎÕ." #: lib/aps.c:528 msgid "Hence, if you are connected to target Access Point via its" msgstr "ôÁËÏÖ, ÑËÝÏ ÷É Ð¦Ä'¤ÄÎÁΦ ÄÏ Ã¦ÏÌØÏ×ϧ ÔÏÞËÉ ÄÏÓÔÕÐÕ ÞÅÒÅÚ §§" #: lib/aps.c:531 msgid "wireless port, you need to wait a bit longer" msgstr "ÒÁÄ¦Ï ÐÏÒÔ, ÔÏ ÷ÁÍ ÐÏÔÒ¦ÂÎÏ ÚÁÖÄÁÔÉ ÔÒÏÈÉ ÄÏ×ÛÅ " #: lib/aps.c:534 msgid "after pressing 'S'." msgstr "ЦÓÌÑ ÎÁÔÉÓËÁÎÎÑ 'S'." #: lib/ap_search.c:48 msgid "Community name: " msgstr "ëÏÍ'ÀΦԦ: " #: lib/ap_search.c:49 #, fuzzy msgid " NUM IP ADDRESS MIB TYPE FW TYPE (VERSION) AP NAME" msgstr " # IP áäòåóá ôéð ¶í'ñ" #: lib/ap_search.c:106 msgid "Please wait while scanning, or press 'Q' to quit." msgstr "úÁÞÅËÁÊÔÅ ÐÏËÉ ÊÄÅ ÐÏÛÕË ÁÂÏ ÎÁÔÉÓÎ¦ÔØ 'Q' ÄÌÑ ×ÉÈÏÄÕ. " #: lib/ap_search.c:122 msgid "Can't set broadcast option on socket. Press any key." msgstr "" "îÅ ÍÏÖÕ ×ÓÔÁÎÏ×ÉÔÉ ÂÒÏÁÄËÁÓÔÏ×ÉÊ ÓÏËÅÔ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: lib/ap_search.c:131 msgid "Can't set multicast membership on socket. Press any key." msgstr "îÅ ÍÏÖÕ ×ÓÔÁÎÏ×ÉÔÉ ÍÕÌØÔÉËÁÓÔÏ×ÉÊ ÓÏËÅÔ. ðÒÏÄÏ×ÖÅÎÎÑ ÂÕÄØ ÑËÁ ËÌÁצÛÁ." #: lib/ap_search.c:138 msgid "Scanning via network interface:" msgstr "ûÕËÁ¤ÍÏ ÞÅÒÅÚ ÍÅÒÅÖÅ×ÉÊ ¦ÎÔÅÒÆÅÊÓ:" #: lib/ap_search.c:139 #, c-format msgid " Index: %i" msgstr " ¶ÎÄÅËÓ: %i" #: lib/ap_search.c:141 #, c-format msgid " Name: %s" msgstr " ¶Í'Ñ: %s" #: lib/ap_search.c:143 #, c-format msgid " IP: %s" msgstr " IP: %s" #: lib/ap_search.c:152 #, c-format msgid "Scanning for AP with MIB type: %s" msgstr "÷ÉÚÎÁÞÁÀ ÔÉÐ áò: %s" #: lib/ap_search.c:378 msgid "Access Points Search" msgstr "ðÏÛÕË ÔÏÞÏË ÄÏÓÔÕÐÕ" #: lib/ap_search.c:396 msgid "realloc() error." msgstr "ðÏÍÉÌËÁ realloc()." #: lib/ap_search.c:408 msgid "Network interface discovery error." msgstr "ðÏÍÉÌËÁ ×ÉÚÎÁÞÅÎÎÑ ÍÅÒÅÖÅ×ÉÈ ¦ÎÔÅÒÆÅÊÓ¦×." #: lib/ap_search.c:483 msgid "No local network interfaces found. Press any key." msgstr "îÅ ÚÎÁÊÄÅÎÏ ÍÅÒÅÖÅ×ÉÈ ¦ÎÔÅÒÆÅÊÓ¦×. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: lib/ap_search.c:485 msgid "No directly reachable Access Points found. Press any key." msgstr "îÅ ÚÎÁÊÄÅÎÏ ÄÏÓÔÕÐÎÉÈ ÎÁÐÒÑÍÕ áò. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: lib/ap_search.c:490 msgid "Single-screen maximum number of APs found." msgstr "úÎÁÊÄÅÎÏ ÍÁËÓÉÍÁÌØÎÕ ÄÌÑ ÐÒÏÇÒÁÍÉ Ë¦ÌØË¦ÓÔØ áò." #: lib/ap_search.c:493 msgid "# - connect to AP; Q - quit" msgstr "# - ЦÄ'¤ÄÎÁÔÉÓÑ ÄÏ AP; Q - ×ÉÊÔÉ" #: lib/ap-utils.h:82 msgid "MAC address: " msgstr "MAC ÁÄÒÅÓÁ: " #: lib/ap-utils.h:83 msgid "[S] SNMP traps: " msgstr "[S] SNMP ÔÒÁÐÉ: " #: lib/ap-utils.h:85 msgid "[C] Frequency channel: " msgstr "[C] þÁÓÔÏÔÎÉÊ ËÁÎÁÌ: " #: lib/ap-utils.h:87 msgid "Receive antenna:" msgstr "ðÒÉÊÍÁÀÞÁ ÁÎÔÅÎÁ:" #: lib/ap-utils.h:88 msgid "[U] Left" msgstr "[U] ì¦×Á" #: lib/ap-utils.h:89 msgid "[I] Right" msgstr "[I] ðÒÁ×Á" #: lib/ap-utils.h:90 msgid "Transmit antenna:" msgstr "ðÅÒÅÄÁÀÞÁ ÁÎÔÅÎÁ:" #: lib/ap-utils.h:91 msgid "[O] Left" msgstr "[O] ì¦×Á" #: lib/ap-utils.h:92 msgid "[P] Right" msgstr "[P] ðÒÁ×Á" #: lib/ap-utils.h:93 msgid "Diversity select:" msgstr "÷ÉÂ¦Ò ÁÎÔÅÎÉ:" #: lib/ap-utils.h:94 msgid "[T] Left" msgstr "[T] ì¦×Á" #: lib/ap-utils.h:95 msgid "[Y] Right" msgstr "[Y] ðÒÁ×Á" #: lib/ap-utils.h:97 msgid "Yes" msgstr "ôÁË" #: lib/ap-utils.h:98 msgid "No" msgstr "î¦" #: lib/ap-utils.h:100 msgid "On" msgstr "ôÁË" #: lib/ap-utils.h:101 msgid "Off" msgstr "î¦" #: lib/ap-utils.h:103 msgid "Basic" msgstr "ïÓÎÏ×ÎÉÊ" #: lib/ap-utils.h:105 msgid "Press any key to continue." msgstr "âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: 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:108 msgid "Unable to write data to AP. Press any key to continue." msgstr "îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÄÁÎΦ × áò. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: lib/ap-utils.h:109 msgid "Unable to retrieve (valid) data from AP. Press any key to continue." msgstr "îÅ ÍÏÖÕ ÏÔÒÉÍÁÔÉ (צÒΦ) ÄÁÎΦ Ú áò. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: 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:111 msgid "Writing data to AP. Please wait..." msgstr "úÁÐÉÓÕÀ ÄÁÎΦ - ÚÁÖÄ¦ÔØ ÂÕÄØ ÌÁÓËÁ..." #: lib/ap-utils.h:112 msgid "Configuration written to the AP. Press any key to continue." msgstr "ëÏÎÆ¦ÇÕÒÁæÀ ÚÁÐÉÓÁÎÏ × áò. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: lib/ap-utils.h:113 msgid "select() function error. Press any key." msgstr "ðÏÍÉÌËÁ ×ÉËÏÎÁÎÎÑ select(). âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: lib/ap-utils.h:114 #, fuzzy msgid "socket() or bind() function error. Press any key." msgstr "ðÏÍÉÌËÁ ×ÉËÏÎÁÎÎÑ select(). âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: 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:119 msgid "Back to main menu" msgstr "ðÏ×ÅÒÎÕÔÉÓÑ ÄÏ ÍÅÎÀ" #: lib/ap-utils.h:120 msgid "Exit program" msgstr "÷ÉÊÔÉ Ú ÐÒÏÇÒÁÍÉ" #: lib/ap-utils.h:121 msgid "Run subshell. To return type 'exit'." msgstr "úÁÐÕÓÔÉÔÉ ÛÅÌÌ. äÌÑ ÐÏ×ÅÒÎÅÎÎÑ ÎÁÂÅÒ¦ÔØ 'exit'." #: 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:124 msgid "Find connected Access Points" msgstr "úÎÁÊÔÉ Ð¦ÄËÌÀÞÅΦ áò" #: lib/ap-utils.h:125 msgid "Set connection options: ip and community" msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒÉ Ú`¤ÄÎÁÎÎÑ" #: lib/ap-utils.h:126 msgid "Set encryption; edit WEP keys" msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÛÉÆÒÕ×ÁÎÎÑ, ÒÅÄÁÇÕ×ÁÔÉ WEP ËÌÀÞ¦" #: lib/ap-utils.h:127 #, fuzzy msgid "Set authorization; edit MAC authorization table" msgstr "÷ÓÔÁÎÏ×ÉÔÉ íáó Á×ÔÏÒÉÚÁæÀ; ÒÅÄÁÇÕ×ÁÔÉ ÔÁÂÌÉÃÀ Á×ÔÏÒÉÚÁæ§" #: lib/ap-utils.h:128 msgid "Set SNMP community/password for access to the AP" msgstr "÷ÓÔÁÎÏ×ÉÔÉ SNMP ËÏÍ'ÀΦԦ/ÐÁÒÏÌØ ÄÌÑ ÄÏÓÔÕÐÕ ÄÏ áò" #: lib/ap-utils.h:129 msgid "Get info about AP hardware and firmware" msgstr "ïÔÒÉÍÁÔÉ ¦ÎÆÏÒÍÁæÀ ÐÒÏ ÁÐÁÒÁÔÎÅ ÔÁ ÐÒÏÇÒÁÍÎÅ ÚÁÂÅÚÐÅÞÅÎÎÑ" #: lib/ap-utils.h:130 msgid "Get wireless port statistics" msgstr "ïÔÒÉÍÁÔÉ ÓÔÁÔÉÓÔÉËÕ ÒÁÄ¦Ï ÐÏÒÔÕ" #: lib/ap-utils.h:131 msgid "Get list of currently associated stations (Access Point clients)" msgstr "ïÔÒÉÍÁÔÉ ÐÅÒÅÌ¦Ë ÁÓÏæÊÏ×ÁÎÉÈ ÓÔÁÎÃ¦Ê (Ë̦¤ÎÔ¦× áò)" #: 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:134 msgid "Set various configuration options" msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒÉ ËÏÎÆ¦ÇÕÒÁæ§" #: lib/ap-utils.h:136 msgid "Associated stations" msgstr "áÓÏæÊÏ×ÁΦ ÓÔÁÎæ§" #: 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:140 msgid "Polling: off" msgstr "ïÐÉÔÕ×ÁÎÎÑ: Φ" #: lib/cmd.c:40 msgid "Restore factory default configuration" msgstr "÷¦ÄÎÏ×ÌÅÎÎÑ ÆÁÂÒ¦ÞÎϧ ËÏÎÆ¦ÇÕÒÁæ§" #: lib/cmd.c:43 msgid "After restoring factory defaults your current configuration" msgstr "ð¦ÓÌÑ ×¦ÄÎÏ×ÌÅÎÎÑ ÆÁÂÒ¦ÞÎϧ ËÏÎÆ¦ÇÕÒÁæ§ ÐÏÔÏÞÎÕ ËÏÎÆ¦ÇÕÒÁæÀ" #: lib/cmd.c:44 msgid "will be lost." msgstr "ÂÕÄÅ ×ÔÒÁÞÅÎÏ." #: lib/cmd.c:63 msgid "Factory default settings loaded. Press any key to continue." msgstr "æÁÂÒ¦ÞΦ ÐÁÒÁÍÅÔÒÉ ×¦ÄÎÏ×ÌÅÎÏ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: lib/cmd.c:71 msgid "Reset Access Point" msgstr "ðÅÒÅÚÁ×ÁÎÔÁÖÉÔÉ áò" #: lib/cmd.c:74 msgid "By reset you'll lose all non-uploaded configuration." msgstr "ðÒÉ ÐÅÒÅÚÁ×ÁÎÔÁÖÅÎΦ ×É ×ÔÒÁÔÉÔÅ ÕÓ¦ ÎÅÁËÔÉצÚÏ×ÁΦ ÚͦÎÉ." #: lib/cmd.c:85 msgid "Access Point reset. Press any key to continue." msgstr "ðÅÒÅÚÁ×ÁÎÔÁÖÅÎÎÑ ×ÉËÏÎÁÎÏ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: lib/cmd.c:117 msgid "Upload configuration" msgstr "áËÔÉצÚÕ×ÁÔÉ ÚͦÎÉ" #: lib/cmd.c:119 msgid "You may need to upload the configuration only if you've" msgstr "áËÔÉצÚÁÃ¦Ñ ÐÏÔÒ¦ÂÎÁ ÑËÝÏ ÚͦÎÅÎÏ ÑË¦ÓØ ÐÁÒÁÍÅÔÒÉ." #: lib/cmd.c:121 msgid "changed some option values before. Using this option may" msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ Ã¦¤§ ËÏÍÁÎÄÉ ÍÏÖÅ ÍÁÔÉ ÎÁÓ̦ÄËÏÍ ×ÔÒÁÔÕ" #: lib/cmd.c:123 msgid "cause loss of your current configuration." msgstr "÷ÁÛϧ ÐÏÔÏÞÎϧ ËÏÎÆ¦ÇÕÒÁæ§." #: lib/cmd.c:135 msgid "Configuration uploaded. Press any key to continue." msgstr "ëÏÎÆ¦ÇÕÒÁæÀ ÁËÔÉצÚÏ×ÁÎÏ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: lib/common.c:32 msgid "Access Point IP-address: " msgstr "¶ò ÁÄÒÅÓÁ áò: " #: lib/common.c:33 msgid "Password (community): " msgstr "ðÁÒÏÌØ (ËÏÍ`ÀΦԦ): " #: lib/common.c:34 msgid "Autodetect AP MIB properties? " msgstr "á×ÔÏÍÁÔÉÞÎÏ ×ÉÚÎÁÞÉÔÉ MIB ÔÉÐ áò? " #: lib/common.c:35 msgid "AP MIB type: " msgstr "ôÉÐ MIB áò: " #: lib/common.c:36 msgid "AP MIB vendor extensions: " msgstr "MIB áò ÒÏÚÛÉÒÅÎÎÑ ×ÉÒÏÂÎÉËÁ: " #: lib/common.c:37 msgid "Do you want to use AP's name as its label? " msgstr "âÁÖÁ¤ÔÅ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ ÎÁÚ×Õ áò ÑË ÊÏÇÏ Í¦ÔËÕ? " #: lib/common.c:38 msgid "Access Point label: " msgstr "í¦ÔËÁ áò: " #: lib/common.c:39 msgid "Save connect-settings: " msgstr "úÂÅÒÅÇÔÉ Ã¦ ÐÁÒÁÍÅÔÒÉ: " #: 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:108 #, c-format msgid "Version %s" msgstr "÷ÅÒÓ¦Ñ %s" #: lib/common.c:111 msgid "Written by Roman Festchook roma@polesye.net" msgstr "á×ÔÏÒ òÏÍÁÎ æÅÝÕË roma@polesye.net" #: lib/common.c:113 #, fuzzy msgid "and Jan Rafaj jr-aputils@cedric.unob.cz" msgstr "þÁÓÔËÏ×Ï Jan Rafaj aputils@cedric.unob.cz" #: lib/common.c:115 #, fuzzy msgid "Copyright (c) 2001-2005" msgstr "Copyright (c) 2001-2004" #: lib/common.c:117 msgid "Roman Festchook and Jan Rafaj" msgstr "òÏÍÁÎ æÅÝÕË ÔÁ Jan Rafaj" #: lib/common.c:120 msgid "This program is distributed under the terms" msgstr "ãÑ ÐÒÏÇÒÁÍÁ ÒÏÚÐÏ×ÓÀÄÖÕ¤ÔØÓÑ ÎÁ ÕÍÏ×ÁÈ" #: lib/common.c:122 msgid "of the GNU General Public License version 2." msgstr "GNU úÁÇÁÌØÎϧ ðÕÂ̦ÞÎϧ ì¦ÃÅÎÚ¦§ ×ÅÒÓ¦§ 2" #: lib/common.c:124 msgid "See the included COPYING file for details." msgstr "ÄÌÑ ¦ÎÆÏÒÍÁæ§ ÄÉ×¦ÔØÓÑ ÆÁÊÌ COPYING" #: lib/common.c:165 msgid "Connect options" msgstr "ïÐæ§ Ú'¤ÄÎÁÎÎÑ" #: lib/common.c:173 msgid "Enter IP address of your Access Point." msgstr "÷×ÅÄ¦ÔØ ¶ò ÁÄÒÅÓÕ ÔÏÞËÉ ÄÏÓÔÕÐÕ." #: lib/common.c:182 msgid "Entered characters will not be displayed for security reason." msgstr "÷×ÅÄÅΦ ÓÉÍ×ÏÌÉ ÎŠצÄÏÂÒÁÖÕÀÔØÓÑ Ú Í¦ÒËÕ×ÁΦ ÂÅÚÐÅËÉ." #: lib/common.c:249 msgid "This label will be stored on HDD (independently on AP name!)." msgstr "í¦ÔËÕ ÂÕÄÅ ÚÂÅÒÅÖÅÎÏ ÎÁ ÖÏÒÓÔËÉÊ ÄÉÓË (ÎÅÚÁÌÅÖÎÏ ×¦Ä ÎÁÚ×É áò)." #: lib/common.c:362 msgid "Trying to probe AP for MIB properties. Please wait..." msgstr "ïÐÉÔÕÀ áò Õ ÐÏÛÕËÕ ×ÌÁÓÔÉ×ÏÓÔÅÊ MIB - ÚÁÖÄ¦ÔØ ÂÕÄØ ÌÁÓËÁ..." #: lib/common.c:391 msgid "" "Unable to determine AP MIB properties (no response from AP). Press any key." msgstr "" "îÅ ÍÏÖÕ ×ÉÚÎÁÞÉÔÉ ÔÉÐ áò MIB (ΊצÄÐÏצÄÁ¤). âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ " "ÐÒÏÄÏ×ÖÅÎÎÑ" #: 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:200 msgid "Choose an AP to connect to" msgstr "÷ÉÂÅÒ¦ÔØ áò ÄÌÑ Ú`¤ÄÎÁÎÎÑ" #: 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:257 msgid "Connect to AP num:" msgstr "ú`ÜÄÎÁÔÉÓÑ Ú áò #:" #: lib/file.c:288 msgid "Delete num:" msgstr "÷ÉÄÁÌÉÔÉ #:" #: lib/file.c:442 msgid "Unable to write stations file. Press any key." msgstr "" "îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÆÁÊÌ ÓÐÉÓËÕ ÓÔÁÎæÊ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: lib/file.c:444 msgid "Stations file succesfully written. Press any key." msgstr "æÁÊÌ ÓÐÉÓËÕ ÓÔÁÎÃ¦Ê ×ÄÁÌÏ ÚÁÐÉÓÁÎÏ. îÁÔÉÓÎ¦ÔØ ÂÕÄØ ÑËÕ ËÌÁצÛÕ." #: lib/input.c:32 msgid "Invalid value. Press any key to continue." msgstr "îÅצÒÎÅ ÚÎÁÞÅÎÎÑ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: 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:460 msgid "Y - Yes; Any other key - No (it's safer to answer No)" msgstr "(Y - ÔÁË; N - Φ (ÂÅÚÐÅÞΦÛŠצÄÐÏצÓÔÉ Î¦)" #: lib/oui.c:6061 msgid "Unknown or Private" msgstr "îÅצÄÏÍÉÊ ÁÂÏ ÐÒÉ×ÁÔÎÉÊ" #: lib/radio.c:26 msgid "" "[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu" msgstr "# - ÐÏÔÕÖΦÓÔØ; UIOPLR - ÁÎÔÅÎÁ; W - ÚÂÅÒÅÇÔÉ; Q - ×ÉÊÔÉ" #: lib/radio.c:28 msgid "Antenna:" msgstr "áÎÔÅÎÁ:" #: lib/radio.c:29 msgid "[L] Left:" msgstr "[L] ì¦×Á" #: lib/radio.c:30 msgid "[R] Right:" msgstr "[R] ðÒÁ×Á" #: lib/radio.c:120 msgid "Radio Configuration" msgstr "ëÏÎÆ¦ÇÕÒÁÃ¦Ñ ÒÁĦÏÐÅÒÅÄÁ×ÁÞÁ" #: lib/radio.c:121 msgid "Output RF signal power level (CR31 register values)" msgstr "ò¦×ÅÎØ ×ÉȦÄÎÏÇÏ ÒÁĦÏÓÉÇÎÁÌÕ (ÚÎÁÞÅÎÎÑ ÒÅǦÓÔÒÕ CR31)" #: lib/radio.c:123 msgid "Key Channel Level" msgstr "# ËÁÎÁÌ Ò¦×ÅÎØ" #: lib/radio.c:279 msgid "" "You can't disable both antennas; unable to save antenna-config. Press any " "key." msgstr "÷É ÎÅ ÍÏÖÅÔÅ ×ÉÍËÎÕÔÉ ÏÂÉÄצ ÁÎÔÅÎÉ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." #: lib/scr.c:157 #, c-format msgid "Current AP: %s Type: %s Ext: %s" msgstr "ðÏÔÏÞÎÉÊ ÐÒÉÓÔÒ¦Ê: %s ôÉÐ: %s òÏÚ: %s" #: lib/set_community.c:27 msgid "Set community/password" msgstr "÷ÓÔÁÎÏ×ÉÔÉ ËÏÍ`ÀΦԦ/ÐÁÒÏÌØ" #: lib/set_community.c:28 msgid "Key Access level" msgstr "# ò¦×ÅÎØ ÄÏÓÔÕÐÕ" #: lib/set_community.c:29 msgid "Community/Password" msgstr "ëÏÍ'ÀΦԦ/ðÁÒÏÌØ" #: lib/set_community.c:30 msgid "[U] User " msgstr "[U] ëÏÒÉÓÔÕ×ÁÞ " #: lib/set_community.c:31 msgid "[A] Administrator " msgstr "[A] áÄͦΦÓÔÒÁÔÏÒ " #: lib/set_community.c:32 msgid "[M] Manufacturer " msgstr "[M] ÷ÉÒÏÂÎÉË " #: lib/set_community.c:33 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 "óÔÁÔÉÓÔÉËÁ ÅÚÅÒÎÅÔ ÐÏÒÔÕ" #: lib/stat.c:30 msgid "Wireless Statistics" msgstr "óÔÁÔÉÓÔÉËÁ ÒÁĦÏÐÏÒÔÕ" #: lib/stat.c:98 msgid "EthRxStat packet error. Press any key." msgstr "ðÏÍÉÌËÏ×ÉÊ ÐÁËÅÔ EthRxStat. îÁÔÉÓÎ¦ÔØ Q ÄÌÑ ×ÉÈÏÄÕ." #: lib/stat.c:111 msgid "EthTxStat packet error. Press any key." msgstr "ðÏÍÉÌËÏ×ÉÊ ÐÁËÅÔ EthTxStat. îÁÔÉÓÎ¦ÔØ Q ÄÌÑ ×ÉÈÏÄÕ." #: lib/stat.c:115 msgid "Received:" msgstr "ðÒÉÊÎÑÔÏ:" #: lib/stat.c:116 msgid "Transmitted:" msgstr "ðÅÒÅÄÁÎÏ:" #: lib/stat.c:270 msgid "WirelessStat packet error. Press any key." msgstr "ðÏÍÉÌËÏ×ÉÊ ÐÁËÅÔ WirelessStat. îÁÔÉÓÎ¦ÔØ Q ÄÌÑ ×ÉÈÏÄÕ." #: lib/sysinfo.c:29 msgid "System Description: " msgstr "ïÐÉÓ ÓÉÓÔÅÍÉ:" #: lib/sysinfo.c:30 msgid "System Info" msgstr "óÉÓÔÅÍÎÁ ¦ÎÆÏÒÍÁæÑ" #: 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:172 #, fuzzy, c-format msgid "Operational mode: %s" msgstr "[O] òÅÖÉÍ ÒÏÂÏÔÉ: " #: lib/sysinfo.c:182 #, fuzzy msgid "Product name: " msgstr "¶Í`Ñ ÐÒÏÄÕËÔÕ:" #: lib/sysinfo.c:186 #, c-format msgid "Product type: %u" msgstr "ôÉÐ ÐÒÏÄÕËÔÕ: %u" #: lib/sysinfo.c:189 #, fuzzy msgid "OEM name: " msgstr "OEM ¶Í`Ñ:" #: lib/sysinfo.c:196 #, c-format msgid "Hardware revision: %u" msgstr "áÐÁÒÁÔÎÁ ×ÅÒÓ¦Ñ: %u" #: lib/sysinfo.c:204 #, c-format msgid "Info structure version: %u" msgstr "÷ÅÒÓ¦Ñ ÓÔÒÕËÔÕÒÉ: %u" #: 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:224 #, c-format msgid "Uptime: %u days, %02u:%02u:%02u hours:mins:secs" msgstr "îÁÐÒÁÃØÏ×ÁÎÏ: %u ÄΦ×, :%02u:%02u.%02u ÇÏÄ:È×:ÓÅË" #: lib/sysinfo.c:312 msgid "FHSS 2.4 GHz" msgstr "FHSS 2.4 ççÃ" #: lib/sysinfo.c:312 msgid "DSSS 2.4 GHz" msgstr "ûðó 2.4 ççÃ" #: lib/sysinfo.c:312 msgid "IR Baseband" msgstr "¶ÎÆÒÁÞÅÒ×ÏÎÉÊ" #: lib/sysinfo.c:313 msgid "Commercial range 0..40 C" msgstr "ëÏÍÅÒæÊÎÉÊ Ä¦ÁÐÁÚÏÎ 0..40 C" #: lib/sysinfo.c:314 msgid "Industrial range -30..70 C" msgstr "¶ÎÄÕÓÔÒ¦ÁÌØÎÉÊ Ä¦ÁÐÁÚÏÎ -30..70 C" #: lib/sysinfo.c:317 msgid "manual" msgstr "×ÒÕÞÎÕ" #: lib/sysinfo.c:317 msgid "notsupported" msgstr "ΊЦÄÔÒÉÍÕ¤ÔØÓÑ" #: lib/sysinfo.c:317 msgid "dynamic" msgstr "ĦÎÁͦÞÎÏ" #: lib/sysinfo.c:373 msgid "Manufacturer:" msgstr "÷ÉÒÏÂÎÉË:" #: lib/sysinfo.c:378 msgid "Manufacturer ID:" msgstr "ID ×ÉÒÏÂÎÉËÁ:" #: lib/sysinfo.c:389 msgid "Product Name:" msgstr "¶Í`Ñ ÐÒÏÄÕËÔÕ:" #: lib/sysinfo.c:395 msgid "Product ID:" msgstr "ID ÐÒÏÄÕËÔÕ:" #: lib/sysinfo.c:401 msgid "Product Version:" msgstr "÷ÅÒÓ¦Ñ ÐÒÏÄÕËÔÕ:" #: lib/sysinfo.c:407 #, c-format msgid "PHYType: %s" msgstr "ôÉÐ PHY: %s" #: lib/sysinfo.c:410 #, c-format msgid "Temperature: %s" msgstr "ôÅÍÐÅÒÁÔÕÒÁ: %s" #: lib/sysinfo.c:418 #, c-format msgid "Regulatory Domain: %s" msgstr "òÅÇÕÌÑÔÏÒΦ ÏÂÍÅÖÅÎÎÑ: %s" #: lib/sysinfo.c:419 msgid "FCC (USA)" msgstr "FCC (óûá)" #: lib/sysinfo.c:420 msgid "DOC (Canada)" msgstr "DOC (ëÁÎÁÄÁ)" #: lib/sysinfo.c:421 msgid "ETSI (Europe)" msgstr "ETSI (´×ÒÏÐÁ)" #: lib/sysinfo.c:422 msgid "Spain" msgstr "¶ÓÐÁΦÑ" #: lib/sysinfo.c:423 msgid "France" msgstr "æÒÁÎæÑ" #: lib/sysinfo.c:424 msgid "MKK (Japan)" msgstr "MKK (ñÐÏΦÑ)" #: lib/sysinfo.c:427 #, c-format msgid "Transmit Power: %u mW" msgstr "ðÏÔÕÖΦÓÔØ: %u Í÷Ô" #: lib/sysinfo.c:457 #, c-format msgid "WEP implemented: %s" msgstr "ð¦ÄÔÒÉÍËÁ WEP: %s" #: lib/sysinfo.c:460 #, c-format msgid "Diversity: %s" msgstr "÷ÉÂ¦Ò ÁÎÔÅÎÉ: %s" #: lib/sysinfo.c:488 #, c-format msgid "Uptime: %u:%02u:%02u.%02u" msgstr "îÁÐÒÁÃØÏ×ÁÎÏ: %u:%02u:%02u.%02u" #: lib/sysinfo.c:508 #, c-format msgid "IP Address: %s" msgstr "IP ÁÄÒÅÓÁ: %s" #: lib/test.c:26 msgid "[T] Test mode: " msgstr "[T] ôÅÓÔÏ×ÉÊ ÒÅÖÉÍ: " #: lib/test.c:27 msgid "[A] Antenna: " msgstr "[A] áÎÔÅÎÁ: " #: lib/test.c:28 msgid "[S] Signal level: " msgstr "[S] ò¦×ÅÎØ ÓÉÇÎÁÌÕ: " #: lib/test.c:29 msgid "[R] Rate: " msgstr "[R] û×ÉÄ˦ÓÔØ: " #: lib/test.c:30 msgid "[F] TxFiler: " msgstr "[F] úÁÐÏ×ÎÀ×ÁÞ ÐÅÒÅÄÁÞ¦: " #: lib/test.c:31 msgid "[O] Command: " msgstr "[O] ëÏÍÁÎÄÁ: " #: lib/test.c:32 msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu" msgstr "T - ÒÅÖÉÍ ÔÅÓÔÕ ÔÁË/Φ; CASRFO - ×ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒ; Q - ×ÉÊÔÉ × ÍÅÎÀ" #: 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 "÷ÄÁÌÉÈ ×¦ËÏÎ: 0 îÅ×ÄÁÌÉÈ ×¦ËÏÎ: 0" #: lib/test.c:195 #, c-format msgid "Success Frames: %lu Failed Frames: %lu" msgstr "÷ÄÁÌÉÈ ×¦ËÏÎ: %lu îÅ×ÄÁÌÉÈ ×¦ËÏÎ: %lu" #: lib/wep.c:28 msgid "Privacy Settings" msgstr "ðÁÒÁÍÅÔÒÉ ÛÉÆÒÕ×ÁÎÎÑ" #: lib/wep.c:29 msgid "[E] Standard encryption mechanism: " msgstr "[E] óÔÁÎÄÁÒÔÎÅ ÛÉÆÒÕ×ÁÎÎÑ: " #: lib/wep.c:30 msgid "[A] Allow unencrypted: " msgstr "[A] äÏÚ×ÏÌÉÔÉ ÎÅÛÉÆÒÏ×ÁΦ: " #: lib/wep.c:31 msgid "[K] Default WEP key: " msgstr "[K] WEP ËÌÀÞ ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ: " #: lib/wep.c:32 msgid "[P] Public key: " msgstr "[P] ðÕÂ̦ÞÎÉÊ ËÌÀÞ: " #: lib/wep.c:85 msgid "EK1234 - set; W - write conf; Q - quit to menu" msgstr "" "EK1234 - ×ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒ; W - ÚÁÐÉÓÁÔÉ ËÏÎÆ¦ÇÕÒÁæÀ; Q - ×ÉÊÔÉ × ÍÅÎÀ." #: lib/wep.c:94 lib/wep.c:263 msgid "Key WEP" msgstr "# WEP" #: lib/wep.c:101 msgid "Hint! Confused by WEP key values? See man ap-config for info..." msgstr "ðÏÒÁÄÁ! äÉ×ÕÀÔØ ÚÎÁÞÅÎÎÑ WEP-ËÌÀÞ¦×? äÉ×ÉÓØ man ap-config..." #: lib/wep.c:247 msgid "AEPK1234 - set options; W - write conf; Q - quit to menu" msgstr "AEPK1234 - ×ÓÔÁÎÏ×ÉÔÉ; W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ" #: lib/wlan.c:27 msgid "[E] ESSID: " msgstr "[E] ESSID (¦Í'Ñ ÍÅÒÅÖ¦): " #: lib/wlan.c:28 msgid "[N] AP name: " msgstr "[N] ¶Í`Ñ AP: " #: lib/wlan.c:30 msgid "[K] AP contact: " msgstr "[K] ëÏÎÔÁËÔÎÁ ÐÅÒÓÏÎÁ: " #: lib/wlan.c:31 msgid "[L] AP location: " msgstr "[L] í¦ÓÃÅÒÏÚÔÁÛÕ×ÁÎÎÑ: " #: lib/wlan.c:33 msgid "[R] RTS threshold: " msgstr "[R] íÅÖÁ RTS: " #: lib/wlan.c:34 msgid "[F] Fragmentation threshold: " msgstr "[F] íÅÖÁ ÆÒÁÇÍÅÎÔÁæ§: " #: lib/wlan.c:35 msgid "[P] Preambule type: " msgstr "[P] ôÉÐ ÐÒÅÁÍÂÕÌÉ: " #: lib/wlan.c:36 msgid "[A] Auth type: " msgstr "[A] á×ÔÏÒÉÚÁæÑ: " #: 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 "[U] á×ÔÏÍÁÔÉÞÎÏ ÐÅÒÅ×ÓÔÁÎÏ×ÌÀ×ÁÔÉ Û×ÉÄ˦ÓÔØ: " #: lib/wlan.c:41 msgid "[S] Insert ESSID in broadcast packets: " msgstr "[S] ÷ÓÔÁ×ÌÑÔÉ ESSID ÄÏ ÂÒÏÁÄËÁÓÔÏ×ÉÈ ÐÁËÅÔ¦×: " #: 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 "[I] í¦ÖÎÁÒÏÄÎÉÊ ÒÏÕͦÎÇ: " #: lib/wlan.c:46 msgid "[B] Beacon period (msec): " msgstr "[B] ðÅÒ¦ÏÄ ÂÅËÏÎ¦× (ÍÓÅË): " #: lib/wlan.c:47 msgid "[D] DTIM sending interval (beacons): " msgstr "[D] ¶ÎÔÅÒ×ÁÌ ×¦ÄÐÒÁ×ËÉ DTIM (ÂÅËÏÎÉ): " #: lib/wlan.c:48 #, fuzzy msgid "[T] SIFS time (2nd+ interframe spacing, usec): " msgstr "[T] þÁÓ SIFS (ÍÓÅË): " #: lib/wlan.c:49 msgid "[key] - set option; W - write conf; Q - quit to menu" msgstr "# - ×ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒ; W - ÚÁÐÉÓÁÔÉ ËÏÎÆ¦ÇÕÒÁæÀ; Q - ×ÉÊÔÉ × ÍÅÎÀ" #: 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 "UIOPTY - ÁÎÔÅÎÁ; SCANLEDFR1234 - ×ÓÔÁÎÏ×ÉÔÉ; W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ" #: src/ap-auth.c:32 src/auth.c:28 msgid "AuthorizedMacTableString packet error" msgstr "ðÏÍÉÌËÏ×ÉÊ ÐÁËÅÔ 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" "÷ÉËÏÒÉÓÔÁÎÎÑ:\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 - ip ÁÄÒÅÓÁ ÔÏÞËÉ ÄÏÓÔÕÐÕ\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 ËÏÍ`ÀΦԦ - 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 - ÎÁÄÒÕËÕ×ÁÔÉ ÃÅÊ ÅËÒÁÎ ÄÏÐÏÍÏÇÉ\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 (c) 2002-2003 òÏÍÁÎ æÅÝÕË\n" "\n" #: src/ap-auth.c:138 src/ap-mrtg.c:132 #, fuzzy msgid "Error: invalid IP-address.\n" msgstr "îÅצÒÎÁ ¶ò ÁÄÒÅÓÁ\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-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 #, fuzzy 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 #, 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 ireless, thernet, associated tations " "or 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 ireless, thernet, associated tations " "or 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 \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:190 #, c-format msgid "Unable to change to uid %d." msgstr "îÅ ÍÏÖÕ ÐÅÒÅÚÁÐÕÓÔÉÔÉÓØ Ð¦Ä uid %d. " #: 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: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.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:40 msgid "[U] Isolate wireless clients (unicast traffic): " msgstr "[U] ¶ÚÏÌÀ×ÁÔÉ ÒÁĦÏË̦¤ÎÔ¦× (ÕΦËÁÓÔÏצ ÐÁËÕÎËÉ): " #: 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 "ïÂÉÄ×Á" #: src/nwn_advanced.c:60 #, c-format msgid "[D] DB Station Timeout: %d" msgstr "[D] ðÏÎÏ×ÌÅÎÎÑ óÔÁÎæÊ: %d" #: src/nwn_advanced.c:62 #, c-format msgid "[A] ACK Window: %d" msgstr "[A] ÷¦ËÎÏ ACK : %d" #: src/nwn_advanced.c:65 msgid "Advanced Options" msgstr "óÐÅæÁÌØÎ¦ ÐÁÒÁÍÅÔÒÉ" #: src/nwn_advanced.c:66 msgid "DA - options; W - write conf; Q - quit to menu" msgstr "DA - ×ÓÔÁÎÏ×ÉÔÉ; W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ" #: src/nwn_latest.c:30 #, c-format msgid "Reason: %u Station: %02X%02X%02X%02X%02X%02X" msgstr "ðÒÉצÄ: %u óÔÁÎæÑ: %02X%02X%02X%02X%02X%02X" #: src/nwn_latest.c:88 msgid "Latest Events" msgstr "ïÓÔÁÎΦ ÐÏĦ§" #: src/nwn_latest.c:89 msgid "Disassociate:" msgstr "äÅÁÓÏæÁæÑ:" #: src/nwn_latest.c:96 msgid "Deauthenticate:" msgstr "äÅÁÕÔÅÎÔÉÆ¦ËÁæÑ:" #: src/nwn_latest.c:103 msgid "Authenticate Fail:" msgstr "îÅ×ÄÁÌÁ ÁÕÔÅÎÔÉÆ¦ËÁæÑ:" #: src/nwn_latest.c:109 msgid "Last error:" msgstr "ïÓÔÁÎÎÑ ÐÏÍÉÌËÁ:" #: src/nwn_latest.c:110 msgid "Error:" msgstr "ðÏÍÉÌËÁ:" #: src/stations.c:82 msgid "Not available (device not in AP mode)." msgstr "" #: src/stations.c:92 #, fuzzy msgid " # MAC Parent MAC RSSI LQ Sts MACn IP " msgstr " # MAC MAC ÂÁÚÉ RSSI óÔÁÔÕ MACn IP " #: 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:193 msgid "Arrows - scroll; S - save to file; Q - return; Other key - refresh" msgstr "óÔÒ¦ÌËÉ - ÐÒÏËÒÕÔËÁ; S - ÚÂÅÒÅÇÔÉ Õ ÆÁÊÌ; Q - ×ÉÊÔÉ × ÍÅÎÀ." #: 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 "" #~ 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 " ap-utils-1.5/src/000077500000000000000000000000001117246662700137205ustar00rootroot00000000000000ap-utils-1.5/src/Makefile.am000066400000000000000000000026071117246662700157610ustar00rootroot00000000000000# # Makefile.am from Wireless Access Point Utilites for Unix # # Copyright (c) 2002 Roman Festchook # # 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 # DEFS = -DLOCALEDIR=\"$(datadir)/locale\" -DHAVE_CONFIG_H INCLUDES = -I../lib -I../intl -I.. LIBS = @INTLLIBS@ @LIBS@ bin_PROGRAMS = ap-config ap-mrtg ap-auth ap-tftp ap-rrd sbin_PROGRAMS = ap-trapd 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_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 ap-utils-1.5/src/Makefile.in000066400000000000000000000427401117246662700157740ustar00rootroot00000000000000# Makefile.in generated by automake 1.7.8 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Makefile.am from Wireless Access Point Utilites for Unix # # Copyright (c) 2002 Roman Festchook # # 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 # srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSESLIBS = @CURSESLIBS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = -DLOCALEDIR=\"$(datadir)/locale\" -DHAVE_CONFIG_H DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GENCAT = @GENCAT@ GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLBISON = @INTLBISON@ INTLLIBS = @INTLLIBS@ INTLOBJS = @INTLOBJS@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @INTLLIBS@ @LIBS@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ ac_ct_CC = @ac_ct_CC@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ INCLUDES = -I../lib -I../intl -I.. bin_PROGRAMS = ap-config ap-mrtg ap-auth ap-tftp ap-rrd sbin_PROGRAMS = ap-trapd 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_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) \ ap-tftp$(EXEEXT) ap-rrd$(EXEEXT) sbin_PROGRAMS = ap-trapd$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(sbin_PROGRAMS) 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.$(OBJEXT) \ bridge.$(OBJEXT) nwn_advanced.$(OBJEXT) nwn_latest.$(OBJEXT) \ stations.$(OBJEXT) aplink.$(OBJEXT) ap_config_OBJECTS = $(am_ap_config_OBJECTS) ap_config_DEPENDENCIES = ../lib/libap.a ap_config_LDFLAGS = 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) ap_trapd_DEPENDENCIES = ap_trapd_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-auth.Po ./$(DEPDIR)/ap-config.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_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_rrd_SOURCES) $(ap_tftp_SOURCES) $(ap_trapd_SOURCES) all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ rm -f $(DESTDIR)$(bindir)/$$f; \ done clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(sbindir) @list='$(sbin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f"; \ $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f || exit 1; \ else :; fi; \ done uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(sbin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(sbindir)/$$f"; \ rm -f $(DESTDIR)$(sbindir)/$$f; \ done clean-sbinPROGRAMS: -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) ap-auth$(EXEEXT): $(ap_auth_OBJECTS) $(ap_auth_DEPENDENCIES) @rm -f ap-auth$(EXEEXT) $(LINK) $(ap_auth_LDFLAGS) $(ap_auth_OBJECTS) $(ap_auth_LDADD) $(LIBS) ap-config$(EXEEXT): $(ap_config_OBJECTS) $(ap_config_DEPENDENCIES) @rm -f ap-config$(EXEEXT) $(LINK) $(ap_config_LDFLAGS) $(ap_config_OBJECTS) $(ap_config_LDADD) $(LIBS) 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) mostlyclean-compile: -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c @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)/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@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stations.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` uninstall-info-am: ETAGS = etags ETAGSFLAGS = CTAGS = ctags CTAGSFLAGS = tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$tags$$unique" \ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(sbindir) install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-sbinPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: info: info-am info-am: install-data-am: install-exec-am: install-binPROGRAMS install-sbinPROGRAMS install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-info-am \ uninstall-sbinPROGRAMS .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-sbinPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-exec install-exec-am \ install-info install-info-am install-man install-sbinPROGRAMS \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-binPROGRAMS \ uninstall-info-am uninstall-sbinPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ap-utils-1.5/src/ap-auth.c000066400000000000000000000227611117246662700154330ustar00rootroot00000000000000/* * ap-auth.c from Access Point SNMP Utils for Linux * * Copyright (c) 2004 Teemu Kiviniemi * * 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 #include #include #include #include #include #include #if defined (__GLIBC__) #include #endif #include "ap-utils.h" #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; char *community = NULL; struct in_addr ap_ip; 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(_("-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")); printf(_("-u filename - upload list of authorised MAC addresses from" " a file to AP\n")); printf(_("-h - print this help screen\n\n")); printf(_("ap-auth %s Copyright (c) 2004 Teemu Kiviniemi\n\n"), VERSION); } int write_addr (FILE *f, const struct MacListStat *n) { if (fprintf (f, "%02x%02x%02x%02x%02x%02x\n", n->addr[0], n->addr[1], n->addr[2], n->addr[3], n->addr[4], n->addr[5]) != 13) return 1; return 0; } 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; } int main(int argc, char **argv) { extern char *optarg; extern int optind; extern int opterr; extern int optopt; int opt = 0; int mode = 0; /* 1 = download, 2 = upload */ FILE *f; char *filename = NULL; 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 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 do { opterr = 0; switch (opt = getopt(argc, argv, "i:c:d:u:")) { case 'i': 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; case 'c': community = malloc(strlen(optarg) + 1); strncpy(community, optarg, strlen(optarg) + 1); break; case 'd': filename = malloc(strlen(optarg) + 1); strncpy(filename, optarg, strlen(optarg) + 1); mode = 1; break; case 'u': filename = malloc(strlen(optarg) + 1); strncpy(filename, optarg, strlen(optarg) + 1); mode = 2; break; case -1: break; default: usage(); return 1; } } while (opt != -1); if (!community) { usage(); 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 (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_ATMEL; varbinds[0].len_oid = sizeof(AutorizedMac_ATMEL); varbinds[0].value = (char *) &get; varbinds[0].len_val = 12; varbinds[0].type = STRING_VALUE; if (snmp(varbinds, 1, SET) <= 0) { printf(ERR_RET); printf("\n"); return 1; } 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); } else { 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 *) 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++; } f = fopen(filename, "w"); if(f == NULL) { perror(ERROR_FILE_OPEN); return 1; } if (first == NULL) { /* no authorised addresses */ } else { curr = first; while (curr != NULL) { if(write_addr (f, curr) != 0) { perror(ERROR_FILE_WRITE); return 1; } curr = curr->next; } } if(fclose(f) != 0) { perror(ERROR_FILE_CLOSE); return 1; } break; case 2: /* upload */ f = fopen(filename, "r"); if (f == NULL) { perror(ERROR_FILE_OPEN); return 1; } 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); printf("\n"); return 1; } mac_tmp[12] = '\0'; if (get_addr (&ml_tmp, mac_tmp) != 0) { printf(ERROR_DATA); printf("\n"); return 1; } 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, &ml_tmp, sizeof (struct MacListStat)); curr->next = NULL; mac_num++; } } fclose(f); curr = first; i = 1; while (curr != NULL) { get.Action = 0x01; rshort(get.Action); get.NumOfAllTableAddresses = mac_num; rshort(get.NumOfAllTableAddresses); get.NumOfCurrentAddress = i; rshort(get.NumOfCurrentAddress); memcpy(get.MacAddress, curr->addr, 6); 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; if (snmp(varbinds, 1, SET) <= 0) { printf(ERR_RET); printf("\n"); return 1; } if (varbinds[0].len_val != 12) { printf(ERROR_PACKET); printf("\n"); return 1; } curr = curr->next; i++; } break; default: usage(); return 1; } curr = first; while (curr != NULL) { curr = curr->next; free (first); first = curr; } if (community) free(community); if (filename) free(filename); return 0; } ap-utils-1.5/src/ap-config.c000066400000000000000000000173371117246662700157420ustar00rootroot00000000000000/* * ap-config.c from Wireless Access Point Utilites for Unix * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include #include #include #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 atmel410_filter = 0, wait_mode = WAIT_FOREVER; struct in_addr ap_ip; char *prog_title = "Wireless Access Point Configurator"; char set_oeminfo_allowed = 0; void config_menu() { struct umitems umenu_atmel[] = { {_("Bridging"), _("Set bridging and IP-related options"), bridging, 0}, {_("Wireless"), _("Set wireless options"), atmel_wireless, 0}, {_("Privacy"), MENU_ENCRYPT, wep, 0}, {_("Auth"), MENU_AUTH, atmel_auth, 0}, {_("Community"), MENU_COMMUNITY, AuthorizedSettings, 0}, {_("Radio"), _("Set radio signal power and antenna options"), power, 0}, {"..", MAIN_MENU, NULL, 0}, {0, 0, NULL, 0} }; struct umitems umenu_nwn[] = { {_("General"), _("Set general options"), nwn_wireless, 0}, {_("Advanced"), _("Set advanced options"), advanced, 0}, {_("Privacy"), MENU_ENCRYPT, nwn_wep, 0}, {_("MAC auth"), MENU_AUTH, nwn_auth_mac, 0}, {_("Community"), MENU_COMMUNITY, AuthorizedSettings, 0}, {"..", MAIN_MENU, NULL, 0}, {0, 0, NULL, 0} }; switch (ap_type) { case ATMEL410: case ATMEL12350: set_oeminfo_allowed++; uni_menu(umenu_atmel, sizeof(umenu_atmel) / sizeof(umenu_atmel[0])); set_oeminfo_allowed--; break; case NWN: uni_menu(umenu_nwn, sizeof(umenu_nwn) / sizeof(umenu_nwn[0])); break; } } void command_menu() { struct umitems command_umenu_atmel[] = { {_("Upload"), _("Activate current configuration"), upload, 0}, {_("Defaults"), _("Restore factory default settings"), defaults, 0}, {_("Reset"), _("Reset AP. All not uploaded configuration will be lost"), reset, 0}, {_("TestMode"), _("Put Access Point in test mode"), test, 0}, {"..", MAIN_MENU, NULL, 0}, {0, 0, NULL, 0} }; struct umitems command_umenu_nwn[] = { {_("Reset"), _("Reset AP."), reset, 0}, {"..", MAIN_MENU, NULL, 0}, {0, 0, NULL, 0} }; switch (ap_type) { case ATMEL410: case ATMEL12350: uni_menu(command_umenu_atmel, sizeof(command_umenu_atmel) / sizeof(command_umenu_atmel[0])); break; case NWN: uni_menu(command_umenu_nwn, sizeof(command_umenu_nwn) / sizeof(command_umenu_nwn[0])); break; } } void stat_menu() { struct umitems umenu_atmel[] = { {_("SysInfo"), MENU_SYSINFO, atmel_sysinfo, 0}, {_("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} }; struct umitems umenu_nwn[] = { {_("SysInfo"), MENU_SYSINFO, nwn_sysinfo, 0}, {_("Wireless"), MENU_WIRELESS, nwn_wireless_stat, 0}, {_("Stations"), MENU_STAS, nwn_stations, 0}, {_("Latest"), _("Get info about latest events"), latest, 0}, {"..", MAIN_MENU, NULL, 0}, {0, 0, NULL, 0} }; switch (ap_type) { case ATMEL410: case ATMEL12350: uni_menu(umenu_atmel, sizeof(umenu_atmel) / sizeof(umenu_atmel[0])); break; case NWN: uni_menu(umenu_nwn, sizeof(umenu_nwn) / sizeof(umenu_nwn[0])); break; } } void _auth() { if (get_opts() == 0) connect_options((unsigned long) NULL, (int) NULL); } void main_menu() { struct umitems config_umenu[] = { {_("Info"), MENU_INFO, stat_menu, 1}, {_("Config"), MENU_CONFIG, config_menu, 1}, {_("Commands"), _("Execute commands on Access Point"), command_menu, 1}, {_("Connect"), MENU_CONNECT, _auth, 0}, {_("Search"), MENU_SEARCH, ap_search, 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} }; uni_menu(config_umenu, sizeof(config_umenu) / sizeof(config_umenu[0])); } int main( /*int argc, char **argv */ ) { int i; WINDOW *win_for_title; char message[100]; #ifdef HAVE_GETTEXT /* locale support init */ setlocale(LC_ALL, ""); bindtextdomain("ap-utils", LOCALEDIR); textdomain("ap-utils"); #endif initscr(); if (has_colors()) { start_color(); /* 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(); cbreak(); noecho(); 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(11)); print_help(""); /* draw title win */ win_for_title = newwin(1, COLS, 0, 0); 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"), VERSION); mvwaddstr(win_for_title, 0, (COLS - strlen(message)) / 2, message); wrefresh(win_for_title); /* draw menu win */ win_for_menu = newwin(LINES - 2, MCOLS, 1, 0); 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(11)); /* íÁÌÀÀ ÒÁÍËÕ */ waddch(win_for_menu, ACS_BSSB); for (i = 0; i < MCOLS - 2; i++) waddch(win_for_menu, ACS_BSBS); waddch(win_for_menu, ACS_BSSS); for (i = 0; i < LINES - 4; i++) { waddch(win_for_menu, ACS_SBSB); mvwaddch(win_for_menu, i + 1, MCOLS - 1, ACS_SBSB); } waddch(win_for_menu, ACS_SSBB); for (i = 0; i < MCOLS - 2; i++) waddch(win_for_menu, ACS_BSBS); waddch(win_for_menu, ACS_SSBS); wrefresh(win_for_menu); /* draw_main_win */ main_win = newwin(LINES - 2, COLS - MCOLS, 1, MCOLS); /* íÁÌÀÀ ÒÁÍËÕ */ for (i = 0; i < COLS - MCOLS - 1; i++) waddch(main_win, ACS_BSBS); waddch(main_win, ACS_BBSS); for (i = 0; i < LINES - 4; i++) mvwaddch(main_win, i + 1, COLS - MCOLS - 1, ACS_SBSB); for (i = 0; i < COLS - MCOLS - 1; i++) waddch(main_win, ACS_BSBS); waddch(main_win, ACS_SBBS); main_sub = derwin(main_win, LINES - 4, COLS - MCOLS - 1, 1, 0); wclear(main_sub); wrefresh(main_win); about(); if (get_opts() == 0) connect_options((unsigned long) NULL, (int) NULL); while (1) main_menu(); /* Not reachable */ return 0; } ap-utils-1.5/src/ap-mrtg.c000066400000000000000000000261761117246662700154470ustar00rootroot00000000000000/* * ap-mrtg.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include #include #include #if defined (__GLIBC__) #include #endif #include "ap-utils.h" #define ERR_STR_V "\n\n-\n\n" #define ERR_STR_N "999999999\n999999999\n-\n\n" short ap_type; char *community = NULL; struct in_addr ap_ip; void usage() { printf(_("\nUsage:\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 ireless, thernet, " "associated tations or 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; 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 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 bridgeOperationalMode[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x01, 0x00 }; char EthRxStatistics[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x07, 0x01, 0x00 }; char EthTxStatistics[] = { 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 wirelessStatistics[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x03, 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 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, *cp; #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:rv")) { case 'i': 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; case 't': stat_type = optarg[0]; break; case 'v': ERR_STR = ERR_STR_V; 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 'n': name = malloc(strlen(optarg) + 1); strncpy(name, optarg, strlen(optarg) + 1); break; case 'r': reset_flag=1; break; case -1: break; default: usage(); goto quit; } } while (opt != -1); if (!community) { usage(); 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 (ap_type == NWN) { printf("NWN devices are not yet supported."); 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 = EthRxStatistics; varbinds[0].len_oid = sizeof(EthRxStatistics); varbinds[0].value = EthRxStatistics; varbinds[0].len_val = 0; varbinds[0].type = NULL_VALUE; 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) < 2) { printf(ERR_STR); 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); 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); return 1; } printf("%u\n%u\n", swap4(EthRxStat->TotalBytesRx), swap4(EthTxStat->TotalBytesTx)); if (EthRxStat) free(EthRxStat); if (EthTxStat) free(EthTxStat); break; case 'w': varbinds[0].oid = wirelessStatistics; varbinds[0].len_oid = sizeof(wirelessStatistics); varbinds[0].value = wirelessStatistics; varbinds[0].len_val = 0; varbinds[0].type = NULL_VALUE; if (snmp(varbinds, 1, GET) <= 0) { printf(ERR_STR); return 1; } 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_s *) malloc(varbinds[0].len_val); memcpy(WirelessStat, varbinds[0].value, varbinds[0].len_val); } else { printf(ERR_STR); return 1; } printf("%u\n%u\n", swap4(WirelessStat->UnicastReceivedPackets) + swap4(WirelessStat->BroadcastReceivedPackets) + swap4(WirelessStat->MulticastReceivedPackets), swap4(WirelessStat->UnicastTransmittedPackets) + swap4(WirelessStat->BroadcastTransmittedPackets) + swap4(WirelessStat->MulticastTransmittedPackets)); break; case 's': varbinds[0].oid = AssociatedSTAsNum; varbinds[0].len_oid = sizeof(AssociatedSTAsNum); varbinds[0].value = AssociatedSTAsNum; varbinds[0].len_val = 0; varbinds[0].type = NULL_VALUE; if (snmp(varbinds, 1, GET) <= 0) { printf(ERR_STR); return 1; } printf("%u\n0\n", *varbinds[0].value); 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); return 1; } if (!(ap_type == ATMEL410 && *(varbinds[0].value) == 3)) { printf(ERR_STR); return 1; } if (reset_flag) { if (SysReset()) { printf(ERR_STR); return 1; } sleep(10); } varbinds[0].oid = wirelessKnownAPs; varbinds[0].len_oid = sizeof(wirelessKnownAPs); varbinds[0].type = NULL_VALUE; varbinds[0].len_val = 0; if (snmp(varbinds, 1, GET) <= 0) { printf(ERR_STR); 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; }; printf("%d\n%d\n", app->q2, 96 - app->q1); bssid_flag = 0; break; } if (bssid_flag) printf(ERR_STR); 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; } ap-utils-1.5/src/ap-rrd.c000066400000000000000000000240431117246662700152540ustar00rootroot00000000000000/* * ap-rrd.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include #include #include #if defined (__GLIBC__) #include #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 ireless, thernet, associated tations or 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; } ap-utils-1.5/src/ap-tftp.c000066400000000000000000000443631117246662700154510ustar00rootroot00000000000000/* ------------------------------------------------------------------------- */ /* ap-tftp.c */ /* */ /* Version: 1.1 */ /* */ /* Copyright (C) 2004-2005 Jan Rafaj */ /* */ /* 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 */ /* */ /* atftp: Copyright (C) 2000 Jean-Pierre Lefebvre */ /* and Remi Lefebvre */ /* */ /* utftp: Copyright (C) 1999 Uwe Ohse */ /* */ /* 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 #include #include #include #include #include #include #include #include #include #include #include #include "ap-utils.h" #ifdef HAVE_GETTEXT /* GNU gettext stuff*/ #include #include #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 " "\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); } ap-utils-1.5/src/ap-trapd.c000066400000000000000000000176261117246662700156100ustar00rootroot00000000000000/* * ap-trapd.c from Access Point SNMP Utils for Linux * SNMP traps processing daemon code * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include #include #include #include "ap-utils.h" #define TRAPD_USER "nobody" int main(int argc, char **argv) { extern char *optarg; extern int optind; extern int opterr; extern int optopt; int opt = 0; char *user=NULL, *device=NULL; pid_t pid; struct passwd *pwd; struct sockaddr_in server; struct sockaddr_in client; int sockfd, len; unsigned int client_len = SIZE, hand, sec, min; unsigned char buf[512], *start, snmp_version, *community = NULL, generic_trap, specific_trap; unsigned int i, atmel_ap_type = 0; size_t time_stamp; char mac[6], *enterprise_oid = NULL, c, mac_info[31], mac_flag = 0; struct in_addr agent_addr; 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", "AuthenticationFailure", "EgpNeighborLoss", "EnterpriseSpecific", "unknown" }; char *specific_traps[22] = { "Reassociation", "RoamOut", "Association", "Disassociation", "AssociationExpire", "Reset", "SettingPingIPAddress", "StartUp", "FailedToEraseFlash", "APClientScanning", "APClientAuthenticating", "APClientAssociating", "APClientReAssociating", "APClientAuthenticationFailed", "APClientAssociationFailed", "APClientConnected", "APClientDisconnected", "APClientScanFailed", "APClientJoinFailed", "APClientJoining", "unknown", "APClientScanFinished" /* I think:) /roma */ }; char *specific_traps_sb[22] = { "Reassociation", "RoamOut", "Association", "Disassociation", "AssociationExpire", "Reset", "SettingPingIPAddress", "StartUp", "FailedToEraseFlash", "APClientAssociating", "APClientScanning", "MultiAttachedStation", "unknown", "unknown", "unknown", "unknown", "unknown", "unknown", "unknown", "unknown", "unknown", "unknown" }; memset(&server, 0, sizeof server); server.sin_family = AF_INET; server.sin_port = htons(162); server.sin_addr.s_addr = INADDR_ANY; #ifdef HAVE_GETTEXT /* locale support init */ setlocale(LC_ALL, ""); bindtextdomain("ap-utils", LOCALEDIR); textdomain("ap-utils"); #endif if (argc > 1) do { opterr = 0; switch (opt = getopt(argc, argv, "u:i:s")) { case 'i': device = malloc(strlen(optarg) + 1); strncpy(device, optarg, strlen(optarg) + 1); break; case 'u': user = malloc(strlen(optarg) + 1); strncpy(user, optarg, strlen(optarg) + 1); break; case 's': atmel_ap_type = 1; break; } } while (opt != -1); openlog("ap-trapd", LOG_PID, LOG_LOCAL0); syslog(LOG_INFO, _("ap-trapd %s started%s%s."), VERSION, (device) ? _(" on ") : "", (device) ? device : ""); pid = fork(); if (pid > 0) { /* parent */ return 0; } else if (pid < 0) { /* failed */ syslog(LOG_ERR, _("Unable to fork. Exiting.")); return 1; } if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { syslog(LOG_ERR, _("Can't create socket. Exiting.")); return 1; } if (bind(sockfd, (struct sockaddr *) &server, SIZE) == -1) { syslog(LOG_ERR, _("Can't bind socket. Exiting.")); return 1; } #ifdef OS_LINUX if (device) { if (setsockopt(sockfd, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device) + 1) == -1) { syslog(LOG_ERR, _("Can't bind to device %s. Exiting."), device); return 1; } } #endif if (user == NULL) user = TRAPD_USER; /* after opening socket change userid */ if ((pwd = getpwnam(user)) == NULL) { syslog(LOG_ERR, _("Unable to process username %s. Error: %m."), user); return 1; } if (setgid(pwd->pw_gid) == -1 || setuid(pwd->pw_uid) == -1) { syslog(LOG_ERR, _("Unable to change to uid %d."), pwd->pw_uid); return 1; } while (1) { if ((len = recvfrom(sockfd, buf, 512, 0, (struct sockaddr *) &client, &client_len)) == -1) continue; if (buf[0] != ASN_HEADER) { continue; } start = buf; if (buf[1] & 0x80) { start += (buf[1] & 0x7F) + 2; } else { start += 2; } snmp_version = start[2]; if (community) free(community); community = malloc(start[4] + 1); memcpy(community, start + 5, start[4]); community[start[4]] = '\0'; start += *(start + 4) + 5; if (start[0] != TRAP) { continue; } if (start[1] & 0x80) { start += (start[1] & 0x7F) + 2; } else { start += 2; } if (enterprise_oid) free(enterprise_oid); enterprise_oid = malloc(start[1] + 1); memcpy(enterprise_oid, start + 2, start[1]); enterprise_oid[start[1]] = '\0'; start += start[1] + 2; memcpy(&agent_addr.s_addr, start + 2, 4); 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."), snmp_version + 1, inet_ntoa(client.sin_addr), ntohs(client.sin_port), inet_ntoa(agent_addr), community); continue; } start += 6; generic_trap = start[2]; if (generic_trap > 6) generic_trap = 7; specific_trap = start[5]; if (specific_trap > 22) specific_trap = 21; time_stamp = 0; c = 0; i = 1; while (c < start[7]) { time_stamp += (unsigned char) *(start + 7 + start[7] - c) * i; i *= 256; c++; } hand = time_stamp % 100; time_stamp = time_stamp / 100; sec = time_stamp % 60; time_stamp = time_stamp / 60; min = time_stamp % 60; time_stamp = time_stamp / 60; start += start[7] + 8; mac_flag = 0; if ((start - buf < len) && *(start) == ASN_HEADER) { if (start[1] & 0x80) { start += (start[1] & 0x7F) + 2; len -= ((start[1] & 0x7F) + 2); } else { start += 2; len -= 2; } if (*(start) == ASN_HEADER) { if (start[1] & 0x80) { start += (start[1] & 0x7F) + 2; len -= ((start[1] & 0x7F) + 2); } else { start += 2; len -= 2; } start += start[1] + 4; memcpy(mac, start, 6); if (generic_trap == 6 && specific_trap >= 1 && (specific_trap <= 5 || specific_trap >= 9)) { sprintf(mac_info, "%02X%02X%02X%02X%02X%02X", mac[0] & 0xFF, mac[1] & 0xFF, mac[2] & 0xFF, mac[3] & 0xFF, mac[4] & 0xFF, mac[5] & 0xFF); mac_flag = 1; } if (generic_trap == 6 && specific_trap == 7) { sprintf(mac_info, "%d.%d.%d.%d", mac[0] & 0xFF, mac[1] & 0xFF, mac[2] & 0xFF, mac[3] & 0xFF); mac_flag = 1; } } } syslog(LOG_INFO, _ ("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) ? 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); } /* not reachable */ return 0; } ap-utils-1.5/src/aplink.c000066400000000000000000000333671117246662700153560ustar00rootroot00000000000000/* * aplink.c from Access Point SNMP Utils for Linux * * Copyright (c) 2005 Jan Rafaj * * 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 #include #include #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); } ap-utils-1.5/src/auth.c000066400000000000000000000715331117246662700150360ustar00rootroot00000000000000/* * auth.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * Copyright (c) 2005 Jan Rafaj * * 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 #include #include #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); } ap-utils-1.5/src/bridge.c000066400000000000000000000417261117246662700153320ustar00rootroot00000000000000/* * bridge.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * Copyright (c) 2005 Jan Rafaj * * 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 #include #include #include "ap-utils.h" #define IPADDR _("[I] IP: ") #define NETMASK _("[N] Netmask: ") #define GATEWAY _("[G] Gateway: ") #define IP_FILTER _("[F] Filter non-IP traffic: ") #define PR_PORT _("[P] Primary port: ") #define SB_ATTMAC _("Attached station MAC: ") #define DHCP _("[D] DHCP client: ") #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: ") #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 _("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 }; char operIPAddress[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x01, 0x00 }; char operIPMask[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x02, 0x00 }; char operEthernetAddress[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x03, 0x00 }; char operGateway[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x04, 0x00 }; char operDHCP[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x05, 0x00 }; char operPrimaryPort[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x06, 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 GEMTEK MIB and ATMEL12350 EZYNET MIB specific. */ char operTrapPort[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x02, 0x08, 0x00 }; char operIPFilter[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x01, 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 operSendBackBcast[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x03, 0x00 }; char operSendBackUnicast[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x04, 0x00 }; char bridgeOperationalMode[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x01, 0x00 }; char bridgeRemoteBridgeBSSID[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x02, 0x00 }; extern WINDOW *main_sub; varbind varbinds[15]; struct in_addr ip, mask, gw; unsigned char message[1024], filter, primary_port, dhcp, RemoteBSSID[6], bridge_mode, traps, config_port, fw_bcast, sb_bcast, sb_ucast; char m_filter = 0, m_bridge_mode = 0, m_primary_port = 0, m_traps = 0, 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 *pr_ports[2] = { _("Ethernet"), _("Wireless") }, *cf_ports[3] = { _("Ethernet"), _("Wireless (can be risky)"), _("Both") }; int i; unsigned int trap_port = 0; if (ap_type == ATMEL12350) { 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; } for (i = 0; i < 15; i++) { varbinds[i].type = NULL_VALUE; varbinds[i].len_val = 0; varbinds[i].len_oid = sizeof(sysTrapSwitch); } i = 0; 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 = bridgeRemoteBridgeBSSID; 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) < i) { print_helperr(ERR_RET); goto exit; } print_top(NULL, _("Bridging")); sprintf(message, "%s%02X%02X%02X%02X%02X%02X", MAC, 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[1].value, 4); sprintf(message, "%s%s", IPADDR, inet_ntoa(ip)); mvwaddstr(main_sub, 1, 0, message); 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[4].value, 4); sprintf(message, "%s%s", GATEWAY, inet_ntoa(gw)); mvwaddstr(main_sub, 2, 0, message); filter = *(varbinds[7].value); sprintf(message, "%s%s", IP_FILTER, (filter == 1) ? ON : OFF); mvwaddstr(main_sub, 3, 0, message); /* if (ap_type == ATMEL410 && ap_vendorext == SBRIDGES) { sprintf(message, "%s%02X%02X%02X%02X%02X%02X", SB_ATTMAC, *(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[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[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[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, *(RemoteBSSID + 4) & 0xFF, *(RemoteBSSID + 5) & 0xFF); mvwaddstr(main_sub, 7, 0, message); } if (bridge_mode > 5) bridge_mode = 6; sprintf(message, "%s%s", OPER, bridge_modes[bridge_mode - 1]); mvwaddstr(main_sub, 6, 0, message); traps = *(varbinds[0].value); sprintf(message, "%s%s", TRAPS, (traps == 1) ? ON : OFF); mvwaddstr(main_sub, 8, 0, message); if ((ap_type == ATMEL410 && ap_vendorext == SBRIDGES) || ap_type == ATMEL12350) { config_port = *(varbinds[10].value); 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); fw_bcast = *(varbinds[11].value); sprintf(message, "%s%s", FW_BCAST, (fw_bcast == 1) ? ON : OFF); 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, 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(); print_help(HELP); while (1) { switch (getch()) { case 'I': case 'i': get_ip(&ip, 1, strlen(IPADDR), HELP); m_ip = 1; continue; case 'N': case 'n': get_mask(&mask, 1, strlen(IPADDR) + 16 + strlen(NETMASK), HELP); m_mask = 1; continue; case 'G': case 'g': get_ip(&gw, 2, strlen(GATEWAY), HELP); m_gw = 1; continue; case 'F': case 'f': filter = on_off(3, strlen(IP_FILTER)); clear_main_new(3, 4); print_menusel(3, 0, IP_FILTER, (filter == 1) ? ON : OFF); m_filter = 1; continue; case 'P': case 'p': /* 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': dhcp = on_off(5, strlen(DHCP)); clear_main_new(5, 6); print_menusel(5, 0, DHCP, (dhcp == 1) ? ON : OFF); m_dhcp = 1; continue; case 'O': case 'o': bridge_mode = menu_choose(6, strlen(OPER), bridge_modes, 5) + 1; clear_main_new(6, 8); print_menusel(6, 0, OPER, bridge_modes[bridge_mode - 1]); if (bridge_mode != 2) { sprintf(message, "%02X%02X%02X%02X%02X%02X", *(RemoteBSSID + 0) & 0xFF, *(RemoteBSSID + 1) & 0xFF, *(RemoteBSSID + 2) & 0xFF, *(RemoteBSSID + 3) & 0xFF, *(RemoteBSSID + 4) & 0xFF, *(RemoteBSSID + 5) & 0xFF); print_menusel(7, 0, REMOTE_MAC, message); } m_bridge_mode = 1; continue; case 'M': case 'm': if (bridge_mode == 2) continue; get_mac(RemoteBSSID, 7, strlen(REMOTE_MAC)); /* mvwaddstr(main_sub, 7, 21, " : : : : : "); for (i = 0; i < 6; i++) { get_value(message, 7, 21 + i * 3, 3, ANY_STRING, 0, 0, NULL); RemoteBSSID[i] = strtol(message, NULL, 16); } sprintf(message, "%s%02X%02X%02X%02X%02X%02X", REMOTE_MAC, *(RemoteBSSID + 0) & 0xFF, *(RemoteBSSID + 1) & 0xFF, *(RemoteBSSID + 2) & 0xFF, *(RemoteBSSID + 3) & 0xFF, *(RemoteBSSID + 4) & 0xFF, *(RemoteBSSID + 5) & 0xFF); */ m_remote_bssid = 1; continue; case 'S': case 's': traps = on_off(8, strlen(TRAPS)); clear_main_new(8, 9); print_menusel(8, 0, TRAPS, (traps == 1) ? ON : OFF); m_traps = 1; continue; case 'C': case 'c': 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_ports[config_port - 1]); m_config_port = 1; } continue; case 'R': case 'r': 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 == 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 == 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 = 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 = operPrimaryPort; varbinds[i].len_oid = sizeof(operPrimaryPort); varbinds[i].type = INT_VALUE; varbinds[i].value = (char *) &primary_port; varbinds[i].len_val = 1; i++; } if (m_dhcp) { varbinds[i].oid = operDHCP; varbinds[i].len_oid = sizeof(operDHCP); varbinds[i].type = INT_VALUE; varbinds[i].value = (char *) &dhcp; varbinds[i].len_val = 1; i++; } if (m_ip) { varbinds[i].oid = operIPAddress; varbinds[i].len_oid = sizeof(operIPAddress); ip.s_addr = htonl(ip.s_addr); ip.s_addr = swap4(ip.s_addr); varbinds[i].value = (char *) &ip.s_addr; varbinds[i].len_val = 4; varbinds[i].type = INT_VALUE; i++; } if (m_mask) { varbinds[i].oid = operIPMask; varbinds[i].len_oid = sizeof(operIPMask); mask.s_addr = htonl(mask.s_addr); mask.s_addr = swap4(mask.s_addr); varbinds[i].value = (char *) &mask.s_addr; varbinds[i].len_val = 4; varbinds[i].type = INT_VALUE; i++; } if (m_gw) { varbinds[i].oid = operGateway; gw.s_addr = htonl(gw.s_addr); gw.s_addr = swap4(gw.s_addr); varbinds[i].len_oid = sizeof(operGateway); varbinds[i].value = (char *) &gw.s_addr; varbinds[i].len_val = 4; varbinds[i].type = INT_VALUE; i++; } if (m_traps) { varbinds[i].oid = sysTrapSwitch; varbinds[i].len_oid = sizeof(sysTrapSwitch); varbinds[i].value = &traps; varbinds[i].len_val = 1; varbinds[i].type = INT_VALUE; i++; } if (m_bridge_mode) { varbinds[i].oid = bridgeOperationalMode; varbinds[i].len_oid = sizeof(bridgeOperationalMode); varbinds[i].value = (char *) &bridge_mode; varbinds[i].len_val = 1; varbinds[i].type = INT_VALUE; i++; } if (m_remote_bssid) { varbinds[i].oid = bridgeRemoteBridgeBSSID; varbinds[i].len_oid = sizeof(bridgeRemoteBridgeBSSID); varbinds[i].value = RemoteBSSID; varbinds[i].len_val = 6; varbinds[i].type = STRING_VALUE; i++; } if (m_config_port) { 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 = 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 = 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 = operSendBackUnicast; varbinds[i].len_oid = sizeof(operSendBackUnicast); varbinds[i].type = INT_VALUE; varbinds[i].value = (char *) &sb_ucast; varbinds[i].len_val = 1; i++; } if (m_trap_port) { int len_val; len_val = (trap_port > 0x7fff) ? 3 : (trap_port > 0x7f) ? 2 : 1; 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; i++; } print_help(WAIT_SET); if (snmp(varbinds, i, SET) <= 0) { print_helperr(ERR_SET); } else { wbkgd(main_sub, A_NORMAL); wrefresh(main_sub); print_help(DONE_SET); } goto exit; case 'Q': case 'q': goto quit; } continue; } exit: getch(); quit: print_top(NULL, NULL); clear_main(0); } ap-utils-1.5/src/nwn_advanced.c000066400000000000000000000071451117246662700165220ustar00rootroot00000000000000/* * wlan.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include "ap-utils.h" #include #define RATES_RECORD "[%d] %02.1fM\t%s" void advanced() { char smtStationDBTimeout[] = { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x02, 0x01, 0x0F, 0x00 }; char smtACKWindow[] = { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x02, 0x01, 22, 0x00 }; char m_dbtimeout=0, m_ackwindow=0, message[80], ackwindow; unsigned int dbtimeout; int i; extern WINDOW *main_sub; varbind varbinds[2]; for (i = 0; i < 2; i++) { varbinds[i].len_val = 0; varbinds[i].type = NULL_VALUE; } varbinds[0].oid = smtStationDBTimeout; varbinds[0].len_oid = sizeof(smtStationDBTimeout); varbinds[1].oid = smtACKWindow; varbinds[1].len_oid = sizeof(smtACKWindow); print_help(WAIT_RET); if (snmp(varbinds, 2, GET) < 2) { print_helperr(ERR_RET); goto exit; } if (varbinds[0].len_val == 2) dbtimeout = varbinds[0].value[0]*256 + varbinds[0].value[1]; else dbtimeout = *(varbinds[0].value); ackwindow = *(varbinds[1].value); sprintf(message, _("[D] DB Station Timeout: %d"), dbtimeout); mvwaddstr(main_sub, 1, 0, message); sprintf(message, _("[A] ACK Window: %d"), ackwindow); mvwaddstr(main_sub, 2, 0, message); print_top(NULL, _("Advanced Options")); print_help(_("DA - options; W - write conf; Q - quit to menu")); wrefresh(main_sub); noecho(); while (1) { switch (getch()) { case 'Q': case 'q': goto quit; case 'D': case 'd': get_value(message, 1, 24, 6, INT_STRING, 0, 0, NULL); dbtimeout = atoi(message); m_dbtimeout = 1; continue; case 'A': case 'a': get_value(message, 2, 16, 4, INT_STRING, 0, 0, NULL); ackwindow = atoi(message); m_ackwindow = 1; continue; case 'w': case 'W': i = 0; if (m_dbtimeout) { if (dbtimeout / 256 >= 1) { message[0] = (dbtimeout - dbtimeout % 256)/ 256; message[1] = dbtimeout % 256; m_dbtimeout = 2; } else { m_dbtimeout = 1; message[0] = dbtimeout; } varbinds[i].oid = smtStationDBTimeout; varbinds[i].len_oid = sizeof(smtStationDBTimeout); varbinds[i].value = message; varbinds[i].len_val = m_dbtimeout; varbinds[i].type = INT_VALUE; i++; } if (m_ackwindow) { varbinds[i].oid = smtACKWindow; varbinds[i].len_oid = sizeof(smtACKWindow); varbinds[i].value = &ackwindow; varbinds[i].len_val = 1; 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); wrefresh(main_sub); print_help(DONE_SET); goto exit; default: continue; } } exit: getch(); quit: print_top(NULL, NULL); clear_main(0); } ap-utils-1.5/src/nwn_latest.c000066400000000000000000000114311117246662700162420ustar00rootroot00000000000000/* * latest.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * * 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 #include #include #include #include #include "ap-utils.h" extern WINDOW *main_sub; #define OID_NUM 8 #define DESCR _("Reason: %u Station: %02X%02X%02X%02X%02X%02X") void latest() { char oid_dot11DisassociateReason[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x0f, 0x01 }; char oid_dot11DisassociateStation[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x10, 0x01 }; char oid_dot11DeauthenticateReason[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x11, 0x01 }; char oid_dot11DeauthenticateStation[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x12, 0x01 }; char oid_dot11AuthenticateFailStatus[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x13, 0x01 }; char oid_dot11AuthenticateFailStation[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x14, 0x01 }; char oid_secLastError[] = { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x02, 0x03, 0x00 }; char oid_secLastErrorAddress[] = { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x02, 0x04, 0x00 }; char message[1024]; int i; varbind varbinds[OID_NUM]; noecho(); print_help(WAIT_RET); for (i = 0; i < OID_NUM; i++) { varbinds[i].value = oid_dot11DisassociateReason; varbinds[i].len_val = 0; varbinds[i].type = NULL_VALUE; } varbinds[0].oid = oid_dot11DisassociateReason; varbinds[0].len_oid = sizeof(oid_dot11DisassociateReason); varbinds[1].oid = oid_dot11DisassociateStation; varbinds[1].len_oid = sizeof(oid_dot11DisassociateStation); varbinds[2].oid = oid_dot11DeauthenticateReason; varbinds[2].len_oid = sizeof(oid_dot11DeauthenticateReason); varbinds[3].oid = oid_dot11DeauthenticateStation; varbinds[3].len_oid = sizeof(oid_dot11DeauthenticateStation); varbinds[4].oid = oid_dot11AuthenticateFailStatus; varbinds[4].len_oid = sizeof(oid_dot11AuthenticateFailStatus); varbinds[5].oid = oid_dot11AuthenticateFailStation; varbinds[5].len_oid = sizeof(oid_dot11AuthenticateFailStation); varbinds[6].oid = oid_secLastError; varbinds[6].len_oid = sizeof(oid_secLastError); varbinds[7].oid = oid_secLastErrorAddress; varbinds[7].len_oid = sizeof(oid_secLastErrorAddress); if (snmp(varbinds, OID_NUM, GET) < OID_NUM) { print_help(ERR_RET); goto exit; } print_top(NULL, _("Latest Events")); mvwaddstr(main_sub, 1, 0, _("Disassociate:")); sprintf(message, DESCR, *varbinds[0].value, varbinds[1].value[0] & 0xFF, varbinds[1].value[1] & 0xFF, varbinds[1].value[2] & 0xFF, varbinds[1].value[3] & 0xFF, varbinds[1].value[4] & 0xFF, varbinds[1].value[5] & 0xFF); mvwaddstr(main_sub, 2, 0, message); mvwaddstr(main_sub, 4, 0, _("Deauthenticate:")); sprintf(message, DESCR, *varbinds[2].value, 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, 5, 0, message); mvwaddstr(main_sub, 7, 0, _("Authenticate Fail:")); sprintf(message, DESCR, *varbinds[4].value, varbinds[5].value[0] & 0xFF, varbinds[5].value[1] & 0xFF, varbinds[5].value[2] & 0xFF, varbinds[5].value[3] & 0xFF, varbinds[5].value[4] & 0xFF, varbinds[5].value[5] & 0xFF); mvwaddstr(main_sub, 8, 0, message); mvwaddstr(main_sub, 10, 0, _("Last error:")); mvwaddstr(main_sub, 11, 0, _("Error:")); i = 0; while (varbinds[6].len_val > i && *(varbinds[6].value + i)) mvwaddch(main_sub, 11, i + 15, *(varbinds[6].value + i++)); sprintf(message, "%s%02X%02X%02X%02X%02X%02X", MAC, varbinds[7].value[0] & 0xFF, varbinds[7].value[1] & 0xFF, varbinds[7].value[2] & 0xFF, varbinds[7].value[3] & 0xFF, varbinds[7].value[4] & 0xFF, varbinds[7].value[5] & 0xFF); mvwaddstr(main_sub, 12, 0, message); wrefresh(main_sub); print_help(ANY_KEY); exit: getch(); print_top(NULL, NULL); clear_main(0); } ap-utils-1.5/src/stations.c000066400000000000000000000247651117246662700157460ustar00rootroot00000000000000/* * stations.c from Access Point SNMP Utils for Linux * * Copyright (c) 2002 Roman Festchook * Copyright (c) 2005 Jan Rafaj * * 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 #include #include #include #include #include #include "ap-utils.h" #define MAX_LINES LINES-4 extern int LINES; extern WINDOW *main_sub; extern short ap_type, ap_vendorext; extern int sts_viewtype; void atmel_stations() { 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 AssociatedSTAsInfo[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x05, 0x02, 0x00 }; /* 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; AssociatedSTAsNum[5] = 0xE0; AssociatedSTAsNum[6] = 0x3E; AssociatedSTAsInfo[5] = 0xE0; AssociatedSTAsInfo[6] = 0x3E; } /* 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); goto exit; } /* 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); goto exit; } noecho(); 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 = AssociatedSTAsNum; varbinds[0].len_oid = sizeof(AssociatedSTAsNum); varbinds[0].value = AssociatedSTAsNum; 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; } total_mac = *(varbinds[0].value); print_help(WAIT_SET); mac_idx = 1; 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; 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); goto exit; } if (varbinds[0].len_val != 24) { print_helperr(_("AssociatedSTAsInfo packet error")); goto exit; } if (first == NULL) { first = (struct MacListStat *) calloc(1, sizeof(struct MacListStat)); curr = first; } else { curr->next = (struct MacListStat *) calloc(1, sizeof(struct MacListStat)); curr = curr->next; } /* 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; mac_idx++; } begin = 1; end = (MAX_LINES < mac_idx) ? MAX_LINES : mac_idx; sprintf(message, "%s: %d", ST_TITLE, total_mac); while (1) { 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")); } else { print_top(NULL, message); print_help(_("Arrows - scroll; S - save to file; Q - return; " "Other key - refresh")); } scroll_rows(first, begin, end, 1, 2); switch (getch()) { case 'S': case 's': save_Stations(first); continue; case KEY_RIGHT: case KEY_DOWN: if (end < mac_idx) { begin++; end++; } continue; case KEY_UP: case KEY_LEFT: if (begin > 1) { begin--; end--; } continue; case 'Q': case 'q': goto quit; case 'T': case 't': if ((ap_type == ATMEL410 && ap_vendorext == SBRIDGES) || (ap_type == ATMEL12350 && ap_vendorext == EZYNET)) { sts_viewtype += 1; if (sts_viewtype == 3) sts_viewtype = 0; } continue; default: while ((curr = first)) { first = curr->next; free(curr); } first = curr = NULL; goto refresh; } } exit: getch(); quit: while ((curr = first)) { first = curr->next; free(curr); } print_top(NULL, NULL); clear_main(0); } void nwn_stations() { unsigned char Mac[] = { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x80, 0x00 }; unsigned char Quality[] = { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x03, 0x80, 0x00 }; unsigned char Age[] = { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x04, 0x80, 0x00 }; unsigned char RSSI[] = { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x05, 0x80, 0x00 }; struct MacListStat *first = NULL, *curr = NULL; char null[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, message[1024]; int mac_idx, begin, end; varbind varbinds[4]; unsigned char next_num; mac_idx = 0; print_top(NULL, ST_TITLE); mvwaddstr(main_sub, 0, 3, _("Id MAC address Quality Age RSSI")); noecho(); print_help(WAIT_RET); varbinds[0].oid = Mac; varbinds[0].len_oid = sizeof(Mac); varbinds[0].len_val = 0; varbinds[0].type = NULL_VALUE; if (snmp(varbinds, 1, GET_NEXT) <= 0) { print_helperr(ERR_RET); goto exit; } next_num = varbinds[0].oid[varbinds[0].len_oid - 1]; while (memcmp(varbinds[0].oid, Mac, sizeof(Mac) - 2) == 0) { Mac[sizeof(Mac) - 1] = next_num; Quality[sizeof(Mac) - 1] = next_num; Age[sizeof(Mac) - 1] = next_num; RSSI[sizeof(Mac) - 1] = next_num; if(sizeof(Mac) == varbinds[0].len_oid) { Mac[sizeof(Mac) - 2] = varbinds[0].oid[varbinds[0].len_oid - 2]; Quality[sizeof(Mac) - 2] = varbinds[0].oid[varbinds[0].len_oid - 2]; Age[sizeof(Mac) - 2] = varbinds[0].oid[varbinds[0].len_oid - 2]; RSSI[sizeof(Mac) - 2] = varbinds[0].oid[varbinds[0].len_oid - 2]; } varbinds[0].oid = Mac; varbinds[0].len_oid = sizeof(Mac); varbinds[0].len_val = 0; varbinds[0].type = NULL_VALUE; varbinds[1].oid = Quality; varbinds[1].len_oid = sizeof(Quality); varbinds[1].len_val = 0; varbinds[1].type = NULL_VALUE; varbinds[2].oid = Age; varbinds[2].len_oid = sizeof(Age); varbinds[2].len_val = 0; varbinds[2].type = NULL_VALUE; varbinds[3].oid = RSSI; varbinds[3].len_oid = sizeof(RSSI); varbinds[3].len_val = 0; varbinds[3].type = NULL_VALUE; if (snmp(varbinds, 4, GET) < 4) { print_helperr(ERR_RET); getch(); goto exit; } if (memcmp(null, 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->quality = *varbinds[1].value; curr->idle = *varbinds[2].value; curr->rssi = *varbinds[3].value; curr->next = NULL; mac_idx++; } varbinds[0].oid = Mac; varbinds[0].len_oid = sizeof(Mac); varbinds[0].len_val = 0; varbinds[0].type = NULL_VALUE; if (snmp(varbinds, 1, GET_NEXT) <= 0) { print_helperr(ERR_RET); goto exit; } next_num = varbinds[0].oid[varbinds[0].len_oid - 1]; } if(mac_idx) { begin = 1; end = (MAX_LINES < mac_idx + 1) ? MAX_LINES : mac_idx + 1; while (1) { print_help(_("Arrows - scroll; S - save to file; Q - return; " "T - toggle view; Other - refresh")); scroll_rows(first, begin, end, 1, 1); sprintf(message, "%s: %d", ST_TITLE, mac_idx); print_top_rssi(message); switch (getch()) { case 'S': case 's': save_Stations(first); continue; case KEY_DOWN: case KEY_RIGHT: if (end < mac_idx+1) { begin++; end++; } continue; case KEY_UP: case KEY_LEFT: if (begin > 1) { begin--; end--; } continue; case 'Q': case 'q': goto exit; case 'T': case 't': sts_viewtype += 1; if (sts_viewtype == 3) sts_viewtype = 0; continue; } } } print_help(ANY_KEY); getch(); exit: while ((curr = first)) { first = curr->next; free(curr); } print_top(NULL, NULL); clear_main(0); }