This is the README file for the beta release of the uuconf library.
It was written by Ian Lance Taylor. I can be reached at ian@airs.com,
or, equivalently, uunet!cygint!airs!ian, or c/o Cygnus Support,
48 Grove Street, Somerville, MA, 02144, USA.
This package is covered by the Gnu Library General Public License.
See the file COPYING.LIB for details. If you would like to do
something with this package that you feel is reasonable but you feel
is prohibited by the license, contact me to see if we can work it out.
WHAT IT IS
This is a beta release of the uuconf library. The uuconf library
provides a set of functions which can be used to read UUCP
configuration files. V2, HDB, and Taylor UUCP configuration files are
supported.
Also included are two programs, uuchk and uuconv. uuchk will read
configuration files and display the information it finds in a verbose
format. This can be helpful to ensure that your configuration files
are set up as you expect. uuconv can be used to convert configuration
files from one type to another. This is particularly helpful for
people installing Taylor UUCP on a existing system who want to take
advantage of the additional functionality provided by the Taylor UUCP
configuration files.
This is strictly a beta release. The library provides all the
information needed for uuchk and uuconv, but does not yet provide
everything needed for uucp or cu. I am releasing it now to get
feedback and to provide the uuconv program to people using Taylor
UUCP.
This may well be the only time this library is release independently.
This library will be provided with Taylor UUCP, and future releases of
the library will probably only occur as part of the complete Taylor
UUCP package.
HOW TO USE IT
Configure and optionally install the package as described in INSTALL.
The functions provided by the library are described in uuconf.h. At
the moment there is no additional documentation.
Programs which use the library should include uuconf.h, and should not
include any of the other header files. The functions listed in
uuconf.h all begin with the string "uuconf_". The internal library
functions all begin with the string "_uuconf_". The internal library
functions should not be called by a program which uses the library, as
they may change in future releases. The uuchk program is an example
of program which uses the library; uuconv is not, as it relies upon
internal data structures.
The uuchk program takes a single optional option, -I, which may be
used to specify an alternate Taylor UUCP main configuration file. The
default configuration file is $(newconfigdir)/config ($(newconfigdir)
is defined in Makefile). For example:
uuchk
uuchk -I /usr/tmp/tstuu/Config1
The uuconv program requires two options: -i to specify the input type
and -o to specify the output type. Both options take a string
argument, which must be one of "v2", "hdb", or "taylor". uuconv also
takes an optional -I option, which is the same as the -I option to
uuchk. The conversion is not intended to be perfect, and the results
should be manually inspected. In particular, the dialcode file is not
converted (as the format is the same for all three configuration file
types, it may simply be copied to the appropriate new name). uuconv
will create new files in the current working directory. For example:
uuconv -i hdb -o taylor
uuconv -i taylor -I /usr/tmp/tstuu/Config1 -o v2
NOTES
The initial underscore on the internal library functions is required
by the GNU standards. As ANSI C reserves external identifiers with an
initial underscore for the implementation, it is possible, though
unlikely, that this will cause problems on other implementations; no
workaround is currently provided for such problems.
The library functions rely upon the following functions:
fclose fopen free fseek
ftell getc isalpha isdigit
islower isspace isupper malloc
realloc rewind strchr strcmp
strcspn strlen strncmp strspn
tolower toupper
and the following header files:
ctype.h errno.h stdio.h
If the following functions cannot be found by the configure script,
replacements will be used (the replacement for strerror is Unix
dependent):
getline memcpy strcasecmp strdup
strerror strncasecmp strtol
If the following header files are found, they will be included:
libc.h limits.h memory.h stddef.h
stdlib.h string.h strings.h sys/types.h
The following functions are required on Unix only:
fcntl fileno
The following headers are used, if found, on Unix only:
fcntl.h sys/file.h
>ozaki-r
|
|
|
Note that we should modularize netipsec and reduce reverse symbol references
(referencing symbols of netipsec from net, netinet and netinet6) though,
the task needs lots of code changes. Prior to doing so, rumpifying it and
having ATF tests should be useful.
|
|
To this end, carpattach needs to be delayed from RUMP_COMPONENT_NET to
RUMP_COMPONENT_NET_IF on rump_server. Otherwise mutex_enter via carpattach
for if_clone_mtx is called before mutex_init for it in ifinit1.
|
|
called to initialize lo0ifp.
|
|
|
|
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.
Leave compat headers around in the old locations.
The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
|
|
"make describe" prints the comment.
Requested/inspired by Vincent Schwarzer on rumpkernel-users
|
|
|
|
It's a cute idea to have component-specific opt files, but also a
completely stupid one since there's no way of knowing how options
transcend component boundaries, and therefore if a set of options is
conflicting or not. So, just continue concentrating all of opt_foo.h in
opt_rumpkernel.h in accordance with the monolithic opt model.
|
|
As discussed with pooka@
fixes current issues with ipv6 on rump being broken
|
|
with the default provided by Makefile.rump (they're all 0.0 anyway)
|
|
work correctly that way.
|
|
This unbreaks the builds of kernels that don't build if_ethersubr.c.
|
|
abuse of pointer to struct mbuf type.
param2 changed to u_long type and uses parameter name 'cmd' (ioctl command)
param3 changed to void * type and uses parameter name 'data'
param4 changed to struct ifnet * and uses parameter name 'ifp'
param5 has been removed (formerly struct lwp *) and uses of 'l' have been
replaced with curlwp from curproc(9).
callers have had (now unnecessary) casts to struct mbuf * removed, called
code has had (now unnecessary) casts to u_long, void * and struct ifnet *
respectively removed.
reviewed by rmind@
|
|
- Replace ipintrq and ip6intrq with the pktqueue mechanism.
- Eliminate kernel-lock from ipintr() and ip6intr().
- Some preparation work to push softnet_lock out of ipintr().
Discussed on tech-net.
|
|
|
|
global list.
|
|
|
|
running ipv4/ipv6-only (too many dependencies on ifdefs).
|
|
|
|
Requested and tested by Justin Cormack.
|
|
|
|
|
|
methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime
Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding
socket and protocol control blocks (PCBs) stick around until the TCP
Maximum Segment Lifetime (MSL) expires. On a host whose workload
necessarily creates and closes down many TCP sockets, the sockets & PCBs
for TCP sessions in TIME_WAIT state amount to many megabytes of dead
weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to
a class based on the nearness of the peer. Corresponding to each class
is an MSL, and a session uses the MSL of its class. The classes are
loopback (local host equals remote host), local (local host and remote
host are on the same link/subnet), and remote (local host and remote
host communicate via one or more gateways). Classes corresponding to
nearer peers have lower MSLs by default: 2 seconds for loopback, 10
seconds for local, 60 seconds for remote. Loopback and local sessions
expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket
dead weight with a compact representation of the session, called a
"vestigial PCB". VTW data structures are designed to be very fast and
memory-efficient: for fast insertion and lookup of vestigial PCBs,
the PCBs are stored in a hash table that is designed to minimize the
number of cacheline visits per lookup/insertion. The memory both
for vestigial PCBs and for elements of the PCB hashtable come from
fixed-size pools, and linked data structures exploit this to conserve
memory by representing references with a narrow index/offset from the
start of a pool instead of a pointer. When space for new vestigial PCBs
runs out, VTW makes room by discarding old vestigial PCBs, oldest first.
VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN
cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT
sessions as fast as it can is approximately 17% idle when VTW is active
versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM
when VTW is active (approximately 64k vestigial PCBs are created) than
when it is inactive.
|
|
b) loopback is configured only after it has attached.
makes tests/net/if_loop work again
|
|
(testing bind/connect/etc. is now possible on a virgin rump kernel
without the need to ifconfig anything)
|
|
but there's about 1000 lines of #ifdef which disagree with my wish.
|
|
into ip_reass_init(), ip_reass_lookup(), etc (note: abstraction is not
yet complete). No functional changes to the actual mechanism.
OK matt@
|
|
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
|
|
exercise of "add it to every Makefile individually".
XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
|
|
get properly called.
|
|
are present. This works in userspace as opposed relying in link
sets, which fail miserably. Later, when the networking stack
becomes modularized, we can move to a dynamic scheme like with file
systems.
Also, this change allows us to do proper autoconfig, namely attach
the loopback interface iff it is present.
|
|
component, but due to ifdef happiness permeating the sources, it's
a compile decision for now, so netinet pulls in both inet and inet6.
One issue, one single issue: the loopback interface still needs to
be created for IPv6 to work. I have patches to take care of it
automatically if the appropriate component (net) is present, but
they require a bit more testing before commit.
|
|
UPDATE builds don't go all coocoo.
|
|
|
|
|
|
and libnetinet into a big bunch for now. If they were separate
libraries, the DOMAIN_DEFINE() in the latter on the linkline would
not get noticed at "boot" time because of the abovementioned
brokenness. One of these days I'll add code to dlopen() the
libraries and resplit them, but this will allow things to work
until then.
|
|
|
|
|