Commit Graph

282 Commits

Author SHA1 Message Date
wpaul
97c86c25fc Commit the first cut of Project Evil, also known as the NDISulator.
Yes, it's what you think it is. Yes, you should run away now.

This is a special compatibility module for allowing Windows NDIS
miniport network drivers to be used with FreeBSD/x86. This provides
_binary_ NDIS compatibility (not source): you can run NDIS driver
code, but you can't build it. There are three main parts:

sys/compat/ndis: the NDIS compat API, which provides binary
compatibility functions for many routines in NDIS.SYS, HAL.dll
and ntoskrnl.exe in Windows (these are the three modules that
most NDIS miniport drivers use). The compat module also contains
a small PE relocator/dynalinker which relocates the Windows .SYS
image and then patches in our native routines.

sys/dev/if_ndis: the if_ndis driver wrapper. This module makes
use of the ndis compat API and can be compiled with a specially
prepared binary image file (ndis_driver_data.h) containing the
Windows .SYS image and registry key information parsed out of the
accompanying .INF file. Once if_ndis.ko is built, it can be loaded
and unloaded just like a native FreeBSD kenrel module.

usr.sbin/ndiscvt: a special utility that converts foo.sys and foo.inf
into an ndis_driver_data.h file that can be compiled into if_ndis.o.
Contains an .inf file parser graciously provided by Matt Dodd (and
mercilessly hacked upon by me) that strips out device ID info and
registry key info from a .INF file and packages it up with a binary
image array. The ndiscvt(8) utility also does some manipulation of
the segments within the .sys file to make life easier for the kernel
loader. (Doing the manipulation here saves the kernel code from having
to move things around later, which would waste memory.)

ndiscvt is only built for the i386 arch. Only files.i386 has been
updated, and none of this is turned on in GENERIC. It should probably
work on pc98. I have no idea about amd64 or ia64 at this point.

This is still a work in progress. I estimate it's about %85 done, but
I want it under CVS control so I can track subsequent changes. It has
been tested with exactly three drivers: the LinkSys LNE100TX v4 driver
(Lne100v4.sys), the sample Intel 82559 driver from the Windows DDK
(e100bex.sys) and the Broadcom BCM43xx wireless driver (bcmwl5.sys). It
still needs to have a net80211 stuff added to it. To use it, you would
do something like this:

# cd /sys/modules/ndis
# make; make load
# cd /sys/modules/if_ndis
# ndiscvt -i /path/to/foo.inf -s /path/to/foo.sys -o ndis_driver_data.h
# make; make load
# sysctl -a | grep ndis

All registry keys are mapped to sysctl nodes. Sometimes drivers refer
to registry keys that aren't mentioned in foo.inf. If this happens,
the NDIS API module creates sysctl nodes for these keys on the fly so
you can tweak them.

An example usage of the Broadcom wireless driver would be:

# sysctl hw.ndis0.EnableAutoConnect=1
# sysctl hw.ndis0.SSID="MY_SSID"
# sysctl hw.ndis0.NetworkType=0 (0 for bss, 1 for adhoc)
# ifconfig ndis0 <my ipaddr> netmask 0xffffff00 up

Things to be done:

- get rid of debug messages
- add in ndis80211 support
- defer transmissions until after a status update with
  NDIS_STATUS_CONNECTED occurs
- Create smarter lookaside list support
- Split off if_ndis_pci.c and if_ndis_pccard.c attachments
- Make sure PCMCIA support works
- Fix ndiscvt to properly parse PCMCIA device IDs from INF files
- write ndisapi.9 man page

PR:
Submitted by:
Reviewed by:
Approved by:
Obtained from:
MFC after:
2003-12-11 22:34:36 +00:00
obrien
1bf6892caf Add just enough of i386/include/pcvt_ioctl.h to amd64/include/pcvt_ioctl.h
such that 'ispcvt' can build.  Unforunately 'ispcvt' is needed in order for
/etc/rc.d/syscons to run.  This fixes the bug where I could not get my
keymap effective at boot.
2003-12-10 02:49:17 +00:00
brooks
2b3284fdce Reconnect ipfstat, ipnat, and ipftest to the build now that if_xname
support is enabled.

