Commit Graph

282 Commits

Author SHA1 Message Date
Bill Paul
0d27d14070 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
David E. O'Brien
70005bdb38 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 Davis
bf164734d4 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
Hartmut Brandt
5597389c40 Link the SNMP daemon for NgATM to the build. 2003-11-10 09:23:09 +00:00
Marcel Moolenaar
cb3e210e30 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 Davis
cd30ca946d Temporarily disconnect ipfstat, ipnat, and ipftest to unbreak world.
Pointy hat to:	brooks
2003-10-31 18:54:46 +00:00
Hajimu UMEMOTO
f71d0e1192 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
Hidetoshi Shimokawa
869093b15d 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
Maksim Yevmenkin
0986ab12e4 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 Wemm
9afe34c150 Add asf for amd64 2003-09-30 04:19:01 +00:00
Peter Wemm
40255f22be Add mptable 2003-09-30 04:17:45 +00:00
Marcel Moolenaar
0346a1de85 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
Poul-Henning Kamp
3bc2f9a897 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
Greg Lehey
403a9c73fb 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
Poul-Henning Kamp
dd0b8d3c15 Make build of atm, mld6query, rip6query, route6d and traceroute6
depend on existing NOATM and NOINET6 conditionals.
2003-08-27 19:59:49 +00:00
David E. O'Brien
1c327ba712 Imply NOLIBC_R for PowerPC. 2003-08-13 00:13:37 +00:00
Peter Wemm
16f564013c Fix amd64 build by deleting trailing whitespace. Doh! 2003-07-25 18:22:53 +00:00
Mark Murray
ebb9f0efa8 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 Wemm
92c3d4271e Add mount_nwfs/mount_smbfs to the build for amd64. 2003-07-24 02:07:14 +00:00
Peter Wemm
19f2b0e839 Attach acpi, boot0cfg, lptcontrol, sicontrol, spkrtest, zzz for amd64. 2003-07-24 01:41:34 +00:00
Nate Lawson
3b18f47d52 Hook zzz up to the build. 2003-07-14 16:36:40 +00:00
Gordon Tetlow
d928e581a9 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
Sean Kelly
370c3cb57c - 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 Elischer
14823ba8d6 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 Elischer
8590c01663 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
Poul-Henning Kamp
abe6d58e0c Remove dev_mkdb(8). The kernel answers these questions. 2003-06-20 09:48:11 +00:00
Peter Wemm
a6f4ec0614 Turn on btxld for amd64. 2003-06-03 01:38:16 +00:00
Peter Wemm
3aefe09423 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 Wemm
7dd6838582 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 Wemm
14682d7e53 no libc_r on amd64 yet -> no pppctl.
Approved by:	re (safe amd64 changes)
2003-05-24 19:23:05 +00:00
Peter Wemm
ec480a9740 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 Wemm
bd16ce64fa Turn off ppp (ICE) and pppd (cc objects to a varargs decl) on amd64. 2003-05-09 21:06:41 +00:00
Warner Losh
32660658b8 These are no longer needed after tw is gone.
Approved by: re@ (scottl)
2003-04-27 05:42:07 +00:00
Poul-Henning Kamp
a362eb6374 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 Barcroft
ebf5d9bc2c 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
Poul-Henning Kamp
54a8adabd3 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
Ruslan Ermilov
59aca3e42a 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
David E. O'Brien
0bc8118778 Some things don't build for PowerPC yet.
List from:	benno
2003-02-21 02:30:51 +00:00
Ruslan Ermilov
69ceaabdd7 Always build kgzip(8); needed to cross-release i386. 2003-02-04 16:04:03 +00:00
Warner Losh
1326e03f7f 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 Moolenaar
d88514696b Enable pppctl(8) on ia64. 2003-01-06 01:00:26 +00:00
Thomas Moestl
26bb063362 Build pppctl on sparc64, now that we have libc_r. 2003-01-05 22:38:58 +00:00
Hidetoshi Shimokawa
a7a73b95d1 Import FireWire userland utility. 2002-12-30 10:13:16 +00:00
David E. O'Brien
cbb66355ca 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 Burkholder
a959270a4b Build sysinstall on sparc64. 2002-11-01 15:36:06 +00:00
Peter Wemm
52fe5948a0 Un-remove sysinstall for ia64. 2002-10-27 00:22:05 +00:00
Poul-Henning Kamp
c295abba4f Explicitly list architectures supporting sysinstall 2002-10-25 17:04:49 +00:00
Robert Watson
5b38a427c0 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
Thomas Moestl
6f6ede923c Connect ofwdump to the sparc64 build. 2002-10-18 15:38:39 +00:00
Julian Elischer
039f96db54 Pppctl seems to compile again now 2002-09-19 10:32:39 +00:00