ONF Member-Only Software License
Version 1.0
Nov 2021

This ONF Member-Only Software License (this "License") is entered into by and
between Open Networking Foundation ("ONF") and you and/or the entity on whose
behalf you are accessing the Works (as defined in Section 1 below) ("you").
This License forms a legally binding contract between you and ONF in relation
to your access to and use of the Works. You may not access or use the Works if
you do not accept this License.

By accessing or using the Works, you hereby agree to the terms of this License.
You may not use the Works and may not accept this License if you are a person
barred from receiving the Works under the laws of the United States or other
countries, including the country from which you access or use the Works. If you
are agreeing to be bound by this License on behalf of your employer or other
entity, you represent and warrant that you have full legal authority to bind
your employer or such entity to this License. If you do not have the requisite
authority, you may not accept this License or access or use the Works on behalf
of your employer or any other entity.  You and ONF acknowledge and agree as
follows:

1. DEFINITIONS.

"Source" form shall mean the preferred form for making modifications, including
but not limited to software source code, documentation source, and
configuration files.

"Object" form shall mean any form resulting from mechanical transformation or
translation of a Source form, including but not limited to compiled object
code, generated documentation, and conversions to other media types.

"Works" shall mean the works of authorship, whether in Source or Object form,
made available under this License, as indicated by a copyright notice/header
file that is included in or attached to the Works.

2. BACKGROUND.

The purpose of this License is to provide ONF member companies in good standing
("Members") with early access to software projects currently in development by
ONF prior to their public release, to allow Members to review and test the
Works internally for the purpose of making further contributions to the
applicable project.  Members who are Partner-level Members at the time they
first access the Works are additionally permitted under this License to use the
Works internally for the purpose of building and developing products and
services for commercial purposes as defined in Section 4.  However, this
License does not permit any Member, regardless of Member level, to redistribute
all or any portion of the Works, except as part of a contribution back to the
applicable project, in accordance with Section 8 below, or in binary form as
provided for Partner-level Members in Section 4 below.  You understand and
agree that ONF has the sole right to sublicense and distribute a public version
of the final code base for the applicable project to third parties under the
2.0 version of the Apache License, or other permissive license terms selected
by ONF in its sole discretion.

The Purpose of this License is to incubate the development of new software
projects by providing a framework for ONF Members to access and contribute to
the projects while minimizing the potential for forking or misuse of the
projects.  Nothing in this Background paragraph, however, shall require ONF to
take any particular course of action regarding any Works covered by this
License.

3. LIMITED LICENSE TO ALL MEMBERS IN GOOD STANDING.

Subject to your complete and ongoing compliance with all the terms and
conditions set forth in this License, including without limitation all license
limitations and restrictions set forth herein, ONF grants you the following
limited, non-exclusive, non-transferable, non-sublicensable, revocable license
to use, and (where applicable) authorize your employees and contractors
performing work on your behalf (but only if such contractors are themselves
Members of ONF and accept the terms of this License) to use the Works
internally solely in connection with (a) reviewing, testing, modifying and
creating derivatives of the Works for the sole purpose of making contributions
by you to the code repository for the applicable project maintained by ONF; and
(b) building, developing and testing your own applications or components that
may interoperate with or incorporate the Works ("Applications") for the
purposes of internal evaluation only.

4. ADDITIONAL LICENSE TO PARTNER-LEVEL MEMBERS IN GOOD STANDING.

Each project subject to this License shall be declared by ONF to be in one of
two phases:  a) Incubation Phase, or b) Partner Commercialization Phase.  Each
project shall start in the Incubation Phase, and ONF, at its sole discretion,
shall determine when each project moves into the Partner Commercialization
Phase.   Each project shall be documented to be in one of these two phases in
the Project's README documentation and can be confirmed by contacting ONF.

Once any project moves into the Partner Commercialization Phase, if you are a
Partner-level ONF Member in good standing at the time you first access the
Works and for the entire period during which you access and use the Works, in
addition to the rights granted in Section 3, and subject to your complete and
ongoing compliance with all the terms and conditions set forth in this License,
including without limitation all license limitations and restrictions set forth
herein, ONF grants you the limited, non-exclusive, non-transferable,
non-sublicensable, revocable license to use, and (where applicable) authorize
your employees and contractors performing work on your behalf (but only if such
contractors are themselves Members of ONF and accept the terms of this License)
to use, test, modify and create derivatives of the Works internally for the
purpose of building, developing, testing, marketing, offering for sale and
selling commercial products and services to third parties.  Wherever possible,
you will take reasonable precautions to ensure Works remain accessible only to
ONF Members, and any commercial product or service requiring redistribution of
the Works, of modifications of the Works or of derivatives of the Works must be
made solely in binary machine code form where possible to further this aim.