Approved by:	re (scottl)
2003-12-02 21:52:14 +00:00
harti
380c6f2932 Link the SNMP daemon for NgATM to the build. 2003-11-10 09:23:09 +00:00
marcel
15df21071c Build zzz(8) on ia64. It first checks ACPI before it checks for APM.
It will therefore always suspend using ACPI.
2003-11-03 04:25:55 +00:00
brooks
d8c7e800e5 Temporarily disconnect ipfstat, ipnat, and ipftest to unbreak world.
Pointy hat to:	brooks
2003-10-31 18:54:46 +00:00
ume
0a0369dedd add ip6addrctl(8) which is a command to configure address
selection policy for IPv6 and IPv4 described in RFC3484.
source address selection part of RFC3484 is not merged
from KAME, yet.

Obtained from:	KAME
2003-10-30 17:46:40 +00:00
simokawa
c96f6e4f1d Add dumb console driver and related bits.
dcons(4): very simple console and gdb port driver
dcons_crom(4): FireWire attachment
dconschat(8): User interface to dcons

Tested with: i386, i386-PAE, and sparc64.
2003-10-24 15:44:10 +00:00
emax
41bb0e8fd2 Update Bluetooth code.
Reviewed by: M. Warner Losh <imp@bsdimp.com>; John Hay <jhay@freebsd.org>
Approved by: M. Warner Losh <imp@bsdimp.com> (mentor)
2003-10-12 22:04:24 +00:00
peter
8a599ca7c0 Add asf for amd64 2003-09-30 04:19:01 +00:00
peter
25e4c1482c Add mptable 2003-09-30 04:17:45 +00:00
marcel
0dbec7d517 Add acpi to the build on ia64. The support for ACPI 2.0x has gotten
to a point where we don't map the wrong (ie 32-bit) addresses. We
don't always dump the right values yet, but that's not critical.

Ok'd: njl
2003-09-16 21:25:42 +00:00
phk
69a89b719e Introduce more knobs to slim down FreeBSD userland
NO_TOOLCHAIN	skips Compilers and Binutils
NO_USB		skips USB stuff
NO_VINUM	skips Vinum stuff
NO_ACPI		skips ACPI stuff
2003-08-29 10:35:01 +00:00
grog
a225ed0f0f Add asf to i386 build. This will probably work on other platforms
too, but I don't have time to test it, and I'm not sure it will help
much.
2003-08-29 08:24:10 +00:00
phk
f2f450d3bc Make build of atm, mld6query, rip6query, route6d and traceroute6
depend on existing NOATM and NOINET6 conditionals.
2003-08-27 19:59:49 +00:00
obrien
f245c87f99 Imply NOLIBC_R for PowerPC. 2003-08-13 00:13:37 +00:00
peter
5084d1a5f5 Fix amd64 build by deleting trailing whitespace. Doh! 2003-07-25 18:22:53 +00:00
markm
376c7c030b Don't check for the existance of src/crypto/ for building items that
may contain crypto. The days of ITAR paranoia are over, and the simple
macro tests that remain are sufficient.
2003-07-24 18:30:25 +00:00
peter
061f5a13ac Add mount_nwfs/mount_smbfs to the build for amd64. 2003-07-24 02:07:14 +00:00
peter
1f3b101804 Attach acpi, boot0cfg, lptcontrol, sicontrol, spkrtest, zzz for amd64. 2003-07-24 01:41:34 +00:00
njl
31c25736e9 Hook zzz up to the build. 2003-07-14 16:36:40 +00:00
gordon
c8da5ca5c2 Move mount_portalfs, mount_smbfs, and mount_nwfs from sbin to usr.sbin.
They don't have alot of reason to be in sbin and contribute to library
bloat in the dynamic case. If you are using any of these filesystem
type to hold your /usr, please seek professional help.

The actual code was repo-copied by joe.
2003-07-02 16:16:49 +00:00
smkelly
d45e58ad73 - Add a software watchdog facility.
This commit has two pieces. One half is the watchdog kernel code which lives
primarily in hardclock() in sys/kern/kern_clock.c. The other half is a userland
daemon which, when run, will keep the watchdog from firing while the userland
is intact and functioning.

Approved by:	jeff (mentor)
2003-06-26 09:50:52 +00:00
julian
4e5ab31742 Temporarily re-remove the bluetooth tools..
there are problems with their Makefiles I wasn't aware of..

Pointed out by: ru@
2003-06-24 19:11:14 +00:00
julian
19daaad84f Connect bluetooth tools for i386 only.
These are probably machine independent, but
there is no way for the developers to test them other than on x86.

