Skip to content

Commit d8a4000

Browse files
committed
1. added multipath protocol and schema suport
2. added SCTP protocol and schema support 3. added set of NAS models support (Asustor, ReadyNAS, Drobo, QNAP, WD, Synology, Terramaster) 4. moved to fc00::/7 private segment 5. added Windows, MacOS and Linux UI for peers edit and current status
1 parent cfa293d commit d8a4000

File tree

198 files changed

+8588
-696
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

198 files changed

+8588
-696
lines changed

CHANGELOG.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,25 +57,25 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
5757
- It is now possible to `addPeer` and `removePeer` using the admin socket again
5858
- The `getSessions` admin socket call reports number of bytes received and transmitted again
5959
- The link setup code has been refactored, making it easier to support new peering types in the future
60-
- Yggdrasil now maintains configuration internally, rather than relying on a shared and potentially mutable structure
60+
- RiV-mesh now maintains configuration internally, rather than relying on a shared and potentially mutable structure
6161

6262
### Fixed
6363

6464
- Tracking information about expired root nodes has been fixed, which should hopefully resolve issues with reparenting and connection failures when the root node disappears
6565
- A bug in the mobile framework code which caused a crash on Android when multicast failed to set up has been fixed
66-
- Yggdrasil should now shut down gracefully and clean up correctly when running as a Windows service
66+
- RiV-mesh should now shut down gracefully and clean up correctly when running as a Windows service
6767

6868
## [0.4.4] - 2022-07-07
6969

7070
### Fixed
7171

7272
- ICMPv6 "Packet Too Big" payload size has been increased, which should fix Path MTU Discovery (PMTUD) when two nodes have different `IfMTU` values configured
7373
- A crash has been fixed when handling debug packet responses
74-
- `yggdrasilctl getSelf` should now report coordinates correctly again
74+
- `meshctl getSelf` should now report coordinates correctly again
7575

7676
### Changed
7777

78-
- Go 1.17 is now required to build Yggdrasil
78+
- Go 1.17 is now required to build RiV-mesh
7979

8080
## [0.4.3] - 2022-02-06
8181