Partners-level Members gaining additional insights as a result of accessing and
using the Works for commercial products and services are expected to provide
feedback to and to make contributions to the project for the benefit of both
the project and the general membership.

You may verify your company's Partner-level membership status on the ONF
website at: https://www.opennetworking.org/member-listing/.

4.1 GRACE PERIOD FOR NON-PARTNER-LEVEL MEMBERS

If you are not a Partner-level Member and you wish to benefit from the rights
granted to ONF Partners in Section 4, you have a 90-day grace period from the
day you first access the Works to upgrade to a Partner-Level ONF Membership.
Should you upgrade within this grace period, you will be recognized as if you
had been a Partner on the day you first accessed the Works for the purpose of
interpreting your rights under Section 4.

5. RESTRICTIONS.

By accessing or using the Works, you represent, warrant, and covenant that you
and/or the entity on whose behalf you are accessing the Works is a Member in
good standing of ONF.

You acknowledge that, except for the limited rights expressly set forth above,
the foregoing licenses do not include any right to, and you agree not to (i)
redistribute, sell, lease, license, modify or otherwise create any derivative
works of any portion of the Works, or (ii) distribute, deploy, or otherwise
utilize the Works or Applications for any public, production, commercial, or
other similar purpose other than internal use for evaluation and development of
contributions to the code repository for the applicable project maintained by
ONF and non-public, experimental Applications.

Except as expressly provided herein, you may not (w) reproduce, distribute,
publicly display, or publicly perform any part of the Works, (x) decompile,
reverse engineer, or otherwise access or attempt to access source code not made
available to you in source code form, (y) make or attempt to make any
modification to, or otherwise create any derivative works of, the Works; or (z)
remove, obscure, interfere with or circumvent any feature of the Works,
including without limitation any copyright or other intellectual property
notices, security, or access control mechanism. You agree that you will not use
the Works to do anything illegal, including facilitating, promoting, or
otherwise encouraging any illegal activities.

You represent and warrant that the Works will not be shipped, transferred or
exported into any country or used in any manner prohibited by the United States
Export Administration Act or any other export laws, restrictions or regulations
(collectively the "Export Laws"). In addition, if the Works are identified as
an export controlled item under the Export Laws, you represent and warrant that
you are not a citizen, or otherwise located within, an embargoed nation
(including without limitation Crimea, Cuba, Iran, North Korea, Sudan, or Syria)
and that you are not otherwise prohibited under the Export Laws from receiving
the Works.

ANY USE IN VIOLATION OF THE FOREGOING LIMITATIONS AND RESTRICTIONS IS STRICTLY
PROHIBITED, AND UNLICENSED.

6. RESERVATION OF RIGHTS.

The Works are owned by ONF and/or its licensors, and are licensed, not sold, to
you. The Works are protected by copyright, trade dress, patent, and trademark
laws of the United States and other jurisdictions, international conventions,
and all other relevant intellectual property and proprietary rights, and
applicable laws (collectively, the "Intellectual Property Rights"). You agree
that ONF or its subsidiaries or affiliated companies and/or its licensors own
all legal right, title and interest in and to the Works, including any and all
Intellectual Property Rights. ONF reserves all rights not expressly granted in
this License. You do not acquire any right, title or interest to the Works,
whether by implication, estoppel, or otherwise, except for the limited rights
set forth in this License.

You agree that the form and nature of the Works that ONF provides may change
without prior notice to you and that future versions of the Works may be
incompatible with applications developed using previous versions of the Works.
You agree that ONF may stop (permanently or temporarily) providing the Works
(or any features within the Works) to you or to users generally at ONF's sole
discretion, without prior notice to you. Nothing in this License gives you a
right to use any of ONF's trade names, trademarks, service marks, logos, domain
names, or other distinctive brand features.

7. PURPOSE AND USE.

You agree that you will not engage in any activity with the Works, including
the development or distribution of an Application that interferes with,
disrupts, damages, or accesses in an unauthorized manner the servers, networks,
or other properties or services of any third party. You agree that you are
solely responsible for (and that ONF has no responsibility to you or to any
third party for) any data, content, or resources that you create, transmit or
display. You agree that you are solely responsible for (and that ONF has no
responsibility to you or to any third party for) any breach of your obligations
under this License, any applicable third party contract or terms of service, or
any applicable law or regulation, and for the consequences (including any loss
or damage which ONF or any third party may suffer) of any such breach.

8. FEEDBACK; CONTRIBUTIONS.

