From 19ab311e025ef88a9a78ce498f4a857913c8387c Mon Sep 17 00:00:00 2001 From: Julien Duponchelle Date: Thu, 7 Apr 2016 10:21:15 +0200 Subject: [PATCH] Move all docker container to the registry --- README.rst | 5 + docker/README.rst | 7 + docker/iou/.gitignore | 4 + docker/iou/Dockerfile | 31 ++ docker/iou/README.rst | 19 + docker/iou/boot.sh | 14 + docker/iou/iouyap | Bin 0 -> 86574 bytes docker/iou/netmap.py | 64 ++++ docker/openvswitch/Dockerfile | 9 + docker/openvswitch/LICENSE | 674 ++++++++++++++++++++++++++++++++++ docker/openvswitch/README.rst | 19 + docker/openvswitch/boot.sh | 57 +++ docker/xeyes/Dockerfile | 4 + docker/xeyes/README.rst | 6 + 14 files changed, 913 insertions(+) create mode 100644 docker/README.rst create mode 100644 docker/iou/.gitignore create mode 100644 docker/iou/Dockerfile create mode 100644 docker/iou/README.rst create mode 100644 docker/iou/boot.sh create mode 100755 docker/iou/iouyap create mode 100644 docker/iou/netmap.py create mode 100644 docker/openvswitch/Dockerfile create mode 100644 docker/openvswitch/LICENSE create mode 100644 docker/openvswitch/README.rst create mode 100644 docker/openvswitch/boot.sh create mode 100644 docker/xeyes/Dockerfile create mode 100644 docker/xeyes/README.rst diff --git a/README.rst b/README.rst index 96e1f36..4aaf522 100644 --- a/README.rst +++ b/README.rst @@ -25,6 +25,11 @@ After that you can send us a pull request on Github. In schemas/appliance.json you have a JSON with a schema for controlling the file and can be use as documentation for each fields. +Docker container +################ + +This repository contain also the source of Docker container publish by the GNS3 +team and that can be used as appliance in GNS3. Tools ####### diff --git a/docker/README.rst b/docker/README.rst new file mode 100644 index 0000000..42e8e6e --- /dev/null +++ b/docker/README.rst @@ -0,0 +1,7 @@ +Docker for GNS3 +=============== + +Container maintain by the GNS3 team. + +You can found the images on: +https://hub.docker.com/ diff --git a/docker/iou/.gitignore b/docker/iou/.gitignore new file mode 100644 index 0000000..5e0c932 --- /dev/null +++ b/docker/iou/.gitignore @@ -0,0 +1,4 @@ +iou.bin +iourc.txt +NETMAP +iouyap.ini diff --git a/docker/iou/Dockerfile b/docker/iou/Dockerfile new file mode 100644 index 0000000..71aa81e --- /dev/null +++ b/docker/iou/Dockerfile @@ -0,0 +1,31 @@ +FROM ubuntu:14.04 + +ENV DEBIAN_FRONTEND noninteractive + +RUN dpkg --add-architecture i386 + +RUN apt-get update + +RUN apt-get install python3 + +RUN apt-get install -y lib32z1 +RUN apt-get install -y libssl1.0.0 +RUN apt-get install -y 'libssl1.0.0:i386' +RUN ln -s /lib/i386-linux-gnu/libcrypto.so.1.0.0 /lib/i386-linux-gnu/libcrypto.so.4 + +VOLUME /data + +ADD iouyap /bin +RUN chmod 700 /bin/iouyap + +RUN mkdir /images +ADD iourc.txt /images +ADD iou.bin /images +RUN chmod 700 /images/iou.bin + +ADD boot.sh / +ADD netmap.py / + +ENV HOSTNAME=gns3vm + +CMD /bin/bash ./boot.sh diff --git a/docker/iou/README.rst b/docker/iou/README.rst new file mode 100644 index 0000000..dbc81c8 --- /dev/null +++ b/docker/iou/README.rst @@ -0,0 +1,19 @@ +Docker IOU +---------- + +**Warning not working for the moment** + +This repository is a trial to make IOU work inside a docker container. +If it's work with GNS3 1.5 docker support it can allow running IOU +on any computer supporting Docker without dependencies issues. + + +Building the container +####################### + +* Put in the directory an IOU image and name it iou.bin +* Put in the directory a valid iourc.txt file + +.. code:: bash + + docker build -t iou diff --git a/docker/iou/boot.sh b/docker/iou/boot.sh new file mode 100644 index 0000000..6045fc3 --- /dev/null +++ b/docker/iou/boot.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +export IOURC=/images/iourc.txt + +dd if=/dev/zero bs=4 count=1 of=/etc/hostid + +cd /data +python3 /netmap.py + +/bin/iouyap 513 & + + +/images/iou.bin 1 || /bin/bash -i + diff --git a/docker/iou/iouyap b/docker/iou/iouyap new file mode 100755 index 0000000000000000000000000000000000000000..b0021b5ba83d25f21835ee312b574583c7f27bd9 GIT binary patch literal 86574 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 Hl5COkqb!eSxlYOtvCOF?xk}3Su*@kWxkAdf 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༃M$4hlhM68F1-+{uIaQ(Gg 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 literal 0 HcmV?d00001 diff --git a/docker/iou/netmap.py b/docker/iou/netmap.py new file mode 100644 index 0000000..3da0dd1 --- /dev/null +++ b/docker/iou/netmap.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python +# +# Copyright (C) 2016 GNS3 Technologies Inc. +# +# 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 3 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, see . + +import configparser + +bays = 16 +units = 4 +ethernet_adapters = 0 + +with open("/proc/net/dev") as f: + for line in f.readlines(): + if "eth" in line: + ethernet_adapters += 1 + + +with open("NETMAP", "w", encoding="utf-8") as f: + ethernet_id = 0 + for bay in range(0, bays): + for unit in range(0, units): + if ethernet_id >= ethernet_adapters: + break + f.write("{iouyap_id}:{bay}/{unit}{iou_id:>5d}:{bay}/{unit}\n".format(iouyap_id=str(1 + 512), + bay=bay, + unit=unit, + iou_id=1)) + ethernet_id += 1 + + + +iouyap_ini = "iouyap.ini" + +config = configparser.ConfigParser() +config["default"] = {"netmap": "NETMAP", + "base_port": "49000"} + +ethernet_id = 0 +for bay_id in range(0, bays): + for unit_id in range(0, units): + if ethernet_id >= ethernet_adapters: + break + connection = {"eth_dev": "eth{ethernet_id}".format(ethernet_id=ethernet_id)} + ethernet_id += 1 + + interface = "{iouyap_id}:{bay}/{unit}".format(iouyap_id=str(1 + 512), bay=bay_id, unit=unit_id) + config[interface] = connection + unit_id += 1 + bay_id += 1 + +with open(iouyap_ini, "w", encoding="utf-8") as config_file: + config.write(config_file) diff --git a/docker/openvswitch/Dockerfile b/docker/openvswitch/Dockerfile new file mode 100644 index 0000000..2f8d6bf --- /dev/null +++ b/docker/openvswitch/Dockerfile @@ -0,0 +1,9 @@ +FROM alpine:3.3 + +RUN apk add --update openvswitch && rm -rf /var/cache/apk/* + +VOLUME /etc/openvswitch/ + +ADD boot.sh /bin/boot.sh + +CMD /bin/sh /bin/boot.sh diff --git a/docker/openvswitch/LICENSE b/docker/openvswitch/LICENSE new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/docker/openvswitch/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + 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 +state 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program 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, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU 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 Lesser General +Public License instead of this License. But first, please read +. diff --git a/docker/openvswitch/README.rst b/docker/openvswitch/README.rst new file mode 100644 index 0000000..00b6716 --- /dev/null +++ b/docker/openvswitch/README.rst @@ -0,0 +1,19 @@ +Docker Open vSwitch for GNS3 +------------------------------ + +This make a container for using Open vSwitch in GNS3 1.5 and later. + +This container support 16 ethernet interface and is shipped with +bridge from br0 to br3. + +By default all interface are connected to the br0. + +If you set the environnement variable MANAGEMENT_INTERFACE to 1 +eth0 will not be attach to the container. + +Building the container +####################### + +.. code:: bash + + docker build -t gns3/openvswitch . diff --git a/docker/openvswitch/boot.sh b/docker/openvswitch/boot.sh new file mode 100644 index 0000000..5d45466 --- /dev/null +++ b/docker/openvswitch/boot.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Copyright (C) 2015 GNS3 Technologies Inc. +# +# 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 3 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, see . + + +if [ ! -f "/etc/openvswitch/conf.db" ] +then + ovsdb-tool create /etc/openvswitch/conf.db /usr/share/openvswitch/vswitch.ovsschema + + ovsdb-server --detach --remote=punix:/var/run/openvswitch/db.sock + ovs-vswitchd --detach + ovs-vsctl --no-wait init + + x=0 + until [ $x = "4" ]; do + ovs-vsctl add-br br$x + ovs-vsctl set bridge br$x datapath_type=netdev + x=$((x+1)) + done + + if [ $MANAGEMENT_INTERFACE == 1 ] + then + x=1 + else + x=0 + fi + + until [ $x = "16" ]; do + ovs-vsctl add-port br0 eth$x + x=$((x+1)) + done +else + ovsdb-server --detach --remote=punix:/var/run/openvswitch/db.sock + ovs-vswitchd --detach +fi + + +x=0 +until [ $x = "4" ]; do + ip link set dev br$x up + x=$((x+1)) +done + +/bin/sh diff --git a/docker/xeyes/Dockerfile b/docker/xeyes/Dockerfile new file mode 100644 index 0000000..6d742a4 --- /dev/null +++ b/docker/xeyes/Dockerfile @@ -0,0 +1,4 @@ +FROM debian +RUN apt-get update +RUN apt-get install -qqy x11-apps +CMD xeyes diff --git a/docker/xeyes/README.rst b/docker/xeyes/README.rst new file mode 100644 index 0000000..2fc6c8c --- /dev/null +++ b/docker/xeyes/README.rst @@ -0,0 +1,6 @@ +A demo container with xeyes +=========================== + +A light container with just xeyes. + +This container allow to test the Docker graphical support in GNS3.