The strcf file contains several functions that perform various configuration operations, along with a sample boot function. Normally, no function should be modified to customize the configuration for a given installation. In some cases, however, it may be necessary to change existing functions or add new functions.
The tp and linkint functions perform basic linking operations. The add_interface, add_interface_SNAP, and add_loop functions configure different types of interfaces.
#
# tp - configure transport provider (i.e. tcp, udp, icmp)
# usage: tp devname
#
tp {
p = open $1
ip = open /dev/ip
plink p ip
close p
}
#
# linkint - link interface to ip or arp
# usage: linkint top bottom ifname flags
#
linkint {
x = plink $1 $2
sifname $1 x $3 $4
}
#
# add_interface - configure ethernet-type interface for cloning driver with
# one major per interface. Arguments are already concatenated with
# the major device number (such as emd0). It is assumed that boot has
# already run. We open /dev/ip and link the device beneath it.
#
# usage: add_interface compat_ip_fd dev ifname
#
add_interface {
dev = open $2
addr = dlbind dev 0x800 # For Ethernet encoding
ip = open /dev/ip
linkint ip dev $3 0x4042
close ip
dev2 = open $2
addr = dlbind dev2 0x806 # For Ethernet encoding
arp = open /dev/arp
sifhrd arp ether # hardware interface is ethernet
linkint arp dev2 $3 0x4042
sifaddr arp $3 addr
close arp
close dev2
}
#
# add_interface_SNAP - configure ethernet-type interface for cloning driver
# with one major per interface. This version sets up 802.n framing.
# Arguments are already concatenated with the major device number
# (such as emd0). It is assumed that boot has already run.
# We bind the device to the SNAP SAP for ip and link the device
# under ip. We also bind the device to the SNAP SAP for arp and link
# the device under arp.
#
# usage: add_interface_SNAP compat_ip_fd dev ifname
#
add_interface_SNAP {
dev = open $2
addr = dlbind dev 0xaa # For IEEE 802 encoding
dlsubsbind dev 0x800
ip = open /dev/ip
linkint ip dev $3 0x4042
close ip
dev2 = open $2
addr = dlbind dev2 0xaa # For IEEE 802 encoding
dlsubsbind dev2 0x806
arp = open /dev/arp
sifhrd arp ieee # hardware interface is ieee802
linkint arp dev2 $3 0x4042
sifaddr arp $3 addr
close arp
close dev2
}
#
# add_loop - configure loopback device. It is assumed that
# boot has already run. We will open /dev/ip ourselves
# and link the device beneath it.
#
# usage: add_loop compat_ip_fd compat_dev ifname
#
#
add_loop {
dev = open $2
addr = dlbind dev 0x800
ip = open /dev/ip
linkint ip dev $3 0x4048
close ip
close dev
}
#
# boot - boot time configuration
#
boot {
#
# queue params
#
initqp /dev/udp rq 8192 49152
initqp /dev/ip muxrq 8192 49152 muxwq 8192 49152
initqp /dev/tcp muxrq 8192 49152 muxwq 8192 49152
#
# transport
#
tp /dev/tcp
tp /dev/udp
tp /dev/icmp
tp /dev/igmp
tp /dev/ipip
tp /dev/rip
}