ndn-cxx version 0.2.0¶
Release date: August 25, 2014
Changes since version 0.1.0:
New features¶
Base
The license under which the library is released is changed to the GNU Lesser General Public License version 3.0
New ways to use incoming Interest dispatching:
New InterestFilter abstraction that supports filtering based on name prefixes and regular expressions.
Separate
Face::registerPrefix()andFace::setInterestFilter()methods allow distinct operations of registering with the local NDN forwarder and setting up application-specificOnInterestcall dispatch using InterestFilters.
Add support for the NDN naming conventions (revision 1) (issue #1761)
Security
Add
type dirtrust-anchor in ValidatorConfig to add all certificates under the specified directory as trust anchors. The new option also allow periodic reloading trust anchors, allowing dynamic trust models.Added support for multiple signature types to
PublicKey,SecPublicInfoabstractionsNew SignatureSha256WithEcdsa signature type
Updates in
Signaturedata structure to reflect changes in the NDN-TLV spec v0.1.1
Wire encoding
Data::getFullName() method to get the Data packet name including the implicit digest
Name::getSuccessor() method to get name successor (issue #1677)
New in-wire refreshing of Interest’s nonce (issue #1758)
Management
Support for ChannelStatus and StrategyChoice datasets
Defining new common Route Origins for NFD RIB management protocol (issue #1719)
New
RibEntryandRoutedata structures for RIB management protocol (issue #1764)Add support for RIB flags in
setInterestFilter()andregisterPrefix()(issue #1842)
Miscellaneous tools
Introduce Scheduler::cancelAllEvents() to cancel all previously scheduled events (issue #1757)
Introduce
util::EventEmitter, util::NotificationSubscriber, util::NotificationStream, and nfd::FaceMonitor utility classesIntroduce util::SegmentFetcher helper class to fetch multi-segmented data (issue #1879)
Build
Enabled support of precompiled headers for clang and gcc compilers to speed up compilation
Updates and bug fixes¶
Base
Serialization of socket write operations (issue #1769)
Enforcing limit on Interest and Data packet size in Face::expressInterest() and Face::put() methods (issue #1774)
Cleaning up transport state on communication failure, so Face can try to reconnect in the future
Fix bug in
Face::removePendingInterest()(issue #1917)
Wire encoding
The Nonce field is now encoded as a 4-byte value, as defined by NDN-TLV spec
Optimized Data packet signing
KeyChain::sign() method now pre-allocates EncodingBuffer, requests unsigned portion of Data using
Data::wireEncode(EncodingBuffer, true), and then appends the resulting signature and prepends Data packet header. This way there is no extra memory allocation after Data packet is signed.Optimized implicit digest calculation in Interest::matchesData() method (issue #1769)
Management
Add link-layer byte counts in
FaceStatusdata structure (issue #1765)
Security
Allow user to explicitly specify the cert name prefix before ‘KEY’ component in
ndnsec-certgenSignatureSha256has been renamed to DigestSha256 to conform to NDN-TLV specificationAdd checking of Timestamp and Nonce fields in signed Interest within ValidatorConfig
Allow validator customization using hooks.
Sub-classes of Validator class can use the following hooks to fine-tune the validation process:
preCertificateValidationto process received certificate before validationonTimeoutto process interest timeoutafterCheckPolicyto process validation requests
Fix memory issues in
SecPublicInfoSqlite3
Miscellaneous tools
Redefine method for random number generation:
random::generateWord*andrandom::generateSecureWord*to generate cryptographically non-secure (fast) and secure (slow) random numbers.
Other minor fixes and corrections
Deprecated¶
SignatureSha256class, use DigestSha256 instead.All Face constructors that accept
shared_ptr<io_service>.Use versions that accept reference to
io_serviceobject.Face::ioServicemethod, use Face::getIoService() instead.Interest constructor that accepts name, individual selectors, and individual guiders as constructor parameters.
Use
Interest().setX(...).setY(...)or use the overload takingSelectorsname::Component::toEscapedStringmethod, use name::Component::toUri() instead.SecPublicInfo::addPublicKeymethod, useSecPublicInfo::addKeyinstead.Tlv::ConentTypeconstant (typo), useTlv::ContentTypeinstead.CommandInterestGeneratorandCommandInterestValidatorutility classes. ValidatorConfig should be used instead.
Removed¶
Support for ndnd-tlv (only NFD management protocol is supported now)
SecPublicInfoMemoryandSecTpmMemoryclasses that were no longer usedRemoving concept of periodic event from Scheduler.
In applications, periodic events should be just re-scheduled within the callback for single-shot events.