aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorBrooks Davis <brooks@one-eyed-alien.net>2021-01-25 21:45:03 +0000
committerBrooks Davis <brooks@FreeBSD.org>2021-01-25 21:45:03 +0000
commitbfc99943b04b46a6c1c885ce7bcc6f235b7422aa (patch)
treef6090ce008f9b372fe3d2ad5ccecb3add60e4a07 /usr.sbin
parent1b109c69ed625ebf292c1d16f7a3efcab96722e5 (diff)
downloadsrc-bfc99943b04b46a6c1c885ce7bcc6f235b7422aa.tar.gz
src-bfc99943b04b46a6c1c885ce7bcc6f235b7422aa.zip
ndis(4): remove as previous announced
nids(4) was a clever idea in the early 2000's when the market was flooded with 10/100 NICs with Windows-only drivers, but that hasn't been the case for ages and the driver has had no meaningful maintenance in ages. It only supports Windows-XP era drivers. Also remove: - ndis support from wpa_supplicant - ndiscvt(8) Reviewed By: emaste, bcr (manpages) Differential Revision: https://reviews.freebsd.org/D27609
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/Makefile.amd643
-rw-r--r--usr.sbin/Makefile.i3863
-rw-r--r--usr.sbin/ndiscvt/Makefile27
-rw-r--r--usr.sbin/ndiscvt/Makefile.depend19
-rw-r--r--usr.sbin/ndiscvt/inf-parse.y112
-rw-r--r--usr.sbin/ndiscvt/inf-token.l134
-rw-r--r--usr.sbin/ndiscvt/inf.c920
-rw-r--r--usr.sbin/ndiscvt/inf.h61
-rw-r--r--usr.sbin/ndiscvt/ndiscvt.8283
-rw-r--r--usr.sbin/ndiscvt/ndiscvt.c436
-rw-r--r--usr.sbin/ndiscvt/ndisgen.886
-rw-r--r--usr.sbin/ndiscvt/ndisgen.sh556
-rw-r--r--usr.sbin/ndiscvt/windrv_stub.c268
-rw-r--r--usr.sbin/wpa/Makefile1
-rw-r--r--usr.sbin/wpa/ndis_events/Makefile8
-rw-r--r--usr.sbin/wpa/ndis_events/Makefile.depend18
-rw-r--r--usr.sbin/wpa/ndis_events/ndis_events.8135
-rw-r--r--usr.sbin/wpa/ndis_events/ndis_events.c353
-rw-r--r--usr.sbin/wpa/wpa_supplicant/Makefile6
-rw-r--r--usr.sbin/wpa/wpa_supplicant/Packet32.c415
-rw-r--r--usr.sbin/wpa/wpa_supplicant/Packet32.h69
-rw-r--r--usr.sbin/wpa/wpa_supplicant/ntddndis.h31
22 files changed, 2 insertions, 3942 deletions
diff --git a/usr.sbin/Makefile.amd64 b/usr.sbin/Makefile.amd64
index fca60eae07e1..64e5d8678c41 100644
--- a/usr.sbin/Makefile.amd64
+++ b/usr.sbin/Makefile.amd64
@@ -24,8 +24,5 @@ SUBDIR+= hyperv
SUBDIR+= kgmon
SUBDIR+= lptcontrol
SUBDIR+= mptable
-.if ${MK_NDIS} != "no"
-SUBDIR+= ndiscvt
-.endif
SUBDIR+= spkrtest
SUBDIR+= zzz
diff --git a/usr.sbin/Makefile.i386 b/usr.sbin/Makefile.i386
index 6724115b8217..90a74e05e061 100644
--- a/usr.sbin/Makefile.i386
+++ b/usr.sbin/Makefile.i386
@@ -18,9 +18,6 @@ SUBDIR+= hyperv
SUBDIR+= kgmon
SUBDIR+= lptcontrol
SUBDIR+= mptable
-.if ${MK_NDIS} != "no"
-SUBDIR+= ndiscvt
-.endif
SUBDIR+= pnpinfo
SUBDIR+= spkrtest
SUBDIR+= zzz
diff --git a/usr.sbin/ndiscvt/Makefile b/usr.sbin/ndiscvt/Makefile
deleted file mode 100644
index a8be84fe7255..000000000000
--- a/usr.sbin/ndiscvt/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-# $FreeBSD$
-
-.PATH: ${SRCTOP}/sys/compat/ndis
-
-PROG= ndiscvt
-SRCS= ndiscvt.c
-SRCS+= subr_pe.c
-SRCS+= inf.c inf-token.l inf-parse.y y.tab.h
-
-MAN= ndiscvt.8
-MAN+= ndisgen.8
-
-WARNS?= 4
-NO_WCAST_ALIGN=
-
-YFLAGS+=-v
-
-CFLAGS+=-I. -I${.CURDIR} -I${SRCTOP}/sys
-
-CLEANFILES= y.output
-
-FILES= windrv_stub.c
-FILESDIR= ${SHAREDIR}/misc
-
-SCRIPTS= ndisgen.sh
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/ndiscvt/Makefile.depend b/usr.sbin/ndiscvt/Makefile.depend
deleted file mode 100644
index af1fb7abc88e..000000000000
--- a/usr.sbin/ndiscvt/Makefile.depend
+++ /dev/null
@@ -1,19 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- gnu/lib/csu \
- include \
- include/xlocale \
- lib/${CSU_DIR} \
- lib/libc \
- lib/libcompiler_rt \
- usr.bin/lex/lib \
- usr.bin/yacc.host \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/ndiscvt/inf-parse.y b/usr.sbin/ndiscvt/inf-parse.y
deleted file mode 100644
index 740aba5e87d1..000000000000
--- a/usr.sbin/ndiscvt/inf-parse.y
+++ /dev/null
@@ -1,112 +0,0 @@
-%{
-/*-
- * SPDX-License-Identifier: BSD-4-Clause
- *
- * Copyright (c) 2003
- * Bill Paul <wpaul@windriver.com>. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Bill Paul.
- * 4. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/queue.h>
-
-#include "inf.h"
-
-extern int yylex (void);
-extern void yyerror(const char *);
-%}
-
-%token EQUALS COMMA EOL
-%token <str> SECTION
-%token <str> STRING
-%token <str> WORD
-
-%union {
- char *str;
-}
-
-%%
-
-inf_file
- : inf_list
- |
- ;
-
-inf_list
- : inf
- | inf_list inf
- ;
-
-inf
- : SECTION EOL
- { section_add($1); }
- | WORD EQUALS assign EOL
- { assign_add($1); }
- | WORD COMMA regkey EOL
- { regkey_add($1); }
- | WORD EOL
- { define_add($1); }
- | EOL
- ;
-
-assign
- : WORD
- { push_word($1); }
- | STRING
- { push_word($1); }
- | WORD COMMA assign
- { push_word($1); }
- | STRING COMMA assign
- { push_word($1); }
- | COMMA assign
- { push_word(NULL); }
- | COMMA
- { push_word(NULL); }
- |
- ;
-
-regkey
- : WORD
- { push_word($1); }
- | STRING
- { push_word($1); }
- | WORD COMMA regkey
- { push_word($1); }
- | STRING COMMA regkey
- { push_word($1); }
- | COMMA regkey
- { push_word(NULL); }
- | COMMA
- { push_word(NULL); }
- ;
-%%
diff --git a/usr.sbin/ndiscvt/inf-token.l b/usr.sbin/ndiscvt/inf-token.l
deleted file mode 100644
index 2aac5b477067..000000000000
--- a/usr.sbin/ndiscvt/inf-token.l
+++ /dev/null
@@ -1,134 +0,0 @@
-%{
-/*-
- * SPDX-License-Identifier: BSD-4-Clause
- *
- * Copyright (c) 2003
- * Bill Paul <wpaul@windriver.com>. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Bill Paul.
- * 4. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <regex.h>
-#include <ctype.h>
-#include <err.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "y.tab.h"
-
-int lineno = 1;
-
-int yylex(void);
-void yyerror(const char *);
-
-static void
-update_lineno(const char *cp)
-{
- while (*cp)
- if (*cp++ == '\n')
- lineno++;
-}
-
-%}
-
-%option noyywrap
-%option nounput
-%option noinput
-
-%%
-
-[ \t]+ ;
-\n { lineno++; return EOL; }
-\r ;
-;.*$ ;
-\/\/.*$ ;
-= { return EQUALS; }
-, { return COMMA; }
-\"(\\\"|[^"]|\"\")*\" {
- int len = strlen(yytext) - 2;
- int blen = len + 1;
- char *walker;
- int i;
- update_lineno(yytext);
- yylval.str = (char *)malloc(blen);
- if (yylval.str == NULL)
- goto out;
- walker = yylval.str;
- for (i = 1; i <= len; i++) {
- if (yytext[i] == '\"') {
- switch (yytext[i + 1]) {
- case '\"':
- i++;
- break;
- default:
- break;
- }
- }
- if (yytext[i] == '\\') {
- switch (yytext[i + 1]) {
- case '\n':
- i += 2;
- while(isspace(yytext[i]))
- i++;
- break;
- case '\"':
- i++;
- break;
- case '(':
- i++;
- break;
- default:
- break;
- }
- }
- *walker++ = yytext[i];
- }
- *walker++ = '\0';
- out:;
- return STRING;
- }
-\[[a-zA-Z0-9%&\{\}\-\.\/_\\\*\ ]+\] {
- int len = strlen(yytext);
- yytext[len-1] = '\0';
- yylval.str = strdup(yytext+1);
- return SECTION;
- }
-[a-zA-Z0-9%&\{\}\-\.\/_\\\*]+ {
- yylval.str = strdup(yytext);
- return WORD;
- }
-%%
-
-void
-yyerror(const char *s)
-{
- errx(1, "line %d: %s%s %s.", lineno, yytext, yytext?":":"", s);
-}
diff --git a/usr.sbin/ndiscvt/inf.c b/usr.sbin/ndiscvt/inf.c
deleted file mode 100644
index 442e7f61b1fd..000000000000
--- a/usr.sbin/ndiscvt/inf.c
+++ /dev/null
@@ -1,920 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-4-Clause
- *
- * Copyright (c) 2003
- * Bill Paul <wpaul@windriver.com>. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Bill Paul.
- * 4. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-
-#include <sys/queue.h>
-
-#include "inf.h"
-
-extern FILE *yyin;
-int yyparse (void);
-
-const char *words[W_MAX]; /* More than we'll need. */
-int idx;
-
-static struct section_head sh;
-static struct reg_head rh;
-static struct assign_head ah;
-
-static char *sstrdup (const char *);
-static struct assign
- *find_assign (const char *, const char *);
-static struct assign
- *find_next_assign
- (struct assign *);
-static struct section
- *find_section (const char *);
-static int dump_deviceids_pci (void);
-static int dump_deviceids_pcmcia (void);
-static int dump_deviceids_usb (void);
-static void dump_pci_id (const char *);
-static void dump_pcmcia_id (const char *);
-static void dump_usb_id (const char *);
-static void dump_regvals (void);
-static void dump_paramreg (const struct section *,
- const struct reg *, int);
-
-static FILE *ofp;
-
-int
-inf_parse (FILE *fp, FILE *outfp)
-{
- TAILQ_INIT(&sh);
- TAILQ_INIT(&rh);
- TAILQ_INIT(&ah);
-
- ofp = outfp;
- yyin = fp;
- yyparse();
-
- if (dump_deviceids_pci() == 0 &&
- dump_deviceids_pcmcia() == 0 &&
- dump_deviceids_usb() == 0)
- return (-1);
-
- fprintf(outfp, "#ifdef NDIS_REGVALS\n");
- dump_regvals();
- fprintf(outfp, "#endif /* NDIS_REGVALS */\n");
-
- return (0);
-}
-
-void
-section_add (const char *s)
-{
- struct section *sec;
-
- sec = malloc(sizeof(struct section));
- bzero(sec, sizeof(struct section));
- sec->name = s;
- TAILQ_INSERT_TAIL(&sh, sec, link);
-
- return;
-}
-
-static struct assign *
-find_assign (const char *s, const char *k)
-{
- struct assign *assign;
- char newkey[256];
-
- /* Deal with string section lookups. */
-
- if (k != NULL && k[0] == '%') {
- bzero(newkey, sizeof(newkey));
- strncpy(newkey, k + 1, strlen(k) - 2);
- k = newkey;
- }
-
- TAILQ_FOREACH(assign, &ah, link) {
- if (strcasecmp(assign->section->name, s) == 0) {
- if (k == NULL)
- return(assign);
- else
- if (strcasecmp(assign->key, k) == 0)
- return(assign);
- }
- }
- return(NULL);
-}
-
-static struct assign *
-find_next_assign (struct assign *a)
-{
- struct assign *assign;
-
- TAILQ_FOREACH(assign, &ah, link) {
- if (assign == a)
- break;
- }
-
- assign = assign->link.tqe_next;
-
- if (assign == NULL || assign->section != a->section)
- return(NULL);
-
- return (assign);
-}
-
-static const char *
-stringcvt(const char *s)
-{
- struct assign *manf;
-
- manf = find_assign("strings", s);
- if (manf == NULL)
- return(s);
- return(manf->vals[0]);
-}
-
-struct section *
-find_section (const char *s)
-{
- struct section *section;
-
- TAILQ_FOREACH(section, &sh, link) {
- if (strcasecmp(section->name, s) == 0)
- return(section);
- }
- return(NULL);
-}
-
-static void
-dump_pcmcia_id(const char *s)
-{
- char *manstr, *devstr;
- char *p0, *p;
-
- p0 = __DECONST(char *, s);
-
- p = strchr(p0, '\\');
- if (p == NULL)
- return;
- p0 = p + 1;
-
- p = strchr(p0, '-');
- if (p == NULL)
- return;
- *p = '\0';
-
- manstr = p0;
-
- /* Convert any underscores to spaces. */
-
- while (*p0 != '\0') {
- if (*p0 == '_')
- *p0 = ' ';
- p0++;
- }
-
- p0 = p + 1;
- p = strchr(p0, '-');
- if (p == NULL)
- return;
- *p = '\0';
-
- devstr = p0;
-
- /* Convert any underscores to spaces. */
-
- while (*p0 != '\0') {
- if (*p0 == '_')
- *p0 = ' ';
- p0++;
- }
-
- fprintf(ofp, "\t\\\n\t{ \"%s\", \"%s\", ", manstr, devstr);
- return;
-}
-
-static void
-dump_pci_id(const char *s)
-{
- char *p;
- char vidstr[7], didstr[7], subsysstr[14];
-
- p = strcasestr(s, "VEN_");
- if (p == NULL)
- return;
- p += 4;
- strcpy(vidstr, "0x");
- strncat(vidstr, p, 4);
- p = strcasestr(s, "DEV_");
- if (p == NULL)
- return;
- p += 4;
- strcpy(didstr, "0x");
- strncat(didstr, p, 4);
- if (p == NULL)
- return;
- p = strcasestr(s, "SUBSYS_");
- if (p == NULL)
- strcpy(subsysstr, "0x00000000");
- else {
- p += 7;
- strcpy(subsysstr, "0x");
- strncat(subsysstr, p, 8);
- }
-
- fprintf(ofp, "\t\\\n\t{ %s, %s, %s, ", vidstr, didstr, subsysstr);
- return;
-}
-
-static void
-dump_usb_id(const char *s)
-{
- char *p;
- char vidstr[7], pidstr[7];
-
- p = strcasestr(s, "VID_");
- if (p == NULL)
- return;
- p += 4;
- strcpy(vidstr, "0x");
- strncat(vidstr, p, 4);
- p = strcasestr(s, "PID_");
- if (p == NULL)
- return;
- p += 4;
- strcpy(pidstr, "0x");
- strncat(pidstr, p, 4);
- if (p == NULL)
- return;
-
- fprintf(ofp, "\t\\\n\t{ %s, %s, ", vidstr, pidstr);
-}
-
-static int
-dump_deviceids_pci()
-{
- struct assign *manf, *dev;
- struct section *sec;
- struct assign *assign;
- char xpsec[256];
- int first = 1, found = 0;
-
- /* Find manufacturer name */
- manf = find_assign("Manufacturer", NULL);
-
-nextmanf:
-
- /* Find manufacturer section */
- if (manf->vals[1] != NULL &&
- (strcasecmp(manf->vals[1], "NT.5.1") == 0 ||
- strcasecmp(manf->vals[1], "NTx86") == 0 ||
- strcasecmp(manf->vals[1], "NTx86.5.1") == 0 ||
- strcasecmp(manf->vals[1], "NTamd64") == 0)) {
- /* Handle Windows XP INF files. */
- snprintf(xpsec, sizeof(xpsec), "%s.%s",
- manf->vals[0], manf->vals[1]);
- sec = find_section(xpsec);
- } else
- sec = find_section(manf->vals[0]);
-
- /* See if there are any PCI device definitions. */
-
- TAILQ_FOREACH(assign, &ah, link) {
- if (assign->section == sec) {
- dev = find_assign("strings", assign->key);
- if (strcasestr(assign->vals[1], "PCI") != NULL) {
- found++;
- break;
- }
- }
- }
-
- if (found == 0)
- goto done;
-
- found = 0;
-
- if (first == 1) {
- /* Emit start of PCI device table */
- fprintf (ofp, "#define NDIS_PCI_DEV_TABLE");
- first = 0;
- }
-
-retry:
-
- /*
- * Now run through all the device names listed
- * in the manufacturer section and dump out the
- * device descriptions and vendor/device IDs.
- */
-
- TAILQ_FOREACH(assign, &ah, link) {
- if (assign->section == sec) {
- dev = find_assign("strings", assign->key);
- /* Emit device IDs. */
- if (strcasestr(assign->vals[1], "PCI") != NULL)
- dump_pci_id(assign->vals[1]);
- else
- continue;
- /* Emit device description */
- fprintf (ofp, "\t\\\n\t\"%s\" },", dev->vals[0]);
- found++;
- }
- }
-
- /* Someone tried to fool us. Shame on them. */
- if (!found) {
- found++;
- sec = find_section(manf->vals[0]);
- goto retry;
- }
-
- /* Handle Manufacturer sections with multiple entries. */
- manf = find_next_assign(manf);
-
- if (manf != NULL)
- goto nextmanf;
-
-done:
- /* Emit end of table */
-
- fprintf(ofp, "\n\n");
-
- return (found);
-}
-
-static int
-dump_deviceids_pcmcia()
-{
- struct assign *manf, *dev;
- struct section *sec;
- struct assign *assign;
- char xpsec[256];
- int first = 1, found = 0;
-
- /* Find manufacturer name */
- manf = find_assign("Manufacturer", NULL);
-
-nextmanf:
-
- /* Find manufacturer section */
- if (manf->vals[1] != NULL &&
- (strcasecmp(manf->vals[1], "NT.5.1") == 0 ||
- strcasecmp(manf->vals[1], "NTx86") == 0 ||
- strcasecmp(manf->vals[1], "NTx86.5.1") == 0 ||
- strcasecmp(manf->vals[1], "NTamd64") == 0)) {
- /* Handle Windows XP INF files. */
- snprintf(xpsec, sizeof(xpsec), "%s.%s",
- manf->vals[0], manf->vals[1]);
- sec = find_section(xpsec);
- } else
- sec = find_section(manf->vals[0]);
-
- /* See if there are any PCMCIA device definitions. */
-
- TAILQ_FOREACH(assign, &ah, link) {
- if (assign->section == sec) {
- dev = find_assign("strings", assign->key);
- if (strcasestr(assign->vals[1], "PCMCIA") != NULL) {
- found++;
- break;
- }
- }
- }
-
- if (found == 0)
- goto done;
-
- found = 0;
-
- if (first == 1) {
- /* Emit start of PCMCIA device table */
- fprintf (ofp, "#define NDIS_PCMCIA_DEV_TABLE");
- first = 0;
- }
-
-retry:
-
- /*
- * Now run through all the device names listed
- * in the manufacturer section and dump out the
- * device descriptions and vendor/device IDs.
- */
-
- TAILQ_FOREACH(assign, &ah, link) {
- if (assign->section == sec) {
- dev = find_assign("strings", assign->key);
- /* Emit device IDs. */
- if (strcasestr(assign->vals[1], "PCMCIA") != NULL)
- dump_pcmcia_id(assign->vals[1]);
- else
- continue;
- /* Emit device description */
- fprintf (ofp, "\t\\\n\t\"%s\" },", dev->vals[0]);
- found++;
- }
- }
-
- /* Someone tried to fool us. Shame on them. */
- if (!found) {
- found++;
- sec = find_section(manf->vals[0]);
- goto retry;
- }
-
- /* Handle Manufacturer sections with multiple entries. */
- manf = find_next_assign(manf);
-
- if (manf != NULL)
- goto nextmanf;
-
-done:
- /* Emit end of table */
-
- fprintf(ofp, "\n\n");
-
- return (found);
-}
-
-static int
-dump_deviceids_usb()
-{
- struct assign *manf, *dev;
- struct section *sec;
- struct assign *assign;
- char xpsec[256];
- int first = 1, found = 0;
-
- /* Find manufacturer name */
- manf = find_assign("Manufacturer", NULL);
-
-nextmanf:
-
- /* Find manufacturer section */
- if (manf->vals[1] != NULL &&
- (strcasecmp(manf->vals[1], "NT.5.1") == 0 ||
- strcasecmp(manf->vals[1], "NTx86") == 0 ||
- strcasecmp(manf->vals[1], "NTx86.5.1") == 0 ||
- strcasecmp(manf->vals[1], "NTamd64") == 0)) {
- /* Handle Windows XP INF files. */
- snprintf(xpsec, sizeof(xpsec), "%s.%s",
- manf->vals[0], manf->vals[1]);
- sec = find_section(xpsec);
- } else
- sec = find_section(manf->vals[0]);
-
- /* See if there are any USB device definitions. */
-
- TAILQ_FOREACH(assign, &ah, link) {
- if (assign->section == sec) {
- dev = find_assign("strings", assign->key);
- if (strcasestr(assign->vals[1], "USB") != NULL) {
- found++;
- break;
- }
- }
- }
-
- if (found == 0)
- goto done;
-
- found = 0;
-
- if (first == 1) {
- /* Emit start of USB device table */
- fprintf (ofp, "#define NDIS_USB_DEV_TABLE");
- first = 0;
- }
-
-retry:
-
- /*
- * Now run through all the device names listed
- * in the manufacturer section and dump out the
- * device descriptions and vendor/device IDs.
- */
-
- TAILQ_FOREACH(assign, &ah, link) {
- if (assign->section == sec) {
- dev = find_assign("strings", assign->key);
- /* Emit device IDs. */
- if (strcasestr(assign->vals[1], "USB") != NULL)
- dump_usb_id(assign->vals[1]);
- else
- continue;
- /* Emit device description */
- fprintf (ofp, "\t\\\n\t\"%s\" },", dev->vals[0]);
- found++;
- }
- }
-
- /* Someone tried to fool us. Shame on them. */
- if (!found) {
- found++;
- sec = find_section(manf->vals[0]);
- goto retry;
- }
-
- /* Handle Manufacturer sections with multiple entries. */
- manf = find_next_assign(manf);
-
- if (manf != NULL)
- goto nextmanf;
-
-done:
- /* Emit end of table */
-
- fprintf(ofp, "\n\n");
-
- return (found);
-}
-
-static void
-dump_addreg(const char *s, int devidx)
-{
- struct section *sec;
- struct reg *reg;
-
- /* Find the addreg section */
- sec = find_section(s);
-
- /* Dump all the keys defined in it. */
- TAILQ_FOREACH(reg, &rh, link) {
- /*
- * Keys with an empty subkey are very easy to parse,
- * so just deal with them here. If a parameter key
- * of the same name also exists, prefer that one and
- * skip this one.
- */
- if (reg->section == sec) {
- if (reg->subkey == NULL) {
- fprintf(ofp, "\n\t{ \"%s\",", reg->key);
- fprintf(ofp,"\n\t\"%s \",", reg->key);
- fprintf(ofp, "\n\t{ \"%s\" }, %d },",
- reg->value == NULL ? "" :
- stringcvt(reg->value), devidx);
- } else if (strncasecmp(reg->subkey,
- "Ndi\\params", strlen("Ndi\\params")-1) == 0 &&
- (reg->key != NULL && strcasecmp(reg->key,
- "ParamDesc") == 0))
- dump_paramreg(sec, reg, devidx);
- }
- }
-
- return;
-}
-
-static void
-dump_enumreg(const struct section *s, const struct reg *r)
-{
- struct reg *reg;
- char enumkey[256];
-
- sprintf(enumkey, "%s\\enum", r->subkey);
- TAILQ_FOREACH(reg, &rh, link) {
- if (reg->section != s)
- continue;
- if (reg->subkey == NULL || strcasecmp(reg->subkey, enumkey))
- continue;
- fprintf(ofp, " [%s=%s]", reg->key,
- stringcvt(reg->value));
- }
- return;
-}
-
-static void
-dump_editreg(const struct section *s, const struct reg *r)
-{
- struct reg *reg;
-
- TAILQ_FOREACH(reg, &rh, link) {
- if (reg->section != s)
- continue;
- if (reg->subkey == NULL || strcasecmp(reg->subkey, r->subkey))
- continue;
- if (reg->key == NULL)
- continue;
- if (strcasecmp(reg->key, "LimitText") == 0)
- fprintf(ofp, " [maxchars=%s]", reg->value);
- if (strcasecmp(reg->key, "Optional") == 0 &&
- strcmp(reg->value, "1") == 0)
- fprintf(ofp, " [optional]");
- }
- return;
-}
-
-/* Use this for int too */
-static void
-dump_dwordreg(const struct section *s, const struct reg *r)
-{
- struct reg *reg;
-
- TAILQ_FOREACH(reg, &rh, link) {
- if (reg->section != s)
- continue;
- if (reg->subkey == NULL || strcasecmp(reg->subkey, r->subkey))
- continue;
- if (reg->key == NULL)
- continue;
- if (strcasecmp(reg->key, "min") == 0)
- fprintf(ofp, " [min=%s]", reg->value);
- if (strcasecmp(reg->key, "max") == 0)
- fprintf(ofp, " [max=%s]", reg->value);
- }
- return;
-}
-
-static void
-dump_defaultinfo(const struct section *s, const struct reg *r, int devidx)
-{
- struct reg *reg;
- TAILQ_FOREACH(reg, &rh, link) {
- if (reg->section != s)
- continue;
- if (reg->subkey == NULL || strcasecmp(reg->subkey, r->subkey))
- continue;
- if (reg->key == NULL || strcasecmp(reg->key, "Default"))
- continue;
- fprintf(ofp, "\n\t{ \"%s\" }, %d },", reg->value == NULL ? "" :
- stringcvt(reg->value), devidx);
- return;
- }
- /* Default registry entry missing */
- fprintf(ofp, "\n\t{ \"\" }, %d },", devidx);
- return;
-}
-
-static void
-dump_paramdesc(const struct section *s, const struct reg *r)
-{
- struct reg *reg;
- TAILQ_FOREACH(reg, &rh, link) {
- if (reg->section != s)
- continue;
- if (reg->subkey == NULL || strcasecmp(reg->subkey, r->subkey))
- continue;
- if (reg->key == NULL || strcasecmp(reg->key, "ParamDesc"))
- continue;
- fprintf(ofp, "\n\t\"%s", stringcvt(r->value));
- break;
- }
- return;
-}
-
-static void
-dump_typeinfo(const struct section *s, const struct reg *r)
-{
- struct reg *reg;
- TAILQ_FOREACH(reg, &rh, link) {
- if (reg->section != s)
- continue;
- if (reg->subkey == NULL || strcasecmp(reg->subkey, r->subkey))
- continue;
- if (reg->key == NULL)
- continue;
- if (strcasecmp(reg->key, "type"))
- continue;
- if (strcasecmp(reg->value, "dword") == 0 ||
- strcasecmp(reg->value, "int") == 0)
- dump_dwordreg(s, r);
- if (strcasecmp(reg->value, "enum") == 0)
- dump_enumreg(s, r);
- if (strcasecmp(reg->value, "edit") == 0)
- dump_editreg(s, r);
- }
- return;
-}
-
-static void
-dump_paramreg(const struct section *s, const struct reg *r, int devidx)
-{
- const char *keyname;
-
- keyname = r->subkey + strlen("Ndi\\params\\");
- fprintf(ofp, "\n\t{ \"%s\",", keyname);
- dump_paramdesc(s, r);
- dump_typeinfo(s, r);
- fprintf(ofp, "\",");
- dump_defaultinfo(s, r, devidx);
-
- return;
-}
-
-static void
-dump_regvals(void)
-{
- struct assign *manf, *dev;
- struct section *sec;
- struct assign *assign;
- char sname[256];
- int found = 0, i, is_winxp = 0, is_winnt = 0, devidx = 0;
-
- /* Find signature to check for special case of WinNT. */
- assign = find_assign("version", "signature");
- if (strcasecmp(assign->vals[0], "$windows nt$") == 0)
- is_winnt++;
-
- /* Emit start of block */
- fprintf (ofp, "ndis_cfg ndis_regvals[] = {");
-
- /* Find manufacturer name */
- manf = find_assign("Manufacturer", NULL);
-
-nextmanf:
-
- /* Find manufacturer section */
- if (manf->vals[1] != NULL &&
- (strcasecmp(manf->vals[1], "NT.5.1") == 0 ||
- strcasecmp(manf->vals[1], "NTx86") == 0 ||
- strcasecmp(manf->vals[1], "NTx86.5.1") == 0 ||
- strcasecmp(manf->vals[1], "NTamd64") == 0)) {
- is_winxp++;
- /* Handle Windows XP INF files. */
- snprintf(sname, sizeof(sname), "%s.%s",
- manf->vals[0], manf->vals[1]);
- sec = find_section(sname);
- } else
- sec = find_section(manf->vals[0]);
-
-retry:
-
- TAILQ_FOREACH(assign, &ah, link) {
- if (assign->section == sec) {
- found++;
- /*
- * Find all the AddReg sections.
- * Look for section names with .NT, unless
- * this is a WinXP .INF file.
- */
-
- if (is_winxp) {
- sprintf(sname, "%s.NTx86", assign->vals[0]);
- dev = find_assign(sname, "AddReg");
- if (dev == NULL) {
- sprintf(sname, "%s.NT",
- assign->vals[0]);
- dev = find_assign(sname, "AddReg");
- }
- if (dev == NULL)
- dev = find_assign(assign->vals[0],
- "AddReg");
- } else {
- sprintf(sname, "%s.NT", assign->vals[0]);
- dev = find_assign(sname, "AddReg");
- if (dev == NULL && is_winnt)
- dev = find_assign(assign->vals[0],
- "AddReg");
- }
- /* Section not found. */
- if (dev == NULL)
- continue;
- for (i = 0; i < W_MAX; i++) {
- if (dev->vals[i] != NULL)
- dump_addreg(dev->vals[i], devidx);
- }
- devidx++;
- }
- }
-
- if (!found) {
- sec = find_section(manf->vals[0]);
- is_winxp = 0;
- found++;
- goto retry;
- }
-
- manf = find_next_assign(manf);
-
- if (manf != NULL)
- goto nextmanf;
-
- fprintf(ofp, "\n\t{ NULL, NULL, { 0 }, 0 }\n};\n\n");
-
- return;
-}
-
-void
-assign_add (const char *a)
-{
- struct assign *assign;
- int i;
-
- assign = malloc(sizeof(struct assign));
- bzero(assign, sizeof(struct assign));
- assign->section = TAILQ_LAST(&sh, section_head);
- assign->key = sstrdup(a);
- for (i = 0; i < idx; i++)
- assign->vals[(idx - 1) - i] = sstrdup(words[i]);
- TAILQ_INSERT_TAIL(&ah, assign, link);
-
- clear_words();
- return;
-}
-
-void
-define_add (const char *d __unused)
-{
-#ifdef notdef
- fprintf(stderr, "define \"%s\"\n", d);
-#endif
- return;
-}
-
-static char *
-sstrdup(const char *str)
-{
- if (str != NULL && strlen(str))
- return (strdup(str));
- return (NULL);
-}
-
-static int
-satoi (const char *nptr)
-{
- if (nptr != NULL && strlen(nptr))
- return (atoi(nptr));
- return (0);
-}
-
-void
-regkey_add (const char *r)
-{
- struct reg *reg;
-
- reg = malloc(sizeof(struct reg));
- bzero(reg, sizeof(struct reg));
- reg->section = TAILQ_LAST(&sh, section_head);
- reg->root = sstrdup(r);
- reg->subkey = sstrdup(words[3]);
- reg->key = sstrdup(words[2]);
- reg->flags = satoi(words[1]);
- reg->value = sstrdup(words[0]);
- TAILQ_INSERT_TAIL(&rh, reg, link);
-
- free(__DECONST(char *, r));
- clear_words();
- return;
-}
-
-void
-push_word (const char *w)
-{
-
- if (idx == W_MAX) {
- fprintf(stderr, "too many words; try bumping W_MAX in inf.h\n");
- exit(1);
- }
-
- if (w && strlen(w))
- words[idx++] = w;
- else
- words[idx++] = NULL;
- return;
-}
-
-void
-clear_words (void)
-{
- int i;
-
- for (i = 0; i < idx; i++) {
- if (words[i]) {
- free(__DECONST(char *, words[i]));
- }
- }
- idx = 0;
- bzero(words, sizeof(words));
- return;
-}
diff --git a/usr.sbin/ndiscvt/inf.h b/usr.sbin/ndiscvt/inf.h
deleted file mode 100644
index ba08d674eeac..000000000000
--- a/usr.sbin/ndiscvt/inf.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * $Id: inf.h,v 1.3 2003/11/30 21:58:16 winter Exp $
- *
- * $FreeBSD$
- */
-
-#define W_MAX 32
-
-struct section {
- const char * name;
-
- TAILQ_ENTRY(section) link;
-};
-TAILQ_HEAD(section_head, section);
-
-struct assign {
- struct section *section;
-
- const char * key;
- const char * vals[W_MAX];
-
- TAILQ_ENTRY(assign) link;
-};
-TAILQ_HEAD(assign_head, assign);
-
-struct reg {
- struct section *section;
-
- const char * root;
- const char * subkey;
- const char * key;
- u_int flags;
- const char * value;
-
- TAILQ_ENTRY(reg) link;
-};
-TAILQ_HEAD(reg_head, reg);
-
-#define FLG_ADDREG_TYPE_SZ 0x00000000
-#define FLG_ADDREG_BINVALUETYPE 0x00000001
-#define FLG_ADDREG_NOCLOBBER 0x00000002
-#define FLG_ADDREG_DELVAL 0x00000004
-#define FLG_ADDREG_APPEND 0x00000008
-#define FLG_ADDREG_KEYONLY 0x00000010
-#define FLG_ADDREG_OVERWRITEONLY 0x00000020
-#define FLG_ADDREG_64BITKEY 0x00001000
-#define FLG_ADDREG_KEYONLY_COMMON 0x00002000
-#define FLG_ADDREG_32BITKEY 0x00004000
-#define FLG_ADDREG_TYPE_MULTI_SZ 0x00010000
-#define FLG_ADDREG_TYPE_EXPAND_SZ 0x00020000
-#define FLG_ADDREG_TYPE_DWORD 0x00010001
-#define FLG_ADDREG_TYPE_NONE 0x00020001
-
-extern void section_add (const char *);
-extern void assign_add (const char *);
-extern void define_add (const char *);
-extern void regkey_add (const char *);
-
-extern void push_word (const char *);
-extern void clear_words (void);
-extern int inf_parse (FILE *, FILE *);
diff --git a/usr.sbin/ndiscvt/ndiscvt.8 b/usr.sbin/ndiscvt/ndiscvt.8
deleted file mode 100644
index f4974958e005..000000000000
--- a/usr.sbin/ndiscvt/ndiscvt.8
+++ /dev/null
@@ -1,283 +0,0 @@
-.\" Copyright (c) 2003
-.\" Bill Paul <wpaul@windriver.com> All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by Bill Paul.
-.\" 4. Neither the name of the author nor the names of any co-contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
-.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-.\" THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd December 10, 2003
-.Dt NDISCVT 8
-.Os
-.Sh NAME
-.Nm ndiscvt
-.Nd convert
-.Tn Windows\[rg]
-NDIS drivers for use with FreeBSD
-.Sh SYNOPSIS
-.Nm
-.Op Fl O
-.Op Fl i Ar inffile
-.Fl s Ar sysfile
-.Op Fl n Ar devname
-.Op Fl o Ar outfile
-.Nm
-.Op Fl f Ar firmfile
-.Sh DESCRIPTION
-The
-.Nm
-utility transforms a
-.Tn Windows\[rg]
-NDIS driver into a data file which
-is used to build an
-.Xr ndis 4
-compatibility driver module.
-.Tn Windows\[rg]
-drivers consist of two main parts: a
-.Pa .SYS
-file, which contains the actual driver executable code,
-and an
-.Pa .INF
-file, which provides the
-.Tn Windows\[rg]
-installer with device
-identifier information and a list of driver-specific registry keys.
-The
-.Nm
-utility can convert these files into a header file that is compiled
-into
-.Pa if_ndis.c
-to create an object code module that can be linked into
-the
-.Fx
-kernel.
-.Pp
-The
-.Pa .INF
-file is typically required since only it contains device
-identification data such as PCI vendor and device IDs or PCMCIA
-identifier strings.
-The
-.Pa .INF
-file may be optionally omitted however,
-in which case the
-.Nm
-utility will only perform the conversion of the
-.Pa .SYS
-file.
-This is useful for debugging purposes only.
-.Sh OPTIONS
-The options are as follows:
-.Bl -tag -width indent
-.It Fl i Ar inffile
-Open and parse the specified
-.Pa .INF
-file when performing conversion.
-The
-.Nm
-utility will parse this file and emit a device identification
-structure and registry key configuration structures which will be
-used by the
-.Xr ndis 4
-driver and
-.Xr ndisapi 9
-kernel subsystem.
-If this is omitted,
-.Nm
-will emit a dummy configuration structure only.
-.It Fl s Ar sysfile
-Open and parse the specified
-.Pa .SYS
-file.
-This file must contain a
-.Tn Windows\[rg]
-driver image.
-The
-.Nm
-utility will perform some manipulation of the sections within the
-executable file to make runtime linking within the kernel a little
-easier and then convert the image into a data array.
-.It Fl n Ar devname
-Specify an alternate name for the network device/interface which will
-be created when the driver is instantiated.
-If you need to load more
-than one NDIS driver into your system (i.e., if you have two different
-network cards in your system which require NDIS driver support), each
-module you create must have a unique name.
-Device can not be larger than
-.Dv IFNAMSIZ .
-If no name is specified, the driver will use the
-default a default name
-.Pq Dq Li ndis .
-.It Fl o Ar outfile
-Specify the output file in which to place the resulting data.
-This can be any file pathname.
-If
-.Ar outfile
-is a single dash
-.Pq Sq Fl ,
-the data will be written to the standard output.
-The
-.Pa if_ndis.c
-module expects to find the driver data in a file called
-.Pa ndis_driver_data.h ,
-so it is recommended that this name be used.
-.It Fl O
-Generate both an
-.Pa ndis_driver_data.h
-file and
-an
-.Pa ndis_driver.data.o
-file.
-The latter file will contain a copy of the
-.Tn Windows\[rg]
-.Pa .SYS
-driver image encoded as a
-.Fx
-ELF object file
-(created with
-.Xr objcopy 1 ) .
-Turning the
-.Tn Windows\[rg]
-driver image directly into an object code file saves disk space
-and compilation time.
-.It Fl f Ar firmfile
-A few NDIS drivers come with additional files that the core
-driver module will load during initialization time.
-Typically,
-these files contain firmware which the driver will transfer to
-the device in order to make it fully operational.
-In
-.Tn Windows\[rg] ,
-these files are usually just copied into one of the system
-directories along with the driver itself.
-.Pp
-In
-.Fx
-there are two mechanism for loading these files.
-If the driver
-is built as a loadable kernel module which is loaded after the
-kernel has finished booting
-(and after the root file system has
-been mounted),
-the extra files can simply be copied to the
-.Pa /compat/ndis
-directory, and they will be loaded into the kernel on demand when the
-driver needs them.
-.Pp
-If however the driver is required to bootstrap the system
-(i.e., if
-the NDIS-based network interface is to be used for diskless/PXE
-booting),
-the files need to be pre-loaded by the bootstrap
-loader in order to be accessible, since the driver will need them
-before the root file system has been mounted.
-However, the bootstrap
-loader is only able to load files that are shared
-.Fx
-binary objects.
-.Pp
-The
-.Fl f
-flag can be used to convert an arbitrary file
-.Ar firmfile
-into shared object format
-(the actual conversion is done using
-the
-.Xr objcopy 1
-and
-.Xr ld 1
-commands).
-The resulting files can then be copied to the
-.Pa /boot/kernel
-directory, and can be pre-loaded directly from the boot loader
-prompt, or automatically by editing the
-.Xr loader.conf 5
-file.
-If desired, the files can also be loaded into memory
-at runtime using the
-.Xr kldload 8
-command.
-.Pp
-When an NDIS driver tries to open an external file, the
-.Xr ndisapi 9
-code will first search for a loaded kernel module that matches the
-name specified in the open request, and if that fails, it will then
-try to open the file from the
-.Pa /compat/ndis
-directory as well.
-Note that during kernel bootstrap, the ability
-to open files from
-.Pa /compat/ndis
-is disabled: only the module search will be performed.
-.Pp
-When using the
-.Fl f
-flag,
-.Nm
-will generate both a relocatable object file
-(with a
-.Pa .o
-extension)
-and a shared object file
-(with a
-.Pa .ko
-extension).
-The shared object is the one that should be placed in
-the
-.Pa /boot/kernel
-directory.
-The relocatable object file is useful if the user wishes
-to create a completely static kernel image: the object file can be
-linked into the kernel directly along with the driver itself.
-Some
-editing of the kernel configuration files will be necessary in order
-to have the extra object included in the build.
-.El
-.Sh SEE ALSO
-.Xr ld 1 ,
-.Xr objcopy 1 ,
-.Xr ndis 4 ,
-.Xr kldload 8
-.Sh HISTORY
-The
-.Nm
-utility first appeared in
-.Fx 5.3 .
-.Sh AUTHORS
-.An -nosplit
-The
-.Nm
-utility was written by
-.An Bill Paul Aq Mt wpaul@windriver.com .
-The
-.Xr lex 1
-and
-.Xr yacc 1
-.Pa INF
-file parser was written by
-.An Matthew Dodd Aq Mt mdodd@FreeBSD.org .
diff --git a/usr.sbin/ndiscvt/ndiscvt.c b/usr.sbin/ndiscvt/ndiscvt.c
deleted file mode 100644
index 1b7660700786..000000000000
--- a/usr.sbin/ndiscvt/ndiscvt.c
+++ /dev/null
@@ -1,436 +0,0 @@
-/*
- * SPDX-License-Identifier: BSD-4-Clause
- *
- * Copyright (c) 2003
- * Bill Paul <wpaul@windriver.com>. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Bill Paul.
- * 4. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <sys/queue.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <libgen.h>
-#include <err.h>
-#include <ctype.h>
-
-#include <compat/ndis/pe_var.h>
-
-#include "inf.h"
-
-static int insert_padding(void **, int *);
-extern const char *__progname;
-
-/*
- * Sections within Windows PE files are defined using virtual
- * and physical address offsets and virtual and physical sizes.
- * The physical values define how the section data is stored in
- * the executable file while the virtual values describe how the
- * sections will look once loaded into memory. It happens that
- * the linker in the Microsoft(r) DDK will tend to generate
- * binaries where the virtual and physical values are identical,
- * which means in most cases we can just transfer the file
- * directly to memory without any fixups. This is not always
- * the case though, so we have to be prepared to handle files
- * where the in-memory section layout differs from the disk file
- * section layout.
- *
- * There are two kinds of variations that can occur: the relative
- * virtual address of the section might be different from the
- * physical file offset, and the virtual section size might be
- * different from the physical size (for example, the physical
- * size of the .data section might be 1024 bytes, but the virtual
- * size might be 1384 bytes, indicating that the data section should
- * actually use up 1384 bytes in RAM and be padded with zeros). What we
- * do is read the original file into memory and then make an in-memory
- * copy with all of the sections relocated, re-sized and zero padded
- * according to the virtual values specified in the section headers.
- * We then emit the fixed up image file for use by the if_ndis driver.
- * This way, we don't have to do the fixups inside the kernel.
- */
-
-#define ROUND_DOWN(n, align) (((uintptr_t)n) & ~((align) - 1l))
-#define ROUND_UP(n, align) ROUND_DOWN(((uintptr_t)n) + (align) - 1l, \
- (align))
-
-#define SET_HDRS(x) \
- dos_hdr = (image_dos_header *)x; \
- nt_hdr = (image_nt_header *)(x + dos_hdr->idh_lfanew); \
- sect_hdr = IMAGE_FIRST_SECTION(nt_hdr);
-
-static int
-insert_padding(void **imgbase, int *imglen)
-{
- image_section_header *sect_hdr;
- image_dos_header *dos_hdr;
- image_nt_header *nt_hdr;
- image_optional_header opt_hdr;
- int i = 0, sections, curlen = 0;
- int offaccum = 0, oldraddr, oldrlen;
- uint8_t *newimg, *tmp;
-
- newimg = malloc(*imglen);
-
- if (newimg == NULL)
- return(ENOMEM);
-
- bcopy(*imgbase, newimg, *imglen);
- curlen = *imglen;
-
- if (pe_get_optional_header((vm_offset_t)newimg, &opt_hdr))
- return(0);
-
- sections = pe_numsections((vm_offset_t)newimg);
-
- SET_HDRS(newimg);
-
- for (i = 0; i < sections; i++) {
- oldraddr = sect_hdr->ish_rawdataaddr;
- oldrlen = sect_hdr->ish_rawdatasize;
- sect_hdr->ish_rawdataaddr = sect_hdr->ish_vaddr;
- offaccum += ROUND_UP(sect_hdr->ish_vaddr - oldraddr,
- opt_hdr.ioh_filealign);
- offaccum +=
- ROUND_UP(sect_hdr->ish_misc.ish_vsize,
- opt_hdr.ioh_filealign) -
- ROUND_UP(sect_hdr->ish_rawdatasize,
- opt_hdr.ioh_filealign);
- tmp = realloc(newimg, *imglen + offaccum);
- if (tmp == NULL) {
- free(newimg);
- return(ENOMEM);
- }
- newimg = tmp;
- SET_HDRS(newimg);
- sect_hdr += i;
- bzero(newimg + sect_hdr->ish_rawdataaddr,
- ROUND_UP(sect_hdr->ish_misc.ish_vsize,
- opt_hdr.ioh_filealign));
- bcopy((uint8_t *)(*imgbase) + oldraddr,
- newimg + sect_hdr->ish_rawdataaddr, oldrlen);
- sect_hdr++;
- }
-
- free(*imgbase);
-
- *imgbase = newimg;
- *imglen += offaccum;
-
- return(0);
-}
-
-static void
-usage(void)
-{
- fprintf(stderr, "Usage: %s [-O] [-i <inffile>] -s <sysfile> "
- "[-n devname] [-o outfile]\n", __progname);
- fprintf(stderr, " %s -f <firmfile>\n", __progname);
-
- exit(1);
-}
-
-static void
-bincvt(char *sysfile, char *outfile, void *img, int fsize)
-{
- char *ptr;
- char tname[] = "/tmp/ndiscvt.XXXXXX";
- char sysbuf[1024];
- FILE *binfp;
-
- mkstemp(tname);
-
- binfp = fopen(tname, "a+");
- if (binfp == NULL)
- err(1, "opening %s failed", tname);
-
- if (fwrite(img, fsize, 1, binfp) != 1)
- err(1, "failed to output binary image");
-
- fclose(binfp);
-
- outfile = strdup(basename(outfile));
- if (strchr(outfile, '.'))
- *strchr(outfile, '.') = '\0';
-
- snprintf(sysbuf, sizeof(sysbuf),
-#ifdef __i386__
- "objcopy -I binary -O elf32-i386-freebsd -B i386 %s %s.o\n",
-#endif
-#ifdef __amd64__
- "objcopy -I binary -O elf64-x86-64-freebsd -B i386 %s %s.o\n",
-#endif
- tname, outfile);
- printf("%s", sysbuf);
- system(sysbuf);
- unlink(tname);
-
- ptr = tname;
- while (*ptr) {
- if (*ptr == '/' || *ptr == '.')
- *ptr = '_';
- ptr++;
- }
-
- snprintf(sysbuf, sizeof(sysbuf),
- "objcopy --redefine-sym _binary_%s_start=ndis_%s_drv_data_start "
- "--strip-symbol _binary_%s_size "
- "--redefine-sym _binary_%s_end=ndis_%s_drv_data_end %s.o %s.o\n",
- tname, sysfile, tname, tname, sysfile, outfile, outfile);
- printf("%s", sysbuf);
- system(sysbuf);
- free(outfile);
-
- return;
-}
-
-static void
-firmcvt(char *firmfile)
-{
- char *basefile, *outfile, *ptr;
- char sysbuf[1024];
-
- outfile = strdup(basename(firmfile));
- basefile = strdup(outfile);
-
- snprintf(sysbuf, sizeof(sysbuf),
-#ifdef __i386__
- "objcopy -I binary -O elf32-i386-freebsd -B i386 %s %s.o\n",
-#endif
-#ifdef __amd64__
- "objcopy -I binary -O elf64-x86-64-freebsd -B i386 %s %s.o\n",
-#endif
- firmfile, outfile);
- printf("%s", sysbuf);
- system(sysbuf);
-
- ptr = firmfile;
- while (*ptr) {
- if (*ptr == '/' || *ptr == '.')
- *ptr = '_';
- ptr++;
- }
- ptr = basefile;
- while (*ptr) {
- if (*ptr == '/' || *ptr == '.')
- *ptr = '_';
- else
- *ptr = tolower(*ptr);
- ptr++;
- }
-
- snprintf(sysbuf, sizeof(sysbuf),
- "objcopy --redefine-sym _binary_%s_start=%s_start "
- "--strip-symbol _binary_%s_size "
- "--redefine-sym _binary_%s_end=%s_end %s.o %s.o\n",
- firmfile, basefile, firmfile, firmfile,
- basefile, outfile, outfile);
- ptr = sysbuf;
- printf("%s", sysbuf);
- system(sysbuf);
-
- snprintf(sysbuf, sizeof(sysbuf),
- "ld -Bshareable -d -warn-common -o %s.ko %s.o\n",
- outfile, outfile);
- printf("%s", sysbuf);
- system(sysbuf);
-
- free(basefile);
-
- exit(0);
-}
-
-int
-main(int argc, char *argv[])
-{
- FILE *fp, *outfp;
- int i, bin = 0;
- void *img;
- int n, fsize, cnt;
- unsigned char *ptr;
- char *inffile = NULL, *sysfile = NULL;
- char *outfile = NULL, *firmfile = NULL;
- char *dname = NULL;
- int ch;
-
- while((ch = getopt(argc, argv, "i:s:o:n:f:O")) != -1) {
- switch(ch) {
- case 'f':
- firmfile = optarg;
- break;
- case 'i':
- inffile = optarg;
- break;
- case 's':
- sysfile = optarg;
- break;
- case 'o':
- outfile = optarg;
- break;
- case 'n':
- dname = optarg;
- break;
- case 'O':
- bin = 1;
- break;
- default:
- usage();
- break;
- }
- }
-
- if (firmfile != NULL)
- firmcvt(firmfile);
-
- if (sysfile == NULL)
- usage();
-
- /* Open the .SYS file and load it into memory */
- fp = fopen(sysfile, "r");
- if (fp == NULL)
- err(1, "opening .SYS file '%s' failed", sysfile);
- fseek (fp, 0L, SEEK_END);
- fsize = ftell (fp);
- rewind (fp);
- img = calloc(fsize, 1);
- n = fread (img, fsize, 1, fp);
- if (n == 0)
- err(1, "reading .SYS file '%s' failed", sysfile);
-
- fclose(fp);
-
- if (insert_padding(&img, &fsize)) {
- fprintf(stderr, "section relocation failed\n");
- exit(1);
- }
-
- if (outfile == NULL || strcmp(outfile, "-") == 0)
- outfp = stdout;
- else {
- outfp = fopen(outfile, "w");
- if (outfp == NULL)
- err(1, "opening output file '%s' failed", outfile);
- }
-
- fprintf(outfp, "\n/*\n");
- fprintf(outfp, " * Generated from %s and %s (%d bytes)\n",
- inffile == NULL ? "<notused>" : inffile, sysfile, fsize);
- fprintf(outfp, " */\n\n");
-
- if (dname != NULL) {
- if (strlen(dname) > IFNAMSIZ)
- err(1, "selected device name '%s' is "
- "too long (max chars: %d)", dname, IFNAMSIZ);
- fprintf (outfp, "#define NDIS_DEVNAME \"%s\"\n", dname);
- fprintf (outfp, "#define NDIS_MODNAME %s\n\n", dname);
- }
-
- if (inffile == NULL) {
- fprintf (outfp, "#ifdef NDIS_REGVALS\n");
- fprintf (outfp, "ndis_cfg ndis_regvals[] = {\n");
- fprintf (outfp, "\t{ NULL, NULL, { 0 }, 0 }\n");
- fprintf (outfp, "#endif /* NDIS_REGVALS */\n");
-
- fprintf (outfp, "};\n\n");
- } else {
- fp = fopen(inffile, "r");
- if (fp == NULL)
- err(1, "opening .INF file '%s' failed", inffile);
-
-
- if (inf_parse(fp, outfp) != 0)
- errx(1, "creating .INF file - no entries created, are you using the correct files?");
- fclose(fp);
- }
-
- fprintf(outfp, "\n#ifdef NDIS_IMAGE\n");
-
- if (bin) {
- sysfile = strdup(basename(sysfile));
- ptr = (unsigned char *)sysfile;
- while (*ptr) {
- if (*ptr == '.')
- *ptr = '_';
- ptr++;
- }
- fprintf(outfp,
- "\nextern unsigned char ndis_%s_drv_data_start[];\n",
- sysfile);
- fprintf(outfp, "static unsigned char *drv_data = "
- "ndis_%s_drv_data_start;\n\n", sysfile);
- bincvt(sysfile, outfile, img, fsize);
- goto done;
- }
-
-
- fprintf(outfp, "\nextern unsigned char drv_data[];\n\n");
-
- fprintf(outfp, "__asm__(\".data\");\n");
- fprintf(outfp, "__asm__(\".globl drv_data\");\n");
- fprintf(outfp, "__asm__(\".type drv_data, @object\");\n");
- fprintf(outfp, "__asm__(\".size drv_data, %d\");\n", fsize);
- fprintf(outfp, "__asm__(\"drv_data:\");\n");
-
- ptr = img;
- cnt = 0;
- while(cnt < fsize) {
- fprintf (outfp, "__asm__(\".byte ");
- for (i = 0; i < 10; i++) {
- cnt++;
- if (cnt == fsize) {
- fprintf(outfp, "0x%.2X\");\n", ptr[i]);
- goto done;
- } else {
- if (i == 9)
- fprintf(outfp, "0x%.2X\");\n", ptr[i]);
- else
- fprintf(outfp, "0x%.2X, ", ptr[i]);
- }
- }
- ptr += 10;
- }
-
-done:
-
- fprintf(outfp, "#endif /* NDIS_IMAGE */\n");
-
- if (fp != NULL)
- fclose(fp);
- fclose(outfp);
- free(img);
- exit(0);
-}
diff --git a/usr.sbin/ndiscvt/ndisgen.8 b/usr.sbin/ndiscvt/ndisgen.8
deleted file mode 100644
index 2fb4f401596e..000000000000
--- a/usr.sbin/ndiscvt/ndisgen.8
+++ /dev/null
@@ -1,86 +0,0 @@
-.\" Copyright (c) 2005
-.\" Bill Paul <wpaul@windriver.com> All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by Bill Paul.
-.\" 4. Neither the name of the author nor the names of any co-contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
-.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-.\" THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd April 24, 2005
-.Dt NDISGEN 8
-.Os
-.Sh NAME
-.Nm ndisgen
-.Nd generate a FreeBSD driver module from a
-.Tn Windows\[rg]
-NDIS driver distribution
-.Sh SYNOPSIS
-.Nm
-.Op Ar /path/to/INF /path/to/SYS
-.Sh DESCRIPTION
-The
-.Nm
-script uses the
-.Xr ndiscvt 8
-utility and other tools to generate a
-.Fx
-loadable driver module
-and a static ELF object module from a
-.Tn Windows\[rg]
-NDIS driver, for use with the
-.Xr ndis 4
-compatibility module.
-.Pp
-The
-.Nm
-script is interactive and contains its own help section.
-Unless the paths to both files are supplied on the command line,
-the script will prompt the user for the
-.Pa .INF
-and
-.Pa .SYS
-files needed to generate the
-.Fx
-driver module.
-The script will also prompt for
-any firmware or other external files needed.
-.Sh SEE ALSO
-.Xr ld 1 ,
-.Xr objcopy 1 ,
-.Xr ndis 4 ,
-.Xr kldload 8 ,
-.Xr ndiscvt 8
-.Sh HISTORY
-The
-.Nm
-utility first appeared in
-.Fx 6.0 .
-.Sh AUTHORS
-The
-.Nm
-utility was written by
-.An Bill Paul Aq Mt wpaul@windriver.com .
diff --git a/usr.sbin/ndiscvt/ndisgen.sh b/usr.sbin/ndiscvt/ndisgen.sh
deleted file mode 100644
index c5a0dbd4fc46..000000000000
--- a/usr.sbin/ndiscvt/ndisgen.sh
+++ /dev/null
@@ -1,556 +0,0 @@
-#!/bin/sh
-#
-# SPDX-License-Identifier: BSD-4-Clause
-#
-# Copyright (c) 2005
-# Bill Paul <wpaul@windriver.com>. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by Bill Paul.
-# 4. Neither the name of the author nor the names of any co-contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
-# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-# THE POSSIBILITY OF SUCH DAMAGE.
-#
-# $FreeBSD$
-#
-
-header () {
-clear
-echo " =================================================================="
-echo " ------------------ Windows(r) driver converter -------------------"
-echo " =================================================================="
-echo ""
-}
-
-mainmenu() {
-header
-echo " This script is designed to guide you through the process"
-echo " of converting a Windows(r) binary driver module and .INF"
-echo " specification file into a FreeBSD ELF kernel module for use"
-echo " with the NDIS compatibility system."
-echo ""
-echo " The following options are available:"
-echo ""
-echo " 1] Learn about the NDIS compatibility system"
-echo " 2] Convert individual firmware files"
-echo " 3] Convert driver"
-echo " 4] Exit"
-echo ""
-echo -n " Enter your selection here and press return: "
-read KEYPRESS
-return
-}
-
-
-help1 () {
-header
-echo " General information"
-echo ""
-echo " The NDIS compatibility system is designed to let you use Windows(r)"
-echo " binary drivers for networking devices with FreeBSD, in cases where"
-echo " a native FreeBSD driver is not available due to hardware manufacturer"
-echo " oversight or stupidity. NDIS stands for Network Driver Interface"
-echo " Standard, and refers to the programming model used to write Windows(r)"
-echo " network drivers. (These are often called \"NDIS miniport\" drivers.)"
-echo ""
-echo " In order to use your network device in NDIS compatibility mode,"
-echo " you need the Windows(r) driver that goes with it. Also, the driver"
-echo " must be compiled for the same architecture as the release of FreeBSD"
-echo " you have installed. At this time, the i386 and amd64 architectures"
-echo " are both supported. Note that you cannot use a Windows/i386 driver"
-echo " with FreeBSD/amd64: you must obtain a Windows/amd64 driver."
-echo ""
-echo -n " Press return to continue... "
-read KEYPRESS
-return
-}
-
-help2() {
-header
-echo " Where to get drivers"
-echo ""
-echo " If you purchased your network card separately from your computer,"
-echo " there should have been a driver distribution CD included with the"
-echo " card which contains Windows(r) drivers. The NDIS compatibility"
-echo " system is designed to emulate the NDIS API of a couple of different"
-echo " Windows(r) releases, however it works best with drivers designed"
-echo " for NDIS 5.0 or later. Drivers distributed for Windows 2000 should"
-echo " work; however, for best results you should use a driver designed"
-echo " for Windows XP or Windows Server 2003."
-echo ""
-echo " If your card was supplied with your computer, or is a built-in device,"
-echo " drivers may have been included on a special driver bundle CD shipped"
-echo " with the computer."
-echo ""
-echo " If you don't have a driver CD, you should be able to find a driver"
-echo " kit on the card or computer vendor's web site."
-echo ""
-echo -n " Press return to continue... "
-read KEYPRESS
-return
-}
-
-help3 () {
-header
-echo " What files do I need?"
-echo ""
-echo " In most cases, you will need only two files: a .INF file and a .SYS"
-echo " file. The .INF file is a text file used by the Windows(r) installer to"
-echo " perform the driver installation. It contains information that tells"
-echo " the installer what devices the driver supports and what registry keys"
-echo " should be created to control driver configuration. The .SYS file"
-echo " is the actual driver executable code in Windows(r) Portable Executable"
-echo " (PE) format. Note that sometimes the .INF file is supplied in Unicode"
-echo " format. Unicode .INF files must be converted to ASCII form with the"
-echo " iconv(1) utility before this installer script can use them."
-echo " Occasionally, a driver may require firmware or register setup"
-echo " files that are external to the main .SYS file. These are provided"
-echo " on the same CD with the driver itself, and sometimes have a .BIN"
-echo " extension, though they can be named almost anything. You will need"
-echo " these additional files to make your device work with the NDIS"
-echo " compatibility system as well."
-echo ""
-echo -n " Press return to continue... "
-read KEYPRESS
-return
-}
-
-help4 () {
-header
-echo " How does it all work?"
-echo ""
-echo " The installer script uses the ndiscvt(1) utility to convert the .INF,"
-echo " .SYS and optional firmware files into a FreeBSD kernel loadable module"
-echo " (.ko) file. This module can be loaded via the kldload(8) utility or"
-echo " loaded automatically via the /boot/loader.conf file. The ndiscvt(1)"
-echo " utility extracts the device ID information and registry key data"
-echo " from the .INF file and converts it into a C header file. It also uses"
-echo " the objcopy(1) utility to convert the .SYS file and optional firmware"
-echo " files into ELF objects. The header file is compiled into a small C"
-echo " stub file which contains a small amount of code to interface with"
-echo " the FreeBSD module system. This stub is linked together with the"
-echo " converted ELF objects to form a FreeBSD kernel module. A static ELF"
-echo " object (.o) file is also created. This file can be linked into a"
-echo " static kernel image for those who want/need a fully linked kernel"
-echo " image (possibly for embedded bootstrap purposes, or just plain old"
-echo " experimentation)."
-echo ""
-echo -n " Press return to continue... "
-read KEYPRESS
-return
-}
-
-help5 () {
-header
-echo " Prerequisites"
-echo ""
-echo " Converting a driver requires the following utilities:"
-echo ""
-echo " - The FreeBSD C compiler, cc(1) (part of the base install)."
-echo " - The FreeBSD linker, ld(1) (part of the base install)."
-echo " - The objcopy(1) utility (part of the base install)."
-echo " - The ndiscvt(1) utility (part of the base install)."
-echo ""
-echo " If you happen to end up with a .INF file that's in Unicode format,"
-echo " then you'll also need:"
-echo ""
-echo " - The iconv(1) utility."
-echo ""
-echo " If you have installed the X Window system or some sort of desktop"
-echo " environment, then iconv(1) should already be present. If not, you"
-echo " will need to install the libiconv package or port."
-echo ""
-echo -n " Press return to continue... "
-read KEYPRESS
-return
-}
-
-infconv () {
-header
-echo " INF file validation"
-
-if [ -z "$INFPATH" ]; then
- echo ""
- echo ""
- echo " A .INF file is most often provided as an ASCII file, however"
- echo " files with multilanguage support are provided in Unicode format."
- echo " Please type in the path to your .INF file now."
- echo ""
- echo -n " > "
- read INFPATH
-fi
-
-if [ ${INFPATH} ] && [ -e ${INFPATH} ]; then
- INFTYPE=`${EGREP} -i -c "Signature|.S.i.g.n.a.t.u.r.e" ${INFPATH}`
- if [ ${INFTYPE} -le 0 ]; then
- echo ""
- echo " I don't recognize this file format. It may not be a valid .INF file."
- echo ""
- echo -n " Press enter to try again, or ^C to quit. "
- read KEYPRESS
- INFPATH=""
- return
- fi
-
- INFTYPE=`${EGREP} -i -c "Class.*=.*Net" ${INFPATH}`
- if [ ${INFTYPE} -gt 0 ]; then
- echo ""
- echo " This .INF file appears to be ASCII."
- echo ""
- echo -n " Press return to continue... "
- read KEYPRESS
- return
- fi
-
- INFTYPE=`${EGREP} -i -c ".C.l.a.s.s.*=.*N.e.t" ${INFPATH}`
- if [ ${INFTYPE} -gt 0 ]; then
- echo ""
- echo " This .INF file appears to be Unicode."
- if [ -e ${ICONVPATH} ]; then
- echo " Trying to convert to ASCII..."
- ${ICONVPATH} -f utf-16 -t utf-8 ${INFPATH} > ${INFFILE}
- INFPATH=${INFFILE}
- echo " Done."
- echo ""
- echo -n " Press return to continue... "
- read KEYPRESS
- else
- echo " The iconv(1) utility does not appear to be installed."
- echo " Please install this utility or convert the .INF file"
- echo " to ASCII and run this utility again."
- echo ""
- exit
- fi
- return
- fi
-
- echo ""
- echo " I don't recognize this file format. It may not be a valid .INF file."
- echo ""
- echo -n " Press enter to try again, or ^C to quit. "
- read KEYPRESS
- INFPATH=""
-else
- echo ""
- echo " The file '${INFPATH}' was not found."
- echo ""
- echo -n " Press enter to try again, or ^C to quit. "
- read KEYPRESS
- INFPATH=""
-fi
-return
-}
-
-sysconv() {
-header
-echo " Driver file validation"
-
-if [ ! -r "$SYSPATH" ]; then
- echo ""
- echo ""
- echo " Now you need to specify the name of the Windows(r) driver .SYS"
- echo " file for your device. Note that if you are running FreeBSD/amd64,"
- echo " then you must provide a driver that has been compiled for the"
- echo " 64-bit Windows(r) platform. If a 64-bit driver is not available"
- echo " for your device, you must install FreeBSD/i386 and use the"
- echo " 32-bit driver instead."
- echo ""
- echo " Please type in the path to the Windows(r) driver .SYS file now."
- echo ""
- echo -n " > "
- read SYSPATH
-fi
-
-if [ ${SYSPATH} ] && [ -e ${SYSPATH} ]; then
- SYSTYPE=`${FILE} ${SYSPATH}`
-
- case ${SYSTYPE} in
- *Windows*)
- echo ""
- echo " This .SYS file appears to be in Windows(r) PE format."
- echo ""
- echo -n " Press return to continue... "
- read KEYPRESS
- SYSBASE=`${BASENAME} ${SYSPATH} | ${TR} '.' '_'`
- ;;
- *)
- echo ""
- echo " I don't recognize this file format. It may not be a valid .SYS file."
- echo ""
-
- echo -n " Press enter to try again, or ^C to quit. "
- read KEYPRESS
- SYSPATH=""
- ;;
- esac
-else
- echo ""
- echo " The file '${SYSPATH}' was not found."
- echo ""
- echo -n " Press enter to try again, or ^C to quit. "
- read KEYPRESS
- SYSPATH=""
-fi
-return
-}
-
-ndiscvt() {
-header
-echo " Driver file conversion"
-echo ""
-echo " The script will now try to convert the .INF and .SYS files"
-echo " using the ndiscvt(1) utility. This utility can handle most"
-echo " .INF files; however, occasionally it can fail to parse some files"
-echo " due to subtle syntax issues: the .INF syntax is very complex,"
-echo " and the Windows(r) parser will sometimes allow files with small"
-echo " syntax errors to be processed correctly which ndiscvt(1) will"
-echo " not. If the conversion fails, you may have to edit the .INF"
-echo " file by hand to remove the offending lines."
-echo ""
-echo -n " Press enter to try converting the files now: "
-read KEYPRESS
-if ! ${NDISCVT} -i ${INFPATH} -s ${SYSPATH} -O -o ${DNAME}.h > /dev/null; then
- echo "CONVERSION FAILED"
- exit
-else
- echo ""
- echo " Conversion was successful."
- echo ""
- echo -n " Press enter to continue... "
- read KEYPRESS
-fi
-return
-}
-
-firmcvt() {
- while : ; do
-header
-echo " Firmware file conversion"
-echo ""
-echo " If your driver uses additional firmware files, please list them"
-echo " below. When you're finished, just press enter to continue. (If your"
-echo " driver doesn't need any extra firmware files, just press enter"
-echo " to move to the next step.)"
-echo ""
- echo -n " > "
- read FIRMPATH
-
- if [ ${FIRMPATH} ]; then
- if [ ! -e ${FIRMPATH} ]; then
- echo ""
- echo " The file '${FIRMPATH}' was not found"
- echo ""
- echo -n " Press enter to try again, or ^C to quit. "
- read KEYPRESS
- continue
- fi
- if ! ${NDISCVT} -f ${FIRMPATH} > /dev/null; then
- echo ""
- echo "CONVERSION FAILED"
- else
- echo ""
- echo " Conversion was successful."
- echo ""
- FRMBASE=`${BASENAME} ${FIRMPATH}`
- FRMBASE="${FRMBASE}.o"
- FRMLIST="${FRMLIST} ${FRMBASE}"
- fi
- echo -n " Press enter to continue... "
- read KEYPRESS
- else
- break
- fi
- done
-
-header
-echo ""
-echo " List of files converted firmware files:"
-echo ""
-for i in ${FRMLIST}
-do
- echo " "$i
-done
-echo ""
-echo -n " Press enter to continue... "
-read KEYPRESS
-return
-}
-
-drvgen () {
-header
-echo " Kernel module generation"
-echo ""
-echo ""
-echo " The script will now try to generate the kernel driver module."
-echo " This is the last step. Once this module is generated, you should"
-echo " be able to load it just like any other FreeBSD driver module."
-echo ""
-echo " Press enter to compile the stub module and generate the driver"
-echo -n " module now: "
-read KEYPRESS
-echo ""
-echo -n " Generating Makefile... "
-echo ".PATH: ${PWD} ${STUBPATH}" > ${MAKEFILE}
-echo "KMOD= ${SYSBASE}" >> ${MAKEFILE}
-echo "SRCS+= ${STUBFILE} ${DNAME}.h bus_if.h device_if.h" >> ${MAKEFILE}
-echo "OBJS+=${FRMLIST} ${DNAME}.o" >> ${MAKEFILE}
-echo "CFLAGS+= \\" >> ${MAKEFILE}
-echo " -DDRV_DATA_START=ndis_${SYSBASE}_drv_data_start \\" >> ${MAKEFILE}
-echo " -DDRV_NAME=ndis_${SYSBASE} \\" >> ${MAKEFILE}
-echo " -DDRV_DATA_END=ndis_${SYSBASE}_drv_data_end" >> ${MAKEFILE}
-echo "CLEANFILES+= \\" >> ${MAKEFILE}
-echo " ${INFFILE} \\" >> ${MAKEFILE}
-echo " ${DNAME}.h \\" >> ${MAKEFILE}
-echo " ${DNAME}.o" >> ${MAKEFILE}
-echo ".include <bsd.kmod.mk>" >> ${MAKEFILE}
-if [ -f ${MAKEFILE} ]; then
- echo "done."
-else
- echo "generating Makefile failed. Exiting."
- echo ""
- exit
-fi
-echo -n " Building kernel module... "
-echo "" > bus_if.h
-echo "" > device_if.h
-if ! ${MAKE} -f ${MAKEFILE} all > /dev/null; then
- echo "build failed. Exiting."
- echo ""
- exit
-else
- if [ -f ${SYSBASE}.ko ]; then
- ${MV} ${SYSBASE}.ko ${SYSBASE}.kmod
- echo "done."
- else
- echo "build failed. Exiting."
- echo ""
- exit
- fi
-fi
-echo -n " Cleaning up... "
-if ! ${MAKE} -f ${MAKEFILE} clean cleandepend > /dev/null; then
- echo "cleanup failed. Exiting."
- echo ""
- exit
-else
- echo "done."
-fi
-${RM} ${MAKEFILE}
-${MV} ${SYSBASE}.kmod ${SYSBASE}.ko
-echo ""
-echo " The file ${SYSBASE}.ko has been successfully generated."
-echo " You can kldload this module to get started."
-echo ""
-echo -n " Press return to exit. "
-read KEYPRESS
-echo ""
-echo ""
-return
-}
-
-convert_driver () {
- while : ; do
- infconv
- if [ ${INFPATH} ]; then
- break
- fi
- done
-
- while : ; do
- sysconv
- if [ ${SYSPATH} ]; then
- break
- fi
- done
-
- ndiscvt
- firmcvt
- drvgen
- return
-}
-
-ICONVPATH=/usr/bin/iconv
-NDISCVT=/usr/sbin/ndiscvt
-STUBPATH=/usr/share/misc
-STUBFILE=windrv_stub.c
-DNAME=windrv
-CP=/bin/cp
-MV=/bin/mv
-RM=/bin/rm
-TR=/usr/bin/tr
-FILE=/usr/bin/file
-EGREP=/usr/bin/egrep
-MAKE=/usr/bin/make
-BASENAME=/usr/bin/basename
-TOUCH=/usr/bin/touch
-MKTEMP=/usr/bin/mktemp
-
-MAKEFILE=`${MKTEMP} /tmp/Makefile.XXXXXX`
-INFFILE=`${MKTEMP} /tmp/ascii_inf.XXXXXX`
-
-INFPATH=""
-FRMLIST=""
-SYSPATH=""
-SYSBASE=""
-FRMBASE=""
-
-if [ -r "$1" -a -r "$2" ]; then
- # Looks like the user supplied .INF and .SYS files on the command line
- INFPATH=$1
- SYSPATH=$2
- convert_driver && exit 0
-fi
-
-while : ; do
- mainmenu
- case ${KEYPRESS} in
- 1)
- help1
- help2
- help3
- help4
- help5
- ;;
- 2)
- firmcvt
- ;;
- 3)
- convert_driver
- ;;
- 4)
- header
- echo ""
- echo " Be seeing you!"
- echo ""
- exit
- ;;
- *)
- header
- echo ""
- echo -n " Sorry, I didn't understand that. Press enter to try again: "
- read KEYPRESS
- ;;
- esac
-done
-exit
diff --git a/usr.sbin/ndiscvt/windrv_stub.c b/usr.sbin/ndiscvt/windrv_stub.c
deleted file mode 100644
index 8aaa23835cba..000000000000
--- a/usr.sbin/ndiscvt/windrv_stub.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-4-Clause
- *
- * Copyright (c) 2005
- * Bill Paul <wpaul@windriver.com>. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Bill Paul.
- * 4. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/module.h>
-#include <sys/conf.h>
-
-#include <machine/bus.h>
-#include <machine/resource.h>
-#include <sys/bus.h>
-
-#define NDIS_REGVALS
-
-struct ndis_cfg {
- char *nc_cfgkey;
- char *nc_cfgdesc;
- char nc_val[256];
- int nc_idx;
-};
-
-typedef struct ndis_cfg ndis_cfg;
-
-#include "windrv.h"
-
-struct ndis_pci_type {
- uint16_t ndis_vid;
- uint16_t ndis_did;
- uint32_t ndis_subsys;
- char *ndis_name;
-};
-
-struct ndis_pccard_type {
- const char *ndis_vid;
- const char *ndis_did;
- char *ndis_name;
-};
-
-struct ndis_usb_type {
- uint16_t ndis_vid;
- uint16_t ndis_did;
- char *ndis_name;
-};
-
-#ifdef NDIS_PCI_DEV_TABLE
-static struct ndis_pci_type ndis_devs_pci[] = {
- NDIS_PCI_DEV_TABLE
- { 0, 0, 0, NULL }
-};
-#endif
-
-#ifdef NDIS_PCMCIA_DEV_TABLE
-static struct ndis_pccard_type ndis_devs_pccard[] = {
- NDIS_PCMCIA_DEV_TABLE
- { NULL, NULL, NULL }
-};
-#endif
-
-#ifdef NDIS_USB_DEV_TABLE
-static struct ndis_usb_type ndis_devs_usb[] = {
- NDIS_USB_DEV_TABLE
- { 0, 0, NULL }
-};
-#endif
-
-enum interface_type {
- InterfaceTypeUndefined = -1,
- Internal,
- Isa,
- Eisa,
- MicroChannel,
- TurboChannel,
- PCIBus,
- VMEBus,
- NuBus,
- PCMCIABus,
- CBus,
- MPIBus,
- MPSABus,
- ProcessorInternal,
- InternalPowerBus,
- PNPISABus,
- PNPBus,
- MaximumInterfaceType
-};
-
-typedef enum interface_type interface_type;
-
-/*
- * XXX
- * Ordinarily, device_probe_desc is defined in device_if.h, which
- * is created from device_if.m. The problem is, the latter file
- * is only available if you have the kernel source code installed,
- * and not all users choose to install it. I'd like to let people
- * load Windows driver modules with the minimal amount of hassle
- * and dependencies. <sys/bus.h> wants both device_if.h and bus_if.h
- * to be defined, but it turns out the only thing we really need
- * to get this module compiled is device_probe_desc, so we define
- * that here, and let the build script create empty copies of
- * device_if.h and bus_if.h to make the compiler happy.
- */
-
-extern struct kobjop_desc device_probe_desc;
-typedef int device_probe_t(device_t dev);
-
-extern int windrv_load(module_t, vm_offset_t, size_t,
- interface_type, void *, void *);
-extern int windrv_unload(module_t, vm_offset_t, size_t);
-
-#ifndef DRV_DATA_START
-#define DRV_DATA_START UNDEF_START
-#endif
-
-#ifndef DRV_DATA_END
-#define DRV_DATA_END UNDEF_END
-#endif
-
-#ifndef DRV_NAME
-#define DRV_NAME UNDEF_NAME
-#endif
-
-extern uint8_t DRV_DATA_START;
-extern uint8_t DRV_DATA_END;
-
-/*
- * The following is stub code that makes it look as though we want
- * to be a child device of all the buses that our supported devices
- * might want to attach to. Our probe routine always fails. The
- * reason we need this code is so that loading an ELF-ified Windows
- * driver module will trigger a bus reprobe.
- */
-
-#define MODULE_DECL(x) \
- MODULE_DEPEND(x, ndisapi, 1, 1, 1); \
- MODULE_DEPEND(x, ndis, 1, 1, 1)
-
-MODULE_DECL(DRV_NAME);
-
-static int windrv_probe(device_t);
-static int windrv_modevent(module_t, int, void *);
-static int windrv_loaded = 0;
-
-static device_method_t windrv_methods[] = {
- /* Device interface */
- DEVMETHOD(device_probe, windrv_probe),
-
- { 0, 0 }
-};
-
-static driver_t windrv_driver = {
- "windrv_stub",
- windrv_methods,
- 0
-};
-
-static devclass_t windrv_devclass;
-
-#define DRIVER_DECL(x) \
- DRIVER_MODULE(x, pci, windrv_driver, \
- windrv_devclass, windrv_modevent, NULL); \
- DRIVER_MODULE(x, cardbus, windrv_driver, \
- windrv_devclass, windrv_modevent, NULL); \
- DRIVER_MODULE(x, pccard, windrv_driver, \
- windrv_devclass, windrv_modevent, NULL); \
- DRIVER_MODULE(x, uhub, windrv_driver, \
- windrv_devclass, windrv_modevent, NULL); \
- MODULE_VERSION(x, 1)
-
-DRIVER_DECL(DRV_NAME);
-
-static int
-windrv_probe(dev)
- device_t dev;
-{
- return (ENXIO);
-}
-
-static int
-windrv_modevent(mod, cmd, arg)
- module_t mod;
- int cmd;
- void *arg;
-{
- int drv_data_len;
- int error = 0;
- vm_offset_t drv_data_start;
- vm_offset_t drv_data_end;
-
- drv_data_start = (vm_offset_t)&DRV_DATA_START;
- drv_data_end = (vm_offset_t)&DRV_DATA_END;
-
- drv_data_len = drv_data_end - drv_data_start;
- switch (cmd) {
- case MOD_LOAD:
- windrv_loaded++;
- if (windrv_loaded > 1)
- break;
-#ifdef NDIS_PCI_DEV_TABLE
- windrv_load(mod, drv_data_start, drv_data_len, PCIBus,
- ndis_devs_pci, &ndis_regvals);
-#endif
-#ifdef NDIS_PCMCIA_DEV_TABLE
- windrv_load(mod, drv_data_start, drv_data_len, PCMCIABus,
- ndis_devs_pccard, &ndis_regvals);
-#endif
-#ifdef NDIS_USB_DEV_TABLE
- windrv_load(mod, drv_data_start, drv_data_len, PNPBus,
- ndis_devs_usb, &ndis_regvals);
-#endif
- break;
- case MOD_UNLOAD:
- windrv_loaded--;
- if (windrv_loaded > 0)
- break;
-#ifdef NDIS_PCI_DEV_TABLE
- windrv_unload(mod, drv_data_start, drv_data_len);
-#endif
-#ifdef NDIS_PCMCIA_DEV_TABLE
- windrv_unload(mod, drv_data_start, drv_data_len);
-#endif
-#ifdef NDIS_USB_DEV_TABLE
- windrv_unload(mod, drv_data_start, drv_data_len);
-#endif
- break;
- case MOD_SHUTDOWN:
- break;
- default:
- error = EINVAL;
- break;
- }
-
- return (error);
-}
diff --git a/usr.sbin/wpa/Makefile b/usr.sbin/wpa/Makefile
index ae07ec04f001..451c4c3b17a6 100644
--- a/usr.sbin/wpa/Makefile
+++ b/usr.sbin/wpa/Makefile
@@ -2,7 +2,6 @@
SUBDIR= wpa_supplicant wpa_cli wpa_passphrase
SUBDIR+= hostapd hostapd_cli
-SUBDIR+= ndis_events
SUBDIR_PARALLEL=
.include <bsd.subdir.mk>
diff --git a/usr.sbin/wpa/ndis_events/Makefile b/usr.sbin/wpa/ndis_events/Makefile
deleted file mode 100644
index 07caf5a48465..000000000000
--- a/usr.sbin/wpa/ndis_events/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# $FreeBSD$
-
-PROG= ndis_events
-SRCS+= ndis_events.c
-
-MAN= ndis_events.8
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/wpa/ndis_events/Makefile.depend b/usr.sbin/wpa/ndis_events/Makefile.depend
deleted file mode 100644
index d5ed563ecfc8..000000000000
--- a/usr.sbin/wpa/ndis_events/Makefile.depend
+++ /dev/null
@@ -1,18 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- gnu/lib/csu \
- include \
- include/arpa \
- include/xlocale \
- lib/${CSU_DIR} \
- lib/libc \
- lib/libcompiler_rt \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/wpa/ndis_events/ndis_events.8 b/usr.sbin/wpa/ndis_events/ndis_events.8
deleted file mode 100644
index bf11c1943fec..000000000000
--- a/usr.sbin/wpa/ndis_events/ndis_events.8
+++ /dev/null
@@ -1,135 +0,0 @@
-.\" Copyright (c) 2005
-.\" Bill Paul <wpaul@windriver.com> All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by Bill Paul.
-.\" 4. Neither the name of the author nor the names of any co-contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
-.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-.\" THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd August 30, 2007
-.Dt NDIS_EVENTS 8
-.Os
-.Sh NAME
-.Nm ndis_events
-.Nd relay events from
-.Xr ndis 4
-drivers to
-.Xr wpa_supplicant 8
-.Sh SYNOPSIS
-.Nm
-.Op Fl a
-.Op Fl d
-.Op Fl v
-.Sh DESCRIPTION
-The
-.Nm
-utility listens for events generated by an
-.Xr ndis 4
-wireless network driver and relays them to
-.Xr wpa_supplicant 8
-for possible processing.
-The three event types that can occur
-are media connect and disconnect events, such as when a wireless
-interface joins or leaves a network, and media-specific events.
-In particular,
-.Xr ndis 4
-drivers that support WPA2 will generate media-specific events
-containing PMKID candidate information which
-.Xr wpa_supplicant 8
-needs in order to properly associate with WPA2-capable access points.
-.Pp
-The
-.Nm
-daemon works by listening for interface information events via
-a routing socket.
-When it detects an event that was generated by an
-.Xr ndis 4
-interface, it transmits it via UDP packet on the loopback interface,
-where
-.Xr wpa_supplicant 8
-is presumably listening.
-The standard
-.Xr wpa_supplicant 8
-distribution includes its own version of this utility for use with
-.Tn Windows\[rg] .
-The
-.Fx
-version performs the same functions as the
-.Tn Windows\[rg]
-one, except that it uses an
-.Xr ioctl 2
-and routing socket interface instead of WMI.
-.Pp
-Note that a single instance of
-.Nm
-is sufficient to scan for events for any number of
-.Xr ndis 4
-interfaces in a system.
-.Sh OPTIONS
-The
-.Nm
-daemon supports the following options:
-.Bl -tag -width indent
-.It Fl a
-Process all events.
-By default,
-.Nm
-will only process and forward media-specific events, which contain
-PMKID candidate information, and not bother forwarding connect and
-disconnect events, since
-.Xr wpa_supplicant 8
-normally can determine the current link state on its own.
-In some
-cases, the additional connect and disconnect events only confuse it
-and make the association and authentication process take longer.
-.It Fl d
-Run in debug mode.
-This causes
-.Nm
-to run in the foreground and generate any output to the standard
-error instead of using the
-.Xr syslog 3
-facility.
-.It Fl v
-Run in verbose mode.
-This causes
-.Nm
-to emit notifications when it receives events.
-.El
-.Sh SEE ALSO
-.Xr ndis 4 ,
-.Xr wpa_supplicant 8
-.Sh HISTORY
-The
-.Nm
-utility first appeared in
-.Fx 6.0 .
-.Sh AUTHORS
-The
-.Nm
-utility was written by
-.An Bill Paul Aq Mt wpaul@windriver.com .
diff --git a/usr.sbin/wpa/ndis_events/ndis_events.c b/usr.sbin/wpa/ndis_events/ndis_events.c
deleted file mode 100644
index cfd971af8ea1..000000000000
--- a/usr.sbin/wpa/ndis_events/ndis_events.c
+++ /dev/null
@@ -1,353 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-4-Clause
- *
- * Copyright (c) 2005
- * Bill Paul <wpaul@windriver.com>. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Bill Paul.
- * 4. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * This program simulates the behavior of the ndis_events utility
- * supplied with wpa_supplicant for Windows. The original utility
- * is designed to translate Windows WMI events. We don't have WMI,
- * but we need to supply certain event info to wpa_supplicant in
- * order to make WPA2 work correctly, so we fake up the interface.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <sys/errno.h>
-#include <sys/sysctl.h>
-#include <net/if.h>
-#include <net/if_dl.h>
-
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <net/route.h>
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <err.h>
-#include <syslog.h>
-#include <stdarg.h>
-
-static int verbose = 0;
-static int debug = 0;
-static int all_events = 0;
-
-#define PROGNAME "ndis_events"
-
-#define WPA_SUPPLICANT_PORT 9876
-#define NDIS_INDICATION_LEN 2048
-
-#define EVENT_CONNECT 0
-#define EVENT_DISCONNECT 1
-#define EVENT_MEDIA_SPECIFIC 2
-
-#define NDIS_STATUS_MEDIA_CONNECT 0x4001000B
-#define NDIS_STATUS_MEDIA_DISCONNECT 0x4001000C
-#define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION 0x40010012
-
-struct ndis_evt {
- uint32_t ne_sts;
- uint32_t ne_len;
-#ifdef notdef
- char ne_buf[1];
-#endif
-};
-
-static int find_ifname(int, char *);
-static int announce_event(char *, int, struct sockaddr_in *);
-static void usage(void);
-
-static void
-dbgmsg(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- if (debug)
- vwarnx(fmt, ap);
- else
- vsyslog(LOG_ERR, fmt, ap);
- va_end(ap);
-
- return;
-}
-
-static int
-find_ifname(idx, name)
- int idx;
- char *name;
-{
- int mib[6];
- size_t needed;
- struct if_msghdr *ifm;
- struct sockaddr_dl *sdl;
- char *buf, *lim, *next;
-
- needed = 0;
- mib[0] = CTL_NET;
- mib[1] = PF_ROUTE;
- mib[2] = 0; /* protocol */
- mib[3] = 0; /* wildcard address family */
- mib[4] = NET_RT_IFLIST;
- mib[5] = 0; /* no flags */
-
- if (sysctl (mib, 6, NULL, &needed, NULL, 0) < 0)
- return(EIO);
-
- buf = malloc (needed);
- if (buf == NULL)
- return(ENOMEM);
-
- if (sysctl (mib, 6, buf, &needed, NULL, 0) < 0) {
- free(buf);
- return(EIO);
- }
-
- lim = buf + needed;
-
- next = buf;
- while (next < lim) {
- ifm = (struct if_msghdr *)next;
- if (ifm->ifm_type == RTM_IFINFO) {
- sdl = (struct sockaddr_dl *)(ifm + 1);
- if (ifm->ifm_index == idx) {
- strncpy(name, sdl->sdl_data, sdl->sdl_nlen);
- name[sdl->sdl_nlen] = '\0';
- free (buf);
- return (0);
- }
- }
- next += ifm->ifm_msglen;
- }
-
- free (buf);
-
- return(ENOENT);
-}
-
-static int
-announce_event(ifname, sock, dst)
- char *ifname;
- int sock;
- struct sockaddr_in *dst;
-{
- int s;
- char indication[NDIS_INDICATION_LEN];
- struct ifreq ifr;
- struct ndis_evt *e;
- char buf[512], *pos, *end;
- int len, type, _type;
-
- s = socket(PF_INET, SOCK_DGRAM, 0);
-
- if (s < 0) {
- dbgmsg("socket creation failed");
- return(EINVAL);
- }
-
- bzero((char *)&ifr, sizeof(ifr));
- e = (struct ndis_evt *)indication;
- e->ne_len = NDIS_INDICATION_LEN - sizeof(struct ndis_evt);
-
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- ifr.ifr_data = indication;
-
- if (ioctl(s, SIOCGPRIVATE_0, &ifr) < 0) {
- close(s);
- if (verbose) {
- if (errno == ENOENT)
- dbgmsg("drained all events from %s",
- ifname, errno);
- else
- dbgmsg("failed to read event info from %s: %d",
- ifname, errno);
- }
- return(ENOENT);
- }
-
- if (e->ne_sts == NDIS_STATUS_MEDIA_CONNECT) {
- type = EVENT_CONNECT;
- if (verbose)
- dbgmsg("Received a connect event for %s", ifname);
- if (!all_events) {
- close(s);
- return(0);
- }
- }
- if (e->ne_sts == NDIS_STATUS_MEDIA_DISCONNECT) {
- type = EVENT_DISCONNECT;
- if (verbose)
- dbgmsg("Received a disconnect event for %s", ifname);
- if (!all_events) {
- close(s);
- return(0);
- }
- }
- if (e->ne_sts == NDIS_STATUS_MEDIA_SPECIFIC_INDICATION) {
- type = EVENT_MEDIA_SPECIFIC;
- if (verbose)
- dbgmsg("Received a media-specific event for %s",
- ifname);
- }
-
- end = buf + sizeof(buf);
- _type = (int) type;
- memcpy(buf, &_type, sizeof(_type));
- pos = buf + sizeof(_type);
-
- len = snprintf(pos + 1, end - pos - 1, "%s", ifname);
- if (len < 0) {
- close(s);
- return(ENOSPC);
- }
- if (len > 255)
- len = 255;
- *pos = (unsigned char) len;
- pos += 1 + len;
- if (e->ne_len) {
- if (e->ne_len > 255 || 1 + e->ne_len > end - pos) {
- dbgmsg("Not enough room for send_event data (%d)\n",
- e->ne_len);
- close(s);
- return(ENOSPC);
- }
- *pos++ = (unsigned char) e->ne_len;
- memcpy(pos, (indication) + sizeof(struct ndis_evt), e->ne_len);
- pos += e->ne_len;
- }
-
- len = sendto(sock, buf, pos - buf, 0, (struct sockaddr *) dst,
- sizeof(struct sockaddr_in));
-
- close(s);
- return(0);
-}
-
-static void
-usage()
-{
- fprintf(stderr, "Usage: ndis_events [-a] [-d] [-v]\n");
- exit(1);
-}
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- int s, r, n;
- struct sockaddr_in sin;
- char msg[NDIS_INDICATION_LEN];
- struct rt_msghdr *rtm;
- struct if_msghdr *ifm;
- char ifname[IFNAMSIZ];
- int ch;
-
- while ((ch = getopt(argc, argv, "dva")) != -1) {
- switch(ch) {
- case 'd':
- debug++;
- break;
- case 'v':
- verbose++;
- break;
- case 'a':
- all_events++;
- break;
- default:
- usage();
- break;
- }
- }
-
- if (!debug && daemon(0, 0))
- err(1, "failed to daemonize ourselves");
-
- if (!debug)
- openlog(PROGNAME, LOG_PID | LOG_CONS, LOG_DAEMON);
-
- bzero((char *)&sin, sizeof(sin));
-
- /* Create a datagram socket. */
-
- s = socket(PF_INET, SOCK_DGRAM, 0);
- if (s < 0) {
- dbgmsg("socket creation failed");
- exit(1);
- }
-
- sin.sin_family = AF_INET;
- sin.sin_addr.s_addr = inet_addr("127.0.0.1");
- sin.sin_port = htons(WPA_SUPPLICANT_PORT);
-
- /* Create a routing socket. */
-
- r = socket (PF_ROUTE, SOCK_RAW, 0);
- if (r < 0) {
- dbgmsg("routing socket creation failed");
- exit(1);
- }
-
- /* Now sit and spin, waiting for events. */
-
- if (verbose)
- dbgmsg("Listening for events");
-
- while (1) {
- n = read(r, msg, NDIS_INDICATION_LEN);
- rtm = (struct rt_msghdr *)msg;
- if (rtm->rtm_type != RTM_IFINFO)
- continue;
- ifm = (struct if_msghdr *)msg;
- if (find_ifname(ifm->ifm_index, ifname))
- continue;
- if (strstr(ifname, "ndis")) {
- while(announce_event(ifname, s, &sin) == 0)
- ;
- } else {
- if (verbose)
- dbgmsg("Skipping ifinfo message from %s",
- ifname);
- }
- }
-
- /* NOTREACHED */
- exit(0);
-}
diff --git a/usr.sbin/wpa/wpa_supplicant/Makefile b/usr.sbin/wpa/wpa_supplicant/Makefile
index dc8178ccf9b8..352e13e6bde6 100644
--- a/usr.sbin/wpa/wpa_supplicant/Makefile
+++ b/usr.sbin/wpa/wpa_supplicant/Makefile
@@ -15,7 +15,7 @@ SRCS= base64.c bitfield.c blacklist.c bss.c cli.c common.c \
config.c config_file.c \
ctrl_iface.c ctrl_iface_common.c ctrl_iface_unix.c \
driver_bsd.c driver_common.c \
- driver_ndis.c driver_wired.c driver_wired_common.c drivers.c \
+ driver_wired.c driver_wired_common.c drivers.c \
eap_register.c eloop.c \
events.c gas.c gas_query.c \
http_client.c http_server.c \
@@ -24,8 +24,7 @@ SRCS= base64.c bitfield.c blacklist.c bss.c cli.c common.c \
notify.c offchannel.c op_classes.c os_unix.c pmksa_cache.c preauth.c \
rrm.c scan.c upnp_xml.c \
wmm_ac.c wpa.c wpa_common.c wpa_ctrl.c \
- wpa_debug.c wpa_ft.c wpa_ie.c wpa_supplicant.c wpabuf.c wpas_glue.c \
- Packet32.c
+ wpa_debug.c wpa_ft.c wpa_ie.c wpa_supplicant.c wpabuf.c wpas_glue.c
MAN= wpa_supplicant.8 wpa_supplicant.conf.5
@@ -38,7 +37,6 @@ FILES= wpa_supplicant.conf
CFLAGS+=-DCONFIG_BACKEND_FILE \
-DCONFIG_DEBUG_SYSLOG \
-DCONFIG_DRIVER_BSD \
- -DCONFIG_DRIVER_NDIS \
-DCONFIG_DRIVER_WIRED \
-DCONFIG_GAS \
-DCONFIG_IEEE80211R \
diff --git a/usr.sbin/wpa/wpa_supplicant/Packet32.c b/usr.sbin/wpa/wpa_supplicant/Packet32.c
deleted file mode 100644
index 3f852b722080..000000000000
--- a/usr.sbin/wpa/wpa_supplicant/Packet32.c
+++ /dev/null
@@ -1,415 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-4-Clause
- *
- * Copyright (c) 2005
- * Bill Paul <wpaul@windriver.com>. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Bill Paul.
- * 4. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * This file implements a small portion of the Winpcap API for the
- * Windows NDIS interface in wpa_supplicant. It provides just enough
- * routines to fool wpa_supplicant into thinking it's really running
- * in a Windows environment.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <sys/errno.h>
-#include <sys/sysctl.h>
-#include <sys/fcntl.h>
-#include <net/if.h>
-#include <net/if_dl.h>
-
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <net/route.h>
-
-#include <net80211/ieee80211_ioctl.h>
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <pcap.h>
-
-#include "Packet32.h"
-
-#define OID_802_11_ADD_KEY 0x0d01011D
-
-typedef ULONGLONG NDIS_802_11_KEY_RSC;
-typedef UCHAR NDIS_802_11_MAC_ADDRESS[6];
-
-typedef struct NDIS_802_11_KEY {
- ULONG Length;
- ULONG KeyIndex;
- ULONG KeyLength;
- NDIS_802_11_MAC_ADDRESS BSSID;
- NDIS_802_11_KEY_RSC KeyRSC;
- UCHAR KeyMaterial[1];
-} NDIS_802_11_KEY;
-
-typedef struct NDIS_802_11_KEY_COMPAT {
- ULONG Length;
- ULONG KeyIndex;
- ULONG KeyLength;
- NDIS_802_11_MAC_ADDRESS BSSID;
- UCHAR Pad[6]; /* Make struct layout match Windows. */
- NDIS_802_11_KEY_RSC KeyRSC;
-#ifdef notdef
- UCHAR KeyMaterial[1];
-#endif
-} NDIS_802_11_KEY_COMPAT;
-
-#define TRUE 1
-#define FALSE 0
-
-struct adapter {
- int socket;
- char name[IFNAMSIZ];
- int prev_roaming;
-};
-
-PCHAR
-PacketGetVersion(void)
-{
- return("FreeBSD WinPcap compatibility shim v1.0");
-}
-
-void *
-PacketOpenAdapter(CHAR *iface)
-{
- struct adapter *a;
- int s;
- int ifflags;
- struct ifreq ifr;
- struct ieee80211req ireq;
-
- s = socket(PF_INET, SOCK_DGRAM, 0);
-
- if (s == -1)
- return(NULL);
-
- a = malloc(sizeof(struct adapter));
- if (a == NULL)
- return(NULL);
-
- a->socket = s;
- if (strncmp(iface, "\\Device\\NPF_", 12) == 0)
- iface += 12;
- else if (strncmp(iface, "\\DEVICE\\", 8) == 0)
- iface += 8;
- snprintf(a->name, IFNAMSIZ, "%s", iface);
-
- /* Turn off net80211 roaming */
- bzero((char *)&ireq, sizeof(ireq));
- strncpy(ireq.i_name, iface, sizeof (ifr.ifr_name));
- ireq.i_type = IEEE80211_IOC_ROAMING;
- if (ioctl(a->socket, SIOCG80211, &ireq) == 0) {
- a->prev_roaming = ireq.i_val;
- ireq.i_val = IEEE80211_ROAMING_MANUAL;
- if (ioctl(a->socket, SIOCS80211, &ireq) < 0)
- fprintf(stderr,
- "Could not set IEEE80211_ROAMING_MANUAL\n");
- }
-
- bzero((char *)&ifr, sizeof(ifr));
- strncpy(ifr.ifr_name, iface, sizeof (ifr.ifr_name));
- if (ioctl(a->socket, SIOCGIFFLAGS, (caddr_t)&ifr) < 0) {
- free(a);
- close(s);
- return(NULL);
- }
- ifr.ifr_flags |= IFF_UP;
- if (ioctl(a->socket, SIOCSIFFLAGS, (caddr_t)&ifr) < 0) {
- free(a);
- close(s);
- return(NULL);
- }
-
- return(a);
-}
-
-int
-PacketRequest(void *iface, BOOLEAN set, PACKET_OID_DATA *oid)
-{
- struct adapter *a;
- uint32_t retval;
- struct ifreq ifr;
- NDIS_802_11_KEY *old;
- NDIS_802_11_KEY_COMPAT *new;
- PACKET_OID_DATA *o = NULL;
-
- if (iface == NULL)
- return(-1);
-
- a = iface;
- bzero((char *)&ifr, sizeof(ifr));
-
- /*
- * This hack is necessary to work around a difference
- * betwee the GNU C and Microsoft C compilers. The NDIS_802_11_KEY
- * structure has a uint64_t in it, right after an array of
- * chars. The Microsoft compiler inserts padding right before
- * the 64-bit value to align it on a 64-bit boundary, but
- * GCC only aligns it on a 32-bit boundary. Trying to pass
- * the GCC-formatted structure to an NDIS binary driver
- * fails because some of the fields appear to be at the
- * wrong offsets.
- *
- * To get around this, if we detect someone is trying to do
- * a set operation on OID_802_11_ADD_KEY, we shuffle the data
- * into a properly padded structure and pass that into the
- * driver instead. This allows the driver_ndis.c code supplied
- * with wpa_supplicant to work unmodified.
- */
-
- if (set == TRUE && oid->Oid == OID_802_11_ADD_KEY) {
- old = (NDIS_802_11_KEY *)&oid->Data;
- o = malloc(sizeof(PACKET_OID_DATA) +
- sizeof(NDIS_802_11_KEY_COMPAT) + old->KeyLength);
- if (o == NULL)
- return(0);
- bzero((char *)o, sizeof(PACKET_OID_DATA) +
- sizeof(NDIS_802_11_KEY_COMPAT) + old->KeyLength);
- o->Oid = oid->Oid;
- o->Length = sizeof(NDIS_802_11_KEY_COMPAT) + old->KeyLength;
- new = (NDIS_802_11_KEY_COMPAT *)&o->Data;
- new->KeyRSC = old->KeyRSC;
- new->Length = o->Length;
- new->KeyIndex = old->KeyIndex;
- new->KeyLength = old->KeyLength;
- bcopy(old->BSSID, new->BSSID, sizeof(NDIS_802_11_MAC_ADDRESS));
- bcopy(old->KeyMaterial, (char *)new +
- sizeof(NDIS_802_11_KEY_COMPAT), new->KeyLength);
- ifr.ifr_data = (caddr_t)o;
- } else
- ifr.ifr_data = (caddr_t)oid;
-
- strlcpy(ifr.ifr_name, a->name, sizeof(ifr.ifr_name));
-
- if (set == TRUE)
- retval = ioctl(a->socket, SIOCSDRVSPEC, &ifr);
- else
- retval = ioctl(a->socket, SIOCGDRVSPEC, &ifr);
-
- if (o != NULL)
- free(o);
-
- if (retval)
- return(0);
-
- return(1);
-}
-
-int
-PacketGetAdapterNames(CHAR *namelist, ULONG *len)
-{
- int mib[6];
- size_t needed;
- struct if_msghdr *ifm;
- struct sockaddr_dl *sdl;
- char *buf, *lim, *next;
- char *plist;
- int spc;
- int i, ifcnt = 0;
-
- plist = namelist;
- spc = 0;
-
- bzero(plist, *len);
-
- needed = 0;
- mib[0] = CTL_NET;
- mib[1] = PF_ROUTE;
- mib[2] = 0; /* protocol */
- mib[3] = 0; /* wildcard address family */
- mib[4] = NET_RT_IFLIST;
- mib[5] = 0; /* no flags */
-
- if (sysctl (mib, 6, NULL, &needed, NULL, 0) < 0)
- return(FALSE);
-
- buf = malloc (needed);
- if (buf == NULL)
- return(FALSE);
-
- if (sysctl (mib, 6, buf, &needed, NULL, 0) < 0) {
- free(buf);
- return(FALSE);
- }
-
- lim = buf + needed;
-
- /* Generate interface name list. */
-
- next = buf;
- while (next < lim) {
- ifm = (struct if_msghdr *)next;
- if (ifm->ifm_type == RTM_IFINFO) {
- sdl = (struct sockaddr_dl *)(ifm + 1);
- if (strnstr(sdl->sdl_data, "wlan", sdl->sdl_nlen)) {
- if ((spc + sdl->sdl_nlen) > *len) {
- free(buf);
- return(FALSE);
- }
- strncpy(plist, sdl->sdl_data, sdl->sdl_nlen);
- plist += (sdl->sdl_nlen + 1);
- spc += (sdl->sdl_nlen + 1);
- ifcnt++;
- }
- }
- next += ifm->ifm_msglen;
- }
-
-
- /* Insert an extra "" as a spacer */
-
- plist++;
- spc++;
-
- /*
- * Now generate the interface description list. There
- * must be a unique description for each interface, and
- * they have to match what the ndis_events program will
- * feed in later. To keep this simple, we just repeat
- * the interface list over again.
- */
-
- next = buf;
- while (next < lim) {
- ifm = (struct if_msghdr *)next;
- if (ifm->ifm_type == RTM_IFINFO) {
- sdl = (struct sockaddr_dl *)(ifm + 1);
- if (strnstr(sdl->sdl_data, "wlan", sdl->sdl_nlen)) {
- if ((spc + sdl->sdl_nlen) > *len) {
- free(buf);
- return(FALSE);
- }
- strncpy(plist, sdl->sdl_data, sdl->sdl_nlen);
- plist += (sdl->sdl_nlen + 1);
- spc += (sdl->sdl_nlen + 1);
- ifcnt++;
- }
- }
- next += ifm->ifm_msglen;
- }
-
- free (buf);
-
- *len = spc + 1;
-
- return(TRUE);
-}
-
-void
-PacketCloseAdapter(void *iface)
-{
- struct adapter *a;
- struct ifreq ifr;
- struct ieee80211req ireq;
-
- if (iface == NULL)
- return;
-
- a = iface;
-
- /* Reset net80211 roaming */
- bzero((char *)&ireq, sizeof(ireq));
- strncpy(ireq.i_name, a->name, sizeof (ifr.ifr_name));
- ireq.i_type = IEEE80211_IOC_ROAMING;
- ireq.i_val = a->prev_roaming;
- ioctl(a->socket, SIOCS80211, &ireq);
-
- bzero((char *)&ifr, sizeof(ifr));
- strncpy(ifr.ifr_name, a->name, sizeof (ifr.ifr_name));
- ioctl(a->socket, SIOCGIFFLAGS, (caddr_t)&ifr);
- ifr.ifr_flags &= ~IFF_UP;
- ioctl(a->socket, SIOCSIFFLAGS, (caddr_t)&ifr);
- close(a->socket);
- free(a);
-
- return;
-}
-
-#if __FreeBSD_version < 600000
-
-/*
- * The version of libpcap in FreeBSD 5.2.1 doesn't have these routines.
- * Call me insane if you will, but I still run 5.2.1 on my laptop, and
- * I'd like to use WPA there.
- */
-
-int
-pcap_get_selectable_fd(pcap_t *p)
-{
- return(pcap_fileno(p));
-}
-
-/*
- * The old version of libpcap opens its BPF descriptor in read-only
- * mode. We need to temporarily create a new one we can write to.
- */
-
-int
-pcap_inject(pcap_t *p, const void *buf, size_t len)
-{
- int fd;
- int res, n = 0;
- char device[sizeof "/dev/bpf0000000000"];
- struct ifreq ifr;
-
- /*
- * Go through all the minors and find one that isn't in use.
- */
- do {
- (void)snprintf(device, sizeof(device), "/dev/bpf%d", n++);
- fd = open(device, O_RDWR);
- } while (fd < 0 && errno == EBUSY);
-
- if (fd == -1)
- return(-1);
-
- bzero((char *)&ifr, sizeof(ifr));
- ioctl(pcap_fileno(p), BIOCGETIF, (caddr_t)&ifr);
- ioctl(fd, BIOCSETIF, (caddr_t)&ifr);
-
- res = write(fd, buf, len);
-
- close(fd);
-
- return(res);
-}
-#endif
diff --git a/usr.sbin/wpa/wpa_supplicant/Packet32.h b/usr.sbin/wpa/wpa_supplicant/Packet32.h
deleted file mode 100644
index c96553afc8a1..000000000000
--- a/usr.sbin/wpa/wpa_supplicant/Packet32.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-4-Clause
- *
- * Copyright (c) 2005
- * Bill Paul <wpaul@windriver.com>. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Bill Paul.
- * 4. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _PACKET32_H_
-#define _PACKET32_H_
-
-#include <sys/types.h>
-#include <ntddndis.h>
-
-struct PACKET_OID_DATA {
- uint32_t Oid;
- uint32_t Length;
- uint8_t Data[1];
-};
-
-
-typedef struct PACKET_OID_DATA PACKET_OID_DATA;
-
-extern PCHAR PacketGetVersion(void);
-extern void *PacketOpenAdapter(CHAR *);
-extern int PacketRequest(void *, BOOLEAN, PACKET_OID_DATA *);
-extern int PacketGetAdapterNames(CHAR *, ULONG *);
-extern void PacketCloseAdapter(void *);
-
-/*
- * This is for backwards compatibility on FreeBSD 5.
- */
-
-#ifndef SIOCGDRVSPEC
-#define SIOCSDRVSPEC _IOW('i', 123, struct ifreq) /* set driver-specific
- parameters */
-#define SIOCGDRVSPEC _IOWR('i', 123, struct ifreq) /* get driver-specific
- parameters */
-#endif
-
-#endif /* _PACKET32_H_ */
diff --git a/usr.sbin/wpa/wpa_supplicant/ntddndis.h b/usr.sbin/wpa/wpa_supplicant/ntddndis.h
deleted file mode 100644
index 42e403d7bb12..000000000000
--- a/usr.sbin/wpa/wpa_supplicant/ntddndis.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef _NTDDNDIS_H_
-#define _NTDDNDIS_H_
-
-/*
- * $FreeBSD$
- */
-
-/*
- * Fake up some of the Windows type definitions so that the NDIS
- * interface module in wpa_supplicant will build.
- */
-
-#define ULONG uint32_t
-#define USHORT uint16_t
-#define UCHAR uint8_t
-#define LONG int32_t
-#define SHORT int16_t
-#define CHAR int8_t
-#define ULONGLONG uint64_t
-#define LONGLONG int64_t
-#define BOOLEAN uint8_t
-typedef void * LPADAPTER;
-typedef char * PTSTR;
-typedef char * PCHAR;
-
-#define TRUE 1
-#define FALSE 0
-
-#define OID_802_3_CURRENT_ADDRESS 0x01010102
-
-#endif /* _NTDDNDIS_H_ */