ndnpeek
=======

Synopsis
--------

**ndnpeek** [-h] [-P] [-f] [-l *lifetime*] [-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``.

``-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
