#      @(#)strcf	5.1.1.3 Lachman System V STREAMS TCP  source
#
#	System V STREAMS TCP - Release 4.0
#
#   Copyright 1990 Interactive Systems Corporation,(ISC)
#   All Rights Reserved.
#
#	Copyright 1987, 1988, 1989 Lachman Associates, Incorporated (LAI)
#	All Rights Reserved.
#
#      SCCS IDENTIFICATION
#
# 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
}

#
# cenetb - configure ethernet-type interface for cloning driver with
#	one major per interface.  This version assumes less about
#	node names.
# usage: cenetb ip-fd dev if
cenetb {
	dev = open $2
	aplinkint $1 dev $3
	dev = open $2
	arp = open /dev/inet/arp
	linkint arp dev $3
}

#
# 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
}

#
# ppplinkint - link a Point-to-Point Protocol under IP service provider
# usage: ppplinkint top_fd ifname
#
ppplinkint {
	dev = open /dev/ppp
	linkint $1 dev $2
}

#
# pppip - provide all the point-to-point links for ip
# usage: pppip top_fd
#
pppip {
#	ppplinkint $1 ppp0
#	ppplinkint $1 ppp1
}


#
# boot - boot time configuration
#
boot {
	#
	# queue params
	#
	initqp /dev/inet/udp rq 8192 49152
	initqp /dev/inet/ip muxrq 8192 49152 muxwq 8192 49152
	initqp /dev/inet/tcp muxrq 8192 49152 muxwq 8192 49152
	#
	# transport
	#
	tp /dev/inet/tcp
	tp /dev/inet/udp
	tp /dev/inet/icmp
	tp /dev/inet/rip
	#
	# interfaces
	#
	ip = open /dev/inet/ip
#	cenet ip /dev/ni/clone en 0		# 3b2/NI(10base5)
#	senet ip /dev/pc586_0 /dev/pc586_1 en0	# i386/pc586
#	senetc ip eli /dev/emd0 /dev/emd1 en0	# 3B2/EMD
#	cenet ip /dev/ni en 0			# i386/NI
#	uenet ip /dev/abc en 0
#	denet ip /dev/def en 0
#	senet ip /dev/ghi0 /dev/ghi1 en0
#	uenet ip /dev/lan0 lan 0
	cenetb ip /dev/lan0 lan0
	loopback ip
#
# Uncomment for PPP
#
#	pppip   ip				# PPP
}
