ndnpeek
=======

Synopsis
--------

**ndnpeek** [-h] [-P] [-f] [-l *lifetime*] [-H *hops*] [-A *parameters*]
[-p] [-w *timeout*] [-v] [-V] *name*

Description
-----------

:program:`ndnpeek` is a simple consumer program that sends one Interest and
expects one Data packet in response. By default, the full Data packet (in TLV
format) is written to the standard output.

*name* is interpreted as the Interest name.

Options
-------

``-h, --help``
  Print help and exit.

``-P, --prefix``
  If specified, include ``CanBePrefix`` element in the Interest packet.

``-f, --fresh``
  If specified, include ``MustBeFresh`` element in the Interest packet.

``--link-file <file>``
  Read Link object from ``file`` and add it as ``ForwardingHint`` to the Interest packet.

``-l, --lifetime <lifetime>``
  Set ``lifetime`` (in milliseconds) as the ``InterestLifetime``.

``-H, --hop-limit <hops>``
  Set the Interest's ``HopLimit`` to the specified number of hops.

``-A, --app-params <parameters>``
  Set the Interest's ``ApplicationParameters`` from a base64-encoded string.

``--app-params-file <file>``
  Set the Interest's ``ApplicationParameters`` from the specified file.

``-p, --payload``
  If specified, print the received payload only, not the full packet.

``-w, --timeout <timeout>``
  Quit the program after ``timeout`` milliseconds, even if no reply has been received.

``-v, --verbose``
  Turn on verbose output.

``-V, --version``
  Print version and exit.

Exit Status
-----------

0: Success

1: An unspecified error occurred

2: Malformed command line

3: Operation timed out

4: Nack received

Example
-------

Send an Interest for ``/app1/video`` and print the received payload only::

    ndnpeek -p /app1/video

Send an Interest for ``/app2/foo``, requesting fresh content, with an InterestLifetime
of 8 seconds, and with the ApplicationParameters containing the ASCII string "hello";
print the performed operations verbosely but discard the received Data packet::

    ndnpeek -vf -l 8000 -A "aGVsbG8=" /app2/foo >/dev/null