They will become MD as testing becomes possible.
2003-06-24 13:25:24 +00:00
phk
4d61d2249d Remove dev_mkdb(8). The kernel answers these questions. 2003-06-20 09:48:11 +00:00
peter
c0387a3d2b Turn on btxld for amd64. 2003-06-03 01:38:16 +00:00
peter
8f0f81825d Port libc_r to amd64, and turn it back on for amd64. It passes all of
the same src/lib/libc_r/test/* tests that the other platforms pass.
2003-06-02 22:22:52 +00:00
peter
9a47cfedaa Add a pretty cheesy hack to avoid a gcc-3.2.2 ICE (internal compiler
error) on amd64 when doing pointer subtraction.  This bug is already
fixed in gcc-3.3 (waiting for after the branch), and the hack will be
backed out at the first opportunity.  This is in the ipv6 code path.

Approved by:  re (scottl)
2003-05-25 07:39:06 +00:00
peter
86c9a79b3b no libc_r on amd64 yet -> no pppctl.
Approved by:	re (safe amd64 changes)
2003-05-24 19:23:05 +00:00
peter
b8b7c5f0c7 Add __amd64__ to an ifdef set so that pppd compiles. Reactivate on amd64.
Approved by:  re (amd64 "safe" ifdefs etc)
2003-05-12 18:51:31 +00:00
peter
f31a9f552a Turn off ppp (ICE) and pppd (cc objects to a varargs decl) on amd64. 2003-05-09 21:06:41 +00:00
imp
8ce605b935 These are no longer needed after tw is gone.
Approved by: re@ (scottl)
2003-04-27 05:42:07 +00:00
phk
64d3a8bc21 Diskinfo is a small program to access the basic properties of a disk device:
sectorsize, mediasize etc.

It also contains a small and naïve benchmark which reports on seek
and transfer performance.
2003-04-09 10:52:10 +00:00
mike
6067525913 o Add jls(8) for listing active jails.
o Add jexec(8) to execute a command in an existing jail.
o Add -j option for killall(1) to kill all processes in a specified
  jail.
o Add -i option to jail(8) to output jail ID of newly created jail.
2003-04-09 03:04:12 +00:00
phk
f3139ecc8b Add a rudimentary gstat(8) to the system.
This is a small curses based program which shows the diskactivity
inside GEOM.
2003-03-20 20:48:41 +00:00
ru
a88b815b08 Revert rev. 1.244 change -- only build kgzip(8) on i386.
(The cross-release needs will be satisfied another way.)
2003-03-11 11:37:07 +00:00
obrien
5fcbca2516 Some things don't build for PowerPC yet.
List from:	benno
2003-02-21 02:30:51 +00:00
ru
2dce783e1a Always build kgzip(8); needed to cross-release i386. 2003-02-04 16:04:03 +00:00
imp
2180deee00 pccardd and pccardc are for i386 and pc98 only. Don't build them on
other architectures.

Pointed out by: peter
2003-01-21 08:42:27 +00:00
marcel
8c2352be36 Enable pppctl(8) on ia64. 2003-01-06 01:00:26 +00:00
tmm
9db57e5cdf Build pppctl on sparc64, now that we have libc_r. 2003-01-05 22:38:58 +00:00
simokawa
41352fb7b2 Import FireWire userland utility. 2002-12-30 10:13:16 +00:00
obrien
b09fc872b2 Move elf2aout back to /usr/bin -- it is a general development tool, not
a sysadmin tool.
2002-12-30 10:01:26 +00:00
jake
43abbe6909 Build sysinstall on sparc64. 2002-11-01 15:36:06 +00:00
peter
aca99d41be Un-remove sysinstall for ia64. 2002-10-27 00:22:05 +00:00
phk
6856b7844c Explicitly list architectures supporting sysinstall 2002-10-25 17:04:49 +00:00
rwatson
eedc3508bc Introduce simple command line tools to manage MAC labels on processes and
files.  Basically wrappers for mac_{get,set}_{file,link,pid,proc}(3).
Man pages to be updated shortly.

Approved by:	re
Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, Network Associates Laboratories
2002-10-23 03:15:24 +00:00
tmm
70f553334a Connect ofwdump to the sparc64 build. 2002-10-18 15:38:39 +00:00
julian
6f7c625264 Pppctl seems to compile again now 2002-09-19 10:32:39 +00:00