It all started when we got some new routers, which told me the
following when trying to upload configuration or download images
from it: The TFTP server doesn't support the blocksize option.
My curiousity was triggered, it took me some reading of RFCs and
other documentation to find out what was possible and what could
be done. Was plain TFTP very simple in its handshake, TFTP with
options was kind of messy because of its backwards capability: The
first packet returned could either be an acknowledgement of options,
or the first data packet.
Going through the source code of src/libexec/tftpd and going through
the code of src/usr.bin/tftp showed that there was a lot of duplicate
code, and the addition of options would only increase the amount
of duplicate code. After all, both the client and the server can
act as a sender and receiver.
At the end, it ended up with a nearly complete rewrite of the tftp
client and server. It has been tested against the following TFTP
clients and servers:
- Itself (yay!)
- The standard FreeBSD tftp client and server
- The Fedora Core 6 tftp client and server
- Cisco router tftp client
- Extreme Networks tftp client
It supports the following RFCs:
RFC1350 - THE TFTP PROTOCOL (REVISION 2)
RFC2347 - TFTP Option Extension
RFC2348 - TFTP Blocksize Option
RFC2349 - TFTP Timeout Interval and Transfer Size Options
RFC3617 - Uniform Resource Identifier (URI) Scheme and Applicability
Statement for the Trivial File Transfer Protocol (TFTP)
It supports the following unofficial TFTP Options as described at
http://www.compuphase.com/tftp.htm:
blksize2 - Block size restricted to powers of 2, excluding protocol headers
rollover - Block counter roll-over (roll back to zero or to one)
From the tftp program point of view the following things are changed:
- New commands: "blocksize", "blocksize2", "rollover" and "options"
- Development features: "debug" and "packetdrop"
If you try this tftp/tftpd implementation, please let me know if
it works (or doesn't work) and against which implementaion so I can
get a list of confirmed working systems.
Snort 2.9 introduces the DAQ, or Data Acquisition library,
for packet I/O. The DAQ replaces direct calls to PCAP functions
with an abstraction layer that facilitates operation on a variety
of hardware and software interfaces without requiring changes
to Snort. It is possible to select the DAQ type and mode
when invoking Snort to perform PCAP readback or inline operation, etc.
The DAQ library may be useful for other packet processing applications
and the modular nature allows you to build new modules for other
platforms.
JGroups is a toolkit for reliable multicast communication.
(Note that this doesn't necessarily mean IP Multicast,
JGroups can also use transports such as TCP).
It can be used to create groups of processes whose members can
send messages to each other. The main features include:
* Group creation and deletion
* Joining and leaving of groups
* Membership detection and notification about joined/left/crashed members
* Detection and removal of crashed members
* Sending and receiving of member-to-group messages (point-to-multipoint)
* Sending and receiving of member-to-member messages (point-to-point)
Sch is a pure Java implementation of SSH2. JSch allows you to connect
to an sshd server and use port forwarding, X11 forwarding, file
transfer, etc., and you can integrate its functionality into your
own Java programs. JSch is licensed under BSD style license.
- Why JSch?
Our intension in developing this stuff is to enable users of our
pure java X servers, WiredX and WeirdX, to enjoy secure X sessions.
Our efforts have mostly targeted the SSH2 protocol in relation to
X window system and X11 forwarding. Of course, we are also interested
in adding other functionality - port forward, file transfer, terminal
emulation, etc.
ldapdiff combines "diff" and "patch" functionality in one application.
The difference is that ldapdiff is not designed for use on flat ascii
files, it is designed for "patching" ldap directories using ldif files.
With ldapdiff it is possible to check every entry/attribute of an ldif
file against a running ldap directory. ldapdiff is able to produce ldif
delta files in ldap version 3 format, which can be fed, into tools like
"ldapmodify", "ldapdelete" etc. ldapdiff is also able to modify, delete
and add entries/attributes online.
netselect is an ultrafast intelligent parallelizing binary-search
implementation of "ping."
netselect determines several facts about all of the hosts given on the command
line, much faster than you would if you tried to use ping and traceroute.
For example, if I type:
netselect -v ftp.fceia.unr.edu.ar \
ftp.kulnet.kuleuven.ac.be \
ftp.cdrom.com ftp.debian.org \
ftp.de.debian.org
It tells me statistics about each of the hostnames I provided,
in much less time than doing a whole bunch of traceroutes.
The NMSG format is an efficient encoding of typed, structured data into
payloads which are packed into containers which can be transmitted over
the network or stored to disk. libnmsg is the reference implementation
of this format and provides an extensible interface for creating and
parsing messages in NMSG format. The NMSG format relies on Google
Protocol Buffers to encode the payload header. Individual NMSG payloads
are distinguished by assigned vendor ID and message type values and
libnmsg provides a modular interface for registering handlers for
specific message types. libnmsg makes it easy to build new message
types using the protobuf-c compiler.
nss-pam-ldapd, a Name Service Switch (NSS) module and
Pluggable Authentication Module (PAM) that allows your
LDAP server to provide user account, group, host name,
alias, netgroup, and basically any other information that
you would normally get from /etc flat files or NIS. It also
allows you to do authentication to an LDAP server.
Key differences from nss_ldap:
* lighter NSS library
* lighter PAM library
* simpler internal semantics
* clear separation between NSS, PAM and LDAP code (the server
part could easily be implemented in another language)
* less connections to the LDAP server
The Web Service Addressing protocol is used to select certain service
and port on a SOAP server, just like the "Host" header in "HTTP".
The basic SOAP design uses the URI and the "soapAction" header of HTTP
(in case it uses HTTP, by far the most often used transport mechanism)
However, when the server is hidden behind firewalls and proxies, these
fields are rewritten or replaced. This means that the definitions by
the WSDL for the client can differ from the configuration of the
MusiXTeX is a set of TeX macros to typeset polyphonic, orchestral or
polyphonic music. This software is not recommended for users that are
familiar with TeX.
MusiXTeX is documented in lib/texmf/documentation/musixtex.tex. This
file must be processed with LaTeX and musixflx:
latex musixdoc
musixflx musixdoc
latex musixdoc
makeindex musixdoc.idx
latex musixdoc
makeindex musixdoc.idx
latex musixdoc
Some examples are provided in lib/texmf/documentation/musixtex.examples
for instance, to typeset the file 'traeumer.tex' type:
musixtex traeumer
musixflx traeumer
musixtex traeumer