From a592016130d044a61c01de665d0731996354697a Mon Sep 17 00:00:00 2001 From: yangyanjun Date: Fri, 30 Sep 2022 10:32:21 +0800 Subject: [PATCH] =?UTF-8?q?SIG=E9=81=97=E7=95=99=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=201=E3=80=81license=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E4=BB=A3=E7=A0=81=E6=96=87=E4=BB=B6=E5=A4=B4?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E2=80=9CNewIP=20is=20dual=20licensed:=20you?= =?UTF-8?q?=20can=20use=20it=20under=20the=20terms=20of=20the=20GPL=20V2?= =?UTF-8?q?=20and=20the=20BSD2=20license=E2=80=9D=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0=EF=BC=8C=E5=8F=AA=E5=9C=A8=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E4=BB=93=E6=A0=B9=E7=9B=AE=E5=BD=95license=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=AD=E6=8F=8F=E8=BF=B0=E6=AF=8F=E4=B8=AA=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E7=9A=84license=E5=8D=B3=E5=8F=AF=E3=80=82=202=E3=80=81?= =?UTF-8?q?=E5=8F=AA=E4=BF=9D=E7=95=99=E6=A0=B9=E7=9B=AE=E5=BD=95license?= =?UTF-8?q?=E6=96=87=E4=BB=B6=EF=BC=8C=E5=8E=BB=E6=8E=89=E5=AD=90=E7=9B=AE?= =?UTF-8?q?=E5=BD=95license=E6=96=87=E4=BB=B6=E3=80=82=203=E3=80=81NewIP?= =?UTF-8?q?=E6=98=AF=E7=BD=91=E7=BB=9C5.0=E8=81=94=E7=9B=9F=E5=85=B1?= =?UTF-8?q?=E5=90=8C=E6=8E=A8=E5=87=BA=E7=9A=84=E6=96=B0=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=EF=BC=8C=E5=B1=9E=E4=BA=8E=E5=85=AC=E5=85=B1=EF=BC=8C=E5=BB=BA?= =?UTF-8?q?=E8=AE=AE=E5=85=AC=E5=85=B1=E4=BB=A3=E7=A0=81license=E4=BD=BF?= =?UTF-8?q?=E7=94=A8BSD-3=EF=BC=8C=E4=B8=8D=E8=A6=81=E4=BD=BF=E7=94=A8BSD-?= =?UTF-8?q?2=E3=80=82liteOS=E6=98=AFBSD-3=EF=BC=8C=E5=A6=82=E6=9E=9C?= =?UTF-8?q?=E7=94=A8BSD-2=EF=BC=8C=E5=B1=9E=E4=BA=8E=E5=8F=8D=E5=90=91?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E3=80=82=204=E3=80=81linux=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0README.OpenSource=EF=BC=8C=E7=9B=B8=E5=BD=93?= =?UTF-8?q?=E4=BA=8ENewIP=E5=BC=95=E7=94=A8Linux=E5=86=85=E6=A0=B8?= =?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=96=B9=E8=BD=AF=E4=BB=B6=E7=9A=84=E5=BD=A2?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E5=8F=82=E8=80=83=E9=B8=BF=E8=92=99=E7=A4=BE?= =?UTF-8?q?=E5=8C=BALinux-5.10=E5=86=85=E6=A0=B8=E4=BB=93README.OpenSource?= =?UTF-8?q?=E3=80=82=205=E3=80=81communication=5Fsfc=5Fnewip/code=20?= =?UTF-8?q?=E6=94=B9=20src=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yangyanjun --- LICENSE | 14 +- README.OpenSource | 11 + apply_newip.sh | 58 +-- code/common/LICENSE | 29 -- code/linux/LICENSE | 359 ------------------ figures/image-20220901152539801.png | Bin 19225 -> 18867 bytes {code => src}/common/nip_addr.c | 0 {code => src}/common/nip_addr.h | 0 {code => src}/common/nip_checksum.c | 0 {code => src}/common/nip_checksum.h | 0 {code => src}/common/nip_hdr.h | 0 {code => src}/common/nip_hdr_decap.c | 0 {code => src}/common/nip_hdr_encap.c | 0 .../linux/include/linux/newip_route.h | 0 {code => src}/linux/include/linux/nip.h | 0 {code => src}/linux/include/linux/nip_icmp.h | 0 {code => src}/linux/include/net/flow_nip.h | 0 {code => src}/linux/include/net/if_ninet.h | 0 {code => src}/linux/include/net/netns/nip.h | 0 .../linux/include/net/ninet_connection_sock.h | 0 .../linux/include/net/ninet_hashtables.h | 0 {code => src}/linux/include/net/nip.h | 0 .../linux/include/net/nip_addrconf.h | 0 {code => src}/linux/include/net/nip_fib.h | 0 {code => src}/linux/include/net/nip_route.h | 0 {code => src}/linux/include/net/nip_udp.h | 0 {code => src}/linux/include/net/nndisc.h | 0 {code => src}/linux/include/net/tcp_nip.h | 0 {code => src}/linux/include/net/transp_nip.h | 0 .../linux/include/trace/hooks/nip_hooks.h | 0 .../linux/include/uapi/linux/newip_route.h | 0 {code => src}/linux/include/uapi/linux/nip.h | 0 .../linux/include/uapi/linux/nip_icmp.h | 0 {code => src}/linux/net/newip/Kconfig | 0 {code => src}/linux/net/newip/Makefile | 0 {code => src}/linux/net/newip/af_ninet.c | 0 {code => src}/linux/net/newip/hooks/Kconfig | 0 {code => src}/linux/net/newip/hooks/Makefile | 0 .../linux/net/newip/hooks/nip_hooks.c | 0 {code => src}/linux/net/newip/icmp.c | 0 .../linux/net/newip/ninet_connection_sock.c | 0 .../linux/net/newip/ninet_hashtables.c | 0 {code => src}/linux/net/newip/nip_addrconf.c | 0 .../linux/net/newip/nip_addrconf_core.c | 0 {code => src}/linux/net/newip/nip_fib.c | 0 {code => src}/linux/net/newip/nip_fib_rules.c | 0 .../linux/net/newip/nip_hooks_register.c | 0 .../linux/net/newip/nip_hooks_register.h | 0 {code => src}/linux/net/newip/nip_input.c | 0 {code => src}/linux/net/newip/nip_output.c | 0 {code => src}/linux/net/newip/nip_sockglue.c | 0 {code => src}/linux/net/newip/nndisc.c | 0 {code => src}/linux/net/newip/protocol.c | 0 {code => src}/linux/net/newip/route.c | 0 {code => src}/linux/net/newip/tcp_nip.c | 0 {code => src}/linux/net/newip/tcp_nip_input.c | 0 .../linux/net/newip/tcp_nip_output.c | 0 .../linux/net/newip/tcp_nip_parameter.c | 0 .../linux/net/newip/tcp_nip_parameter.h | 0 {code => src}/linux/net/newip/tcp_nip_timer.c | 0 {code => src}/linux/net/newip/udp.c | 0 61 files changed, 47 insertions(+), 424 deletions(-) create mode 100644 README.OpenSource delete mode 100644 code/common/LICENSE delete mode 100644 code/linux/LICENSE rename {code => src}/common/nip_addr.c (100%) rename {code => src}/common/nip_addr.h (100%) rename {code => src}/common/nip_checksum.c (100%) rename {code => src}/common/nip_checksum.h (100%) rename {code => src}/common/nip_hdr.h (100%) rename {code => src}/common/nip_hdr_decap.c (100%) rename {code => src}/common/nip_hdr_encap.c (100%) rename {code => src}/linux/include/linux/newip_route.h (100%) rename {code => src}/linux/include/linux/nip.h (100%) rename {code => src}/linux/include/linux/nip_icmp.h (100%) rename {code => src}/linux/include/net/flow_nip.h (100%) rename {code => src}/linux/include/net/if_ninet.h (100%) rename {code => src}/linux/include/net/netns/nip.h (100%) rename {code => src}/linux/include/net/ninet_connection_sock.h (100%) rename {code => src}/linux/include/net/ninet_hashtables.h (100%) rename {code => src}/linux/include/net/nip.h (100%) rename {code => src}/linux/include/net/nip_addrconf.h (100%) rename {code => src}/linux/include/net/nip_fib.h (100%) rename {code => src}/linux/include/net/nip_route.h (100%) rename {code => src}/linux/include/net/nip_udp.h (100%) rename {code => src}/linux/include/net/nndisc.h (100%) rename {code => src}/linux/include/net/tcp_nip.h (100%) rename {code => src}/linux/include/net/transp_nip.h (100%) rename {code => src}/linux/include/trace/hooks/nip_hooks.h (100%) rename {code => src}/linux/include/uapi/linux/newip_route.h (100%) rename {code => src}/linux/include/uapi/linux/nip.h (100%) rename {code => src}/linux/include/uapi/linux/nip_icmp.h (100%) rename {code => src}/linux/net/newip/Kconfig (100%) rename {code => src}/linux/net/newip/Makefile (100%) rename {code => src}/linux/net/newip/af_ninet.c (100%) rename {code => src}/linux/net/newip/hooks/Kconfig (100%) rename {code => src}/linux/net/newip/hooks/Makefile (100%) rename {code => src}/linux/net/newip/hooks/nip_hooks.c (100%) rename {code => src}/linux/net/newip/icmp.c (100%) rename {code => src}/linux/net/newip/ninet_connection_sock.c (100%) rename {code => src}/linux/net/newip/ninet_hashtables.c (100%) rename {code => src}/linux/net/newip/nip_addrconf.c (100%) rename {code => src}/linux/net/newip/nip_addrconf_core.c (100%) rename {code => src}/linux/net/newip/nip_fib.c (100%) rename {code => src}/linux/net/newip/nip_fib_rules.c (100%) rename {code => src}/linux/net/newip/nip_hooks_register.c (100%) rename {code => src}/linux/net/newip/nip_hooks_register.h (100%) rename {code => src}/linux/net/newip/nip_input.c (100%) rename {code => src}/linux/net/newip/nip_output.c (100%) rename {code => src}/linux/net/newip/nip_sockglue.c (100%) rename {code => src}/linux/net/newip/nndisc.c (100%) rename {code => src}/linux/net/newip/protocol.c (100%) rename {code => src}/linux/net/newip/route.c (100%) rename {code => src}/linux/net/newip/tcp_nip.c (100%) rename {code => src}/linux/net/newip/tcp_nip_input.c (100%) rename {code => src}/linux/net/newip/tcp_nip_output.c (100%) rename {code => src}/linux/net/newip/tcp_nip_parameter.c (100%) rename {code => src}/linux/net/newip/tcp_nip_parameter.h (100%) rename {code => src}/linux/net/newip/tcp_nip_timer.c (100%) rename {code => src}/linux/net/newip/udp.c (100%) diff --git a/LICENSE b/LICENSE index 04199a4..c639838 100644 --- a/LICENSE +++ b/LICENSE @@ -1,11 +1,9 @@ -NewIP - New IP Stack +NewIP - New IP protocol stack Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. -NewIP is dual licensed: you can use it under the terms of the GPL V2 and the BSD2 license. - The code/linux/ subdirectorie is licensed under the GPL V2 License. -The code/ommon/ subdirectorie is licensed under 2-Clause BSD License. -The examples/ subdirectorie is licensed under 2-Clause BSD License. +The code/ommon/ subdirectorie is licensed under 3-Clause BSD License. +The examples/ subdirectorie is licensed under 3-Clause BSD License. a) GNU General Public License version 2, (https://opensource.org/licenses/GPL-2.0) This library is free software; you can redistribute it and/or @@ -23,8 +21,7 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -And, -b) The BSD2 License, (https://opensource.org/licenses/BSD-2-Clause) +b) The 3-Clause BSD License, (https://opensource.org/licenses/BSD-3-Clause) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -36,6 +33,9 @@ conditions are met: copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, diff --git a/README.OpenSource b/README.OpenSource new file mode 100644 index 0000000..7277cbb --- /dev/null +++ b/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "linux-5.10", + "License": "GPL-2.0+", + "License File": "COPYING", + "Version Number": "5.10.93", + "Owner": "liuyu82@huawei.com", + "Upstream URL": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/log/?h=linux-5.10.y", + "Description": "linux kernel 5.10" + } +] diff --git a/apply_newip.sh b/apply_newip.sh index bf1cfc2..a415b96 100644 --- a/apply_newip.sh +++ b/apply_newip.sh @@ -18,39 +18,39 @@ function main() { cd $KERNEL_BUILD_ROOT - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/linux/newip_route.h $KERNEL_BUILD_ROOT/include/linux/newip_route.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/linux/nip.h $KERNEL_BUILD_ROOT/include/linux/nip.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/linux/nip_icmp.h $KERNEL_BUILD_ROOT/include/linux/nip_icmp.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/linux/newip_route.h $KERNEL_BUILD_ROOT/include/linux/newip_route.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/linux/nip.h $KERNEL_BUILD_ROOT/include/linux/nip.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/linux/nip_icmp.h $KERNEL_BUILD_ROOT/include/linux/nip_icmp.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/net/netns/nip.h $KERNEL_BUILD_ROOT/include/net/netns/nip.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/net/flow_nip.h $KERNEL_BUILD_ROOT/include/net/flow_nip.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/net/if_ninet.h $KERNEL_BUILD_ROOT/include/net/if_ninet.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/net/ninet_connection_sock.h $KERNEL_BUILD_ROOT/include/net/ninet_connection_sock.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/net/ninet_hashtables.h $KERNEL_BUILD_ROOT/include/net/ninet_hashtables.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/net/nip.h $KERNEL_BUILD_ROOT/include/net/nip.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/net/nip_addrconf.h $KERNEL_BUILD_ROOT/include/net/nip_addrconf.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/net/nip_fib.h $KERNEL_BUILD_ROOT/include/net/nip_fib.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/net/nip_route.h $KERNEL_BUILD_ROOT/include/net/nip_route.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/net/nip_udp.h $KERNEL_BUILD_ROOT/include/net/nip_udp.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/net/nndisc.h $KERNEL_BUILD_ROOT/include/net/nndisc.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/net/tcp_nip.h $KERNEL_BUILD_ROOT/include/net/tcp_nip.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/net/transp_nip.h $KERNEL_BUILD_ROOT/include/net/transp_nip.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/net/netns/nip.h $KERNEL_BUILD_ROOT/include/net/netns/nip.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/net/flow_nip.h $KERNEL_BUILD_ROOT/include/net/flow_nip.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/net/if_ninet.h $KERNEL_BUILD_ROOT/include/net/if_ninet.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/net/ninet_connection_sock.h $KERNEL_BUILD_ROOT/include/net/ninet_connection_sock.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/net/ninet_hashtables.h $KERNEL_BUILD_ROOT/include/net/ninet_hashtables.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/net/nip.h $KERNEL_BUILD_ROOT/include/net/nip.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/net/nip_addrconf.h $KERNEL_BUILD_ROOT/include/net/nip_addrconf.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/net/nip_fib.h $KERNEL_BUILD_ROOT/include/net/nip_fib.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/net/nip_route.h $KERNEL_BUILD_ROOT/include/net/nip_route.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/net/nip_udp.h $KERNEL_BUILD_ROOT/include/net/nip_udp.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/net/nndisc.h $KERNEL_BUILD_ROOT/include/net/nndisc.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/net/tcp_nip.h $KERNEL_BUILD_ROOT/include/net/tcp_nip.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/net/transp_nip.h $KERNEL_BUILD_ROOT/include/net/transp_nip.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/uapi/linux/newip_route.h $KERNEL_BUILD_ROOT/include/uapi/linux/newip_route.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/uapi/linux/nip.h $KERNEL_BUILD_ROOT/include/uapi/linux/nip.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/uapi/linux/nip_icmp.h $KERNEL_BUILD_ROOT/include/uapi/linux/nip_icmp.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/uapi/linux/newip_route.h $KERNEL_BUILD_ROOT/include/uapi/linux/newip_route.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/uapi/linux/nip.h $KERNEL_BUILD_ROOT/include/uapi/linux/nip.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/uapi/linux/nip_icmp.h $KERNEL_BUILD_ROOT/include/uapi/linux/nip_icmp.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/include/trace/hooks/nip_hooks.h $KERNEL_BUILD_ROOT/include/trace/hooks/nip_hooks.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/include/trace/hooks/nip_hooks.h $KERNEL_BUILD_ROOT/include/trace/hooks/nip_hooks.h - ln -s -f $NEWIP_SOURCE_ROOT/code/linux/net/newip $KERNEL_BUILD_ROOT/net - ln -s -f $NEWIP_SOURCE_ROOT/code/common/nip_addr.c $KERNEL_BUILD_ROOT/net/newip/nip_addr.c - ln -s -f $NEWIP_SOURCE_ROOT/code/common/nip_addr.h $KERNEL_BUILD_ROOT/net/newip/nip_addr.h - ln -s -f $NEWIP_SOURCE_ROOT/code/common/nip_addr.h $KERNEL_BUILD_ROOT/include/uapi/linux/nip_addr.h - ln -s -f $NEWIP_SOURCE_ROOT/code/common/nip_checksum.c $KERNEL_BUILD_ROOT/net/newip/nip_checksum.c - ln -s -f $NEWIP_SOURCE_ROOT/code/common/nip_checksum.h $KERNEL_BUILD_ROOT/net/newip/nip_checksum.h - ln -s -f $NEWIP_SOURCE_ROOT/code/common/nip_hdr_decap.c $KERNEL_BUILD_ROOT/net/newip/nip_hdr_decap.c - ln -s -f $NEWIP_SOURCE_ROOT/code/common/nip_hdr_encap.c $KERNEL_BUILD_ROOT/net/newip/nip_hdr_encap.c - ln -s -f $NEWIP_SOURCE_ROOT/code/common/nip_hdr.h $KERNEL_BUILD_ROOT/net/newip/nip_hdr.h + ln -s -f $NEWIP_SOURCE_ROOT/src/linux/net/newip $KERNEL_BUILD_ROOT/net + ln -s -f $NEWIP_SOURCE_ROOT/src/common/nip_addr.c $KERNEL_BUILD_ROOT/net/newip/nip_addr.c + ln -s -f $NEWIP_SOURCE_ROOT/src/common/nip_addr.h $KERNEL_BUILD_ROOT/net/newip/nip_addr.h + ln -s -f $NEWIP_SOURCE_ROOT/src/common/nip_addr.h $KERNEL_BUILD_ROOT/include/uapi/linux/nip_addr.h + ln -s -f $NEWIP_SOURCE_ROOT/src/common/nip_checksum.c $KERNEL_BUILD_ROOT/net/newip/nip_checksum.c + ln -s -f $NEWIP_SOURCE_ROOT/src/common/nip_checksum.h $KERNEL_BUILD_ROOT/net/newip/nip_checksum.h + ln -s -f $NEWIP_SOURCE_ROOT/src/common/nip_hdr_decap.c $KERNEL_BUILD_ROOT/net/newip/nip_hdr_decap.c + ln -s -f $NEWIP_SOURCE_ROOT/src/common/nip_hdr_encap.c $KERNEL_BUILD_ROOT/net/newip/nip_hdr_encap.c + ln -s -f $NEWIP_SOURCE_ROOT/src/common/nip_hdr.h $KERNEL_BUILD_ROOT/net/newip/nip_hdr.h cd - } diff --git a/code/common/LICENSE b/code/common/LICENSE deleted file mode 100644 index d83b446..0000000 --- a/code/common/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -NewIP common -Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. - -The BSD2 License, (https://opensource.org/licenses/BSD-2-Clause) -Redistribution and use in source and binary forms, with or -without modification, are permitted provided that the following -conditions are met: - -1. Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. -2. Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/code/linux/LICENSE b/code/linux/LICENSE deleted file mode 100644 index ff0812f..0000000 --- a/code/linux/LICENSE +++ /dev/null @@ -1,359 +0,0 @@ -Valid-License-Identifier: GPL-2.0 -Valid-License-Identifier: GPL-2.0-only -Valid-License-Identifier: GPL-2.0+ -Valid-License-Identifier: GPL-2.0-or-later -SPDX-URL: https://spdx.org/licenses/GPL-2.0.html -Usage-Guide: - To use this license in source code, put one of the following SPDX - tag/value pairs into a comment according to the placement - guidelines in the licensing rules documentation. - For 'GNU General Public License (GPL) version 2 only' use: - SPDX-License-Identifier: GPL-2.0 - or - SPDX-License-Identifier: GPL-2.0-only - For 'GNU General Public License (GPL) version 2 or any later version' use: - SPDX-License-Identifier: GPL-2.0+ - or - SPDX-License-Identifier: GPL-2.0-or-later -License-Text: - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/figures/image-20220901152539801.png b/figures/image-20220901152539801.png index 7a26e08dde2035080fd492ab6d2738b9e1a1eef1..4adcdeffc67754f3a7da8527c67eca22ddd9bbb4 100644 GIT binary patch literal 18867 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 MMO(R2@zL}D0W_@H9smFU literal 19225 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