Subject: Re: -current config(8) + files.opencrypto == cryptographic roulette?
To: Jonathan Stone <jonathan@DSG.Stanford.EDU>
From: Rafal Boni <rafal@pobox.com>
List: tech-kern
Date: 11/22/2003 10:41:45
In message <200311220412.UAA29613@Pescadero.DSG.Stanford.EDU>, you write: 

-> Could be too many cooks spoiled the cast128 broth whilst
-> rearranging sys/opencrypto, and moving (or using) crypto transforms
-> into (or from) sys/crypto/*.

To your credit (thanks for all the work on opencrypto and fast-ipsec!),
I don't think it's got much to do with opencrypto per se. but looks
like config(8) internal attribute confusion which surfaces due to the
way opencrypto/KAME ipsec use the crypto attributes; I'm still sketchy
as I didn't get a chance to do any further digging last night.

-> But sys/crypto/cast128/files.cast128 defines "cast128", and both
-> IPSEC_ESP (sys/netinet6/files.netinet6) and opencrypto
-> (sys/opencrypto/files.opencrypto) list dependencies on that
-> "cast128" attribute. So it looks to me like your config should work.

It does, but it not only fails, it seems to fail with a different set
of crypto routines missing each time I re-run config (well, there's
only a limited set to leave out, but you get the idea :-).

-> Can you send me a copy of your kernel-config file so I can try it out?

See below.

Thanks!
--rafal

#
#	CYCLOPS -- kernel for my Gateway E5200 P-III box
#

include "arch/i386/conf/std.i386"
# XXX: doesn't work in MP-land: include "arch/i386/conf/largepages.inc"

maxusers	32		# estimated number of users

# CPU support.  At least one is REQUIRED.
options 	I686_CPU

# CPU-related options.
options 	MATH_EMULATE	# floating point emulation
options 	USER_LDT	# user-settable LDT; used by WINE
options 	DUMMY_NOPS

# Misc. i386-specific options
options		MTRR		# memory type region registers
options 	MPBIOS		# configure CPUs and APICs using MPBIOS
options 	COM_MPLOCK	# com MP locking; REQUIRED on MP i386
options 	XSERVER		# X server support in console drivers
options 	XSERVER_DDB	# PF12 gets you into DDB when X is running
options		MULTIPROCESSOR	# What it says

# Standard system options
options 	UCONSOLE	# users can use TIOCCONS (for xconsole)
options 	INSECURE	# disable kernel security levels

options 	RTC_OFFSET=300	# hardware clock is this many mins. west of GMT
options 	NTP		# NTP phase/frequency locked loop

options 	KTRACE		# system call tracing via ktrace(1)

options 	SYSVMSG		# System V-like message queues
options 	SYSVSEM		# System V-like semaphores
options 	SYSVSHM		# System V-like memory sharing
options 	SHMMAXPGS=4096	# 1024 pages is the default

options 	LKM		# loadable kernel modules

# Diagnostic/debugging support options
options 	KMEMSTATS	# kernel memory statistics (vmstat -m)
options 	DDB		# in-kernel debugger
options 	DIAGNOSTIC	# STRONGLY RECOMMENDED
#options 	LOCKDEBUG	# useful for MP systems
#options 	MPDEBUG		# useful for MP systems
options 	DDB_HISTORY_SIZE=100	# enable history editing in DDB
#options 	KGDB		# remote debugger
#options 	"KGDB_DEVNAME=\"com\"",KGDBADDR=0x3f8,KGDBRATE=57600
#makeoptions	DEBUG="-g"	# compile full symbol table

# Compatibility options
options 	COMPAT_NOMID	# compatibility with 386BSD, BSDI, NetBSD 0.8,
options 	COMPAT_14	# NetBSD 1.4,
options 	COMPAT_43	# and 4.3BSD

options 	COMPAT_SVR4	# binary compatibility with SVR4
options 	COMPAT_IBCS2	# binary compatibility with SCO and ISC
options 	COMPAT_LINUX	# binary compatibility with Linux
options 	COMPAT_FREEBSD	# binary compatibility with FreeBSD

# File systems
file-system 	FFS		# UFS
file-system 	LFS		# log-structured file system
file-system 	MFS		# memory file system
file-system 	NFS		# Network File System client
file-system 	NTFS		# Windows/NT file system (experimental)
file-system 	FDESC		# /dev/fd
file-system 	CD9660		# ISO 9660 + Rock Ridge file system
file-system 	EXT2FS		# second extended file system (linux)
file-system 	KERNFS		# /kern
file-system 	PROCFS		# /proc
file-system 	MSDOSFS		# MS-DOS file system

# File system options
options 	SOFTDEP         # FFS soft updates support.
options 	NFSSERVER	# Network File System server
options 	EXT2FS_SYSTEM_FLAGS # makes ext2fs file flags (append and
				# immutable) behave as system flags.

# Networking options
options 	INET		# IP + ICMP + TCP + UDP
options 	IPSEC		# IP security
options 	IPSEC_ESP	# IP security (encryption part; define w/IPSEC)
options 	IPSEC_DEBUG	# debug for IP security
options 	PFIL_HOOKS	# pfil(9) packet filter hooks

# These options enable verbose messages for several subsystems.
# Warning, these may compile large string tables into the kernel!
options 	MPVERBOSE
options 	MIIVERBOSE	# verbose MII device autoconfig messages
options 	PCIVERBOSE	# verbose PCI device autoconfig messages
options 	USBVERBOSE	# verbose USB device autoconfig messages
options 	SCSIVERBOSE	# human readable SCSI error messages

#
# wscons options
#
# builtin terminal emulations
options 	WSEMUL_VT100		# VT100 / VT220 emulation
# different kernel output - see dev/wscons/wsdisplayvar.h
options 	WS_KERNEL_FG=WSCOL_RED
options 	WS_KERNEL_BG=WSCOL_BLACK

# compatibility to other console drivers
options 	WSDISPLAY_COMPAT_USL		# VT handling
options 	WSDISPLAY_COMPAT_PCVT		# emulate some ioctls
options 	WSDISPLAY_COMPAT_SYSCONS	# emulate some ioctls
options 	WSDISPLAY_COMPAT_RAWKBD		# can get raw scancodes

# Kernel root file system and dump configuration.
config		netbsd	root on ? type ?

#
# Device configuration
#
mainbus0 at root

ioapic*	at mainbus0 apid ?
cpu* 	at mainbus0 apid ?

acpi0	at mainbus0
acpiec0 at acpi0
acpibut* at acpi0

# Basic Bus Support

# PCI bus support
pci*	at mainbus? bus ?
pci*	at pchb? bus ?
agp* 	at pchb?
pci*	at ppb? bus ?

# Configure PCI using BIOS information
options 	PCIBIOS			# PCI BIOS support
options 	PCIBIOS_BUS_FIXUP	# fixup PCI bus numbering
options 	PCIBIOS_ADDR_FIXUP	# Fix up PCI I/O addresses
options 	PCIBIOS_INTR_FIXUP	# fixup PCI interrupt routing

# PCI bridges
pchb*	at pci? dev ? function ?	# PCI-Host bridges
pcib*	at pci? dev ? function ?	# PCI-ISA bridges
ppb*	at pci? dev ? function ?	# PCI-PCI bridges

# ISA bus support
isa*	at mainbus?
isa*	at pcib?

# ISA Plug-and-Play bus support
isapnp0	at isa?

# Math Coprocessor support
npx0	at isa? port 0xf0 irq 13	# x86 math coprocessor

# Console Devices
pckbc0		at isa?			# pc keyboard controller
pckbd*		at pckbc?		# PC keyboard

pms*		at pckbc?		# PS/2 mouse for wsmouse

vga*		at pci? dev ? function ?
wsdisplay*	at vga? console ?

wskbd* 		at pckbd? console ?
wsmouse*	at pms? mux 0

pcppi0		at isa?
sysbeep0	at pcppi?

# Serial Devices

# LM7[89] and compatible hardware monitors
lm0	at isa?	port 0x290		# other common ports: 0x280, 0x310

# PCI SCSI controllers
ahc0	at pci? dev ? function ?	# Adaptec [23]94x, aic78x0 SCSI

# SCSI bus support
scsibus0 at ahc0

# SCSI devices
cd0	at scsibus0 target 5 lun 0	# Toshiba CD-ROM
cd1	at scsibus0 target 4 lun 0	# Plextor CD-RW

sd*	at scsibus? target ? lun ?	# SCSI disk drives
st*	at scsibus? target ? lun ?	# SCSI tape drives
cd*	at scsibus? target ? lun ?	# SCSI CD-ROM drives
ch*	at scsibus? target ? lun ?	# SCSI autochangers
ss*	at scsibus? target ? lun ?	# SCSI scanners
uk*	at scsibus? target ? lun ?	# SCSI unknown

piixide* at pci? dev ? function ?	# Intel IDE controllers
pciide*	 at pci? dev ? function ? flags 0x0000	# GENERIC pciide driver
atapibus* at atapi?
atabus*   at ata?

wd*	at atabus? drive ? flags 0x0000

# ATAPI devices
cd*	at atapibus? drive ? flags 0x0000	# ATAPI CD-ROM drives
sd*	at atapibus? drive ? flags 0x0000	# ATAPI disk drives
uk*	at atapibus? drive ? flags 0x0000	# ATAPI unknown

# ISA floppy
fdc0	at isa? port 0x3f0 irq 6 drq 2	# standard PC floppy controllers
fd0	at fdc0 drive 0

# Network Interfaces
ex*	at pci? dev ? function ?	# 3Com 90x[BC] et al.
ti*	at pci? dev ? function ?	# Tigon/Tigon2 GigE cards

# MII/PHY support
bmtphy*	at mii? phy ?			# Broadcom Mini-Theta PHY
ukphy*	at mii? phy ?			# generic unknown PHYs

# USB Controller and Devices
uhci*	at pci?	dev ? function ?	# Universal Host Controller (Intel)
usb*	at uhci?

# USB Hubs
uhub*	at usb?
uhub*	at uhub? port ? configuration ? interface ?

# USB HID device
uhidev*	at uhub? port ? configuration ? interface ?

# USB Mice
ums*	at uhidev? reportid ?
wsmouse*	at ums? mux 0

# USB Keyboards
ukbd*	at uhidev? reportid ?
wskbd*	at ukbd? console ? mux 1

# USB Generic HID devices
uhid*	at uhidev? reportid ?

# USB Handspring Visor
uvisor*	at uhub? port ?
ucom*	at uvisor?

# USB radio tuners
udsbr* 	at uhub? port ?
radio* 	at udsbr?

# USB Generic driver
ugen*	at uhub? port ?

# Plug-and-Play BIOS and attached devices
pnpbios0 at mainbus0

# com port
com*	at pnpbios0 index ?

# parallel port
lpt*	at pnpbios0 index ?

# Audio Devices
eap*	at pci? dev ? function ?	# Ensoniq AudioPCI
audio*	at eap?

# MIDI support
midi*	at eap?			# 137[01] MIDI port
midi*	at pcppi?		# MIDI interface to the PC speaker

# The spkr driver provides a simple tone interface to the built in speaker.
spkr0	at pcppi?		# PC speaker

# Pseudo-Devices

# disk/mass storage pseudo-devices
pseudo-device	md		1	# memory disk device (ramdisk)
pseudo-device	vnd		4	# disk-like interface to files

# network pseudo-devices
pseudo-device	bpfilter	8	# Berkeley packet filter
pseudo-device	ipfilter		# IP filter (firewall) and NAT
pseudo-device	loop			# network loopback
pseudo-device	gre		2	# generic L3 over IP tunnel

# miscellaneous pseudo-devices
pseudo-device	pty		64	# pseudo-terminals
pseudo-device	sequencer	1	# MIDI sequencer

pseudo-device	rnd			# /dev/random and in-kernel generator

# mouse & keyboard multiplexor pseudo-devices
pseudo-device	wsmux		2

----
Rafal Boni                                                     rafal@pobox.com
  We are all worms.  But I do believe I am a glowworm.  -- Winston Churchill