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
- Add
- 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
andNonce
fields in signed Interest within ValidatorConfigAllow validator customization using hooks:
Sub-classes of Validator class can use the following hooks to fine-tune the validation process:
preCertificateValidation
to process received certificate before validation.onTimeout
to process interest timeoutafterCheckPolicy
to 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:¶
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 takingSelectors
name::Component::toEscapedString
method, use name::Component::toUri() instead.SecPublicInfo::addPublicKey
method, useSecPublicInfo::addKey
instead.Tlv::ConentType
constant (typo), useTlv::ContentType
instead.CommandInterestGenerator
andCommandInterestValidator
utility classes. ValidatorConfig should be used instead.
Removed:¶
support of ndnd-tlv (only NFD management protocol is supported now)
SecPublicInfoMemory
andSecTpmMemory
classes 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.