Squashed 'third_party/lksctp-tools/' content from commit 200eca7f1
Change-Id: I8f7575513f114b205178cac5c6b3706f3d725cb5
git-subtree-dir: third_party/lksctp-tools
git-subtree-split: 200eca7f1419b1ae53958b51e8551f7e7f6cd467
diff --git a/README b/README
new file mode 100644
index 0000000..cfabbe5
--- /dev/null
+++ b/README
@@ -0,0 +1,178 @@
+(C) Copyright 2007 Hewlett-Packard Development Company, L.P.
+(C) Copyright IBM Corp. 2001, 2003
+Copyright 2001 Motorola, Cisco, Intel, Nokia, La Monte Yarroll.
+Copyright 2002 Nokia, La Monte Yarroll, Intel.
+
+This is the lksctp-tools package for Linux Kernel SCTP Reference
+Implementation.
+
+This package is intended to supplement the Linux Kernel SCTP
+Reference Implementation now available in the Linux kernel source
+tree in versions 2.5.36 and following. For more information on LKSCTP
+see the below section titled "LKSCTP - Linux Kernel SCTP."
+
+lksctp-tools
+____________
+
+The lksctp-tools package is intended for two audiences.
+ 1) SCTP application developers
+ 2) LKSCTP project developers
+
+For SCTP application developers, this package provides the user-level
+C language header files and a library for accessing SCTP specific
+application programming interfaces not provided by the standard sockets.
+
+For LKSCTP project developers, this package provides the API
+regression and functional tests. Developers should also check
+lksctp_tests package that provides low level kernel tests. These
+are available from git.kernel.org.
+
+For either role, this project provides sample code, utilities, and
+tests that one may find useful.
+
+
+LKSCTP - Linux Kernel SCTP
+__________________________
+
+The Linux Kernel SCTP Reference Implementation is free software; you
+can redistribute it and/or modify it under the terms of the GNU
+General Public License as published by the Free Software Foundation;
+either version 2, or (at your option) any later version. For more
+information on licensing terms, please see the file COPYING in this
+directory.
+
+SCTP (Stream Control Transmission Protocol) is a message oriented,
+reliable transport protocol, with congestion control, support for
+transparent multi-homing, and multiple ordered streams of messages.
+RFC2960 defines the core protocol. The IETF SIGTRAN Working Group
+developed SCTP. The primary architects are Randy Stewart and Qiaobing
+Xie.
+
+The Kernel Reference is first and foremost an exposition of
+RFC2960 and related documents. You will find that the comments and
+variable names tie closely back to the RFC and Internet Drafts.
+
+This work was started by a small team of developers at Motorola.
+Throughout this document, "we" refers to that team. We intend for the
+meaning of "we" to expand to include the whole development community,
+all 27 million programmers on the planet.
+
+The Kernel Reference has loose origins in the SCTP User Space Reference
+by Randy Stewart and Qiaobing Xie.
+
+MANIFEST
+--------
+.
+|-- bin
+|-- doc
+|-- man
+|-- src
+ |-- apps
+ |-- func_tests
+ |-- include
+ | `-- netinet
+ |-- lib
+ |-- testlib
+ `-- withsctp
+
+You may want to check the following files:
+
+COPYING.lib Licensing terms of libsctp
+COPYING Licensing terms of other pieces of the package
+ROADMAP A tour around the files in the distribution of SCTP-tools.
+INSTALL How to install and run this beast.
+ChangeLog What has changed since the last release?
+
+DESIGN GOALS
+------------
+
+- A primary design goal is to reflect RFC 2960 as closely as
+practical. We have changed many names from the user space reference to
+follow the draft as closely as possible. We have also included
+extensive quotes from the draft adjacent to the code which implements
+them.
+
+- The other primary design goal is to integrate Linux kernel data
+structures and idioms as much as possible. The test framework (in
+directory test/) provides many of the functions which would otherwise
+come from the kernel. The test frame does use libc features, but the
+state machine code should be libc-free.
+
+- A lesser design goal is to completely describe the actions for each
+state transition in an sctp_command_t (see sctp_command.h). This
+means that the state functions (sctp_state_fn_t in sctp_sm.h) are NOT
+allowed to modify their endpoint, association, or chunk arguments.
+This is enforced by const modifiers--please respect the compiler
+warnings. All actions must be described in the last argument to the
+state function.
+
+- A byte order convention for dealing with the SCTP chunk headers:
+all SCTP chunks, regardless if the chunk is to be sent outbound
+to the network or was received inbound from the network, the header portion
+of the chunk is ALWAYS created and retained in the NETWORK BYTE ORDER.
+
+- An error code handling convention is to return negative values internally.
+The sk->err field holds a positive valued errno values, so will need our
+internal values negated.
+
+- We are moving toward an XP development model. So far we have
+adopted pair-programming, coding-to-test (functional and unit), design
+through refactoring, and story-based planning.
+
+In order to make XP work, it is very important that we have a complete
+set of tests for the code. We can not safely refactor major parts of
+the code without a way to find the things we break. If you decide to
+extend the SCTP Kernel Implementation we ask that you do the following:
+
+ 1) Pick an XP story. Tell lksctp-developers@lists.sourceforge.net
+ 2) Write a functional test for that XP story. The functional
+ test defines "DONE" for the story.
+ 3) Submit the functional test as a patch on SourceForge.
+ 4) Write unit tests for any new "objects" you define.
+ 5) Implement your feature.
+ 6) Submit the feature and the unit tests as a separate
+ SourceForge patch.
+
+Look in src/func_tests and in lksctp-tests package for examples of of tests.
+Please do not submit code that fails its own tests or any of the unit tests.
+If it fails a functional test, please document that with the submission.
+
+Another XP requirement is to code only what is you need to make the
+current test work. Where this means omitting required features, we
+have put in prominent BUG comments describing the omitted
+functionality.
+
+FEATURES
+--------
+This implementation uses a fairly compact cookie which is isolated in
+its own substructure of SCTP_association. We have been moving toward
+aggregating data elements which need to travel together to minimize
+copying of individual elements in favour of more efficient structure
+copies.
+
+You will find what we believe to be the smallest possible Internet
+simulator in the middle of the function test_kernel.c:simulate_internet().
+The simulator makes a few simplifying assumptions...
+
+MAILING LISTS and WEB SITES
+---------------------------
+http://www.sourceforge.net/projects/lksctp
+
+ This is the lksctp project webpage.
+
+linux-sctp@vger.kernel.org
+
+ This is the discussion list for developers. Join this list if
+ you are interested in following the day-to-day activities of
+ the SCTP Kernel Reference Implementation development community.
+ See subscription directions at:
+ http://vger.kernel.org/vger-lists.html#linux-sctp
+
+http://www.sctp.org
+
+ This is Randy Stewart's SCTP web site.
+
+http://sctp.de
+
+ This is Michael Tuexen's SCTP web site. Michael has collected
+ dozens of documents related to SCTP.