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 class="has-sub"><a href="#"><span>{{ _('Specifications') }}</span></a>
<ul>
<li><a href="{{ site_url('docs/specs/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/specs/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/specs/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/specs/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/specs/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/blockfile') }}"><span>{{ _('Blockfile') }}</span></a></li>
<li><a href="{{ site_url('docs/spec/common_structures') }}"><span>{{ _('Common structures') }}</span></a></li>
<li><a href="{{ site_url('docs/spec/configuration') }}"><span>{{ _('Configuration files') }}</span></a></li>
<li><a href="{{ site_url('docs/spec/datagrams') }}"><span>{{ _('Datagrams') }}</span></a></li>
<li><a href="{{ site_url('docs/spec/i2cp') }}"><span>I2CP</span></a></li>
<li><a href="{{ site_url('docs/spec/i2np') }}"><span>I2NP</span></a></li>
<li><a href="{{ site_url('docs/spec/plugin') }}"><span>{{ _('Plugins') }}</span></a></li>
<li><a href="{{ site_url('docs/spec/ssu') }}"><span>SSU</span></a></li>
<li><a href="{{ site_url('docs/spec/tunnel_message') }}"><span>{{ _('Tunnel messages') }}</span></a></li>
<li><a href="{{ site_url('docs/spec/updates') }}"><span>{{ _('Software updates') }}</span></a></li>
</ul>
</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>
<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
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

View File

@@ -63,7 +63,7 @@ However, each of these layers adds additional functionality, to allow applicatio
<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.
<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>
<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:
</p>
<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"
"created": Java long time (ms)
"upgraded": Java long time (ms) (as of database version 2)
@@ -181,7 +181,7 @@ The maximum number of entries per span is 16.
</p>
<pre>
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,
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.
@@ -197,8 +197,8 @@ The keys/values in these skiplists are as follows:
</p>
<pre>
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>
followed by a binary Destination (serialized <a href="{{ site_url('docs/specs/common_structures') }}#struct_Destination">as usual</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/spec/common_structures') }}#struct_Destination">as usual</a>).
</pre>
<p>

View File

@@ -204,9 +204,9 @@ payload :: data
<li>
For <a href="#struct_RouterIdentity">Router Identities</a>, the Certificate is always NULL, no others are currently implemented.
</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>
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>
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.
@@ -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>
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 %}

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>.
Note that the file format is significantly different than the
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>
<h2>Core library and router</h2>
@@ -57,7 +57,7 @@ Configured via /configlogging in the router console.
<h3>Individual Plugin (xxx/plugin.config)</h3>
<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>
<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
<a href="i2cp.html">I2CP</a>,
<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.
@@ -107,7 +107,7 @@ Length: 0 - unlimited (see notes)
<h4>Notes</h4>
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
<a href="{{ site_url('docs/transport') }}">transports</a>
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
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
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

View File

