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,SecPublicInfoabstractions - New SignatureSha256WithEcdsa signature type
- Updates in Signature data structure to reflect changes in NDN-TLV spec 0.1.1
- Add
- Wire encoding
Data::getFullName()method to get the Data packet name including the implicit digestName::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 classes - Introduce 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 #1707)
- 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)
- Add link-layer byte counts in
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.
- Redefine method for random number generation:
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.