If you provide ONF with any comments, bug reports, feedback, enhancements, or
modifications proposed or suggested by you for the Works ("Feedback"), such
Feedback will be submitted as a Contribution to the applicable project
maintained by ONF under the terms and conditions of a Contributor License
Agreement between you and ONF, is provided on a non-confidential basis
(notwithstanding any notice to the contrary you may include in any accompanying
communication), and ONF shall have the right to use such Feedback at its
discretion, including, but not limited to the incorporation of such Feedback
into the Works and any final code base that may be derived from the Works.

9. TERMINATION OF THIS LICENSE.

This License will continue to apply until terminated by either you or ONF as
set out below. If you want to terminate this License, you may do so by ceasing
your use of the Works. If you cease being a Member in good standing of ONF,
this License will terminate automatically and without further notice to you.
ONF may at any time terminate this License: (a) if you have breached any
provision of this License; or (b) at ONF's convenience.  When this License
comes to an end, except as otherwise set forth in this paragraph 9, all of the
legal rights, obligations and liabilities that you and ONF have benefited from,
been subject to (or which have accrued over time while this License has been in
force) or which are expressed to continue indefinitely, shall be unaffected by
this cessation, and paragraphs 1, 2 and 5 through 14 shall continue to apply to
such rights, obligations and liabilities indefinitely.  In addition, unless
this License is terminated by ONF as a result of your breach of any provision
of this License, Partner-level Members entitled to the benefits of Section 4 of
this License shall also retain all rights granted by Section 4 so as long as
you remain a Partner-level Member in good standing.

10. DISCLAIMER OF WARRANTIES.

YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE WORKS IS AT YOUR SOLE
RISK AND THAT THE WORKS ARE PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT
WARRANTY OF ANY KIND FROM ONF. YOUR USE OF THE WORKS IS AT YOUR OWN DISCRETION
AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM
OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE. ONF FURTHER
EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ONF
EXPRESSLY DISCLAIMS ANY WARRANTIES OF ANY KIND WITH RESPECT TO THE ACCURACY OR
FUNCTIONALITY OF THE WORKS, AND WITH RESPECT TO THE ACCURACY, VALIDITY, OR
COMPLETENESS OF ANY INFORMATION OR FEATURES AVAILABLE THROUGH THE WORKS, OR THE
QUALITY OR CONSISTENCY OF THE WORKS OR RESULTS OBTAINED THROUGH THEIR USE.

11. LIMITATION OF LIABILITY.

YOU EXPRESSLY UNDERSTAND AND AGREE THAT ONF, ITS SUBSIDIARIES AND AFFILIATES,
AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES
THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT ONF OR
ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE
POSSIBILITY OF ANY SUCH LOSSES. IN NO EVENT WILL ONF'S AGGREGATE LIABILITY FOR
DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE WORKS EXCEED THE GREATER
OF AMOUNTS PAID BY YOU FOR THE WORKS, IF ANY.

12. INDEMNIFICATION.

To the maximum extent permitted by law, you agree to defend, indemnify and hold
harmless ONF, its affiliates and their respective directors, officers,
employees and agents from and against any and all claims, actions, suits or
proceedings, as well as any and all losses, liabilities, damages, costs and
expenses (including reasonable attorneys' fees) arising out of or accruing from
(a) your use of the Works, (b) any Application or (for Partner-level Members)
commercial product or service you develop using the Works that infringes any
copyright, trademark, trade secret, trade dress, patent or other intellectual
property right of any person, and (c) any non-compliance by you with this
License or any applicable law or regulation.

13. CHANGES TO THIS LICENSE.

ONF may make changes to this License as it distributes new versions of the
Works. When these changes are made, ONF will make a new version of this License
available on the ONF website.

14. MISCELLANEOUS TERMS.

This License constitutes the entire legal agreement between you and ONF with
regard to your access and use of the Works, and governs your access and use of
the Works and completely supersedes any prior agreements between you and ONF in
relation to the Works, except for any Contributor License Agreement you may
have executed with ONF. You agree that if ONF does not exercise or enforce any
legal right or remedy which is contained in this License (or which ONF has the
benefit of under any applicable law), this will not be taken to be a formal
waiver of ONF's rights and that those rights or remedies will still be
available to ONF. If any court of law, having the jurisdiction to decide on
this matter, rules that any provision of this License is invalid, then that
provision will be removed from this License without affecting the rest of this
License. The remaining provisions of this License will continue to be valid and
enforceable so long as this License, as so modified, does not substantially
impair the respective expectations or reciprocal obligations of the parties.
The rights granted in this License may not be assigned or transferred by you
without the prior written approval of ONF. You shall not be permitted to
delegate your responsibilities or obligations under this License without the
prior written approval of ONF.
