Moved docs/specs/* to docs/spec/*

This commit is contained in:
str4d
2012-12-11 05:43:44 +00:00
parent 3fab0ce4cf
commit eaf047963b
14 changed files with 84 additions and 84 deletions

View File

@@ -62,16 +62,16 @@
</li> </li>
<li class="has-sub"><a href="#"><span>{{ _('Specifications') }}</span></a> <li class="has-sub"><a href="#"><span>{{ _('Specifications') }}</span></a>
<ul> <ul>
<li><a href="{{ site_url('docs/specs/blockfile') }}"><span>{{ _('Blockfile') }}</span></a></li> <li><a href="{{ site_url('docs/spec/blockfile') }}"><span>{{ _('Blockfile') }}</span></a></li>
<li><a href="{{ site_url('docs/specs/common_structures') }}"><span>{{ _('Common structures') }}</span></a></li> <li><a href="{{ site_url('docs/spec/common_structures') }}"><span>{{ _('Common structures') }}</span></a></li>
<li><a href="{{ site_url('docs/specs/configuration') }}"><span>{{ _('Configuration files') }}</span></a></li> <li><a href="{{ site_url('docs/spec/configuration') }}"><span>{{ _('Configuration files') }}</span></a></li>
<li><a href="{{ site_url('docs/specs/datagrams') }}"><span>{{ _('Datagrams') }}</span></a></li> <li><a href="{{ site_url('docs/spec/datagrams') }}"><span>{{ _('Datagrams') }}</span></a></li>
<li><a href="{{ site_url('docs/specs/i2cp') }}"><span>I2CP</span></a></li> <li><a href="{{ site_url('docs/spec/i2cp') }}"><span>I2CP</span></a></li>
<li><a href="{{ site_url('docs/specs/i2np') }}"><span>I2NP</span></a></li> <li><a href="{{ site_url('docs/spec/i2np') }}"><span>I2NP</span></a></li>
<li><a href="{{ site_url('docs/specs/plugin') }}"><span>{{ _('Plugins') }}</span></a></li> <li><a href="{{ site_url('docs/spec/plugin') }}"><span>{{ _('Plugins') }}</span></a></li>
<li><a href="{{ site_url('docs/specs/ssu') }}"><span>SSU</span></a></li> <li><a href="{{ site_url('docs/spec/ssu') }}"><span>SSU</span></a></li>
<li><a href="{{ site_url('docs/specs/tunnel_message') }}"><span>{{ _('Tunnel messages') }}</span></a></li> <li><a href="{{ site_url('docs/spec/tunnel_message') }}"><span>{{ _('Tunnel messages') }}</span></a></li>
<li><a href="{{ site_url('docs/specs/updates') }}"><span>{{ _('Software updates') }}</span></a></li> <li><a href="{{ site_url('docs/spec/updates') }}"><span>{{ _('Software updates') }}</span></a></li>
</ul> </ul>
</li> </li>
<li><a href="{{ site_url('docs/naming') }}"><span>{{ _('Naming and addressbook') }}</span></a></li> <li><a href="{{ site_url('docs/naming') }}"><span>{{ _('Naming and addressbook') }}</span></a></li>

View File

@@ -66,7 +66,7 @@ builds).</p>
<h3>Development</h3> <h3>Development</h3>
<p> See the latest <a href="{{ site_url('docs/specs/plugin') }}">plugin specification</a> and the <a <p> See the latest <a href="{{ site_url('docs/spec/plugin') }}">plugin specification</a> and the <a
href="http://{{ i2pconv('zzz.i2p') }}/forums/16">plugin forum</a> on zzz.i2p. </p> <p> See href="http://{{ i2pconv('zzz.i2p') }}/forums/16">plugin forum</a> on zzz.i2p. </p> <p> See
also the sources for plugins developed by various people. Some plugins, such also the sources for plugins developed by various people. Some plugins, such
as <a href="http://{{ i2pconv('plugins.i2p') }}/plugins/snowman">snowman</a>, were developed as <a href="http://{{ i2pconv('plugins.i2p') }}/plugins/snowman">snowman</a>, were developed

View File

@@ -63,7 +63,7 @@ However, each of these layers adds additional functionality, to allow applicatio
<br /> <br />
<a href="{{ site_url('docs/api/streaming') }}">Streaming Library</a>: an implementation of TCP-like streams over I2P. This allows easier porting of existing applications to I2P. <a href="{{ site_url('docs/api/streaming') }}">Streaming Library</a>: an implementation of TCP-like streams over I2P. This allows easier porting of existing applications to I2P.
<br /> <br />
<a href="{{ site_url('docs/specs/datagrams') }}">Datagram Library</a>: an implementation of UDP-like messages over I2P. This allows easier porting of existing applications to I2P. <a href="{{ site_url('docs/spec/datagrams') }}">Datagram Library</a>: an implementation of UDP-like messages over I2P. This allows easier porting of existing applications to I2P.
</li> </li>
<li> <li>
<b>I2P Application Interface Layer:</b> additional (optional) libraries allowing easier implementations on top of I2P. <b>I2P Application Interface Layer:</b> additional (optional) libraries allowing easier implementations on top of I2P.

View File

@@ -166,7 +166,7 @@ The maximum number of entries per span is 16.
"%%__INFO__%%" is the master database skiplist with String/Properties key/value entries containing only one entry: "%%__INFO__%%" is the master database skiplist with String/Properties key/value entries containing only one entry:
</p> </p>
<pre> <pre>
"info": a Properties (UTF-8 String/String Map), serialized as a <a href="{{ site_url('docs/specs/common_structures') }}#type_Mapping">Mapping</a>: "info": a Properties (UTF-8 String/String Map), serialized as a <a href="{{ site_url('docs/spec/common_structures') }}#type_Mapping">Mapping</a>:
"version": "2" "version": "2"
"created": Java long time (ms) "created": Java long time (ms)
"upgraded": Java long time (ms) (as of database version 2) "upgraded": Java long time (ms) (as of database version 2)
@@ -181,7 +181,7 @@ The maximum number of entries per span is 16.
</p> </p>
<pre> <pre>
The skiplist keys are 4-byte Integers, the first 4 bytes of the hash of the Destination. The skiplist keys are 4-byte Integers, the first 4 bytes of the hash of the Destination.
The skiplist values are each a Properties (a UTF-8 String/String Map) serialized as a <a href="{{ site_url('docs/specs/common_structures') }}#type_Mapping">Mapping</a> The skiplist values are each a Properties (a UTF-8 String/String Map) serialized as a <a href="{{ site_url('docs/spec/common_structures') }}#type_Mapping">Mapping</a>
There may be multiple entries in the properties, each one is a reverse mapping, There may be multiple entries in the properties, each one is a reverse mapping,
as there may be more than one hostname for a given destination, as there may be more than one hostname for a given destination,
or there could be collisions with the same first 4 bytes of the hash. or there could be collisions with the same first 4 bytes of the hash.
@@ -197,8 +197,8 @@ The keys/values in these skiplists are as follows:
</p> </p>
<pre> <pre>
key: a UTF-8 String (the hostname) key: a UTF-8 String (the hostname)
value: a DestEntry, which is a Properties (a UTF-8 String/String Map) serialized as a <a href="{{ site_url('docs/specs/common_structures') }}#type_Mapping">Mapping</a> value: a DestEntry, which is a Properties (a UTF-8 String/String Map) serialized as a <a href="{{ site_url('docs/spec/common_structures') }}#type_Mapping">Mapping</a>
followed by a binary Destination (serialized <a href="{{ site_url('docs/specs/common_structures') }}#struct_Destination">as usual</a>). followed by a binary Destination (serialized <a href="{{ site_url('docs/spec/common_structures') }}#struct_Destination">as usual</a>).
</pre> </pre>
<p> <p>

View File

@@ -204,9 +204,9 @@ payload :: data
<li> <li>
For <a href="#struct_RouterIdentity">Router Identities</a>, the Certificate is always NULL, no others are currently implemented. For <a href="#struct_RouterIdentity">Router Identities</a>, the Certificate is always NULL, no others are currently implemented.
</li><li> </li><li>
For <a href="{{ site_url('docs/specs/i2np') }}#struct_GarlicClove">Garlic Cloves</a>, the Certificate is always NULL, no others are currently implemented. For <a href="{{ site_url('docs/spec/i2np') }}#struct_GarlicClove">Garlic Cloves</a>, the Certificate is always NULL, no others are currently implemented.
</li><li> </li><li>
For <a href="{{ site_url('docs/specs/i2np') }}#msg_Garlic">Garlic Messages</a>, the Certificate is always NULL, no others are currently implemented. For <a href="{{ site_url('docs/spec/i2np') }}#msg_Garlic">Garlic Messages</a>, the Certificate is always NULL, no others are currently implemented.
</li><li> </li><li>
For <a href="#struct_Destination">Destinations</a>, the Certificate may be non-NULL, For <a href="#struct_Destination">Destinations</a>, the Certificate may be non-NULL,
however non-NULL certs are not widely used, and any checking is left to the application-level. however non-NULL certs are not widely used, and any checking is left to the application-level.
@@ -680,6 +680,6 @@ The signature may be verified using the signing public key of the router_ident.
<h2 id="struct_DeliveryInstructions">Delivery Instructions</h2> <h2 id="struct_DeliveryInstructions">Delivery Instructions</h2>
Defined in the <a href="{{ site_url('docs/specs/tunnel_message') }}#delivery">Tunnel Message Specification</a>. Defined in the <a href="{{ site_url('docs/spec/tunnel_message') }}#delivery">Tunnel Message Specification</a>.
{% endblock %} {% endblock %}

View File

@@ -40,7 +40,7 @@ Reads and writes are implemented in
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/data/DataHelper.html">DataHelper loadProps() and storeProps()</a>. <a href="http://docs.i2p-projekt.de/javadoc/net/i2p/data/DataHelper.html">DataHelper loadProps() and storeProps()</a>.
Note that the file format is significantly different than the Note that the file format is significantly different than the
serialized format for I2P protocols specified in serialized format for I2P protocols specified in
<a href="{{ site_url('docs/specs/common_structures') }}#type_Mapping">Mapping</a>. <a href="{{ site_url('docs/spec/common_structures') }}#type_Mapping">Mapping</a>.
</p> </p>
<h2>Core library and router</h2> <h2>Core library and router</h2>
@@ -57,7 +57,7 @@ Configured via /configlogging in the router console.
<h3>Individual Plugin (xxx/plugin.config)</h3> <h3>Individual Plugin (xxx/plugin.config)</h3>
<p> <p>
See <a href="{{ site_url('docs/specs/plugin') }}">the plugin specification</a>. See <a href="{{ site_url('docs/spec/plugin') }}">the plugin specification</a>.
</p> </p>
<h3>Plugins (plugins.config)</h3> <h3>Plugins (plugins.config)</h3>

View File

@@ -82,7 +82,7 @@ Each datagram is sent through I2P as a single message (or as an individual clove
Message encapsulation is implemented in the underlying Message encapsulation is implemented in the underlying
<a href="i2cp.html">I2CP</a>, <a href="i2cp.html">I2CP</a>,
<a href="i2np.html">I2NP</a>, and <a href="i2np.html">I2NP</a>, and
<a href="{{ site_url('docs/specs/tunnel_message') }}">tunnel message</a> layers. <a href="{{ site_url('docs/spec/tunnel_message') }}">tunnel message</a> layers.
There is no packet delimiter mechanism or length field in the datagram protocol. There is no packet delimiter mechanism or length field in the datagram protocol.
@@ -107,7 +107,7 @@ Length: 0 - unlimited (see notes)
<h4>Notes</h4> <h4>Notes</h4>
The practical length is limited by lower layers of protocols - the The practical length is limited by lower layers of protocols - the
<a href="{{ site_url('docs/specs/tunnel_message') }}#notes">tunnel message spec</a> <a href="{{ site_url('docs/spec/tunnel_message') }}#notes">tunnel message spec</a>
limits messages to about 61.2 KB and the limits messages to about 61.2 KB and the
<a href="{{ site_url('docs/transport') }}">transports</a> <a href="{{ site_url('docs/transport') }}">transports</a>
currently limit messages to about 32 KB, although this may be raised in the future. currently limit messages to about 32 KB, although this may be raised in the future.
@@ -143,11 +143,11 @@ Repliable datagrams contain a 'from' address and a signature. These add 427 byte
from :: a <a href="{{ site_url('docs/specs/common_structures') }}#type_Destination">Destination</a> from :: a <a href="{{ site_url('docs/spec/common_structures') }}#type_Destination">Destination</a>
length: 387+ bytes length: 387+ bytes
The originator and signer of the datagram The originator and signer of the datagram
signature :: a <a href="{{ site_url('docs/specs/common_structures') }}#type_Signature">Signature</a> signature :: a <a href="{{ site_url('docs/spec/common_structures') }}#type_Signature">Signature</a>
length: 40 bytes length: 40 bytes
The <a href="{{ site_url('docs/how/cryptography') }}#DSA">DSA</a> signature of the SHA256 hash of the payload, which may be verified by the The <a href="{{ site_url('docs/how/cryptography') }}#DSA">DSA</a> signature of the SHA256 hash of the payload, which may be verified by the
DSA signing public key of the 'from' Destination DSA signing public key of the 'from' Destination

View File

@@ -158,9 +158,9 @@ as they generally disconnect the session upon reception of an unsupported messag
</p> </p>
<h4>Contents</h4> <h4>Contents</h4>
<ol><li> <ol><li>
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> specifying the length of the message body 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> specifying the length of the message body
</li><li> </li><li>
1 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> specifying the message type. 1 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> specifying the message type.
</li><li> </li><li>
The I2CP message body, 0 or more bytes The I2CP message body, 0 or more bytes
</li></ol> </li></ol>
@@ -181,7 +181,7 @@ point in time.
</p> </p>
<h4>Contents</h4> <h4>Contents</h4>
<ol><li> <ol><li>
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
</li></ol> </li></ol>
<h4>Notes</h4> <h4>Notes</h4>
@@ -200,7 +200,7 @@ Destination to another.
</p> </p>
<h4>Contents</h4> <h4>Contents</h4>
<ol><li> <ol><li>
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> length 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> length
</li><li> </li><li>
That many bytes That many bytes
</li></ol> </li></ol>
@@ -221,14 +221,14 @@ Defines the configuration options for a particular client session.
</p> </p>
<h4>Contents</h4> <h4>Contents</h4>
<ol><li> <ol><li>
<a href="{{ site_url('docs/specs/common_structures') }}#struct_Destination">Destination</a> <a href="{{ site_url('docs/spec/common_structures') }}#struct_Destination">Destination</a>
</li><li> </li><li>
<a href="{{ site_url('docs/specs/common_structures') }}#type_Mapping">Mapping</a> of options <a href="{{ site_url('docs/spec/common_structures') }}#type_Mapping">Mapping</a> of options
</li><li> </li><li>
Creation <a href="{{ site_url('docs/specs/common_structures') }}#type_Date">Date</a> Creation <a href="{{ site_url('docs/spec/common_structures') }}#type_Date">Date</a>
</li><li> </li><li>
DSA <a href="{{ site_url('docs/specs/common_structures') }}#type_Signature">Signature</a> of the previous 3 fields, signed by the DSA <a href="{{ site_url('docs/spec/common_structures') }}#type_Signature">Signature</a> of the previous 3 fields, signed by the
<a href="{{ site_url('docs/specs/common_structures') }}#type_SigningPrivateKey">Signing Private Key</a> <a href="{{ site_url('docs/spec/common_structures') }}#type_SigningPrivateKey">Signing Private Key</a>
</li></ol> </li></ol>
<h4>Notes</h4> <h4>Notes</h4>
@@ -249,7 +249,7 @@ time.
</p> </p>
<h4>Contents</h4> <h4>Contents</h4>
<ol><li> <ol><li>
2 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> 2 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
</li></ol> </li></ol>
<h4>Notes</h4> <h4>Notes</h4>
@@ -396,28 +396,28 @@ Sent from Router to Client in response to a Get Bandwidth Limits Message.
</p> </p>
<h4>Contents</h4> <h4>Contents</h4>
<ol><li> <ol><li>
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
Client inbound limit (KBps) Client inbound limit (KBps)
</li><li> </li><li>
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
Client outbound limit (KBps) Client outbound limit (KBps)
</li><li> </li><li>
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
Router inbound limit (KBps) Router inbound limit (KBps)
</li><li> </li><li>
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
Router inbound burst limit (KBps) Router inbound burst limit (KBps)
</li><li> </li><li>
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
Router outbound limit (KBps) Router outbound limit (KBps)
</li><li> </li><li>
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
Router outbound burst limit (KBps) Router outbound burst limit (KBps)
</li><li> </li><li>
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
Router burst time (seconds) Router burst time (seconds)
</li><li> </li><li>
Nine 4-byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integers</a> Nine 4-byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integers</a>
undefined undefined
</li></ol> </li></ol>
@@ -441,11 +441,11 @@ Sent from Client to Router.
<ol><li> <ol><li>
<a href="#struct_SessionId">Session ID</a> <a href="#struct_SessionId">Session ID</a>
</li><li> </li><li>
<a href="{{ site_url('docs/specs/common_structures') }}#type_SigningPrivateKey">Signing Private Key</a> <a href="{{ site_url('docs/spec/common_structures') }}#type_SigningPrivateKey">Signing Private Key</a>
</li><li> </li><li>
<a href="{{ site_url('docs/specs/common_structures') }}#type_PrivateKey">Private Key</a> <a href="{{ site_url('docs/spec/common_structures') }}#type_PrivateKey">Private Key</a>
</li><li> </li><li>
<a href="{{ site_url('docs/specs/common_structures') }}#struct_LeaseSet">LeaseSet</a> <a href="{{ site_url('docs/spec/common_structures') }}#struct_LeaseSet">LeaseSet</a>
</li></ol> </li></ol>
<h4>Notes</h4> <h4>Notes</h4>
@@ -497,7 +497,7 @@ The router responds with a <a href="#msg_DestReply">Dest Reply Message</a>.
</p> </p>
<h4>Contents</h4> <h4>Contents</h4>
<ol><li> <ol><li>
<a href="{{ site_url('docs/specs/common_structures') }}#struct_Hash">SHA-256 Hash</a> <a href="{{ site_url('docs/spec/common_structures') }}#struct_Hash">SHA-256 Hash</a>
</li></ol> </li></ol>
<h4>Notes</h4> <h4>Notes</h4>
@@ -516,9 +516,9 @@ Sent from Router to Client in response to a Dest Lookup Message.
</p> </p>
<h4>Contents</h4> <h4>Contents</h4>
<ol><li> <ol><li>
<a href="{{ site_url('docs/specs/common_structures') }}#struct_Destination">Destination</a> <a href="{{ site_url('docs/spec/common_structures') }}#struct_Destination">Destination</a>
on success, or on success, or
<a href="{{ site_url('docs/specs/common_structures') }}#struct_Hash">Hash</a> <a href="{{ site_url('docs/spec/common_structures') }}#struct_Hash">Hash</a>
on failure on failure
</li></ol> </li></ol>
@@ -561,7 +561,7 @@ Sent either from router to client or from client to router.
</p> </p>
<h4>Contents</h4> <h4>Contents</h4>
<ol><li> <ol><li>
Reason <a href="{{ site_url('docs/specs/common_structures') }}#struct_String">String</a> Reason <a href="{{ site_url('docs/spec/common_structures') }}#struct_String">String</a>
</li></ol> </li></ol>
<h4>Notes</h4> <h4>Notes</h4>
@@ -599,7 +599,7 @@ The router responds with a <a href="#msg_SetDate">Set Date Message</a>.
</p> </p>
<h4>Contents</h4> <h4>Contents</h4>
<ol><li> <ol><li>
I2CP Version <a href="{{ site_url('docs/specs/common_structures') }}#struct_String">String</a> I2CP Version <a href="{{ site_url('docs/spec/common_structures') }}#struct_String">String</a>
</li></ol> </li></ol>
<h4>Notes</h4> <h4>Notes</h4>
@@ -651,11 +651,11 @@ For an outgoing message, this is a response to a
</li><li> </li><li>
<a href="#struct_MessageId">Message ID</a> <a href="#struct_MessageId">Message ID</a>
</li><li> </li><li>
1 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> status 1 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> status
</li><li> </li><li>
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> size 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> size
</li><li> </li><li>
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> nonce 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> nonce
</li></ol> </li></ol>
<h4>Notes</h4> <h4>Notes</h4>
@@ -760,10 +760,10 @@ Sent either from router to client or from client to router.
<ol><li> <ol><li>
<a href="#struct_SessionId">Session ID</a> <a href="#struct_SessionId">Session ID</a>
</li><li> </li><li>
1 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> abuse severity 1 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> abuse severity
(0 is minimally abusive, 255 being extremely abusive) (0 is minimally abusive, 255 being extremely abusive)
</li><li> </li><li>
Reason <a href="{{ site_url('docs/specs/common_structures') }}#struct_String">String</a> Reason <a href="{{ site_url('docs/spec/common_structures') }}#struct_String">String</a>
</li><li> </li><li>
<a href="#struct_MessageId">Message ID</a> <a href="#struct_MessageId">Message ID</a>
</li></ol> </li></ol>
@@ -789,16 +789,16 @@ The client responds with a <a href="#msg_SessionStatus">Create LeaseSet Message<
<ol><li> <ol><li>
<a href="#struct_SessionId">Session ID</a> <a href="#struct_SessionId">Session ID</a>
</li><li> </li><li>
1 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> number of tunnels 1 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> number of tunnels
</li><li> </li><li>
That many pairs of: That many pairs of:
<ol><li> <ol><li>
<a href="{{ site_url('docs/specs/common_structures') }}#struct_RouterIdentity">Router Identity</a> <a href="{{ site_url('docs/spec/common_structures') }}#struct_RouterIdentity">Router Identity</a>
</li><li> </li><li>
<a href="{{ site_url('docs/specs/common_structures') }}#type_TunnelId">Tunnel ID</a> <a href="{{ site_url('docs/spec/common_structures') }}#type_TunnelId">Tunnel ID</a>
</li></ol> </li></ol>
</li><li> </li><li>
End <a href="{{ site_url('docs/specs/common_structures') }}#type_Date">Date</a> End <a href="{{ site_url('docs/spec/common_structures') }}#type_Date">Date</a>
</li></ol> </li></ol>
<h4>Notes</h4> <h4>Notes</h4>
@@ -821,11 +821,11 @@ The router responds with a <a href="#msg_MessageStatus">Message Status Message</
<ol><li> <ol><li>
<a href="#struct_SessionId">Session ID</a> <a href="#struct_SessionId">Session ID</a>
</li><li> </li><li>
<a href="{{ site_url('docs/specs/common_structures') }}#struct_Destination">Destination</a> <a href="{{ site_url('docs/spec/common_structures') }}#struct_Destination">Destination</a>
</li><li> </li><li>
<a href="#struct_Payload">Payload</a> <a href="#struct_Payload">Payload</a>
</li><li> </li><li>
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> nonce 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> nonce
</li></ol> </li></ol>
<h4>Notes</h4> <h4>Notes</h4>
@@ -858,15 +858,15 @@ Sent from Client to Router. Same as Send Message Message, except includes an exp
<ol><li> <ol><li>
<a href="#struct_SessionId">Session ID</a> <a href="#struct_SessionId">Session ID</a>
</li><li> </li><li>
<a href="{{ site_url('docs/specs/common_structures') }}#struct_Destination">Destination</a> <a href="{{ site_url('docs/spec/common_structures') }}#struct_Destination">Destination</a>
</li><li> </li><li>
<a href="#struct_Payload">Payload</a> <a href="#struct_Payload">Payload</a>
</li><li> </li><li>
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> nonce 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> nonce
</li><li> </li><li>
2 bytes of flags (options) 2 bytes of flags (options)
</li><li> </li><li>
Expiration <a href="{{ site_url('docs/specs/common_structures') }}#type_Date">Date</a> Expiration <a href="{{ site_url('docs/spec/common_structures') }}#type_Date">Date</a>
truncated from 8 bytes to 6 bytes truncated from 8 bytes to 6 bytes
</li></ol> </li></ol>
@@ -961,7 +961,7 @@ Sent from Router to Client.
<ol><li> <ol><li>
<a href="#struct_SessionId">Session ID</a> <a href="#struct_SessionId">Session ID</a>
</li><li> </li><li>
1 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> status 1 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> status
</li></ol> </li></ol>
<h4>Notes</h4> <h4>Notes</h4>
@@ -981,9 +981,9 @@ Sent from Router to Client as a part of the initial handshake.
</p> </p>
<h4>Contents</h4> <h4>Contents</h4>
<ol><li> <ol><li>
<a href="{{ site_url('docs/specs/common_structures') }}#type_Date">Date</a> <a href="{{ site_url('docs/spec/common_structures') }}#type_Date">Date</a>
</li><li> </li><li>
I2CP Version <a href="{{ site_url('docs/specs/common_structures') }}#struct_String">String</a> I2CP Version <a href="{{ site_url('docs/spec/common_structures') }}#struct_String">String</a>
</li></ol> </li></ol>
<h4>Notes</h4> <h4>Notes</h4>

View File

@@ -24,11 +24,11 @@ They are not complete messages.
</p> </p>
<h4>Contents</h4> <h4>Contents</h4>
<p> <p>
1 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> specifying the type of this message, 1 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> specifying the type of this message,
followed by a 4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> specifying the message-id. followed by a 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> specifying the message-id.
After that there is an expiration <a href="{{ site_url('docs/specs/common_structures') }}#type_Date">Date</a>, After that there is an expiration <a href="{{ site_url('docs/spec/common_structures') }}#type_Date">Date</a>,
followed by a 2 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> specifying followed by a 2 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> specifying
the length of the message payload, followed by a <a href="{{ site_url('docs/specs/common_structures') }}#type_Hash">Hash</a>, the length of the message payload, followed by a <a href="{{ site_url('docs/spec/common_structures') }}#type_Hash">Hash</a>,
which is truncated to the first byte. After that the actual message data follows. which is truncated to the first byte. After that the actual message data follows.
</p> </p>
<pre> <pre>
@@ -116,7 +116,7 @@ where the far-end router's version is known and checksum generation can be disab
</p> </p>
<h4>Contents</h4> <h4>Contents</h4>
<p> <p>
<a href="{{ site_url('docs/specs/common_structures') }}#type_TunnelId">TunnelId</a> to receive messages on, followed by the <a href="{{ site_url('docs/specs/common_structures') }}#type_Hash">Hash</a> of our <a href="{{ site_url('docs/specs/common_structures') }}#struct_RouterIdentity">RouterIdentity</a>. After that the <a href="{{ site_url('docs/specs/common_structures') }}#type_TunnelId">TunnelId</a> and the <a href="{{ site_url('docs/specs/common_structures') }}#type_Hash">Hash</a> of the next router's <a href="{{ site_url('docs/specs/common_structures') }}#struct_RouterIdentity">RouterIdentity</a> follow. <a href="{{ site_url('docs/spec/common_structures') }}#type_TunnelId">TunnelId</a> to receive messages on, followed by the <a href="{{ site_url('docs/spec/common_structures') }}#type_Hash">Hash</a> of our <a href="{{ site_url('docs/spec/common_structures') }}#struct_RouterIdentity">RouterIdentity</a>. After that the <a href="{{ site_url('docs/spec/common_structures') }}#type_TunnelId">TunnelId</a> and the <a href="{{ site_url('docs/spec/common_structures') }}#type_Hash">Hash</a> of the next router's <a href="{{ site_url('docs/spec/common_structures') }}#struct_RouterIdentity">RouterIdentity</a> follow.
</p> </p>
<h4>Definition</h4> <h4>Definition</h4>
<pre> <pre>
@@ -341,7 +341,7 @@ unencrypted:
<h4>Definition</h4> <h4>Definition</h4>
<pre> <pre>
unencrypted: unencrypted:
Delivery Instructions :: <a href="{{ site_url('docs/specs/tunnel_message') }}#delivery">as defined here</a> Delivery Instructions :: <a href="{{ site_url('docs/spec/tunnel_message') }}#delivery">as defined here</a>
Length varies but is typically 39, 43, or 47 bytes Length varies but is typically 39, 43, or 47 bytes
I2NP Message :: Any I2NP Message I2NP Message :: Any I2NP Message
@@ -365,7 +365,7 @@ Certificate :: Always NULL in the current implementation (3 bytes total, all zer
<li> <li>
See also the <a href="{{ site_url('docs/how/garlicrouting') }}">garlic routing specification</a>. See also the <a href="{{ site_url('docs/how/garlicrouting') }}">garlic routing specification</a>.
<li> <li>
See also <a href="{{ site_url('docs/specs/tunnel_message') }}#delivery">Delivery Instructions definition</a> See also <a href="{{ site_url('docs/spec/tunnel_message') }}#delivery">Delivery Instructions definition</a>
<li> <li>
Maximum length is a function of the total length of all the cloves and the Maximum length is a function of the total length of all the cloves and the
maximum length of the GarlicMessage. maximum length of the GarlicMessage.
@@ -509,7 +509,7 @@ reply token:
reply tunnelId: reply tunnelId:
4 byte Tunnel ID 4 byte Tunnel ID
only included if reply token &gt; 0 only included if reply token &gt; 0
This is the <a href="{{ site_url('docs/specs/common_structures') }}#type_TunnelID">tunnel ID</a> of the inbound gateway of the tunnel the response should be sent to This is the <a href="{{ site_url('docs/spec/common_structures') }}#type_TunnelID">tunnel ID</a> of the inbound gateway of the tunnel the response should be sent to
reply gateway: reply gateway:
32 bytes 32 bytes
@@ -852,7 +852,7 @@ data:
<h4>Notes</h4> <h4>Notes</h4>
<ul> <ul>
<li> <li>
See also the <a href="{{ site_url('docs/specs/tunnel_message') }}">Tunnel Message Specification</a> See also the <a href="{{ site_url('docs/spec/tunnel_message') }}">Tunnel Message Specification</a>
</ul> </ul>

View File

@@ -166,11 +166,11 @@ set, this is a follow on fragment.</p>
<p> <p>
Note that Delivery Instructions are also used inside Note that Delivery Instructions are also used inside
<a href="{{ site_url('docs/specs/i2np') }}#struct_GarlicClove">Garlic Cloves</a>, <a href="{{ site_url('docs/spec/i2np') }}#struct_GarlicClove">Garlic Cloves</a>,
where the format is slightly different. In a Garlic Clove, where the format is slightly different. In a Garlic Clove,
messages are not fragmented, and the fragment bit in the flag byte is messages are not fragmented, and the fragment bit in the flag byte is
redefined. See the redefined. See the
<a href="{{ site_url('docs/specs/i2np') }}#struct_GarlicClove">Garlic Clove documentation</a> <a href="{{ site_url('docs/spec/i2np') }}#struct_GarlicClove">Garlic Clove documentation</a>
for more details. for more details.
@@ -238,7 +238,7 @@ Message ID:
4 bytes 4 bytes
Optional, present if this message is the first of 2 or more fragments Optional, present if this message is the first of 2 or more fragments
An ID that uniquely identifies all fragments as belonging to a single message An ID that uniquely identifies all fragments as belonging to a single message
(the current implementation uses the <a href="{{ site_url('docs/specs/i2np') }}#struct_header">I2NP Message ID</a>) (the current implementation uses the <a href="{{ site_url('docs/spec/i2np') }}#struct_header">I2NP Message ID</a>)
Extended Options: Extended Options:
2 or more bytes 2 or more bytes

View File

@@ -44,13 +44,13 @@ is simply a zip file with a prepended 56 byte header.
The header contains: The header contains:
<ul> <ul>
<li> <li>
A 40-byte <a href="{{ site_url('docs/specs/common_structures') }}#type_signature">DSA signature</a> A 40-byte <a href="{{ site_url('docs/spec/common_structures') }}#type_signature">DSA signature</a>
</li><li> </li><li>
A 16-byte I2P version in UTF-8, padded with trailing zeroes if necessary A 16-byte I2P version in UTF-8, padded with trailing zeroes if necessary
</li></ul> </li></ul>
</p><p> </p><p>
The signature covers only the zip archive - not the prepended version. The signature covers only the zip archive - not the prepended version.
The signature must match one of the <a href="{{ site_url('docs/specs/common_structures') }}#type_SigningPublicKey">DSA public keys</a> configured into the router, The signature must match one of the <a href="{{ site_url('docs/spec/common_structures') }}#type_SigningPublicKey">DSA public keys</a> configured into the router,
which has a hardcoded default list of keys of the current project release managers. which has a hardcoded default list of keys of the current project release managers.
</p><p> </p><p>
For version comparison purposes, version fields contain [0-9]*, field separators are For version comparison purposes, version fields contain [0-9]*, field separators are

View File

@@ -444,7 +444,7 @@ should accurately reflect the current implementation, however there may be small
<img src="{{ url_for('static', filename='images/udp.png') }}"> <img src="{{ url_for('static', filename='images/udp.png') }}">
<h1><a name="spec">Specification</a></h1> <h1><a name="spec">Specification</a></h1>
<a href="{{ site_url('docs/specs/ssu') }}">Now on the SSU specification page</a>. <a href="{{ site_url('docs/spec/ssu') }}">Now on the SSU specification page</a>.
{% endblock %} {% endblock %}