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-specificOnInterest
call dispatch using InterestFilters.
Add support for the NDN naming conventions (revision 1) (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
abstractionsNew SignatureSha256WithEcdsa signature type
Updates in
Signature
data 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
RibEntry
andRoute
data 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
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 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:
preCertificateValidation
to process received certificate before validationonTimeout
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.
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 for 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.