LICENSE.rtf

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
{\rtf1\ansi\ansicpg1251\deff0\nouicompat\deflang1049{\fonttbl{\f0\fnil\fcharset0 Roboto;}}
2+
{\colortbl ;\red0\green0\blue255;}
3+
{\*\generator Riched20 10.0.19041}\viewkind4\uc1
4+
\pard\sl240\slmult1\f0\fs16\lang9 This software is licensed under the LGPLv3, included below.\par
5+
\par
6+
As a special exception to the GNU Lesser General Public License version 3\par
7+
("LGPL3"), the copyright holders of this Library give you permission to\par
8+
convey to a third party a Combined Work that links statically or dynamically\par
9+
to this Library without providing any Minimal Corresponding Source or\par
10+
Minimal Application Code as set out in 4d or providing the installation\par
11+
information set out in section 4e, provided that you comply with the other\par
12+
provisions of LGPL3 and provided that you meet, for the Application the\par
13+
terms and conditions of the license(s) which apply to the Application.\par
14+
\par
15+
Except as stated in this special exception, the provisions of LGPL3 will\par
16+
continue to comply in full to this Library. If you modify this Library, you\par
17+
may apply this exception to your version of this Library, but you are not\par
18+
obliged to do so. If you do not wish to do so, delete this exception\par
19+
statement from your version. This exception does not (and cannot) modify any\par
20+
license terms which apply to the Application, with which you must still\par
21+
comply.\par
22+
\par
23+
GNU LESSER GENERAL PUBLIC LICENSE\par
24+
Version 3, 29 June 2007\par
25+
\par
26+
Copyright (C) 2007 Free Software Foundation, Inc. <{{\field{\*\fldinst{HYPERLINK "https://fsf.org/"}}{\fldrslt{https://fsf.org/\ul0\cf0}}}}\f0\fs16 >\par
27+
Everyone is permitted to copy and distribute verbatim copies\par
28+
of this license document, but changing it is not allowed.\par
29+
\par
30+
\par
31+
This version of the GNU Lesser General Public License incorporates\par
32+
the terms and conditions of version 3 of the GNU General Public\par
33+
License, supplemented by the additional permissions listed below.\par
34+
\par
35+
0. Additional Definitions.\par
36+
\par
37+
As used herein, "this License" refers to version 3 of the GNU Lesser\par
38+
General Public License, and the "GNU GPL" refers to version 3 of the GNU\par
39+
General Public License.\par
40+
\par
41+
"The Library" refers to a covered work governed by this License,\par
42+
other than an Application or a Combined Work as defined below.\par
43+
\par
44+
An "Application" is any work that makes use of an interface provided\par
45+
by the Library, but which is not otherwise based on the Library.\par
46+
Defining a subclass of a class defined by the Library is deemed a mode\par
47+
of using an interface provided by the Library.\par
48+
\par
49+
A "Combined Work" is a work produced by combining or linking an\par
50+
Application with the Library. The particular version of the Library\par
51+
with which the Combined Work was made is also called the "Linked\par
52+
Version".\par
53+
\par
54+
The "Minimal Corresponding Source" for a Combined Work means the\par
55+
Corresponding Source for the Combined Work, excluding any source code\par
56+
for portions of the Combined Work that, considered in isolation, are\par
57+
based on the Application, and not on the Linked Version.\par
58+
\par
59+
The "Corresponding Application Code" for a Combined Work means the\par
60+
object code and/or source code for the Application, including any data\par
61+
and utility programs needed for reproducing the Combined Work from the\par
62+
Application, but excluding the System Libraries of the Combined Work.\par
63+
\par
64+
1. Exception to Section 3 of the GNU GPL.\par
65+
\par
66+
You may convey a covered work under sections 3 and 4 of this License\par
67+
without being bound by section 3 of the GNU GPL.\par
68+
\par
69+
2. Conveying Modified Versions.\par
70+
\par
71+
If you modify a copy of the Library, and, in your modifications, a\par
72+
facility refers to a function or data to be supplied by an Application\par
73+
that uses the facility (other than as an argument passed when the\par
74+
facility is invoked), then you may convey a copy of the modified\par
75+
version:\par
76+
\par
77+
a) under this License, provided that you make a good faith effort to\par
78+
ensure that, in the event an Application does not supply the\par
79+
function or data, the facility still operates, and performs\par
80+
whatever part of its purpose remains meaningful, or\par
81+
\par
82+
b) under the GNU GPL, with none of the additional permissions of\par
83+
this License applicable to that copy.\par
84+
\par
85+
3. Object Code Incorporating Material from Library Header Files.\par
86+
\par
87+
The object code form of an Application may incorporate material from\par
88+
a header file that is part of the Library. You may convey such object\par
89+
code under terms of your choice, provided that, if the incorporated\par
90+
material is not limited to numerical parameters, data structure\par
91+
layouts and accessors, or small macros, inline functions and templates\par
92+
(ten or fewer lines in length), you do both of the following:\par
93+
\par
94+
a) Give prominent notice with each copy of the object code that the\par
95+
Library is used in it and that the Library and its use are\par
96+
covered by this License.\par
97+
\par
98+
b) Accompany the object code with a copy of the GNU GPL and this license\par
99+
document.\par
100+
\par
101+
4. Combined Works.\par
102+
\par
103+
You may convey a Combined Work under terms of your choice that,\par
104+
taken together, effectively do not restrict modification of the\par
105+
portions of the Library contained in the Combined Work and reverse\par
106+
engineering for debugging such modifications, if you also do each of\par
107+
the following:\par
108+
\par
109+
a) Give prominent notice with each copy of the Combined Work that\par
110+
the Library is used in it and that the Library and its use are\par
111+
covered by this License.\par
112+
\par
113+
b) Accompany the Combined Work with a copy of the GNU GPL and this license\par
114+
document.\par
115+
\par
116+
c) For a Combined Work that displays copyright notices during\par
117+
execution, include the copyright notice for the Library among\par
118+
these notices, as well as a reference directing the user to the\par
119+
copies of the GNU GPL and this license document.\par
120+
\par
121+
d) Do one of the following:\par
122+
\par
123+
0) Convey the Minimal Corresponding Source under the terms of this\par
124+
License, and the Corresponding Application Code in a form\par
125+
suitable for, and under terms that permit, the user to\par
126+
recombine or relink the Application with a modified version of\par
127+
the Linked Version to produce a modified Combined Work, in the\par
128+
manner specified by section 6 of the GNU GPL for conveying\par
129+
Corresponding Source.\par
130+
\par
131+
1) Use a suitable shared library mechanism for linking with the\par
132+
Library. A suitable mechanism is one that (a) uses at run time\par
133+
a copy of the Library already present on the user's computer\par
134+
system, and (b) will operate properly with a modified version\par
135+
of the Library that is interface-compatible with the Linked\par
136+
Version.\par
137+
\par
138+
e) Provide Installation Information, but only if you would otherwise\par
139+
be required to provide such information under section 6 of the\par
140+
GNU GPL, and only to the extent that such information is\par
141+
necessary to install and execute a modified version of the\par
142+
Combined Work produced by recombining or relinking the\par
143+
Application with a modified version of the Linked Version. (If\par
144+
you use option 4d0, the Installation Information must accompany\par
145+
the Minimal Corresponding Source and Corresponding Application\par
146+
Code. If you use option 4d1, you must provide the Installation\par
147+
Information in the manner specified by section 6 of the GNU GPL\par
148+
for conveying Corresponding Source.)\par
149+
\par
150+
5. Combined Libraries.\par
151+
\par
152+
You may place library facilities that are a work based on the\par
153+
Library side by side in a single library together with other library\par
154+
facilities that are not Applications and are not covered by this\par
155+
License, and convey such a combined library under terms of your\par
156+
choice, if you do both of the following:\par
157+
\par
158+
a) Accompany the combined library with a copy of the same work based\par
159+
on the Library, uncombined with any other library facilities,\par
160+
conveyed under the terms of this License.\par
161+
\par
162+
b) Give prominent notice with the combined library that part of it\par
163+
is a work based on the Library, and explaining where to find the\par
164+
accompanying uncombined form of the same work.\par
165+
\par
166+
6. Revised Versions of the GNU Lesser General Public License.\par
167+
\par
168+
The Free Software Foundation may publish revised and/or new versions\par
169+
of the GNU Lesser General Public License from time to time. Such new\par
170+
versions will be similar in spirit to the present version, but may\par
171+
differ in detail to address new problems or concerns.\par
172+
\par
173+
Each version is given a distinguishing version number. If the\par
174+
Library as you received it specifies that a certain numbered version\par
175+
of the GNU Lesser General Public License "or any later version"\par
176+
applies to it, you have the option of following the terms and\par
177+
conditions either of that published version or of any later version\par
178+
published by the Free Software Foundation. If the Library as you\par
179+
received it does not specify a version number of the GNU Lesser\par
180+
General Public License, you may choose any version of the GNU Lesser\par
181+
General Public License ever published by the Free Software Foundation.\par
182+
\par
183+
If the Library as you received it specifies that a proxy can decide\par
184+
whether future versions of the GNU Lesser General Public License shall\par
185+
apply, that proxy's public statement of acceptance of any version is\par
186+
permanent authorization for you to choose that version for the\par
187+
Library.\par
188+
}
189+