@@ -158,9 +158,9 @@ as they generally disconnect the session upon reception of an unsupported messag
</p>
<h4>Contents</h4>
<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>
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>
The I2CP message body, 0 or more bytes
</li></ol>
@@ -181,7 +181,7 @@ point in time.
</p>
<h4>Contents</h4>
<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>
<h4>Notes</h4>
@@ -200,7 +200,7 @@ Destination to another.
</p>
<h4>Contents</h4>
<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>
That many bytes
</li></ol>
@@ -221,14 +221,14 @@ Defines the configuration options for a particular client session.
</p>
<h4>Contents</h4>
<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>
<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>
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>
DSA <a href="{{ site_url('docs/specs/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>
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/spec/common_structures') }}#type_SigningPrivateKey">Signing Private Key</a>
</li></ol>
<h4>Notes</h4>
@@ -249,7 +249,7 @@ time.
</p>
<h4>Contents</h4>
<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>
<h4>Notes</h4>
@@ -396,28 +396,28 @@ Sent from Router to Client in response to a Get Bandwidth Limits Message.
</p>
<h4>Contents</h4>
<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)
</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)
</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)
</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)
</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)
</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)
</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)
</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
</li></ol>
@@ -441,11 +441,11 @@ Sent from Client to Router.
<ol><li>
<a href="#struct_SessionId">Session ID</a>
</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>
<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>
<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>
<h4>Notes</h4>
@@ -497,7 +497,7 @@ The router responds with a <a href="#msg_DestReply">Dest Reply Message</a>.
</p>
<h4>Contents</h4>
<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>
<h4>Notes</h4>
@@ -516,9 +516,9 @@ Sent from Router to Client in response to a Dest Lookup Message.
</p>
<h4>Contents</h4>
<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
<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
</li></ol>
@@ -561,7 +561,7 @@ Sent either from router to client or from client to router.
</p>
<h4>Contents</h4>
<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>
<h4>Notes</h4>
@@ -599,7 +599,7 @@ The router responds with a <a href="#msg_SetDate">Set Date Message</a>.
</p>
<h4>Contents</h4>
<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>
<h4>Notes</h4>
@@ -651,11 +651,11 @@ For an outgoing message, this is a response to a
</li><li>
<a href="#struct_MessageId">Message ID</a>
</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>
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>
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>
<h4>Notes</h4>
@@ -760,10 +760,10 @@ Sent either from router to client or from client to router.
<ol><li>
<a href="#struct_SessionId">Session ID</a>
</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)
</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>
<a href="#struct_MessageId">Message ID</a>
</li></ol>
@@ -789,16 +789,16 @@ The client responds with a <a href="#msg_SessionStatus">Create LeaseSet Message<
<ol><li>
<a href="#struct_SessionId">Session ID</a>
</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>
That many pairs of:
<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>
<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><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>
<h4>Notes</h4>
@@ -821,11 +821,11 @@ The router responds with a <a href="#msg_MessageStatus">Message Status Message</
<ol><li>
<a href="#struct_SessionId">Session ID</a>
</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>
<a href="#struct_Payload">Payload</a>
</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>
<h4>Notes</h4>
@@ -858,15 +858,15 @@ Sent from Client to Router. Same as Send Message Message, except includes an exp
<ol><li>
<a href="#struct_SessionId">Session ID</a>
</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>
<a href="#struct_Payload">Payload</a>
</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>
2 bytes of flags (options)
</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
</li></ol>
@@ -961,7 +961,7 @@ Sent from Router to Client.
<ol><li>
<a href="#struct_SessionId">Session ID</a>
</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>
<h4>Notes</h4>
@@ -981,9 +981,9 @@ Sent from Router to Client as a part of the initial handshake.
</p>
<h4>Contents</h4>
<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>
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>
<h4>Notes</h4>

View File

@@ -24,11 +24,11 @@ They are not complete messages.
</p>
<h4>Contents</h4>
<p>
1 byte <a href="{{ site_url('docs/specs/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.
After that there is an expiration <a href="{{ site_url('docs/specs/common_structures') }}#type_Date">Date</a>,
followed by a 2 byte <a href="{{ site_url('docs/specs/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>,
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/spec/common_structures') }}#type_Integer">Integer</a> specifying the message-id.
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/spec/common_structures') }}#type_Integer">Integer</a> specifying
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.
</p>
<pre>
@@ -116,7 +116,7 @@ where the far-end router's version is known and checksum generation can be disab
</p>
<h4>Contents</h4>
<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>
<h4>Definition</h4>
<pre>
@@ -341,7 +341,7 @@ unencrypted:
<h4>Definition</h4>
<pre>
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
I2NP Message :: Any I2NP Message
@@ -365,7 +365,7 @@ Certificate :: Always NULL in the current implementation (3 bytes total, all zer
<li>
See also the <a href="{{ site_url('docs/how/garlicrouting') }}">garlic routing specification</a>.
<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>
Maximum length is a function of the total length of all the cloves and the
maximum length of the GarlicMessage.
@@ -509,7 +509,7 @@ reply token:
reply tunnelId:
4 byte Tunnel ID
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:
32 bytes
@@ -852,7 +852,7 @@ data:
<h4>Notes</h4>
<ul>
<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>

View File

@@ -166,11 +166,11 @@ set, this is a follow on fragment.</p>
<p>
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,
messages are not fragmented, and the fragment bit in the flag byte is
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.
@@ -238,7 +238,7 @@ Message ID:
4 bytes
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
(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:
2 or more bytes

View File

@@ -44,13 +44,13 @@ is simply a zip file with a prepended 56 byte header.
The header contains:
<ul>
<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>
A 16-byte I2P version in UTF-8, padded with trailing zeroes if necessary
</li></ul>
</p><p>
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.
</p><p>
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') }}">
<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 %}