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
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 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
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 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
FaceStatus
data structure (issue #1765)
- Add link-layer byte counts in
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.
- 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 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.