README.md

Lines changed: 64 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,28 @@
1-
# Yggdrasil
1+
# RiV-mesh first self arranging mesh network with link aggregation.
22

3-
[![Build status](https://github.com/yggdrasil-network/yggdrasil-go/actions/workflows/ci.yml/badge.svg)](https://github.com/yggdrasil-network/yggdrasil-go/actions/workflows/ci.yml)
3+
[![CircleCI](https://circleci.com/gh/RiV-chain/RiV-mesh.svg?style=shield&circle-token=:circle-token
4+
)](https://circleci.com/gh/RiV-chain/RiV-mesh)
5+
6+
## Why fork?
7+
RiV-mesh is fork of Yggdrasil which is great project. Starting from Yggdrasil 0.4 dev team removed CKR feature which is a core for secure tunneling like VPN does. RiV-mesh gets back CKR feature. Second reason: Yggdrasil uses deprecated 200::/7 IPv6 address pool which can be assigned for some network in future, unlike this fc00::/7 is safe and has been taken for RiV-mesh.
48

59
## Introduction
610

7-
Yggdrasil is an early-stage implementation of a fully end-to-end encrypted IPv6
8-
network. It is lightweight, self-arranging, supported on multiple platforms and
9-
allows pretty much any IPv6-capable application to communicate securely with
10-
other Yggdrasil nodes. Yggdrasil does not require you to have IPv6 Internet
11-
connectivity - it also works over IPv4.
11+
RiV-mesh is an implementation of a fully end-to-end encrypted IPv6
12+
network, created in the scope to produce the Transport Layer for RiV Chain Blockchain,
13+
also to facilitate secure conectivity between a wide spectrum of endpoint devices like IoT devices,
14+
desktop computers or even routers.
15+
It is lightweight, self-arranging, supported on multiple
16+
platforms and allows pretty much any IPv6-capable application
17+
to communicate securely with other RiV-mesh nodes.
18+
RiV-mesh does not require you to have IPv6 Internet connectivity - it also works over IPv4.
1219

1320
## Supported Platforms
1421

15-
Yggdrasil works on a number of platforms, including Linux, macOS, Ubiquiti
22+
RiV-mesh works on a number of platforms, including Linux, macOS, Ubiquiti
1623
EdgeRouter, VyOS, Windows, FreeBSD, OpenBSD and OpenWrt.
1724

18-
Please see our [Installation](https://yggdrasil-network.github.io/installation.html)
25+
Please see our [Installation](https://RiV-chain.github.io/installation.html)
1926
page for more information. You may also find other platform-specific wrappers, scripts
2027
or tools in the `contrib` folder.
2128

@@ -40,52 +47,85 @@ To generate static configuration, either generate a HJSON file (human-friendly,
4047
complete with comments):
4148

4249
```
43-
./yggdrasil -genconf > /path/to/yggdrasil.conf
50+
./mesh -genconf > /path/to/mesh.conf
4451
```
4552

4653
... or generate a plain JSON file (which is easy to manipulate
4754
programmatically):
4855

4956
```
50-
./yggdrasil -genconf -json > /path/to/yggdrasil.conf
57+
./mesh -genconf -json > /path/to/mesh.conf
5158
```
5259

53-
You will need to edit the `yggdrasil.conf` file to add or remove peers, modify
60+
You will need to edit the `mesh.conf` file to add or remove peers, modify
5461
other configuration such as listen addresses or multicast addresses, etc.
5562

56-
### Run Yggdrasil
63+
### Run RiV-mesh
5764

5865
To run with the generated static configuration:
5966

6067
```
61-
./yggdrasil -useconffile /path/to/yggdrasil.conf
68+
./mesh -useconffile /path/to/mesh.conf
6269
```
6370

6471
To run in auto-configuration mode (which will use sane defaults and random keys
6572
at each startup, instead of using a static configuration file):
6673

6774
```
68-
./yggdrasil -autoconf
75+
./mesh -autoconf
6976
```
7077

71-
You will likely need to run Yggdrasil as a privileged user or under `sudo`,
78+
You will likely need to run RiV-mesh as a privileged user or under `sudo`,
7279
unless you have permission to create TUN/TAP adapters. On Linux this can be done
73-
by giving the Yggdrasil binary the `CAP_NET_ADMIN` capability.
80+
by giving the RiV-mesh binary the `CAP_NET_ADMIN` capability.
7481

7582
## Documentation
7683

77-
Documentation is available [on our website](https://yggdrasil-network.github.io).
84+
Documentation is available [on our website](https://riv-chain.github.io/RiV-mesh/).
7885

79-
- [Installing Yggdrasil](https://yggdrasil-network.github.io/installation.html)
80-
- [Configuring Yggdrasil](https://yggdrasil-network.github.io/configuration.html)
81-
- [Frequently asked questions](https://yggdrasil-network.github.io/faq.html)
86+
- [Installing RiV-mesh](https://riv-chain.github.io/RiV-mesh/)
87+
- [Configuring RiV-mesh](https://riv-chain.github.io/RiV-mesh/)
88+
- [Frequently asked questions](https://riv-chain.github.io/RiV-mesh/)
8289
- [Version changelog](CHANGELOG.md)
8390

8491
## Community
8592

86-
Feel free to join us on our [Matrix
87-
channel](https://matrix.to/#/#yggdrasil:matrix.org) at `#yggdrasil:matrix.org`
88-
or in the `#yggdrasil` IRC channel on [libera.chat](https://libera.chat).
93+
Feel free to join us on our [Telegram
94+
channel](https://t.me/rivchain).
95+
96+
## Public peers
97+
If you are operating RiV-mesh peer and may create your pool request with your new per or use existing one https://github.com/RiV-chain/public-peers
98+
99+
## Known issues
100+
101+
### 1. Log message:
102+
```
103+
An error occurred starting multicast: listen udp6 [::]:9001: socket: address family not supported by protocol
104+
```
105+
and
106+
```
107+
An error occurred starting TUN/TAP: operation not supported
108+
```
109+
110+
### Caused by:
111+
The device has no IPv6 support
112+
113+
114+
### 2. Log message:
115+
```
116+
An error occurred starting TUN/TAP: permission denied
117+
```
118+
119+
### Caused by:
120+
IPv6 support is not enabled. See the solution: https://github.com/yggdrasil-network/yggdrasil-go/issues/479#issuecomment-519512395
121+
122+
### 3. Mesh infinite output in log:
123+
Connected SCTP ...
124+
125+
Disconnected SCTP ...
126+
127+
### Caused by:
128+
Docker interface docker0 is conflicting with SCTP bind process. The issue can be resolved by removing docker.
89129

90130
## License
91131

SECURITY.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Security Policy
2+
3+
## Supported Versions
4+
5+
Use this section to tell people about which versions of your project are
6+
currently being supported with security updates.
7+
8+
| Version | Supported |
9+
| ------- | ------------------ |
10+
| 5.1.x | :white_check_mark: |
11+
| 5.0.x | :x: |
12+
| 4.0.x | :white_check_mark: |
13+
| < 4.0 | :x: |
14+
15+
## Reporting a Vulnerability
16+
17+
Use this section to tell people how to report a vulnerability.
18+
19+
Tell them where to go, how often they can expect to get an update on a
20+
reported vulnerability, what to expect if the vulnerability is accepted or
21+
declined, etc.

0 commit comments

Comments
 (0)