#      @(#)strcf	3.3 LAI System V.3 STREAMS TCP/IP  source
#
#	System V STREAMS TCP - Release 2.0
#
#	Copyright 1987, 1988 Lachman Associates, Incorporated (LAI)
#	All Rights Reserved.
#
#	The copyright above and this notice must be preserved in all
#	copies of this source code.  The copyright above does not
#	evidence any actual or intended publication of this source
#	code.
#
#	This is unpublished proprietary trade secret source code of
#	Lachman Associates.  This source code may not be copied,
#	disclosed, distributed, demonstrated or licensed except as
#	expressly authorized by Lachman Associates.
#
#	System V STREAMS TCP was jointly developed by Lachman
#	Associates and Convergent Technologies.
#
#
# tp - configure transport provider (i.e. tcp, udp, icmp)
# usage: tp devname
#
tp {
	p = open $1
	ip = open /dev/inet/ip
	link p ip
}

#
# linkint - link interface to ip or arp
# usage: linkint top bottom ifname
#
linkint {
	x = link $1 $2
	sifname $1 x $3
}

#
# aplinkint - like linkint, but arpproc is pushed on dev
# usage: aplinkint top bottom ifname
#
aplinkint {
	push $2 arpproc
	linkint $1 $2 $3
}

#
# uenet - configure ethernet-type interface for cloning driver using
#         unit select
# usage: uenet ip-fd devname ifprefix unit
#
uenet {
	ifname = strcat $3 $4
	dev = open $2
	unitsel dev $4
	aplinkint $1 dev ifname
	dev = open $2
	unitsel dev $4
	arp = open /dev/inet/arp
	linkint arp dev ifname
}

#
# denet - configure ethernet-type interface for cloning driver using
#         DL_ATTACH
# usage: denet ip-fd devname ifprefix unit
#
denet {
	ifname = strcat $3 $4
	dev = open $2
	dlattach dev $4
	aplinkint $1 dev ifname
	dev = open devname
	dlattach dev $4
	arp = open /dev/inet/arp
	linkint arp dev ifname
}

#
# cenet - configure ethernet-type interface for cloning driver with
#         one major per interface
# usage: cenet ip-fd devprefix ifprefix unit
#
cenet {
	devname = strcat $2 $4
	ifname = strcat $3 $4
	dev = open devname
	aplinkint $1 dev ifname
	dev = open devname
	arp = open /dev/inet/arp
	linkint arp dev ifname
}

#
# senet - configure ethernet-type interface for non-cloning driver
# usage: senet ip-fd ipdevname arpdevname ifname
#
senet {
	dev = open $2
	aplinkint $1 dev $4
	dev = open $3
	arp = open /dev/inet/arp
	linkint arp dev $4
}

#
# senetc - configure ethernet-type interface for non-cloning driver
#         using convergence module
# usage: senetc ip-fd convergence ipdevname arpdevname ifname
#
senetc {
	dev = open $3
	push dev $2
	aplinkint $1 dev $5
	dev = open $4
	push dev $2
	arp = open /dev/inet/arp
	linkint arp dev $5
}

#
# loopback - configure loopback device
# usage: loopback ip-fd
#
loopback {
	dev = open /dev/llcloop
	linkint $1 dev lo0
}

#
# slip - configure slip interface
# usage: slip unit
#
slip {
	ip = open /dev/inet/ip
	s = open /dev/slip
	ifname = strcat sl $1
	unitsel s $1
	linkint ip s ifname
}

#
# boot - boot time configuration
#
boot {
	qparams
	#
	# transport
	#
	tp /dev/inet/tcp
	tp /dev/inet/udp
	tp /dev/inet/icmp
#	tp /dev/inet/rip
	#
	# interfaces
	#
	ip = open /dev/inet/ip
# 3COM	cenet ip /dev/3comA 3comA 0
# WDIG	cenet ip /dev/wd wd 0
                                                                                        cenet ip /dev/dlink dlink 0
	loopback ip
}

#
# qparams put in a function so I can diddle them
#
qparams {
	initqp /dev/inet/udp rq 8192 40960
	initqp /dev/inet/tcp muxwq 1024 16384 wq 4096 8192
	initqp /dev/inet/tcp muxrq 1024 16384 rq 1024 16384
	initqp /dev/inet/ip muxwq 1024 16384 wq 1024 16384
	initqp /dev/inet/ip muxrq 4096 16384 rq 1024 16384
}
