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 Lesser GNU 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.
- Separated Face::registerPrefix() and Face::setInterestFilter() methods allow distinct operations of registering with the local NDN forwarder and setting up application-specific OnInterest call dispatch using InterestFilters.
- Add support for new NDN naming conventions (Issue #1761)
- Security
- Add type dir trust-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, SecPublicInfo abstractions
- New SignatureSha256WithEcdsa signature type
- Updates in Signature data structure to reflect changes in NDN-TLV spec 0.1.1
- Wire encoding
- Data::getFullName() method to get Data packet name with implicit digest
- New Name::getSuccessor() method to get name successor (Issue #1677)
- New in-wire refreshing of Interest’s nonce (Issue #1758)
- Management
- Support for ChannelStatus, StrategyChoice datasets
- Defining new common Route Origins for NFD RIB management protocol (Issue #1719)
- New RibEntry and Route data structures for RIB management protocol (Issue #1764)
- Add support for RIB flags for setInterestFilter and registerPrefix (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 with Face::removePendingInterest (Issue #1917)
Wire encoding
Nonce field is now encoded as 4-byte uint8_t 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 FaceStatus data structure (Issue #1765)
Security
Allow user to explicitly specify the cert name prefix before ‘KEY’ component in ndnsec-certgen
SignatureSha256 has been renamed to DigestSha256 to conform with NDN-TLV specification.
Add 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:
- Validator::preCertificateValidation() to process received certificate before validation.
- Validator::onTimeout to process interest timeout
- Validator::afterCheckPolicy() to process validation requests.
Fix memory issues in SecPublicInfoSqlite3
Miscellaneous tools
- Redefine method for random number generation: random::generateWord* and random::generateSecureWord* to generate cryptographically non-secure (fast) and secure (slow) random numbers.
Other minor fixes and corrections
Deprecated:¶
SignatureSha256 class, use DigestSha256 instead.
All Face constructors that accept shared_ptr<io_service>.
Use versions that accept reference to io_service object.
Face::ioService method, 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 taking Selectors
name::Component::toEscapedString method, use name::Component::toUri() instead.
SecPublicInfo::addPublicKey method, use SecPublicInfo::addKey() instead.
Tlv::ConentType constant (typo), use Tlv::ContentType instead.
CommandInterestGenerator and CommandInterestValidator utility classes. ValidatorConfig should be used instead.
Removed:¶
support of ndnd-tlv (only NFD management protocol is supported now)
SecPublicInfoMemory and SecTpmMemory classes that were no longer used
Removing concept of periodic event from Scheduler.
In applications, periodic events should be just re-scheduled within the callback for single-shot events.