diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..3f83a059 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +github: [Ysurac] +patreon: Ycarus +custom: https://www.paypal.me/ycarus diff --git a/.github/ISSUE_TEMPLATE/enhancement.md b/.github/ISSUE_TEMPLATE/enhancement.md new file mode 100644 index 00000000..c49f9c4c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/enhancement.md @@ -0,0 +1,17 @@ +--- +name: Enhancement +about: Suggest enhancements +labels: enhancement +--- + +**Is your enhancement proposal related to a problem? Please describe.** + + +**Describe the solution you'd like** + + +**Describe alternatives you've considered** + + +**Additional context** + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..d8dca141 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: feature request +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** + + +**Describe the solution you'd like** + + +**Describe alternatives you've considered** + + +**Additional context** + diff --git a/.github/ISSUE_TEMPLATE/hardware_support.md b/.github/ISSUE_TEMPLATE/hardware_support.md new file mode 100644 index 00000000..a83d685f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/hardware_support.md @@ -0,0 +1,17 @@ +--- +name: Hardware Support +about: Suggest adding hardware support +title: '' +labels: hardware support +assignees: '' + +--- + +**Is this request related to a missing driver support for a particular hardware platform, SoC or board? Please describe.** + + +**Describe why you are asking for this support?** + + +**Additional context** + diff --git a/.github/ISSUE_TEMPLATE/help.md b/.github/ISSUE_TEMPLATE/help.md new file mode 100644 index 00000000..f4d56394 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/help.md @@ -0,0 +1,24 @@ +--- +name: Help wanted +about: Help needed for configuration/installation of OpenMPTCProuter +labels: help wanted +--- + + +## Expected Behavior + + + +## Current Behavior + + + + +## Specifications + + - OpenMPTCProuter version: + - OpenMPTCProuter VPS version: + - OpenMPTCProuter VPS provider: + - OpenMPTCProuter platform: + + \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/issue.md b/.github/ISSUE_TEMPLATE/issue.md new file mode 100644 index 00000000..c59b9c05 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/issue.md @@ -0,0 +1,42 @@ +--- +name: Bug report +about: Create a report to help us improve OpenMPTCProuter +labels: bug +--- + + +## Expected Behavior + + + +## Current Behavior + + + + +## Possible Solution + + + +## Steps to Reproduce the Problem + + 1. + 2. + 3. + +## Context (Environment) + + + + + + +## Specifications + + - OpenMPTCProuter version: + - OpenMPTCProuter VPS version: + - OpenMPTCProuter VPS provider: + - OpenMPTCProuter platform: + - Country: + + diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md new file mode 100644 index 00000000..96784e03 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.md @@ -0,0 +1,6 @@ +--- +name: Create a question +about: Ask a general question, not related to an OpenMPTCProuter install +labels: question +--- + \ No newline at end of file diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..0f4d1da6 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,5 @@ +Thanks for your contribution to OpenMPTCProuter! + +You need to follow contributing rules. + +Please remove this message before posting the pull request. diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 00000000..7c2090c3 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,20 @@ +name: Mark stale issues and pull requests + +on: + push: + schedule: + - cron: "0 19 * * *" + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v3.0.10 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: "This issue is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 5 days" + stale-pr-message: 'It has been open 90 days with no activity. Remove stale label or comment or this will be closed in 5 days' + days-before-stale: 90 + days-before-close: 5 + exempt-issue-labels: 'work-in-progress,enhancement' + exempt-pr-labels: 'work-in-progress,enhancement' diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..2d93d211 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +*.o +.DS_Store +.*.swp +/env +/dl +/.config +/.config.old +/bin +/build_dir +/staging_dir +/tmp +/logs +/feeds +/feeds.conf +/files +/overlay +/package/feeds +/package/openwrt-packages +key-build* +*.orig +*.rej +*~ +.#* +*# +.emacs.desktop* +TAGS*~ +git-src +.git-credentials +/*.log diff --git a/CLA-entity.md b/CLA-entity.md new file mode 100644 index 00000000..43eb3cfe --- /dev/null +++ b/CLA-entity.md @@ -0,0 +1,82 @@ +OpenMPTCProuter Entity Contributor License Agreement +================================================== + +Thank you for your interest in contributing to OpenMPTCProuter ("We" or "Us"). + +This contributor agreement ("Agreement") documents the rights granted by contributors to Us. To make this document effective, please submit a pull request with a file under the `/contributors` directory indicating your acceptance of this agreement. + +This is a legally binding document, so please read it carefully before agreeing to it. The Agreement may cover more than one software project managed by Us. + +## 1. Definitions + +"You" means any Legal Entity on behalf of whom a Contribution has been received by Us. "Legal Entity" means an entity which is not a natural person. "Affiliates" means other Legal Entities that control, are controlled by, or under common control with that Legal Entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such Legal Entity, whether by contract or otherwise, (ii) ownership of fifty percent (50%) or more of the outstanding shares or securities which vote to elect the management or other persons who direct such Legal Entity or (iii) beneficial ownership of such entity. + +"Contribution" means any work of authorship that is Submitted by You to Us in which You own or assert ownership of the Copyright. If You do not own the Copyright in the entire work of authorship, please follow the instructions in . + +"Copyright" means all rights protecting works of authorship owned or controlled by You or Your Affiliates, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence including any extensions by You. + +"Material" means the work of authorship which is made available by Us to third parties. When this Agreement covers more than one software project, the Material means the work of authorship to which the Contribution was Submitted. After You Submit the Contribution, it may be included in the Material. + +"Submit" means any form of electronic, verbal, or written communication sent to Us or our representatives, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, Us for the purpose of discussing and improving the Material, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution." + +"Submission Date" means the date on which You Submit a Contribution to Us. + +"Effective Date" means the date You execute this Agreement or the date You first Submit a Contribution to Us, whichever is earlier. + +## 2. Grant of Rights + +2.1 Copyright License + +(a) You retain ownership of the Copyright in Your Contribution and have the same rights to use or license the Contribution which You would have had without entering into the Agreement. + +(b) To the maximum extent permitted by the relevant law, You grant to Us a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license under the Copyright covering the Contribution, with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform and distribute the Contribution as part of the Material; provided that this license is conditioned upon compliance with Section 2.3. + +2.2 Patent License + +For patent claims including, without limitation, method, process, and apparatus claims which You or Your Affiliates own, control or have the right to grant, now or in the future, You grant to Us a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable patent license, with the right to sublicense these rights to multiple tiers of sublicensees, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with the Material (and portions of such combination). This license is granted only to the extent that the exercise of the licensed rights infringes such patent claims; and provided that this license is conditioned upon compliance with Section 2.3. + +2.3 Outbound License + +Based on the grant of rights in Sections 2.1 and 2.2, if We include Your Contribution in a Material, We may license the Contribution under any license, including copyleft, permissive, commercial, or proprietary licenses. As a condition on the exercise of this right, We agree to also license the Contribution under the terms of the license or licenses which We are using for the Material on the Submission Date. + +2.4 Moral Rights. If moral rights apply to the Contribution, to the maximum extent permitted by law, You waive and agree not to assert such moral rights against Us or our successors in interest, or any of our licensees, either direct or indirect. + +2.5 Our Rights. You acknowledge that We are not obligated to use Your Contribution as part of the Material and may decide to include any Contribution We consider appropriate. + +2.6 Reservation of Rights. Any rights not expressly licensed under this section are expressly reserved by You. + +## 3. Agreement + +You confirm that: + +(a) You have the legal authority to enter into this Agreement. + +(b) You or Your Affiliates own the Copyright and patent claims covering the Contribution which are required to grant the rights under Section 2. + +(c) The grant of rights under Section 2 does not violate any grant of rights which You or Your Affiliates have made to third parties. + +(d) You have followed the instructions in , if You do not own the Copyright in the entire work of authorship Submitted. + +## 4. Disclaimer + +EXCEPT FOR THE EXPRESS WARRANTIES IN SECTION 3, THE CONTRIBUTION IS PROVIDED "AS IS". MORE PARTICULARLY, ALL EXPRESS OR IMPLIED WARRANTIES INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED BY YOU TO US. TO THE EXTENT THAT ANY SUCH WARRANTIES CANNOT BE DISCLAIMED, SUCH WARRANTY IS LIMITED IN DURATION TO THE MINIMUM PERIOD PERMITTED BY LAW. + +## 5. Consequential Damage Waiver + +TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL YOU BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF ANTICIPATED SAVINGS, LOSS OF DATA, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL AND EXEMPLARY DAMAGES ARISING OUT OF THIS AGREEMENT REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH THE CLAIM IS BASED. + +## 6. Miscellaneous + +6.1 This Agreement will be governed by and construed in accordance with the laws of excluding its conflicts of law provisions. Under certain circumstances, the governing law in this section might be superseded by the United Nations Convention on Contracts for the International Sale of Goods ("UN Convention") and the parties intend to avoid the application of the UN Convention to this Agreement and, thus, exclude the application of the UN Convention in its entirety to this Agreement. + +6.2 This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings. + +6.3 If You or We assign the rights or obligations received through this Agreement to a third party, as a condition of the assignment, that third party must agree in writing to abide by all the rights and obligations in the Agreement. + +6.4 The failure of either party to require performance by the other party of any provision of this Agreement in one situation shall not affect the right of a party to require such performance at any time in the future. A waiver of performance under a provision in one situation shall not be considered a waiver of the performance of the provision in the future or a waiver of the provision in its entirety. + +6.5 If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and which is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law. + +This agreement is derived from the Project Harmony CLA generator: +http://www.harmonyagreements.org/ +Harmony (HA-CLA-E-ANY) Version 1.0 diff --git a/CLA-individual.md b/CLA-individual.md new file mode 100644 index 00000000..bbbba134 --- /dev/null +++ b/CLA-individual.md @@ -0,0 +1,83 @@ +OpenMPTCProuter Individual Contributor License Agreement +====================================================== + +Thank you for your interest in contributing to OpenMPTCProuter ("We" or "Us"). + +This contributor agreement ("Agreement") documents the rights granted by contributors to Us. To make this document effective, please submit a pull request with a file under the `/contributors` directory indicating your acceptance of this agreement. + +This is a legally binding document, so please read it carefully before agreeing to it. The Agreement may cover more than one software project managed by Us. + +## 1. Definitions + +"You" means the individual who Submits a Contribution to Us. + +"Contribution" means any work of authorship that is Submitted by You to Us in which You own or assert ownership of the Copyright. If You do not own the Copyright in the entire work of authorship, please follow the instructions in . + +"Copyright" means all rights protecting works of authorship owned or controlled by You, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence including any extensions by You. + +"Material" means the work of authorship which is made available by Us to third parties. When this Agreement covers more than one software project, the Material means the work of authorship to which the Contribution was Submitted. After You Submit the Contribution, it may be included in the Material. + +"Submit" means any form of electronic, verbal, or written communication sent to Us or our representatives, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, Us for the purpose of discussing and improving the Material, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution." + +"Submission Date" means the date on which You Submit a Contribution to Us. + +"Effective Date" means the date You execute this Agreement or the date You first Submit a Contribution to Us, whichever is earlier. + +## 2. Grant of Rights + +2.1 Copyright License + +(a) You retain ownership of the Copyright in Your Contribution and have the same rights to use or license the Contribution which You would have had without entering into the Agreement. + +(b) To the maximum extent permitted by the relevant law, You grant to Us a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license under the Copyright covering the Contribution, with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform and distribute the Contribution as part of the Material; provided that this license is conditioned upon compliance with Section 2.3. + +2.2 Patent License + +For patent claims including, without limitation, method, process, and apparatus claims which You own, control or have the right to grant, now or in the future, You grant to Us a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable patent license, with the right to sublicense these rights to multiple tiers of sublicensees, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with the Material (and portions of such combination). This license is granted only to the extent that the exercise of the licensed rights infringes such patent claims; and provided that this license is conditioned upon compliance with Section 2.3. + +2.3 Outbound License + +Based on the grant of rights in Sections 2.1 and 2.2, if We include Your Contribution in a Material, We may license the Contribution under any license, including copyleft, permissive, commercial, or proprietary licenses. As a condition on the exercise of this right, We agree to also license the Contribution under the terms of the license or licenses which We are using for the Material on the Submission Date. + +2.4 Moral Rights. If moral rights apply to the Contribution, to the maximum extent permitted by law, You waive and agree not to assert such moral rights against Us or our successors in interest, or any of our licensees, either direct or indirect. + +2.5 Our Rights. You acknowledge that We are not obligated to use Your Contribution as part of the Material and may decide to include any Contribution We consider appropriate. + +2.6 Reservation of Rights. Any rights not expressly licensed under this section are expressly reserved by You. + +3. Agreement + +You confirm that: + +(a) You have the legal authority to enter into this Agreement. + +(b) You own the Copyright and patent claims covering the Contribution which are required to grant the rights under Section 2. + +(c) The grant of rights under Section 2 does not violate any grant of rights which You have made to third parties, including Your employer. If You are an employee, You have had Your employer approve this Agreement or sign the Entity version of this document. If You are less than eighteen years old, please have Your parents or guardian sign the Agreement. + +(d) You have followed the instructions in , if You do not own the Copyright in the entire work of authorship Submitted. + +## 4. Disclaimer + +EXCEPT FOR THE EXPRESS WARRANTIES IN SECTION 3, THE CONTRIBUTION IS PROVIDED "AS IS". MORE PARTICULARLY, ALL EXPRESS OR IMPLIED WARRANTIES INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED BY YOU TO US. TO THE EXTENT THAT ANY SUCH WARRANTIES CANNOT BE DISCLAIMED, SUCH WARRANTY IS LIMITED IN DURATION TO THE MINIMUM PERIOD PERMITTED BY LAW. + +## 5. Consequential Damage Waiver + +TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL YOU BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF ANTICIPATED SAVINGS, LOSS OF DATA, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL AND EXEMPLARY DAMAGES ARISING OUT OF THIS AGREEMENT REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH THE CLAIM IS BASED. + +## 6. Miscellaneous + +6.1 This Agreement will be governed by and construed in accordance with the laws of excluding its conflicts of law provisions. Under certain circumstances, the governing law in this section might be superseded by the United Nations Convention on Contracts for the International Sale of Goods ("UN Convention") and the parties intend to avoid the application of the UN Convention to this Agreement and, thus, exclude the application of the UN Convention in its entirety to this Agreement. + +6.2 This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings. + +6.3 If You or We assign the rights or obligations received through this Agreement to a third party, as a condition of the assignment, that third party must agree in writing to abide by all the rights and obligations in the Agreement. + +6.4 The failure of either party to require performance by the other party of any provision of this Agreement in one situation shall not affect the right of a party to require such performance at any time in the future. A waiver of performance under a provision in one situation shall not be considered a waiver of the performance of the provision in the future or a waiver of the provision in its entirety. + +6.5 If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and which is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law. + +This agreement is derived from the Project Harmony CLA generator: +http://www.harmonyagreements.org/ +Harmony (HA-CLA-I-ANY) Version 1.0 + diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..05fbbc85 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,74 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at contact@openmptcprouter.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..83235db7 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,5 @@ +Contribution + +When submitting a pull request for the first time, you will need to agree to the contributor license agreement (for individuals or entities). To do this, in the pull request please create a file with a name like /contributors/{github_username}.md, and in the content of that file indicate your agreement. An example of what that file should contain can be seen in example agreement file. + +(This method of CLA "signing" is borrowed from Medium's open source project.) diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..9cecc1d4 --- /dev/null +++ b/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. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + 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: + + {project} Copyright (C) {year} {fullname} + 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/README.md b/README.md new file mode 100644 index 00000000..ed21fbcd --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +![openmptcprouter](https://github.com/Ysurac/openmptcprouter-feeds/workflows/openmptcprouter/badge.svg) +![Latest tag](https://img.shields.io/github/tag/ysurac/openmptcprouter-feeds.svg) +[![Paypal](https://www.openmptcprouter.com/img/donate-PayPal-green.svg)](https://www.paypal.me/ycarus) +[![Flattr](https://www.openmptcprouter.com/img/donate-flattr-yellow.svg)](https://flattr.com/@ycarus) +[![Liberapay](https://img.shields.io/liberapay/patrons/Moul.svg?logo=liberapay)](https://liberapay.com/Ycarus/) +[![LinkedIn](https://www.openmptcprouter.com/img/linkedin.png)](https://www.linkedin.com/in/yannick-chabanois-550330146/) +[![Twitter](https://www.openmptcprouter.com/img/twitter.jpg)](https://twitter.com/OpenMPTCProuter) +[![Atom](https://www.openmptcprouter.com/img/feed.png)](https://www.openmptcprouter.com/atom) + +# OpenMPTCProuter + +OpenMPTCProuter is an open source solution to aggregate and encrypt multiple internet connections and terminates it over any VPS which make clients benefit security, reliability, net neutrality, as well as dedicated public IP. + +The aggregation is based on Multipath TCP (MPTCP), which is ISP, WAN type, and latency independent "whether it was Fiber, VDSL, SHDSL, ADSL, 4G or even 5G", different scenarios can be configured to have either aggregation or failover based on MPTCP. + +Aggregation via [Multi-link VPN (MLVPN)](https://github.com/markfoodyburton/MLVPN/commits/new-reorder) and [Glorytun UDP](https://github.com/angt/glorytun) with multipath support are also supported. + +The solution takes advantage of the OpenWRT/LEDE system, which is user friendly and also adds the possibility of installing other packages like VPN, QoS, routing protocols, monitoring, etc. through web-interface or terminal. + + +Main website: [https://www.openmptcprouter.com/](https://www.openmptcprouter.com/) + +Packages made for OpenMPTCProuter are available here: [https://github.com/Ysurac/openmptcprouter-feeds](https://github.com/Ysurac/openmptcprouter-feeds) + +OpenMPTCProuter VPS script part: [https://github.com/Ysurac/openmptcprouter-vps](https://github.com/Ysurac/openmptcprouter-vps) + + +## Install from pre-compiled images + +You can download precompiled images from [https://www.openmptcprouter.com/](https://www.openmptcprouter.com/) + +Then copy it to a sdcard: + +```sh +gunzip omr-*.img.gz +dd bs=4M if=omr-*.img of=/dev/sdX conv=fsync +``` + +## Install from source + +[Create image](https://github.com/Ysurac/openmptcprouter/wiki/Create-image-for-unsupported-platform) + + +## Credits + +Our solution is mainly based on: + +* [OpenWRT](https://openwrt.org) +* [MultiPath TCP (MPTCP)](https://multipath-tcp.org) +* [Shadowsocks](https://shadowsocks.org) +* [Glorytun](https://github.com/angt/glorytun) \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100644 index 00000000..d82fcef5 --- /dev/null +++ b/build.sh @@ -0,0 +1,626 @@ +#!/bin/sh +# +# Copyright (C) 2017 OVH OverTheBox +# Copyright (C) 2017-2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter project +# +# This is free software, licensed under the GNU General Public License v3. +# See /LICENSE for more information. +# + +set -e + +umask 0022 +unset GREP_OPTIONS SED + +_get_repo() ( + mkdir -p "$1" + cd "$1" + [ -d .git ] || git init + if git remote get-url origin >/dev/null 2>/dev/null; then + git remote set-url origin "$2" + else + git remote add origin "$2" + fi + git fetch origin -f + git fetch origin --tags -f + git checkout -f "origin/$3" -B "build" 2>/dev/null || git checkout "$3" -B "build" +) + +OMR_DIST=${OMR_DIST:-openmptcprouter} +OMR_HOST=${OMR_HOST:-$(curl -sS ifconfig.co)} +OMR_PORT=${OMR_PORT:-80} +OMR_KEEPBIN=${OMR_KEEPBIN:-no} +OMR_IMG=${OMR_IMG:-yes} +#OMR_UEFI=${OMR_UEFI:-yes} +OMR_PACKAGES=${OMR_PACKAGES:-full} +OMR_ALL_PACKAGES=${OMR_ALL_PACKAGES:-no} +OMR_TARGET=${OMR_TARGET:-x86_64} +OMR_TARGET_CONFIG="config-$OMR_TARGET" +UPSTREAM=${UPSTREAM:-no} +OMR_KERNEL=${OMR_KERNEL:-5.4} +SHORTCUT_FE=${SHORTCUT_FE:-no} +#OMR_RELEASE=${OMR_RELEASE:-$(git describe --tags `git rev-list --tags --max-count=1` | sed 's/^\([0-9.]*\).*/\1/')} +#OMR_RELEASE=${OMR_RELEASE:-$(git tag --sort=committerdate | tail -1)} +OMR_RELEASE=${OMR_RELEASE:-$(git describe --tags `git rev-list --tags --max-count=1` | tail -1 | cut -d '-' -f1)} +OMR_REPO=${OMR_REPO:-http://$OMR_HOST:$OMR_PORT/release/$OMR_RELEASE/$OMR_TARGET} + +OMR_FEED_URL="${OMR_FEED_URL:-https://github.com/suyuan168/openmptcprouter-feeds}" +OMR_FEED_SRC="${OMR_FEED_SRC:-develop}" + +CUSTOM_FEED_URL="${CUSTOM_FEED_URL}" + +OMR_OPENWRT=${OMR_OPENWRT:-default} + +OMR_FORCE_DSA=${OMR_FORCE_DSA:-0} + +if [ ! -f "$OMR_TARGET_CONFIG" ]; then + echo "Target $OMR_TARGET not found !" + #exit 1 +fi + +if [ "$OMR_TARGET" = "rpi3" ]; then + OMR_REAL_TARGET="aarch64_cortex-a53" +elif [ "$OMR_TARGET" = "rpi4" ]; then + OMR_REAL_TARGET="aarch64_cortex-a72" +elif [ "$OMR_TARGET" = "rpi2" ]; then + OMR_REAL_TARGET="arm_cortex-a7_neon-vfpv4" +elif [ "$OMR_TARGET" = "wrt3200acm" ]; then + OMR_REAL_TARGET="arm_cortex-a9_vfpv3-d16" +elif [ "$OMR_TARGET" = "wrt32x" ]; then + OMR_REAL_TARGET="arm_cortex-a9_vfpv3-d16" +elif [ "$OMR_TARGET" = "bpi-r1" ]; then + OMR_REAL_TARGET="arm_cortex-a7_neon-vfpv4" +elif [ "$OMR_TARGET" = "bpi-r2" ]; then + OMR_REAL_TARGET="arm_cortex-a7_neon-vfpv4" +elif [ "$OMR_TARGET" = "bpi-r64" ]; then + OMR_REAL_TARGET="aarch64_cortex-a53" +elif [ "$OMR_TARGET" = "espressobin" ]; then + OMR_REAL_TARGET="aarch64_cortex-a53" +elif [ "$OMR_TARGET" = "x86" ]; then + OMR_REAL_TARGET="i386_pentium4" +elif [ "$OMR_TARGET" = "r2s" ]; then + OMR_REAL_TARGET="aarch64_generic" +elif [ "$OMR_TARGET" = "r4s" ]; then + OMR_REAL_TARGET="aarch64_generic" +elif [ "$OMR_TARGET" = "ubnt-erx" ]; then + OMR_REAL_TARGET="mipsel_24kc" +else + OMR_REAL_TARGET=${OMR_TARGET} +fi + +#_get_repo source https://github.com/ysurac/openmptcprouter-source "master" +if [ "$OMR_OPENWRT" = "default" ]; then + if [ "$OMR_KERNEL" = "5.4" ]; then + # Use OpenWrt 21.02 for 5.4 kernel + _get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "f441be3921c769b732f0148f005d4f1bbace0508" + _get_repo feeds/packages https://github.com/openwrt/packages "3aa30ceee4fcf7b131bdc0f98658391069573e12" + _get_repo feeds/luci https://github.com/openwrt/luci "f28aaa35cd5c0cbbe59d8cc6a67de88ceeac382e" + else + _get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "585cef5f1a9c1c3aecd7d231364618e96d03ab65" + _get_repo feeds/packages https://github.com/openwrt/packages "e2055b5433da245e6ff8fb060d018d036499cf38" + _get_repo feeds/luci https://github.com/openwrt/luci "7c943a1d6bcf449019ca8a43e800e51f269bb8f6" + fi +elif [ "$OMR_OPENWRT" = "master" ]; then + _get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "master" + _get_repo feeds/packages https://github.com/openwrt/packages "master" + _get_repo feeds/luci https://github.com/openwrt/luci "master" +else + _get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "${OMR_OPENWRT}" + _get_repo feeds/packages https://github.com/openwrt/packages "${OMR_OPENWRT}" + _get_repo feeds/luci https://github.com/openwrt/luci "${OMR_OPENWRT}" +fi + +if [ -z "$OMR_FEED" ]; then + OMR_FEED=feeds/openmptcprouter + _get_repo "$OMR_FEED" "$OMR_FEED_URL" "$OMR_FEED_SRC" +fi + +if [ -n "$CUSTOM_FEED_URL" ] && [ -z "$CUSTOM_FEED" ]; then + CUSTOM_FEED=feeds/${OMR_DIST} + _get_repo "$CUSTOM_FEED" "$CUSTOM_FEED_URL" "master" +fi + +if [ -n "$1" ] && [ -f "$OMR_FEED/$1/Makefile" ]; then + OMR_DIST=$1 + shift 1 +fi + +if [ "$OMR_KEEPBIN" = "no" ]; then + rm -rf "$OMR_TARGET/source/bin" +fi +rm -rf "$OMR_TARGET/source/files" "$OMR_TARGET/source/tmp" +#rm -rf "$OMR_TARGET/source/target/linux/mediatek/patches-4.14" +cp -rf root/* "$OMR_TARGET/source" + +cat >> "$OMR_TARGET/source/package/base-files/files/etc/banner" < "$OMR_TARGET/source/feeds.conf" <> "$OMR_TARGET/source/feeds.conf" +fi + +if [ "$OMR_DIST" = "openmptcprouter" ]; then + cat > "$OMR_TARGET/source/package/system/opkg/files/customfeeds.conf" <<-EOF + src/gz openwrt_luci http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/luci + src/gz openwrt_packages http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/packages + src/gz openwrt_base http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/base + src/gz openwrt_routing http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/routing + src/gz openwrt_telephony http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/telephony + EOF +elif [ -n "$OMR_PACKAGES_URL" ]; then + cat > "$OMR_TARGET/source/package/system/opkg/files/customfeeds.conf" <<-EOF + src/gz openwrt_luci ${OMR_PACKAGES_URL}/${OMR_RELEASE}/${OMR_REAL_TARGET}/luci + src/gz openwrt_packages ${OMR_PACKAGES_URL}/${OMR_RELEASE}/${OMR_REAL_TARGET}/packages + src/gz openwrt_base ${OMR_PACKAGES_URL}/${OMR_RELEASE}/${OMR_REAL_TARGET}/base + src/gz openwrt_routing ${OMR_PACKAGES_URL}/${OMR_RELEASE}/${OMR_REAL_TARGET}/routing + src/gz openwrt_telephony ${OMR_PACKAGES_URL}/${OMR_RELEASE}/${OMR_REAL_TARGET}/telephony + EOF +else + cat > "$OMR_TARGET/source/package/system/opkg/files/customfeeds.conf" <<-EOF + src/gz openwrt_luci http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/luci + src/gz openwrt_packages http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/packages + src/gz openwrt_base http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/base + src/gz openwrt_routing http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/routing + src/gz openwrt_telephony http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/telephony + EOF +fi +#cat > "$OMR_TARGET/source/package/system/opkg/files/customfeeds.conf" < "$OMR_TARGET/source/.config" <<-EOF + CONFIG_IMAGEOPT=y + CONFIG_VERSIONOPT=y + CONFIG_VERSION_DIST="$OMR_DIST" + CONFIG_VERSION_REPO="$OMR_REPO" + CONFIG_VERSION_NUMBER="$(git -C "$OMR_FEED" tag --sort=committerdate | tail -1)" + EOF +else + cat config -> "$OMR_TARGET/source/.config" <<-EOF + CONFIG_IMAGEOPT=y + CONFIG_VERSIONOPT=y + CONFIG_VERSION_DIST="$OMR_DIST" + CONFIG_VERSION_REPO="$OMR_REPO" + CONFIG_VERSION_NUMBER="$(git -C "$OMR_FEED" tag --sort=committerdate | tail -1)-$(git -C "$OMR_FEED" rev-parse --short HEAD)" + EOF +fi +#if [ "$OMR_KERNEL" = "5.14" ]; then +# echo 'CONFIG_KERNEL_GIT_CLONE_URI="https://github.com/multipath-tcp/mptcp_net-next.git"' >> "$OMR_TARGET/source/.config" +# echo 'CONFIG_KERNEL_GIT_REF="78828adaef8fe9b69f9a8c4b60f74b01c5a31c7a"' >> "$OMR_TARGET/source/.config" +#fi +if [ "$OMR_ALL_PACKAGES" = "yes" ]; then + echo 'CONFIG_ALL=y' >> "$OMR_TARGET/source/.config" + echo 'CONFIG_ALL_NONSHARED=y' >> "$OMR_TARGET/source/.config" +fi +if [ "$OMR_IMG" = "yes" ] && [ "$OMR_TARGET" = "x86_64" ]; then + echo 'CONFIG_VDI_IMAGES=y' >> "$OMR_TARGET/source/.config" + echo 'CONFIG_VMDK_IMAGES=y' >> "$OMR_TARGET/source/.config" + echo 'CONFIG_VHDX_IMAGES=y' >> "$OMR_TARGET/source/.config" +fi + +if [ "$OMR_PACKAGES" = "full" ]; then + echo "CONFIG_PACKAGE_${OMR_DIST}-full=y" >> "$OMR_TARGET/source/.config" +fi +if [ "$OMR_PACKAGES" = "mini" ]; then + echo "CONFIG_PACKAGE_${OMR_DIST}-mini=y" >> "$OMR_TARGET/source/.config" +fi + +if [ "$SHORTCUT_FE" = "yes" ] && [ "$OMR_KERNEL" != "5.14" ]; then + echo "# CONFIG_PACKAGE_kmod-fast-classifier is not set" >> "$OMR_TARGET/source/.config" + echo "CONFIG_PACKAGE_kmod-fast-classifier-noload=y" >> "$OMR_TARGET/source/.config" + echo "CONFIG_PACKAGE_kmod-shortcut-fe-cm=y" >> "$OMR_TARGET/source/.config" + echo "CONFIG_PACKAGE_kmod-shortcut-fe=y" >> "$OMR_TARGET/source/.config" +else + echo "# CONFIG_PACKAGE_kmod-fast-classifier is not set" >> "$OMR_TARGET/source/.config" + echo "# CONFIG_PACKAGE_kmod-fast-classifier-noload is not set" >> "$OMR_TARGET/source/.config" + echo "# CONFIG_PACKAGE_kmod-shortcut-fe-cm is not set" >> "$OMR_TARGET/source/.config" + echo "# CONFIG_PACKAGE_kmod-shortcut-fe is not set" >> "$OMR_TARGET/source/.config" +fi +if [ "$OMR_KERNEL" = "5.14" ] && [ "$OMR_TARGET" != "x86_64" ] && [ "$OMR_TARGET" != "x86" ]; then + echo "# CONFIG_PACKAGE_kmod-r8125 is not set" >> "$OMR_TARGET/source/.config" + echo "# CONFIG_PACKAGE_kmod-r8168 is not set" >> "$OMR_TARGET/source/.config" +fi + +if [ "$OMR_TARGET" = "bpi-r1" -a "$OMR_OPENWRT" = "master" ]; then + # We disable mc in master, because it leads to unknown compilation errors on bpi-r1 target + # No time to check this, now, cause i am focused on make this target work + # Maybe someone can do this later + echo -n "Disabling error causing midnight commander (mc) package..." + sed -i "s/CONFIG_PACKAGE_mc=y/# CONFIG_PACKAGE_mc is not set/" "$OMR_TARGET/source/.config" + sed -i "s/CONFIG_MC_EDITOR=y/# CONFIG_MC_EDITOR is not set/" "$OMR_TARGET/source/.config" + sed -i "s/CONFIG_MC_SUBSHELL=y/# CONFIG_MC_SUBSHELL is not set/" "$OMR_TARGET/source/.config" + sed -i "s/CONFIG_MC_CHARSET=y/# CONFIG_MC_CHARSET is not set/" "$OMR_TARGET/source/.config" + sed -i "s/CONFIG_MC_VFS=y/# CONFIG_MC_VFS is not set/" "$OMR_TARGET/source/.config" + echo "done" + + # 2021-03-05 Oliver Welter +fi + +if [ "$OMR_TARGET" = "bpi-r1" ]; then + # Check kernel version + if [ "$OMR_KERNEL" != "5.4" ]; then + echo "Sorry, but for now kernel 5.4 is the only supported one." + exit 1 + fi + + # Remove the 310-Revert-ARM-dts-sun7i-Add-BCM53125-switch-nodes-to-th patch + echo -n "Removing unwanted patches from kernel $OMR_KERNEL..." + rm -f "$OMR_TARGET/source/target/linux/sunxi/patches-$OMR_KERNEL/310-Revert-ARM-dts-sun7i-Add-BCM53125-switch-nodes-to-th.patch" >/dev/null 2>&1 + echo "done" + + if [ "$OMR_FORCE_DSA" = "1" ]; then + # Remove support for swconfig + echo -n "Removing swconfig support from openwrt config..." + for i in DEFAULT_swconfig PACKAGE_swconfig PACKAGE_kmod-swconfig; do + sed -i "s/CONFIG_${i}/# CONFIG_${i} is not set/" "$OMR_TARGET/source/.config" + done + echo "done" + echo -n "Removing B53 swconfig support from kernel $OMR_KERNEL..." + for i in SWCONFIG_B53 SWCONFIG_B53_PHY_DRIVER SWCONFIG_LEDS LED_TRIGGER_PHY SWCONFIG_B53_PHY_FIXUP SWCONFIG_B53_SPI_DRIVER SWCONFIG_B53_MMAP_DRIVER SWCONFIG_B53_SRAB_DRIVER; do + sed -i "s/CONFIG_${i}/# CONFIG_${i} is not set/" "$OMR_TARGET/source/target/linux/sunxi/config-$OMR_KERNEL" + sed -i "s/CONFIG_${i}/# CONFIG_${i} is not set/" "$OMR_TARGET/source/target/linux/sunxi/cortexa7/config-$OMR_KERNEL" + done + echo "done" + + # Add support for distributed switch architecture + echo -n "Adding B53 DSA support to kernel $OMR_KERNEL..." + for i in B53 B53_MDIO_DRIVER BRIDGE_VLAN_FILTERING MDIO_BUS_MUX_MULTIPLEXER NET_DSA NET_DSA_TAG_8021Q NET_DSA_TAG_BRCM NET_DSA_TAG_BRCM_PREPEND; do + check_sunxi_config=`grep "CONFIG_${i}=y" "$OMR_TARGET/source/target/linux/sunxi/config-$OMR_KERNEL" || true` + check_cortexa7_config=`grep "CONFIG_${i}=y" "$OMR_TARGET/source/target/linux/sunxi/cortexa7/config-$OMR_KERNEL" || true` + + [ "$check_sunxi_config" = "" -a "$check_cortexa7_config" = "" ] && echo "CONFIG_${i}=y" >> "$OMR_TARGET/source/target/linux/sunxi/cortexa7/config-$OMR_KERNEL" + done + echo "done" + + # Create DSA port map file (will be filled on first boot, by uci-defaults and tells the system, that it is in DSA mode) + touch "$OMR_TARGET/source/target/linux/sunxi/base-files/etc/dsa.map" + + # Remove the b53 hack in preinit + rm -f "$OMR_TARGET/source/target/linux/sunxi/base-files/lib/preinit/03_b53_hack.sh" + else + # Remove ip-bridge + echo -n "Removing ip-bridge support from openwrt config..." + for i in PACKAGE_ip-bridge; do + sed -i "s/CONFIG_${i}/# CONFIG_${i} is not set/" "$OMR_TARGET/source/.config" + done + echo "done" + + # Remove swconfig parts + echo -n "Removing unneeded B53 swconfig parts from kernel $OMR_KERNEL..." + for i in SWCONFIG_B53_PHY_FIXUP SWCONFIG_B53_SPI_DRIVER SWCONFIG_B53_MMAP_DRIVER SWCONFIG_B53_SRAB_DRIVER; do + sed -i "s/CONFIG_${i}/# CONFIG_${i} is not set/" "$OMR_TARGET/source/target/linux/sunxi/config-$OMR_KERNEL" + sed -i "s/CONFIG_${i}/# CONFIG_${i} is not set/" "$OMR_TARGET/source/target/linux/sunxi/cortexa7/config-$OMR_KERNEL" + done + echo "done" + fi + + # Add led support + echo -n "Adding LED TRIGGER support to kernel $OMR_KERNEL..." + if [ "$OMR_FORCE_DSA" != "1" ]; then + for i in SWCONFIG_LEDS LED_TRIGGER_PHY; do + check_sunxi_config=`grep "CONFIG_${i}=y" "$OMR_TARGET/source/target/linux/sunxi/config-$OMR_KERNEL" || true` + check_cortexa7_config=`grep "CONFIG_${i}=y" "$OMR_TARGET/source/target/linux/sunxi/cortexa7/config-$OMR_KERNEL" || true` + + [ "$check_sunxi_config" = "" -a "$check_cortexa7_config" = "" ] && echo "CONFIG_${i}=y" >> "$OMR_TARGET/source/target/linux/sunxi/cortexa7/config-$OMR_KERNEL" + done + fi + for i in TIMER ONESHOT DISK MTD HEARTBEAT BACKLIGHT CPU ACTIVITY GPIO DEFAULT_ON TRANSIENT CAMERA PANIC NETDEV PATTERN AUDIO; do + check_sunxi_config=`grep "CONFIG_LEDS_TRIGGER_${i}=y" "$OMR_TARGET/source/target/linux/sunxi/config-$OMR_KERNEL" || true` + check_cortexa7_config=`grep "CONFIG_LEDS_TRIGGER_${i}=y" "$OMR_TARGET/source/target/linux/sunxi/cortexa7/config-$OMR_KERNEL" || true` + + [ "$check_sunxi_config" = "" -a "$check_cortexa7_config" = "" ] && echo "CONFIG_LEDS_TRIGGER_${i}=y" >> "$OMR_TARGET/source/target/linux/sunxi/cortexa7/config-$OMR_KERNEL" + done + echo "done" +fi + +cd "$OMR_TARGET/source" + +#if [ "$OMR_UEFI" = "yes" ] && [ "$OMR_TARGET" = "x86_64" ]; then +# echo "Checking if UEFI patch is set or not" +# if [ "$(grep 'EFI_IMAGES' target/linux/x86/image/Makefile)" = "" ]; then +# patch -N -p1 -s < ../../patches/uefi.patch +# fi +# echo "Done" +#else +# if [ "$(grep 'EFI_IMAGES' target/linux/x86/image/Makefile)" != "" ]; then +# patch -N -R -p1 -s < ../../patches/uefi.patch +# fi +#fi + +#if [ "$OMR_TARGET" = "x86_64" ]; then +# echo "Checking if Hyper-V patch is set or not" +# if ! patch -Rf -N -p1 -s --dry-run < ../../patches/images.patch; then +# patch -N -p1 -s < ../../patches/images.patch +# fi +# echo "Done" +#fi + +echo "Checking if No check patch is set or not" +if ! patch -Rf -N -p1 -s --dry-run < ../../patches/nocheck.patch; then + echo "apply..." + patch -N -p1 -s < ../../patches/nocheck.patch +fi +echo "Done" + +echo "Checking if Nanqinlang patch is set or not" +if ! patch -Rf -N -p1 -s --dry-run < ../../patches/nanqinlang.patch; then + echo "apply..." + patch -N -p1 -s < ../../patches/nanqinlang.patch +fi +echo "Done" + +#echo "Checking if remove_abi patch is set or not" +#if ! patch -Rf -N -p1 -s --dry-run < ../../patches/remove_abi.patch; then +# echo "apply..." +# patch -N -p1 -s < ../../patches/remove_abi.patch +#fi +#echo "Done" + +# Add BBR2 patch, only working on 64bits images for now +if [ "$OMR_KERNEL" != "5.14" ] && ([ "$OMR_TARGET" = "x86_64" ] || [ "$OMR_TARGET" = "bpi-r64" ] || [ "$OMR_TARGET" = "rpi4" ] || [ "$OMR_TARGET" = "espressobin" ] || [ "$OMR_TARGET" = "r2s" ] || [ "$OMR_TARGET" = "r4s" ] || [ "$OMR_TARGET" = "rpi3" ]); then + echo "Checking if BBRv2 patch is set or not" + if ! patch -Rf -N -p1 -s --dry-run < ../../patches/bbr2.patch; then + echo "apply..." + patch -N -p1 -s < ../../patches/bbr2.patch + fi + echo "Done" +fi + +echo "Checking if smsc75xx patch is set or not" +if ! patch -Rf -N -p1 -s --dry-run < ../../patches/smsc75xx.patch; then + echo "apply..." + patch -N -p1 -s < ../../patches/smsc75xx.patch +fi +echo "Done" + +#echo "Checking if ipt-nat patch is set or not" +#if ! patch -Rf -N -p1 -s --dry-run < ../../patches/ipt-nat6.patch; then +# echo "apply..." +# patch -N -p1 -s < ../../patches/ipt-nat6.patch +#fi +#echo "Done" + +#echo "Checking if mvebu patch is set or not" +#if [ ! -d target/linux/mvebu/patches-5.4 ]; then +# echo "apply..." +# patch -N -p1 -s < ../../patches/mvebu-5.14.patch +#fi +#echo "Done" + +#echo "Checking if opkg install arguement too long patch is set or not" +#if ! patch -Rf -N -p1 -s --dry-run < ../../patches/package-too-long.patch; then +# echo "apply..." +# patch -N -p1 -s < ../../patches/package-too-long.patch +#fi +#echo "Done" + +echo "Download via IPv4" +if ! patch -Rf -N -p1 -s --dry-run < ../../patches/download-ipv4.patch; then + patch -N -p1 -s < ../../patches/download-ipv4.patch +fi +echo "Done" + +#echo "Remove check rsync" +#if [ "$(grep rsync include/prereq-build.mk)" != "" ]; then +# patch -N -p1 -s < ../../patches/check-rsync.patch +#fi +#echo "Done" + +if [ -f target/linux/mediatek/patches-5.4/0999-hnat.patch ]; then + rm -f target/linux/mediatek/patches-5.4/0999-hnat.patch +fi + +if [ -f target/linux/ipq40xx/patches-5.4/100-GPIO-add-named-gpio-exports.patch ]; then + rm -f target/linux/ipq40xx/patches-5.4/100-GPIO-add-named-gpio-exports.patch +fi + +if [ -f package/boot/uboot-rockchip/patches/100-rockchip-rk3328-Add-support-for-FriendlyARM-NanoPi-R.patch ]; then + rm -f package/boot/uboot-rockchip/patches/100-rockchip-rk3328-Add-support-for-FriendlyARM-NanoPi-R.patch +fi + +#echo "Patch protobuf wrong hash" +#patch -N -R -p1 -s < ../../patches/protobuf_hash.patch +#echo "Done" + +#echo "Remove gtime dependency" +#if ! patch -Rf -N -p1 -s --dry-run < ../../patches/gtime.patch; then +# patch -N -p1 -s < ../../patches/gtime.patch +#fi +#echo "Done" + +#if [ -f target/linux/generic/backport-5.4/370-netfilter-nf_flow_table-fix-offloaded-connection-tim.patch ]; then +# rm -f target/linux/generic/backport-5.4/370-netfilter-nf_flow_table-fix-offloaded-connection-tim.patch +#fi +#if [ -f target/linux/generic/pending-5.4/640-netfilter-nf_flow_table-add-hardware-offload-support.patch ]; then +# rm -f target/linux/generic/pending-5.4/640-netfilter-nf_flow_table-add-hardware-offload-support.patch +#fi +#if [ -f target/linux/generic/pending-5.4/641-netfilter-nf_flow_table-support-hw-offload-through-v.patch ]; then +# rm -f target/linux/generic/pending-5.4/641-netfilter-nf_flow_table-support-hw-offload-through-v.patch +#fi +#if [ -f target/linux/generic/pending-5.4/642-net-8021q-support-hardware-flow-table-offload.patch ]; then +# rm -f target/linux/generic/pending-5.4/642-net-8021q-support-hardware-flow-table-offload.patch +#fi +#if [ -f target/linux/generic/pending-5.4/643-net-bridge-support-hardware-flow-table-offload.patch ]; then +# rm -f target/linux/generic/pending-5.4/643-net-bridge-support-hardware-flow-table-offload.patch +#fi +#if [ -f target/linux/generic/pending-5.4/644-net-pppoe-support-hardware-flow-table-offload.patch ]; then +# rm -f target/linux/generic/pending-5.4/644-net-pppoe-support-hardware-flow-table-offload.patch +#fi +#if [ -f target/linux/generic/pending-5.4/645-netfilter-nf_flow_table-rework-hardware-offload-time.patch ]; then +# rm -f target/linux/generic/pending-5.4/645-netfilter-nf_flow_table-rework-hardware-offload-time.patch +#fi +#if [ -f target/linux/generic/pending-5.4/647-net-dsa-support-hardware-flow-table-offload.patch ]; then +# rm -f target/linux/generic/pending-5.4/647-net-dsa-support-hardware-flow-table-offload.patch +#fi +#if [ -f target/linux/generic/hack-5.4/650-netfilter-add-xt_OFFLOAD-target.patch ]; then +# rm -f target/linux/generic/hack-5.4/650-netfilter-add-xt_OFFLOAD-target.patch +#fi +#if [ -f target/linux/generic/pending-5.4/690-net-add-support-for-threaded-NAPI-polling.patch ]; then +# rm -f target/linux/generic/pending-5.4/690-net-add-support-for-threaded-NAPI-polling.patch +#fi +#if [ -f target/linux/generic/hack-5.4/647-netfilter-flow-acct.patch ]; then +# rm -f target/linux/generic/hack-5.4/647-netfilter-flow-acct.patch +#fi +#if [ -f target/linux/generic/hack-5.4/953-net-patch-linux-kernel-to-support-shortcut-fe.patch ]; then +# rm -f target/linux/generic/hack-5.4/953-net-patch-linux-kernel-to-support-shortcut-fe.patch +#fi +if [ -f target/linux/bcm27xx/patches-5.4/950-1031-net-lan78xx-Ack-pending-PHY-ints-when-resetting.patch ]; then + rm -f target/linux/bcm27xx/patches-5.4/950-1031-net-lan78xx-Ack-pending-PHY-ints-when-resetting.patch +fi +#if [ -f target/linux/generic/pending-5.4/770-16-net-ethernet-mediatek-mtk_eth_soc-add-flow-offloadin.patch ]; then +# rm -f target/linux/generic/pending-5.4/770-16-net-ethernet-mediatek-mtk_eth_soc-add-flow-offloadin.patch +#fi + +if [ "$OMR_KERNEL" = "5.4" ]; then + echo "Set to kernel 5.4 for rpi arch" + find target/linux/bcm27xx -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER=5.10%KERNEL_PATCHVER:=5.4%g' {} \; + find target/linux/bcm27xx -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.10%KERNEL_PATCHVER:=5.4%g' {} \; + echo "Done" + echo "Set to kernel 5.4 for x86 arch" + find target/linux/x86 -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.10%KERNEL_PATCHVER:=5.4%g' {} \; + echo "Done" + echo "Set to kernel 5.4 for mvebu arch (WRT)" + find target/linux/mvebu -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.10%KERNEL_PATCHVER:=5.4%g' {} \; + echo "Done" + echo "Set to kernel 5.4 for mediatek arch (BPI-R2)" + find target/linux/mediatek -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.10%KERNEL_PATCHVER:=5.4%g' {} \; + echo "Done" + if [ -f package/kernel/mac80211/patches/build/firmware-replace-HOTPLUG-with-UEVENT-in-FW_ACTION-defines.patch ]; then + rm -f package/kernel/mac80211/patches/build/firmware-replace-HOTPLUG-with-UEVENT-in-FW_ACTION-defines.patch + fi + if [ -f package/kernel/rtl8812au-ct/patches/003-wireless-5.8.patch ]; then + rm -f package/kernel/rtl8812au-ct/patches/003-wireless-5.8.patch + fi + if [ -f target/linux/mvebu/patches-5.4/021-arm64-dts-marvell-armada-37xx-Move-PCIe-comphy-handl.patch ]; then + rm -f target/linux/mvebu/patches-5.4/021-arm64-dts-marvell-armada-37xx-Move-PCIe-comphy-handl.patch + fi + if [ -f target/linux/mvebu/patches-5.4/022-arm64-dts-marvell-armada-37xx-Move-PCIe-max-link-spe.patch ]; then + rm -f target/linux/mvebu/patches-5.4/022-arm64-dts-marvell-armada-37xx-Move-PCIe-max-link-spe.patch + fi +fi +if [ "$OMR_KERNEL" = "5.10" ]; then + echo "Set to kernel 5.10 for rpi arch" + find target/linux/bcm27xx -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.4%KERNEL_PATCHVER:=5.10%g' {} \; + find target/linux/bcm27xx -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER=5.4%KERNEL_PATCHVER:=5.10%g' {} \; + echo "Done" + echo "Set to kernel 5.10 for x86 arch" + find target/linux/x86 -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.4%KERNEL_PATCHVER:=5.10%g' {} \; + echo "Done" + echo "Set to kernel 5.10 for mvebu arch (WRT)" + find target/linux/mvebu -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.4%KERNEL_PATCHVER:=5.10%g' {} \; + echo "Done" + echo "Set to kernel 5.10 for mediatek arch (BPI-R2)" + find target/linux/mediatek -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.4%KERNEL_PATCHVER:=5.10%g' {} \; + echo "Done" +fi +if [ "$OMR_KERNEL" = "5.14" ]; then + echo "Set to kernel 5.14 for rpi arch" + find target/linux/bcm27xx -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.10%KERNEL_PATCHVER:=5.14%g' {} \; + find target/linux/bcm27xx -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER=5.10%KERNEL_PATCHVER:=5.14%g' {} \; + echo "Done" + echo "Set to kernel 5.14 for x86 arch" + find target/linux/x86 -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.10%KERNEL_PATCHVER:=5.14%g' {} \; + echo "Done" + echo "Set to kernel 5.14 for mvebu arch (WRT)" + find target/linux/mvebu -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.10%KERNEL_PATCHVER:=5.14%g' {} \; + echo "Done" + echo "Set to kernel 5.14 for mediatek arch (BPI-R2)" + find target/linux/mediatek -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.10%KERNEL_PATCHVER:=5.14%g' {} \; + find target/linux/mediatek -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.4%KERNEL_PATCHVER:=5.14%g' {} \; + echo "Done" + echo "Set to kernel 5.14 for rockchip arch (R2S/R4S)" + find target/linux/rockchip -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER=5.4%KERNEL_PATCHVER:=5.14%g' {} \; + echo "Done" + echo "Set to kernel 5.14 for ramips" + find target/linux/ramips -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.4%KERNEL_PATCHVER:=5.14%g' {} \; + echo "Done" + echo "Set to kernel 5.14 for ramips" + find target/linux/ipq806x -type f -name Makefile -exec sed -i 's%KERNEL_PATCHVER:=5.10%KERNEL_PATCHVER:=5.14%g' {} \; + echo "Done" + #rm -rf target/linux/generic/files/drivers/net/phy/b53 + rm -f target/linux/bcm27xx/modules/sound.mk + echo "CONFIG_DEVEL=y" >> ".config" + echo "CONFIG_NEED_TOOLCHAIN=y" >> ".config" + echo "CONFIG_TOOLCHAINOPTS=y" >> ".config" + echo 'CONFIG_BINUTILS_VERSION_2_36_1=y' >> ".config" + echo 'CONFIG_BINUTILS_VERSION="2.36.1' >> ".config" + echo "CONFIG_BINUTILS_USE_VERSION_2_36_1=y" >> ".config" + #echo "CONFIG_GCC_USE_VERSION_10=y" >> ".config" + if [ "$TARGET" = "bpi-r2" ]; then + echo "# CONFIG_VERSION_CODE_FILENAMES is not set" >> ".config" + fi +fi + +#rm -rf feeds/packages/libs/libwebp +cd "../.." +rm -rf feeds/luci/modules/luci-mod-network +[ -d feeds/${OMR_DIST}/luci-mod-status ] && rm -rf feeds/luci/modules/luci-mod-status +[ -d feeds/${OMR_DIST}/luci-app-statistics ] && rm -rf feeds/luci/applications/luci-app-statistics +[ -d feeds/${OMR_DIST}/luci-proto-modemmanager ] && rm -rf feeds/luci/protocols/luci-proto-modemmanager + +echo "Add Occitan translation support" +if ! patch -Rf -N -p1 -s --dry-run < patches/luci-occitan.patch; then + patch -N -p1 -s < patches/luci-occitan.patch + #sh feeds/luci/build/i18n-add-language.sh oc +fi +[ -d $OMR_FEED/luci-base/po/oc ] && cp -rf $OMR_FEED/luci-base/po/oc feeds/luci/modules/luci-base/po/ +echo "Done" + +cd "$OMR_TARGET/source" +echo "Update feeds index" +cp .config .config.keep +scripts/feeds clean +scripts/feeds update -a + +#cd - +#echo "Checking if fullconenat-luci patch is set or not" +##if ! patch -Rf -N -p1 -s --dry-run < patches/fullconenat-luci.patch; then +# echo "apply..." +# patch -N -p1 -s < patches/fullconenat-luci.patch +#fi +#echo "Done" +#cd "$OMR_TARGET/source" + +if [ "$OMR_ALL_PACKAGES" = "yes" ]; then + scripts/feeds install -a -d m -p packages + scripts/feeds install -a -d m -p luci +fi +if [ -n "$CUSTOM_FEED" ]; then + scripts/feeds install -a -d m -p openmptcprouter + scripts/feeds install -a -d y -f -p ${OMR_DIST} +else + scripts/feeds install -a -d y -f -p openmptcprouter +fi +cp .config.keep .config +scripts/feeds install kmod-macremapper +echo "Done" + +if [ ! -f "../../$OMR_TARGET_CONFIG" ]; then + echo "Target $OMR_TARGET not found ! You have to configure and compile your kernel manually." + exit 1 +fi + +echo "Building $OMR_DIST for the target $OMR_TARGET with kernel $OMR_KERNEL" +make defconfig +make IGNORE_ERRORS=m "$@" +echo "Done" \ No newline at end of file diff --git a/config b/config new file mode 100644 index 00000000..e2079a25 --- /dev/null +++ b/config @@ -0,0 +1,241 @@ +CONFIG_DEVEL=y +CONFIG_TOOLCHAINOPTS=y +CONFIG_ALL_KMODS=y +CONFIG_BUSYBOX_CUSTOM=y +CONFIG_BUSYBOX_CONFIG_ADDUSER=y +CONFIG_BUSYBOX_CONFIG_ARP=y +CONFIG_BUSYBOX_CONFIG_ARPING=y +CONFIG_BUSYBOX_CONFIG_ASH_RANDOM_SUPPORT=y +CONFIG_BUSYBOX_CONFIG_BASE64=y +CONFIG_BUSYBOX_CONFIG_BC=y +CONFIG_BUSYBOX_CONFIG_CHPASSWD=y +CONFIG_BUSYBOX_CONFIG_DELUSER=y +CONFIG_BUSYBOX_CONFIG_DIFF=y +CONFIG_BUSYBOX_CONFIG_FEATURE_DATE_NANO=y +CONFIG_BUSYBOX_CONFIG_FEATURE_DIFF_DIR=y +CONFIG_BUSYBOX_CONFIG_FEATURE_PS_LONG=y +CONFIG_BUSYBOX_CONFIG_FEATURE_SEAMLESS_BZ2=y +CONFIG_BUSYBOX_CONFIG_FEATURE_SHOW_THREADS=y +CONFIG_BUSYBOX_CONFIG_FEATURE_STAT_FILESYSTEM=y +CONFIG_BUSYBOX_CONFIG_FEATURE_STAT_FORMAT=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_DECIMALS is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_SMP_CPU is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_SMP_PROCESS is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_USE_TERMIOS=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_UNDO=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_UNDO_QUEUE=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=32 +CONFIG_BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y +CONFIG_BUSYBOX_CONFIG_IOSTAT=y +CONFIG_BUSYBOX_CONFIG_LOADKMAP=y +CONFIG_BUSYBOX_CONFIG_LSPCI=y +CONFIG_BUSYBOX_CONFIG_LSUSB=y +CONFIG_BUSYBOX_CONFIG_NOHUP=y +CONFIG_BUSYBOX_CONFIG_PKILL=y +CONFIG_BUSYBOX_CONFIG_STAT=y +CONFIG_BUSYBOX_CONFIG_STTY=y +CONFIG_BUSYBOX_CONFIG_TELNET=y +CONFIG_BUSYBOX_CONFIG_TIMEOUT=y +CONFIG_BUSYBOX_CONFIG_WATCH=y +# CONFIG_GDB is not set +CONFIG_GRUB_SERIAL="" +CONFIG_GRUB_TIMEOUT="0" +CONFIG_GRUB_TITLE="OpenMPTCProuter" +CONFIG_KERNEL_PCI=y +CONFIG_KERNEL_AIO=y +CONFIG_KERNEL_DEBUG_GPIO=y +# CONFIG_KERNEL_DEBUG_INFO is not set +CONFIG_KERNEL_DEBUG_PINCTRL=y +CONFIG_KERNEL_DEVTMPFS=y +CONFIG_KERNEL_DEVTMPFS_MOUNT=y +CONFIG_KERNEL_DIRECT_IO=y +CONFIG_KERNEL_DMA_ACPI=y +CONFIG_KERNEL_FANOTIFY=y +CONFIG_KERNEL_FHANDLE=y +CONFIG_KERNEL_IPC_NS=y +# CONFIG_KERNEL_MAGIC_SYSRQ is not set +CONFIG_KERNEL_MMC_SDHCI_ACPI=y +CONFIG_KERNEL_NAMESPACES=y +CONFIG_KERNEL_NET_NS=y +CONFIG_KERNEL_PID_NS=y +# CONFIG_KERNEL_SWAP is not set +CONFIG_KERNEL_USER_NS=y +CONFIG_KERNEL_UTS_NS=y +# CONFIG_PACKAGE_dnsmasq is not set +CONFIG_PACKAGE_kmod-8021q=y +CONFIG_PACKAGE_kmod-ata-ahci=y +CONFIG_PACKAGE_kmod-ata-core=y +CONFIG_PACKAGE_kmod-block2mtd=y +CONFIG_PACKAGE_kmod-bridge=y +CONFIG_PACKAGE_kmod-crypto-gcm=y +CONFIG_PACKAGE_kmod-gpio-button-hotplug=y +CONFIG_PACKAGE_kmod-hid=y +CONFIG_PACKAGE_kmod-hid-generic=y +CONFIG_PACKAGE_kmod-i2c-gpio=y +CONFIG_PACKAGE_kmod-i2c-gpio-custom=y +CONFIG_PACKAGE_kmod-ifb=y +CONFIG_PACKAGE_kmod-ikconfig=y +CONFIG_PACKAGE_kmod-input-evdev=y +CONFIG_PACKAGE_kmod-loop=y +CONFIG_PACKAGE_kmod-macvlan=y +CONFIG_PACKAGE_kmod-mmc=y +CONFIG_PACKAGE_kmod-mmc-spi=y +CONFIG_PACKAGE_kmod-random-core=y +CONFIG_DEFAULT_kmod-r8169=y +CONFIG_PACKAGE_kmod-scsi-core=y +CONFIG_PACKAGE_kmod-sctp=y +CONFIG_PACKAGE_kmod-sdhci=y +CONFIG_PACKAGE_kmod-serial-8250=y +CONFIG_PACKAGE_kmod-stp=y +CONFIG_PACKAGE_kmod-usb-acm=y +CONFIG_PACKAGE_kmod-usb-core=y +CONFIG_PACKAGE_kmod-usb-hid=y +CONFIG_PACKAGE_kmod-usb-net=y +CONFIG_PACKAGE_kmod-usb-net-asix=y +CONFIG_PACKAGE_kmod-usb-net-asix-ax88179=y +CONFIG_PACKAGE_kmod-usb-net-cdc-eem=y +CONFIG_PACKAGE_kmod-usb-net-cdc-ether=y +CONFIG_PACKAGE_kmod-usb-net-cdc-mbim=y +CONFIG_PACKAGE_kmod-usb-net-cdc-ncm=y +CONFIG_PACKAGE_kmod-usb-net-cdc-subset=y +CONFIG_PACKAGE_kmod-usb-net-dm9601-ether=y +CONFIG_PACKAGE_kmod-usb-net-hso=y +CONFIG_PACKAGE_kmod-usb-net-huawei-cdc-ncm=y +CONFIG_PACKAGE_kmod-usb-net-ipheth=y +CONFIG_PACKAGE_kmod-usb-net-kalmia=y +CONFIG_PACKAGE_kmod-usb-net-kaweth=y +CONFIG_PACKAGE_kmod-usb-net-mcs7830=y +CONFIG_PACKAGE_kmod-usb-net-pegasus=y +CONFIG_PACKAGE_kmod-usb-net-qmi-wwan=y +CONFIG_PACKAGE_kmod-usb-net-rndis=y +CONFIG_PACKAGE_kmod-usb-net-rtl8150=y +CONFIG_PACKAGE_kmod-usb-net-rtl8152=y +CONFIG_PACKAGE_kmod-usb-net-sierrawireless=y +CONFIG_PACKAGE_kmod-usb-net-smsc95xx=y +CONFIG_PACKAGE_kmod-usb-net-sr9700=y +CONFIG_PACKAGE_kmod-usb-serial=y +CONFIG_PACKAGE_kmod-usb-serial-ark3116=y +CONFIG_PACKAGE_kmod-usb-serial-belkin=y +CONFIG_PACKAGE_kmod-usb-serial-ch341=y +CONFIG_PACKAGE_kmod-usb-serial-cp210x=y +CONFIG_PACKAGE_kmod-usb-serial-cypress-m8=y +CONFIG_PACKAGE_kmod-usb-serial-ftdi=y +CONFIG_PACKAGE_kmod-usb-serial-garmin=y +CONFIG_PACKAGE_kmod-usb-serial-ipw=y +CONFIG_PACKAGE_kmod-usb-serial-keyspan=y +CONFIG_PACKAGE_kmod-usb-serial-mct=y +CONFIG_PACKAGE_kmod-usb-serial-mos7720=y +CONFIG_PACKAGE_kmod-usb-serial-option=y +CONFIG_PACKAGE_kmod-usb-serial-oti6858=y +CONFIG_PACKAGE_kmod-usb-serial-pl2303=y +CONFIG_PACKAGE_kmod-usb-serial-qualcomm=y +CONFIG_PACKAGE_kmod-usb-serial-sierrawireless=y +CONFIG_PACKAGE_kmod-usb-serial-simple=y +CONFIG_PACKAGE_kmod-usb-serial-ti-usb=y +CONFIG_PACKAGE_kmod-usb-serial-visor=y +CONFIG_PACKAGE_kmod-usb-serial-wwan=y +CONFIG_PACKAGE_kmod-usb-storage=y +CONFIG_PACKAGE_kmod-usb-wdm=y +CONFIG_PACKAGE_kmod-usb2=y +CONFIG_PACKAGE_kmod-usb3=y +CONFIG_PACKAGE_kmod-veth=y +CONFIG_PACKAGE_kmod-3c59x=y +CONFIG_PACKAGE_kmod-8139cp=y +CONFIG_PACKAGE_kmod-8139too=y +CONFIG_PACKAGE_kmod-atl1=y +CONFIG_PACKAGE_kmod-atl1c=y +CONFIG_PACKAGE_kmod-atl1e=y +CONFIG_PACKAGE_kmod-atl2=y +CONFIG_PACKAGE_kmod-b44=y +CONFIG_PACKAGE_kmod-bnx2=y +CONFIG_PACKAGE_kmod-dm9000=y +CONFIG_PACKAGE_kmod-e100=y +CONFIG_PACKAGE_kmod-e1000=y +CONFIG_PACKAGE_kmod-e1000e=y +CONFIG_PACKAGE_kmod-et131x=y +CONFIG_PACKAGE_kmod-ethoc=y +CONFIG_PACKAGE_kmod-forcedeth=y +CONFIG_PACKAGE_kmod-gigaset=y +CONFIG_PACKAGE_kmod-hfcmulti=y +CONFIG_PACKAGE_kmod-hfcpci=y +CONFIG_PACKAGE_kmod-natsemi=y +CONFIG_PACKAGE_kmod-ne2k-pci=y +CONFIG_PACKAGE_kmod-of-mdio=y +CONFIG_PACKAGE_kmod-pcnet32=y +CONFIG_PACKAGE_kmod-phy-broadcom=y +CONFIG_PACKAGE_kmod-ppfe=y +CONFIG_PACKAGE_kmod-r6040=y +CONFIG_PACKAGE_kmod-r8169=y +CONFIG_PACKAGE_kmod-sis190=y +CONFIG_PACKAGE_kmod-sis900=y +CONFIG_PACKAGE_kmod-skge=y +CONFIG_PACKAGE_kmod-sky2=y +CONFIG_PACKAGE_kmod-solos-pci=y +CONFIG_PACKAGE_kmod-spi-ks8995=y +CONFIG_PACKAGE_kmod-tg3=y +CONFIG_PACKAGE_kmod-tulip=y +CONFIG_PACKAGE_kmod-via-rhine=y +CONFIG_PACKAGE_kmod-via-velocity=y +CONFIG_PACKAGE_kmod-vmxnet3=y +CONFIG_PACKAGE_kmod-fs-vfat=y +CONFIG_PACKAGE_kmod-macremapper=m +CONFIG_TARGET_IMAGES_PAD=y +CONFIG_TARGET_ROOTFS_EXT4=y +CONFIG_KERNEL_TCP_CONG_CDG=y +CONFIG_KERNEL_TCP_CONG_HTCP=y +CONFIG_KERNEL_TCP_CONG_HSTCP=y +CONFIG_KERNEL_TCP_CONG_HYBLA=y +CONFIG_KERNEL_TCP_CONG_ILLINOIS=y +CONFIG_KERNEL_TCP_CONG_SCALABLE=y +CONFIG_KERNEL_TCP_CONG_VEGAS=y +CONFIG_KERNEL_TCP_CONG_VENO=y +CONFIG_KERNEL_TCP_CONG_WESTWOOD=y +CONFIG_KERNEL_TCP_CONG_YEAH=y +CONFIG_KERNEL_TCP_CONG_LIA=y +CONFIG_KERNEL_TCP_CONG_BBR=y +CONFIG_KERNEL_TCP_CONG_NANQINLANG=y +CONFIG_KERNEL_TCP_CONG_OLIA=y +CONFIG_KERNEL_TCP_CONG_WVEGAS=y +CONFIG_KERNEL_TCP_CONG_BALIA=y +CONFIG_KERNEL_MPTCP_FULLMESH=y +CONFIG_KERNEL_DEFAULT_FULLMESH=y +CONFIG_KERNEL_MPTCP_NDIFFPORTS=y +# CONFIG_KERNEL_DEFAULT_NDIFFPORTS is not set +CONFIG_KERNEL_MPTCP_BINDER=y +CONFIG_KERNEL_MPTCP_ECF=y +# CONFIG_KERNEL_DEFAULT_BINDER is not set +# CONFIG_KERNEL_DEFAULT_DUMMY is not set +CONFIG_KERNEL_MPTCP_ROUNDROBIN=y +# CONFIG_KERNEL_DEFAULT_ROUNDROBIN is not set +CONFIG_KERNEL_MPTCP_REDUNDANT=y +# CONFIG_KERNEL_DEFAULT_REDUNDANT is not set +CONFIG_KERNEL_DEFAULT_SCHEDULER=y +CONFIG_KERNEL_MPTCP=y +CONFIG_KERNEL_MPTCP_IPV6=y +CONFIG_KERNEL_CRYPTO_SHA256=y +CONFIG_LUCI_LANG_en=y +CONFIG_LUCI_LANG_zh_Hans=y +CONFIG_LUCI_LANG_zh-tw=y +CONFIG_TARGET_ROOTFS_PARTSIZE=512 +CONFIG_TARGET_KERNEL_PARTSIZE=64 +CONFIG_OPENSSL_WITH_CHACHA_POLY1305=y +# CONFIG_LUCI_CSSTIDY is not set +# CONFIG_LIBCURL_WOLFSSL is not set +# CONFIG_PACKAGE_libustream-wolfssl is not set +CONFIG_KERNEL_DEVMEM=y +CONFIG_KERNEL_DEVKMEM=y +CONFIG_AUTOREMOVE=y +CONFIG_AUTOREMOVE=y +CONFIG_PACKAGE_luci-theme-argon=y +CONFIG_PACKAGE_luci-theme-bootstrap=y +CONFIG_PACKAGE_luci-theme-openwrt-2020=y +# CONFIG_PACKAGE_luci-theme-argon is not set +CONFIG_PACKAGE_luci-app-status=m +CONFIG_PACKAGE_luci-mod-status=y +CONFIG_PACKAGE_frpc=y +CONFIG_PACKAGE_rtty-nossl=y +CONFIG_PACKAGE_minicom=y +CONFIG_PACKAGE_irqbalance=y +CONFIG_PACKAGE_mtr=y +CONFIG_PACKAGE_sysstat=y +CONFIG_PACKAGE_coreutils-stty=y diff --git a/config-4018 b/config-4018 new file mode 100644 index 00000000..7e998f3a --- /dev/null +++ b/config-4018 @@ -0,0 +1,12 @@ +CONFIG_TARGET_ipq40xx=y +CONFIG_TARGET_ipq40xx_generic=y +CONFIG_TARGET_ipq40xx_generic_DEVICE_8dev_jalapeno=y +CONFIG_TARGET_BOARD="ipq40xx" +CONFIG_TARGET_SUBTARGET="generic" +CONFIG_TARGET_PROFILE="DEVICE_8dev_jalapeno" +CONFIG_TARGET_ARCH_PACKAGES="arm_cortex-a7_neon-vfpv4" +CONFIG_PACKAGE_ath10k-board-qca4019=y +CONFIG_PACKAGE_ath10k-firmware-qca4019-ct-htt=y +CONFIG_PACKAGE_kmod-ath10k-ct-smallbuffers=y +CONFIG_KERNEL_ARM_MODULE_PLTS=y +CONFIG_KERNEL_TCP_CONG_BBR2=y diff --git a/config-bpi-r1 b/config-bpi-r1 new file mode 100644 index 00000000..56321973 --- /dev/null +++ b/config-bpi-r1 @@ -0,0 +1,60 @@ +CONFIG_TARGET_BOARD="sunxi" +CONFIG_TARGET_sunxi=y +CONFIG_TARGET_sunxi_cortexa7=y +CONFIG_TARGET_sunxi_cortexa7_DEVICE_lamobo_lamobo-r1=y +CONFIG_TARGET_SUBTARGET="cortexa7" +CONFIG_TARGET_PROFILE="DEVICE_lamobo_lamobo-r1" +CONFIG_TARGET_ROOTFS_EXT4FS=y +CONFIG_TARGET_ROOTFS_SQUASHFS=y +CONFIG_PACKAGE_u-boot-Lamobo_R1=y +CONFIG_PACKAGE_uboot-envtools=y +CONFIG_PACKAGE_attr=y +CONFIG_PACKAGE_f2fs-tools=y +CONFIG_PACKAGE_f2fsck=y +CONFIG_PACKAGE_mkf2fs=y +CONFIG_PACKAGE_rtl8188eu-firmware=y +CONFIG_PACKAGE_ath9k-htc-firmware=y +CONFIG_PACKAGE_mt7601u-firmware=y +CONFIG_PACKAGE_rt2800-usb-firmware=y +CONFIG_PACKAGE_rtl8192cu-firmware=y +CONFIG_PACKAGE_rtl8192su-firmware=y +CONFIG_PACKAGE_kmod-switch-bcm53xx=y +CONFIG_PACKAGE_kmod-switch-bcm53xx-mdio=y +CONFIG_PACKAGE_ip-bridge=y +CONFIG_PACKAGE_swconfig=y +CONFIG_PACKAGE_kmod-swconfig=y +CONFIG_PACKAGE_kmod-ste10xp=y +CONFIG_PACKAGE_kmod-can-bcm=y +CONFIG_PACKAGE_kmod-ata-sunxi=y +CONFIG_PACKAGE_kmod-rtl8192cu=y +CONFIG_PACKAGE_kmod-ath9k-common=y +CONFIG_PACKAGE_kmod-ath9k-htc=y +CONFIG_PACKAGE_kmod-net-rtl8192su=y +CONFIG_PACKAGE_kmod-rtl8192c-common=y +CONFIG_PACKAGE_kmod-rtl8192cu=y +CONFIG_PACKAGE_kmod-rtl8xxxu=y +CONFIG_PACKAGE_kmod-sunxi-ir=y +CONFIG_PACKAGE_kmod-sound-soc-sunxi=y +CONFIG_PACKAGE_kmod-rtlwifi-usb=y +CONFIG_PACKAGE_kmod-rtlwifi=y +CONFIG_PACKAGE_kmod-scsi-core=y +CONFIG_PACKAGE_kmod-slhc=y +CONFIG_PACKAGE_kmod-usb-core=y +CONFIG_PACKAGE_kmod-leds-gpio=y +CONFIG_PACKAGE_kmod-ledtrig-activity=y +CONFIG_PACKAGE_kmod-ledtrig-gpio=y +CONFIG_PACKAGE_kmod-ledtrig-oneshot=y +CONFIG_PACKAGE_kmod-ledtrig-transient=y +CONFIG_PACKAGE_kmod-ledtrig-disk=y +CONFIG_PACKAGE_kmod-ledtrig-mtd=y +CONFIG_PACKAGE_kmod-ledtrig-heartbeat=y +CONFIG_PACKAGE_kmod-ledtrig-backlight=y +CONFIG_PACKAGE_kmod-ledtrig-cpu=y +CONFIG_PACKAGE_kmod-ledtrig-panic=y +CONFIG_PACKAGE_kmod-ledtrig-netdev=y +CONFIG_PACKAGE_kmod-ledtrig-pattern=y +CONFIG_PACKAGE_kmod-ledtrig-audio=y +CONFIG_PACKAGE_kmod-ipt-led=y +CONFIG_PACKAGE_kmod-usb-ledtrig-usbport=y +# CONFIG_PACKAGE_kmod-r8125 is not set +CONFIG_KERNEL_ARM_MODULE_PLTS=y diff --git a/config-bpi-r2 b/config-bpi-r2 new file mode 100644 index 00000000..b10e222f --- /dev/null +++ b/config-bpi-r2 @@ -0,0 +1,22 @@ +CONFIG_TARGET_mediatek=y +CONFIG_TARGET_mediatek_mt7623=y +CONFIG_TARGET_mediatek_mt7623_DEVICE_bpi_bananapi-r2=y +CONFIG_TARGET_ROOTFS_EXT4FS=y +CONFIG_TARGET_ROOTFS_SQUASHFS=y +CONFIG_PACKAGE_kmod-cryptodev=y +CONFIG_OPENSSL_HARDWARE_SUPPORT=y +CONFIG_OPENSSL_ENGINE_CRYPTO=y +CONFIG_OPENSSL_ENGINE_DIGEST=y +CONFIG_PACKAGE_uboot-envtools=y +CONFIG_PACKAGE_attr=y +CONFIG_PACKAGE_f2fs-tools=y +CONFIG_PACKAGE_f2fsck=y +CONFIG_PACKAGE_mkf2fs=y +# CONFIG_PACKAGE_kmod-fs-nfs-v3 is not set +# CONFIG_PACKAGE_kmod-fs-nfs-v4 is not set +# CONFIG_PACKAGE_kmod-rtl8812au-ct is not set +# CONFIG_PACKAGE_kmod-mt6625l-bt is not set +# CONFIG_PACKAGE_kmod-mt6625l-wlan-gen-2 is not set +CONFIG_KERNEL_ARM_MODULE_PLTS=y +# CONFIG_PACKAGE_kmod-r8125 is not set +# CONFIG_PACKAGE_kmod-r8168 is not set \ No newline at end of file diff --git a/config-bpi-r64 b/config-bpi-r64 new file mode 100644 index 00000000..0892238e --- /dev/null +++ b/config-bpi-r64 @@ -0,0 +1,17 @@ +CONFIG_TARGET_mediatek=y +CONFIG_TARGET_mediatek_mt7622=y +CONFIG_TARGET_mediatek_mt7622_DEVICE_bpi_bananapi-r64=y +# CONFIG_PACKAGE_kmod-mt6625l-bt is not set +# CONFIG_PACKAGE_kmod-mt6625l-wlan-gen-2 is not set +CONFIG_PACKAGE_uboot-mediatek=y +CONFIG_PACKAGE_uboot-envtools=y +CONFIG_PACKAGE_mt7622-preloader=y +CONFIG_KERNEL_ARM64_MODULE_PLTS=y +CONFIG_KERNEL_TCP_CONG_BBR2=y +CONFIG_CRYPTO_HW=y +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_SHA1_ARM_CE=y +CONFIG_CRYPTO_SHA2_ARM_CE=y +CONFIG_CRYPTO_GHASH_ARM_CE=y +CONFIG_CRYPTO_AES_ARM=y +CONFIG_CRYPTO_AES_ARM_CE=y diff --git a/config-cm520-79f b/config-cm520-79f new file mode 100644 index 00000000..ed4e2d0b --- /dev/null +++ b/config-cm520-79f @@ -0,0 +1,16 @@ +CONFIG_TARGET_ipq40xx=y +CONFIG_TARGET_ipq40xx_generic=y +CONFIG_TARGET_ipq40xx_generic_DEVICE_mobipromo_cm520-79f=y +CONFIG_TARGET_BOARD="ipq40xx" +CONFIG_TARGET_SUBTARGET="generic" +CONFIG_TARGET_PROFILE="DEVICE_mobipromo_cm520-79f" +CONFIG_CPU_TYPE="cortex-a7+neon-vfpv4" +CONFIG_DEFAULT_ath10k-firmware-qca4019-ct=y +CONFIG_DEFAULT_ipq-wifi-mobipromo_cm520-79f=y +CONFIG_DEFAULT_kmod-ath10k-ct=y +CONFIG_PACKAGE_ath10k-board-qca4019=y +CONFIG_PACKAGE_ath10k-firmware-qca4019-ct=y +CONFIG_PACKAGE_kmod-ath10k-ct=y +CONFIG_ATH10K-CT_LEDS=y +CONFIG_KERNEL_ARM_MODULE_PLTS=y +CONFIG_KERNEL_TCP_CONG_BBR2=y \ No newline at end of file diff --git a/config-espressobin b/config-espressobin new file mode 100644 index 00000000..ed5b4188 --- /dev/null +++ b/config-espressobin @@ -0,0 +1,9 @@ +CONFIG_TARGET_mvebu=y +CONFIG_TARGET_mvebu_cortexa53=y +CONFIG_TARGET_mvebu_cortexa53_DEVICE_globalscale_espressobin-v7=y +CONFIG_PACKAGE_kmod-6lowpan=y +CONFIG_PACKAGE_luci-app-advanced-reboot=y +# CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set +CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_KERNEL_ARM_MODULE_PLTS=y +CONFIG_KERNEL_TCP_CONG_BBR2=y diff --git a/config-espressobin1 b/config-espressobin1 new file mode 100644 index 00000000..9c715409 --- /dev/null +++ b/config-espressobin1 @@ -0,0 +1,12 @@ +CONFIG_TARGET_ipq40xx=y +CONFIG_TARGET_ipq40xx_generic=y +CONFIG_TARGET_ipq40xx_generic_DEVICE_8dev_jalapeno=y +CONFIG_TARGET_BOARD="ipq40xx" +CONFIG_TARGET_SUBTARGET="generic" +CONFIG_TARGET_PROFILE="DEVICE_8dev_jalapeno" +CONFIG_TARGET_ARCH_PACKAGES="arm_cortex-a7_neon-vfpv4" +CONFIG_PACKAGE_ath10k-board-qca4019=y +CONFIG_PACKAGE_ath10k-firmware-qca4019-ct-htt=y +CONFIG_PACKAGE_kmod-ath10k-ct-smallbuffers=y +CONFIG_KERNEL_ARM_MODULE_PLTS=y +CONFIG_KERNEL_TCP_CONG_BBR2=y \ No newline at end of file diff --git a/config-l1000 b/config-l1000 new file mode 100644 index 00000000..5e10f95f --- /dev/null +++ b/config-l1000 @@ -0,0 +1,8088 @@ +# +# Automatically generated file; DO NOT EDIT. +# OpenWrt Configuration +# +CONFIG_MODULES=y +CONFIG_HAVE_DOT_CONFIG=y +# CONFIG_TARGET_sunxi is not set +# CONFIG_TARGET_apm821xx is not set +# CONFIG_TARGET_ath25 is not set +# CONFIG_TARGET_ath79 is not set +# CONFIG_TARGET_bcm27xx is not set +# CONFIG_TARGET_bcm53xx is not set +# CONFIG_TARGET_bcm47xx is not set +# CONFIG_TARGET_bcm4908 is not set +# CONFIG_TARGET_bcm63xx is not set +# CONFIG_TARGET_octeon is not set +# CONFIG_TARGET_gemini is not set +# CONFIG_TARGET_mpc85xx is not set +# CONFIG_TARGET_imx6 is not set +# CONFIG_TARGET_mxs is not set +# CONFIG_TARGET_lantiq is not set +# CONFIG_TARGET_malta is not set +# CONFIG_TARGET_pistachio is not set +# CONFIG_TARGET_mvebu is not set +# CONFIG_TARGET_kirkwood is not set +# CONFIG_TARGET_mediatek is not set +# CONFIG_TARGET_ramips is not set +# CONFIG_TARGET_at91 is not set +# CONFIG_TARGET_tegra is not set +# CONFIG_TARGET_layerscape is not set +# CONFIG_TARGET_octeontx is not set +# CONFIG_TARGET_oxnas is not set +# CONFIG_TARGET_armvirt is not set +CONFIG_TARGET_ipq40xx=y +# CONFIG_TARGET_ipq806x is not set +# CONFIG_TARGET_realtek is not set +# CONFIG_TARGET_rockchip is not set +# CONFIG_TARGET_arc770 is not set +# CONFIG_TARGET_archs38 is not set +# CONFIG_TARGET_omap is not set +# CONFIG_TARGET_uml is not set +# CONFIG_TARGET_zynq is not set +# CONFIG_TARGET_x86 is not set +CONFIG_TARGET_ipq40xx_generic=y +# CONFIG_TARGET_ipq40xx_mikrotik is not set +# CONFIG_TARGET_MULTI_PROFILE is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_8dev_habanero-dvk is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_8dev_jalapeno is not set +CONFIG_TARGET_ipq40xx_generic_DEVICE_pangu_l1000=y +# CONFIG_TARGET_ipq40xx_generic_DEVICE_alfa-network_ap120c-ac is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_aruba_ap-303 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_aruba_ap-303h is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_aruba_ap-365 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_asus_map-ac2200 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_asus_rt-ac58u is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_avm_fritzbox-4040 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_avm_fritzbox-7530 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_avm_fritzrepeater-1200 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_avm_fritzrepeater-3000 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_buffalo_wtr-m2133hp is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_cellc_rtl30vw is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_cilab_meshpoint-one is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_compex_wpj419 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_compex_wpj428 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_devolo_magic-2-wifi-next is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_dlink_dap-2610 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_edgecore_ecw5211 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_edgecore_oap100 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_engenius_eap1300 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_engenius_eap2200 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_engenius_emd1 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_engenius_emr3500 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_engenius_ens620ext is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_ezviz_cs-w3-wd1200g-eup is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_glinet_gl-ap1300 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_glinet_gl-b1300 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_zbt_z4019 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_glinet_gl-s1300 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_linksys_ea6350v3 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_linksys_ea8300 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_linksys_mr8300 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_luma_wrtq-329acn is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_meraki_mr33 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_mobipromo_cm520-79f is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_netgear_ex6100v2 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_netgear_ex6150v2 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_openmesh_a42 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_openmesh_a62 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_plasmacloud_pa1200 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_plasmacloud_pa2200 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_qcom_ap-dk01.1-c1 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_qcom_ap-dk04.1-c1 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_qxwlan_e2600ac-c1 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_qxwlan_e2600ac-c2 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_unielec_u4019-32m is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_zyxel_nbg6617 is not set +# CONFIG_TARGET_ipq40xx_generic_DEVICE_zyxel_wre6606 is not set +CONFIG_HAS_SUBTARGETS=y +CONFIG_HAS_DEVICES=y +CONFIG_TARGET_BOARD="ipq40xx" +CONFIG_TARGET_SUBTARGET="generic" +CONFIG_TARGET_PROFILE="DEVICE_pangu_l1000" +CONFIG_TARGET_ARCH_PACKAGES="arm_cortex-a7_neon-vfpv4" +CONFIG_DEFAULT_TARGET_OPTIMIZATION="-Os -pipe" +CONFIG_CPU_TYPE="cortex-a7+neon-vfpv4" +CONFIG_LINUX_5_4=y +CONFIG_DEFAULT_ath10k-firmware-qca4019-ct=y +CONFIG_DEFAULT_base-files=y +CONFIG_DEFAULT_busybox=y +CONFIG_DEFAULT_ca-bundle=y +CONFIG_DEFAULT_dnsmasq=y +CONFIG_DEFAULT_dropbear=y +CONFIG_DEFAULT_firewall=y +CONFIG_DEFAULT_fstools=y +CONFIG_DEFAULT_ip6tables=y +CONFIG_DEFAULT_ipq-wifi-pangu_l1000=y +CONFIG_DEFAULT_iptables=y +CONFIG_DEFAULT_iwinfo=y +CONFIG_DEFAULT_kmod-ath10k-ct=y +CONFIG_DEFAULT_kmod-gpio-button-hotplug=y +CONFIG_DEFAULT_kmod-ipt-offload=y +CONFIG_DEFAULT_kmod-leds-gpio=y +CONFIG_DEFAULT_kmod-usb-dwc3=y +CONFIG_DEFAULT_kmod-usb-dwc3-qcom=y +CONFIG_DEFAULT_kmod-usb3=y +CONFIG_DEFAULT_libc=y +CONFIG_DEFAULT_libgcc=y +CONFIG_DEFAULT_libustream-wolfssl=y +CONFIG_DEFAULT_logd=y +CONFIG_DEFAULT_mtd=y +CONFIG_DEFAULT_netifd=y +CONFIG_DEFAULT_odhcp6c=y +CONFIG_DEFAULT_odhcpd-ipv6only=y +CONFIG_DEFAULT_opkg=y +CONFIG_DEFAULT_ppp=y +CONFIG_DEFAULT_ppp-mod-pppoe=y +CONFIG_DEFAULT_procd=y +CONFIG_DEFAULT_swconfig=y +CONFIG_DEFAULT_uboot-envtools=y +CONFIG_DEFAULT_uci=y +CONFIG_DEFAULT_uclient-fetch=y +CONFIG_DEFAULT_urandom-seed=y +CONFIG_DEFAULT_urngd=y +CONFIG_DEFAULT_wpad-basic-wolfssl=y +CONFIG_HAS_FPU=y +CONFIG_AUDIO_SUPPORT=y +CONFIG_GPIO_SUPPORT=y +CONFIG_PCI_SUPPORT=y +CONFIG_PCIE_SUPPORT=y +CONFIG_USB_SUPPORT=y +CONFIG_RTC_SUPPORT=y +CONFIG_USES_DEVICETREE=y +CONFIG_USES_INITRAMFS=y +CONFIG_USES_SQUASHFS=y +CONFIG_NAND_SUPPORT=y +CONFIG_arm=y +CONFIG_arm_v7=y +CONFIG_ARCH="arm" + +# +# Target Images +# +CONFIG_TARGET_ROOTFS_INITRAMFS=y +CONFIG_TARGET_INITRAMFS_COMPRESSION_NONE=y +# CONFIG_TARGET_INITRAMFS_COMPRESSION_GZIP is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_BZIP2 is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_LZMA is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_LZO is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_LZ4 is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_XZ is not set +CONFIG_EXTERNAL_CPIO="" +# CONFIG_TARGET_INITRAMFS_FORCE is not set + +# +# Root filesystem archives +# +# CONFIG_TARGET_ROOTFS_CPIOGZ is not set +# CONFIG_TARGET_ROOTFS_TARGZ is not set + +# +# Root filesystem images +# +# CONFIG_TARGET_ROOTFS_EXT4FS is not set +CONFIG_TARGET_ROOTFS_SQUASHFS=y +CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=256 +CONFIG_TARGET_UBIFS_FREE_SPACE_FIXUP=y +CONFIG_TARGET_UBIFS_JOURNAL_SIZE="" + +# +# Image Options +# +# end of Target Images + +# CONFIG_EXPERIMENTAL is not set + +# +# Global build settings +# +# CONFIG_JSON_OVERVIEW_IMAGE_INFO is not set +# CONFIG_ALL_NONSHARED is not set +CONFIG_ALL_KMODS=y +# CONFIG_ALL is not set +# CONFIG_BUILDBOT is not set +CONFIG_SIGNED_PACKAGES=y +CONFIG_SIGNATURE_CHECK=y + +# +# General build options +# +# CONFIG_DISPLAY_SUPPORT is not set +# CONFIG_BUILD_PATENTED is not set +# CONFIG_BUILD_NLS is not set +CONFIG_SHADOW_PASSWORDS=y +# CONFIG_CLEAN_IPKG is not set +# CONFIG_IPK_FILES_CHECKSUMS is not set +# CONFIG_INCLUDE_CONFIG is not set +# CONFIG_REPRODUCIBLE_DEBUG_INFO is not set +# CONFIG_COLLECT_KERNEL_DEBUG is not set + +# +# Kernel build options +# +CONFIG_KERNEL_BUILD_USER="" +CONFIG_KERNEL_BUILD_DOMAIN="" +CONFIG_KERNEL_PRINTK=y +# CONFIG_KERNEL_SWAP is not set +# CONFIG_KERNEL_PROC_STRIPPED is not set +CONFIG_KERNEL_DEBUG_FS=y +# CONFIG_KERNEL_ARM_PMU is not set +# CONFIG_KERNEL_PERF_EVENTS is not set +# CONFIG_KERNEL_PROFILING is not set +# CONFIG_KERNEL_UBSAN is not set +# CONFIG_KERNEL_KCOV is not set +# CONFIG_KERNEL_TASKSTATS is not set +CONFIG_KERNEL_KALLSYMS=y +# CONFIG_KERNEL_FTRACE is not set +CONFIG_KERNEL_DEBUG_KERNEL=y +# CONFIG_KERNEL_DEBUG_INFO is not set +# CONFIG_KERNEL_DEBUG_LL_UART_NONE is not set +# CONFIG_KERNEL_DEBUG_LL is not set +# CONFIG_KERNEL_DYNAMIC_DEBUG is not set +# CONFIG_KERNEL_EARLY_PRINTK is not set +# CONFIG_KERNEL_KPROBES is not set +CONFIG_KERNEL_AIO=y +CONFIG_KERNEL_IO_URING=y +CONFIG_KERNEL_FHANDLE=y +CONFIG_KERNEL_FANOTIFY=y +# CONFIG_KERNEL_BLK_DEV_BSG is not set +# CONFIG_KERNEL_HUGETLB_PAGE is not set +# CONFIG_KERNEL_MAGIC_SYSRQ is not set +CONFIG_KERNEL_DEBUG_PINCTRL=y +CONFIG_KERNEL_DEBUG_GPIO=y +CONFIG_KERNEL_COREDUMP=y +CONFIG_KERNEL_ELF_CORE=y +# CONFIG_KERNEL_PROVE_LOCKING is not set +# CONFIG_KERNEL_SOFTLOCKUP_DETECTOR is not set +# CONFIG_KERNEL_DETECT_HUNG_TASK is not set +# CONFIG_KERNEL_WQ_WATCHDOG is not set +# CONFIG_KERNEL_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_KERNEL_DEBUG_VM is not set +CONFIG_KERNEL_PRINTK_TIME=y +# CONFIG_KERNEL_SLABINFO is not set +# CONFIG_KERNEL_PROC_PAGE_MONITOR is not set +CONFIG_KERNEL_KEXEC=y +CONFIG_KERNEL_PROC_VMCORE=y +CONFIG_KERNEL_PROC_KCORE=y +CONFIG_KERNEL_CRASH_DUMP=y +# CONFIG_USE_RFKILL is not set +# CONFIG_USE_SPARSE is not set +CONFIG_KERNEL_DEVTMPFS=y +CONFIG_KERNEL_DEVTMPFS_MOUNT=y +CONFIG_KERNEL_KEYS=y +# CONFIG_KERNEL_PERSISTENT_KEYRINGS is not set +# CONFIG_KERNEL_KEYS_REQUEST_CACHE is not set +# CONFIG_KERNEL_BIG_KEYS is not set +CONFIG_KERNEL_CGROUPS=y +# CONFIG_KERNEL_CGROUP_DEBUG is not set +CONFIG_KERNEL_FREEZER=y +# CONFIG_KERNEL_CGROUP_FREEZER is not set +# CONFIG_KERNEL_CGROUP_DEVICE is not set +# CONFIG_KERNEL_CGROUP_HUGETLB is not set +CONFIG_KERNEL_CGROUP_PIDS=y +CONFIG_KERNEL_CGROUP_RDMA=y +CONFIG_KERNEL_CGROUP_BPF=y +CONFIG_KERNEL_CPUSETS=y +# CONFIG_KERNEL_PROC_PID_CPUSET is not set +CONFIG_KERNEL_CGROUP_CPUACCT=y +CONFIG_KERNEL_RESOURCE_COUNTERS=y +CONFIG_KERNEL_MM_OWNER=y +CONFIG_KERNEL_MEMCG=y +CONFIG_KERNEL_MEMCG_SWAP=y +# CONFIG_KERNEL_MEMCG_SWAP_ENABLED is not set +CONFIG_KERNEL_MEMCG_KMEM=y +# CONFIG_KERNEL_CGROUP_PERF is not set +CONFIG_KERNEL_CGROUP_SCHED=y +CONFIG_KERNEL_FAIR_GROUP_SCHED=y +CONFIG_KERNEL_CFS_BANDWIDTH=y +CONFIG_KERNEL_RT_GROUP_SCHED=y +CONFIG_KERNEL_BLK_CGROUP=y +# CONFIG_KERNEL_CFQ_GROUP_IOSCHED is not set +CONFIG_KERNEL_BLK_DEV_THROTTLING=y +# CONFIG_KERNEL_BLK_DEV_THROTTLING_LOW is not set +# CONFIG_KERNEL_DEBUG_BLK_CGROUP is not set +# CONFIG_KERNEL_NET_CLS_CGROUP is not set +# CONFIG_KERNEL_CGROUP_NET_CLASSID is not set +# CONFIG_KERNEL_CGROUP_NET_PRIO is not set +CONFIG_KERNEL_NAMESPACES=y +CONFIG_KERNEL_UTS_NS=y +CONFIG_KERNEL_IPC_NS=y +CONFIG_KERNEL_USER_NS=y +CONFIG_KERNEL_PID_NS=y +CONFIG_KERNEL_NET_NS=y +CONFIG_KERNEL_DEVPTS_MULTIPLE_INSTANCES=y +CONFIG_KERNEL_POSIX_MQUEUE=y +CONFIG_KERNEL_SECCOMP_FILTER=y +CONFIG_KERNEL_SECCOMP=y +CONFIG_KERNEL_IP_MROUTE=y +CONFIG_KERNEL_IPV6=y +CONFIG_KERNEL_IPV6_MULTIPLE_TABLES=y +CONFIG_KERNEL_IPV6_SUBTREES=y +CONFIG_KERNEL_IPV6_MROUTE=y +# CONFIG_KERNEL_IPV6_PIMSM_V2 is not set +CONFIG_KERNEL_IPV6_SEG6_LWTUNNEL=y +# CONFIG_KERNEL_LWTUNNEL_BPF is not set +# CONFIG_KERNEL_IP_PNP is not set + +# +# Filesystem ACL and attr support options +# +# CONFIG_USE_FS_ACL_ATTR is not set +# CONFIG_KERNEL_FS_POSIX_ACL is not set +# CONFIG_KERNEL_BTRFS_FS_POSIX_ACL is not set +# CONFIG_KERNEL_EXT4_FS_POSIX_ACL is not set +# CONFIG_KERNEL_F2FS_FS_POSIX_ACL is not set +# CONFIG_KERNEL_JFFS2_FS_POSIX_ACL is not set +# CONFIG_KERNEL_TMPFS_POSIX_ACL is not set +# CONFIG_KERNEL_CIFS_ACL is not set +# CONFIG_KERNEL_HFS_FS_POSIX_ACL is not set +# CONFIG_KERNEL_HFSPLUS_FS_POSIX_ACL is not set +# CONFIG_KERNEL_NFS_ACL_SUPPORT is not set +# CONFIG_KERNEL_NFS_V3_ACL_SUPPORT is not set +# CONFIG_KERNEL_NFSD_V2_ACL_SUPPORT is not set +# CONFIG_KERNEL_NFSD_V3_ACL_SUPPORT is not set +# CONFIG_KERNEL_REISER_FS_POSIX_ACL is not set +# CONFIG_KERNEL_XFS_POSIX_ACL is not set +# CONFIG_KERNEL_JFS_POSIX_ACL is not set +# end of Filesystem ACL and attr support options + +CONFIG_KERNEL_DEVMEM=y +CONFIG_KERNEL_DEVKMEM=y +CONFIG_KERNEL_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +# CONFIG_KERNEL_SQUASHFS_XATTR is not set +CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE is not set +# CONFIG_KERNEL_AUDIT is not set +# CONFIG_KERNEL_SECURITY is not set +# CONFIG_KERNEL_SECURITY_NETWORK is not set +# CONFIG_KERNEL_SECURITY_SELINUX is not set +# CONFIG_KERNEL_EXT4_FS_SECURITY is not set +# CONFIG_KERNEL_F2FS_FS_SECURITY is not set +# CONFIG_KERNEL_UBIFS_FS_SECURITY is not set +# CONFIG_KERNEL_JFFS2_FS_SECURITY is not set +# end of Kernel build options + +# +# Package build options +# +# CONFIG_DEBUG is not set +CONFIG_IPV6=y + +# +# Stripping options +# +# CONFIG_NO_STRIP is not set +# CONFIG_USE_STRIP is not set +CONFIG_USE_SSTRIP=y +CONFIG_SSTRIP_ARGS="-z" +# CONFIG_STRIP_KERNEL_EXPORTS is not set +# CONFIG_USE_MKLIBS is not set +CONFIG_USE_UCLIBCXX=y +# CONFIG_USE_LIBSTDCXX is not set + +# +# Hardening build options +# +CONFIG_PKG_CHECK_FORMAT_SECURITY=y +# CONFIG_PKG_ASLR_PIE_NONE is not set +CONFIG_PKG_ASLR_PIE_REGULAR=y +# CONFIG_PKG_ASLR_PIE_ALL is not set +# CONFIG_PKG_CC_STACKPROTECTOR_NONE is not set +CONFIG_PKG_CC_STACKPROTECTOR_REGULAR=y +# CONFIG_PKG_CC_STACKPROTECTOR_STRONG is not set +# CONFIG_KERNEL_CC_STACKPROTECTOR_NONE is not set +CONFIG_KERNEL_CC_STACKPROTECTOR_REGULAR=y +# CONFIG_KERNEL_CC_STACKPROTECTOR_STRONG is not set +CONFIG_KERNEL_STACKPROTECTOR=y +# CONFIG_KERNEL_STACKPROTECTOR_STRONG is not set +# CONFIG_PKG_FORTIFY_SOURCE_NONE is not set +CONFIG_PKG_FORTIFY_SOURCE_1=y +# CONFIG_PKG_FORTIFY_SOURCE_2 is not set +# CONFIG_PKG_RELRO_NONE is not set +# CONFIG_PKG_RELRO_PARTIAL is not set +CONFIG_PKG_RELRO_FULL=y +# CONFIG_SELINUX is not set +# end of Global build settings + +CONFIG_DEVEL=y +# CONFIG_BROKEN is not set +CONFIG_BINARY_FOLDER="" +CONFIG_DOWNLOAD_FOLDER="" +CONFIG_LOCALMIRROR="" +CONFIG_AUTOREBUILD=y +CONFIG_AUTOREMOVE=y +CONFIG_BUILD_SUFFIX="" +CONFIG_TARGET_ROOTFS_DIR="" +# CONFIG_CCACHE is not set +CONFIG_CCACHE_DIR="" +CONFIG_EXTERNAL_KERNEL_TREE="" +CONFIG_KERNEL_GIT_CLONE_URI="" +# CONFIG_BUILD_LOG is not set +CONFIG_BUILD_LOG_DIR="" +# CONFIG_SRC_TREE_OVERRIDE is not set +CONFIG_EXTRA_OPTIMIZATION="-fno-caller-saves -fno-plt" +# CONFIG_TARGET_OPTIONS is not set +CONFIG_TARGET_OPTIMIZATION="-Os -pipe" +# CONFIG_EXTERNAL_TOOLCHAIN is not set +CONFIG_NEED_TOOLCHAIN=y +CONFIG_TOOLCHAINOPTS=y +# CONFIG_EXTRA_TARGET_ARCH is not set + +# +# Binary tools +# +# CONFIG_BINUTILS_USE_VERSION_2_32 is not set +CONFIG_BINUTILS_USE_VERSION_2_34=y +# CONFIG_BINUTILS_USE_VERSION_2_35_1 is not set +CONFIG_EXTRA_BINUTILS_CONFIG_OPTIONS="" + +# +# Compiler +# +# CONFIG_GCC_USE_VERSION_7 is not set +CONFIG_GCC_USE_VERSION_8=y +# CONFIG_GCC_USE_VERSION_9 is not set +# CONFIG_GCC_USE_VERSION_10 is not set +# CONFIG_GCC_USE_GRAPHITE is not set +CONFIG_EXTRA_GCC_CONFIG_OPTIONS="" +# CONFIG_GCC_DEFAULT_PIE is not set +# CONFIG_GCC_DEFAULT_SSP is not set +# CONFIG_SJLJ_EXCEPTIONS is not set +# CONFIG_INSTALL_GFORTRAN is not set + +# +# C Library +# +# CONFIG_LIBC_USE_GLIBC is not set +CONFIG_LIBC_USE_MUSL=y +# CONFIG_MUSL_DISABLE_CRYPT_SIZE_HACK is not set + +# +# Debuggers +# +# CONFIG_GDB is not set +CONFIG_USE_MUSL=y +CONFIG_SSP_SUPPORT=y +CONFIG_BINUTILS_VERSION_2_34=y +CONFIG_BINUTILS_VERSION="2.34" +CONFIG_GCC_VERSION="8.4.0" +# CONFIG_GCC_USE_IREMAP is not set +CONFIG_LIBC="musl" +CONFIG_TARGET_SUFFIX="muslgnueabi" +# CONFIG_IB is not set +# CONFIG_SDK is not set +# CONFIG_MAKE_TOOLCHAIN is not set +CONFIG_IMAGEOPT=y +# CONFIG_PREINITOPT is not set +CONFIG_TARGET_PREINIT_SUPPRESS_STDERR=y +# CONFIG_TARGET_PREINIT_DISABLE_FAILSAFE is not set +CONFIG_TARGET_PREINIT_TIMEOUT=2 +# CONFIG_TARGET_PREINIT_SHOW_NETMSG is not set +# CONFIG_TARGET_PREINIT_SUPPRESS_FAILSAFE_NETMSG is not set +CONFIG_TARGET_PREINIT_IFNAME="" +CONFIG_TARGET_PREINIT_IP="192.168.1.1" +CONFIG_TARGET_PREINIT_NETMASK="255.255.255.0" +CONFIG_TARGET_PREINIT_BROADCAST="192.168.1.255" +# CONFIG_INITOPT is not set +CONFIG_TARGET_INIT_PATH="/usr/sbin:/usr/bin:/sbin:/bin" +CONFIG_TARGET_INIT_ENV="" +CONFIG_TARGET_INIT_CMD="/sbin/init" +CONFIG_TARGET_INIT_SUPPRESS_STDERR=y +CONFIG_VERSIONOPT=y +CONFIG_VERSION_DIST="openmptcprouter" +CONFIG_VERSION_NUMBER="0.79.2-7878fe55" +CONFIG_VERSION_CODE="" +CONFIG_VERSION_REPO="http://47.241.185.118:80/release/0.79.2/l1000" +CONFIG_VERSION_HOME_URL="" +CONFIG_VERSION_MANUFACTURER="" +CONFIG_VERSION_MANUFACTURER_URL="" +CONFIG_VERSION_BUG_URL="" +CONFIG_VERSION_SUPPORT_URL="" +CONFIG_VERSION_PRODUCT="" +CONFIG_VERSION_HWREV="" +CONFIG_VERSION_FILENAMES=y +CONFIG_VERSION_CODE_FILENAMES=y +CONFIG_PER_FEED_REPO=y +CONFIG_FEED_packages=y +CONFIG_FEED_luci=y +CONFIG_FEED_openmptcprouter=y + +# +# Base system +# +# CONFIG_PACKAGE_attendedsysupgrade-common is not set +# CONFIG_PACKAGE_auc is not set +CONFIG_PACKAGE_base-files=y +CONFIG_PACKAGE_block-mount=y +CONFIG_PACKAGE_blockd=y +# CONFIG_PACKAGE_bridge is not set +CONFIG_PACKAGE_busybox=y +CONFIG_BUSYBOX_CUSTOM=y +CONFIG_BUSYBOX_DEFAULT_HAVE_DOT_CONFIG=y +# CONFIG_BUSYBOX_DEFAULT_DESKTOP is not set +# CONFIG_BUSYBOX_DEFAULT_EXTRA_COMPAT is not set +# CONFIG_BUSYBOX_DEFAULT_FEDORA_COMPAT is not set +CONFIG_BUSYBOX_DEFAULT_INCLUDE_SUSv2=y +CONFIG_BUSYBOX_DEFAULT_LONG_OPTS=y +CONFIG_BUSYBOX_DEFAULT_SHOW_USAGE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VERBOSE_USAGE=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_COMPRESS_USAGE is not set +CONFIG_BUSYBOX_DEFAULT_LFS=y +# CONFIG_BUSYBOX_DEFAULT_PAM is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_DEVPTS=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UTMP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WTMP is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_PIDFILE=y +CONFIG_BUSYBOX_DEFAULT_PID_FILE_PATH="/var/run" +# CONFIG_BUSYBOX_DEFAULT_BUSYBOX is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SHOW_SCRIPT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSTALLER is not set +# CONFIG_BUSYBOX_DEFAULT_INSTALL_NO_USR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SUID is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SUID_CONFIG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SUID_CONFIG_QUIET is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_PREFER_APPLETS=y +CONFIG_BUSYBOX_DEFAULT_BUSYBOX_EXEC_PATH="/proc/self/exe" +# CONFIG_BUSYBOX_DEFAULT_SELINUX is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CLEAN_UP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOG_INFO is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOG=y +# CONFIG_BUSYBOX_DEFAULT_STATIC is not set +# CONFIG_BUSYBOX_DEFAULT_PIE is not set +# CONFIG_BUSYBOX_DEFAULT_NOMMU is not set +# CONFIG_BUSYBOX_DEFAULT_BUILD_LIBBUSYBOX is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LIBBUSYBOX_STATIC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INDIVIDUAL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SHARED_BUSYBOX is not set +CONFIG_BUSYBOX_DEFAULT_CROSS_COMPILER_PREFIX="" +CONFIG_BUSYBOX_DEFAULT_SYSROOT="" +CONFIG_BUSYBOX_DEFAULT_EXTRA_CFLAGS="" +CONFIG_BUSYBOX_DEFAULT_EXTRA_LDFLAGS="" +CONFIG_BUSYBOX_DEFAULT_EXTRA_LDLIBS="" +# CONFIG_BUSYBOX_DEFAULT_USE_PORTABLE_CODE is not set +# CONFIG_BUSYBOX_DEFAULT_STACK_OPTIMIZATION_386 is not set +# CONFIG_BUSYBOX_DEFAULT_STATIC_LIBGCC is not set +CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_SYMLINKS=y +# CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +# CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_DONT is not set +# CONFIG_BUSYBOX_DEFAULT_INSTALL_SH_APPLET_SYMLINK is not set +# CONFIG_BUSYBOX_DEFAULT_INSTALL_SH_APPLET_HARDLINK is not set +# CONFIG_BUSYBOX_DEFAULT_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set +CONFIG_BUSYBOX_DEFAULT_PREFIX="./_install" +# CONFIG_BUSYBOX_DEFAULT_DEBUG is not set +# CONFIG_BUSYBOX_DEFAULT_DEBUG_PESSIMIZE is not set +# CONFIG_BUSYBOX_DEFAULT_DEBUG_SANITIZE is not set +# CONFIG_BUSYBOX_DEFAULT_UNIT_TEST is not set +# CONFIG_BUSYBOX_DEFAULT_WERROR is not set +# CONFIG_BUSYBOX_DEFAULT_WARN_SIMPLE_MSG is not set +CONFIG_BUSYBOX_DEFAULT_NO_DEBUG_LIB=y +# CONFIG_BUSYBOX_DEFAULT_DMALLOC is not set +# CONFIG_BUSYBOX_DEFAULT_EFENCE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_USE_BSS_TAIL is not set +# CONFIG_BUSYBOX_DEFAULT_FLOAT_DURATION is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_RTMINMAX is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_BUFFERS_USE_MALLOC is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_BUFFERS_GO_ON_STACK=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_BUSYBOX_DEFAULT_PASSWORD_MINLEN=6 +CONFIG_BUSYBOX_DEFAULT_MD5_SMALL=1 +CONFIG_BUSYBOX_DEFAULT_SHA3_SMALL=1 +CONFIG_BUSYBOX_DEFAULT_FEATURE_FAST_TOP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_ETC_NETWORKS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_ETC_SERVICES is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_MAX_LEN=512 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_VI is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_HISTORY=256 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_SAVEHISTORY is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_SAVE_ON_EXIT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_REVERSE_SEARCH is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_TAB_COMPLETION=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_USERNAME_COMPLETION is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_FANCY_PROMPT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_WINCH is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_ASK_TERMINAL is not set +# CONFIG_BUSYBOX_DEFAULT_LOCALE_SUPPORT is not set +# CONFIG_BUSYBOX_DEFAULT_UNICODE_SUPPORT is not set +# CONFIG_BUSYBOX_DEFAULT_UNICODE_USING_LOCALE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_BUSYBOX_DEFAULT_SUBST_WCHAR=0 +CONFIG_BUSYBOX_DEFAULT_LAST_SUPPORTED_WCHAR=0 +# CONFIG_BUSYBOX_DEFAULT_UNICODE_COMBINING_WCHARS is not set +# CONFIG_BUSYBOX_DEFAULT_UNICODE_WIDE_WCHARS is not set +# CONFIG_BUSYBOX_DEFAULT_UNICODE_BIDI_SUPPORT is not set +# CONFIG_BUSYBOX_DEFAULT_UNICODE_NEUTRAL_TABLE is not set +# CONFIG_BUSYBOX_DEFAULT_UNICODE_PRESERVE_BROKEN is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_NON_POSIX_CP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VERBOSE_CP_MESSAGE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_USE_SENDFILE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_COPYBUF_KB=4 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SKIP_ROOTFS is not set +CONFIG_BUSYBOX_DEFAULT_MONOTONIC_SYSCALL=y +CONFIG_BUSYBOX_DEFAULT_IOCTL_HEX2STR_ERROR=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HWIB is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_XZ is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_LZMA is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_BZ2 is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_GZ=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_Z is not set +# CONFIG_BUSYBOX_DEFAULT_AR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_AR_LONG_FILENAMES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_AR_CREATE is not set +# CONFIG_BUSYBOX_DEFAULT_UNCOMPRESS is not set +CONFIG_BUSYBOX_DEFAULT_GUNZIP=y +CONFIG_BUSYBOX_DEFAULT_ZCAT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_GUNZIP_LONG_OPTIONS is not set +CONFIG_BUSYBOX_DEFAULT_BUNZIP2=y +CONFIG_BUSYBOX_DEFAULT_BZCAT=y +# CONFIG_BUSYBOX_DEFAULT_UNLZMA is not set +# CONFIG_BUSYBOX_DEFAULT_LZCAT is not set +# CONFIG_BUSYBOX_DEFAULT_LZMA is not set +# CONFIG_BUSYBOX_DEFAULT_UNXZ is not set +# CONFIG_BUSYBOX_DEFAULT_XZCAT is not set +# CONFIG_BUSYBOX_DEFAULT_XZ is not set +# CONFIG_BUSYBOX_DEFAULT_BZIP2 is not set +CONFIG_BUSYBOX_DEFAULT_BZIP2_SMALL=0 +CONFIG_BUSYBOX_DEFAULT_FEATURE_BZIP2_DECOMPRESS=y +# CONFIG_BUSYBOX_DEFAULT_CPIO is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CPIO_O is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CPIO_P is not set +# CONFIG_BUSYBOX_DEFAULT_DPKG is not set +# CONFIG_BUSYBOX_DEFAULT_DPKG_DEB is not set +CONFIG_BUSYBOX_DEFAULT_GZIP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_GZIP_LONG_OPTIONS is not set +CONFIG_BUSYBOX_DEFAULT_GZIP_FAST=0 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_GZIP_LEVELS is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_GZIP_DECOMPRESS=y +# CONFIG_BUSYBOX_DEFAULT_LZOP is not set +# CONFIG_BUSYBOX_DEFAULT_UNLZOP is not set +# CONFIG_BUSYBOX_DEFAULT_LZOPCAT is not set +# CONFIG_BUSYBOX_DEFAULT_LZOP_COMPR_HIGH is not set +# CONFIG_BUSYBOX_DEFAULT_RPM is not set +# CONFIG_BUSYBOX_DEFAULT_RPM2CPIO is not set +CONFIG_BUSYBOX_DEFAULT_TAR=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_LONG_OPTIONS is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_CREATE=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_AUTODETECT is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_FROM=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_GNU_EXTENSIONS=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_TO_COMMAND is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_UNAME_GNAME is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_NOPRESERVE_TIME is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_SELINUX is not set +# CONFIG_BUSYBOX_DEFAULT_UNZIP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UNZIP_CDF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UNZIP_BZIP2 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UNZIP_LZMA is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UNZIP_XZ is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LZMA_FAST is not set +CONFIG_BUSYBOX_DEFAULT_BASENAME=y +CONFIG_BUSYBOX_DEFAULT_CAT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CATN is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CATV is not set +CONFIG_BUSYBOX_DEFAULT_CHGRP=y +CONFIG_BUSYBOX_DEFAULT_CHMOD=y +CONFIG_BUSYBOX_DEFAULT_CHOWN=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHOWN_LONG_OPTIONS is not set +CONFIG_BUSYBOX_DEFAULT_CHROOT=y +# CONFIG_BUSYBOX_DEFAULT_CKSUM is not set +# CONFIG_BUSYBOX_DEFAULT_COMM is not set +CONFIG_BUSYBOX_DEFAULT_CP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CP_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CP_REFLINK is not set +CONFIG_BUSYBOX_DEFAULT_CUT=y +CONFIG_BUSYBOX_DEFAULT_DATE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_DATE_ISOFMT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DATE_NANO is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DATE_COMPAT is not set +CONFIG_BUSYBOX_DEFAULT_DD=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_SIGNAL_HANDLING=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_THIRD_STATUS_LINE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_IBS_OBS=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_STATUS is not set +CONFIG_BUSYBOX_DEFAULT_DF=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DF_FANCY is not set +CONFIG_BUSYBOX_DEFAULT_DIRNAME=y +# CONFIG_BUSYBOX_DEFAULT_DOS2UNIX is not set +# CONFIG_BUSYBOX_DEFAULT_UNIX2DOS is not set +CONFIG_BUSYBOX_DEFAULT_DU=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_BUSYBOX_DEFAULT_ECHO=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_ECHO=y +CONFIG_BUSYBOX_DEFAULT_ENV=y +# CONFIG_BUSYBOX_DEFAULT_EXPAND is not set +# CONFIG_BUSYBOX_DEFAULT_UNEXPAND is not set +CONFIG_BUSYBOX_DEFAULT_EXPR=y +CONFIG_BUSYBOX_DEFAULT_EXPR_MATH_SUPPORT_64=y +# CONFIG_BUSYBOX_DEFAULT_FACTOR is not set +CONFIG_BUSYBOX_DEFAULT_FALSE=y +# CONFIG_BUSYBOX_DEFAULT_FOLD is not set +CONFIG_BUSYBOX_DEFAULT_HEAD=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_HEAD=y +# CONFIG_BUSYBOX_DEFAULT_HOSTID is not set +CONFIG_BUSYBOX_DEFAULT_ID=y +# CONFIG_BUSYBOX_DEFAULT_GROUPS is not set +# CONFIG_BUSYBOX_DEFAULT_INSTALL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSTALL_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_LINK is not set +CONFIG_BUSYBOX_DEFAULT_LN=y +# CONFIG_BUSYBOX_DEFAULT_LOGNAME is not set +CONFIG_BUSYBOX_DEFAULT_LS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_FILETYPES=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_FOLLOWLINKS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_RECURSIVE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_WIDTH=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_SORTFILES=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_TIMESTAMPS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_USERNAME=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_COLOR=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_COLOR_IS_DEFAULT=y +CONFIG_BUSYBOX_DEFAULT_MD5SUM=y +# CONFIG_BUSYBOX_DEFAULT_SHA1SUM is not set +CONFIG_BUSYBOX_DEFAULT_SHA256SUM=y +# CONFIG_BUSYBOX_DEFAULT_SHA512SUM is not set +# CONFIG_BUSYBOX_DEFAULT_SHA3SUM is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_MD5_SHA1_SUM_CHECK=y +CONFIG_BUSYBOX_DEFAULT_MKDIR=y +CONFIG_BUSYBOX_DEFAULT_MKFIFO=y +CONFIG_BUSYBOX_DEFAULT_MKNOD=y +CONFIG_BUSYBOX_DEFAULT_MKTEMP=y +CONFIG_BUSYBOX_DEFAULT_MV=y +CONFIG_BUSYBOX_DEFAULT_NICE=y +# CONFIG_BUSYBOX_DEFAULT_NL is not set +# CONFIG_BUSYBOX_DEFAULT_NOHUP is not set +# CONFIG_BUSYBOX_DEFAULT_NPROC is not set +# CONFIG_BUSYBOX_DEFAULT_OD is not set +# CONFIG_BUSYBOX_DEFAULT_PASTE is not set +# CONFIG_BUSYBOX_DEFAULT_PRINTENV is not set +CONFIG_BUSYBOX_DEFAULT_PRINTF=y +CONFIG_BUSYBOX_DEFAULT_PWD=y +CONFIG_BUSYBOX_DEFAULT_READLINK=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_READLINK_FOLLOW=y +# CONFIG_BUSYBOX_DEFAULT_REALPATH is not set +CONFIG_BUSYBOX_DEFAULT_RM=y +CONFIG_BUSYBOX_DEFAULT_RMDIR=y +CONFIG_BUSYBOX_DEFAULT_SEQ=y +# CONFIG_BUSYBOX_DEFAULT_SHRED is not set +# CONFIG_BUSYBOX_DEFAULT_SHUF is not set +CONFIG_BUSYBOX_DEFAULT_SLEEP=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_SLEEP=y +CONFIG_BUSYBOX_DEFAULT_SORT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SORT_BIG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SORT_OPTIMIZE_MEMORY is not set +# CONFIG_BUSYBOX_DEFAULT_SPLIT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SPLIT_FANCY is not set +# CONFIG_BUSYBOX_DEFAULT_STAT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_STAT_FORMAT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_STAT_FILESYSTEM is not set +# CONFIG_BUSYBOX_DEFAULT_STTY is not set +# CONFIG_BUSYBOX_DEFAULT_SUM is not set +CONFIG_BUSYBOX_DEFAULT_SYNC=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SYNC_FANCY is not set +CONFIG_BUSYBOX_DEFAULT_FSYNC=y +# CONFIG_BUSYBOX_DEFAULT_TAC is not set +CONFIG_BUSYBOX_DEFAULT_TAIL=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_TAIL=y +CONFIG_BUSYBOX_DEFAULT_TEE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_BUSYBOX_DEFAULT_TEST=y +CONFIG_BUSYBOX_DEFAULT_TEST1=y +CONFIG_BUSYBOX_DEFAULT_TEST2=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_TEST_64=y +# CONFIG_BUSYBOX_DEFAULT_TIMEOUT is not set +CONFIG_BUSYBOX_DEFAULT_TOUCH=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOUCH_NODEREF is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_TOUCH_SUSV3=y +CONFIG_BUSYBOX_DEFAULT_TR=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TR_CLASSES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TR_EQUIV is not set +CONFIG_BUSYBOX_DEFAULT_TRUE=y +# CONFIG_BUSYBOX_DEFAULT_TRUNCATE is not set +# CONFIG_BUSYBOX_DEFAULT_TTY is not set +CONFIG_BUSYBOX_DEFAULT_UNAME=y +CONFIG_BUSYBOX_DEFAULT_UNAME_OSNAME="GNU/Linux" +# CONFIG_BUSYBOX_DEFAULT_BB_ARCH is not set +CONFIG_BUSYBOX_DEFAULT_UNIQ=y +# CONFIG_BUSYBOX_DEFAULT_UNLINK is not set +# CONFIG_BUSYBOX_DEFAULT_USLEEP is not set +# CONFIG_BUSYBOX_DEFAULT_UUDECODE is not set +# CONFIG_BUSYBOX_DEFAULT_BASE32 is not set +# CONFIG_BUSYBOX_DEFAULT_BASE64 is not set +# CONFIG_BUSYBOX_DEFAULT_UUENCODE is not set +CONFIG_BUSYBOX_DEFAULT_WC=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WC_LARGE is not set +# CONFIG_BUSYBOX_DEFAULT_WHO is not set +# CONFIG_BUSYBOX_DEFAULT_W is not set +# CONFIG_BUSYBOX_DEFAULT_USERS is not set +# CONFIG_BUSYBOX_DEFAULT_WHOAMI is not set +CONFIG_BUSYBOX_DEFAULT_YES=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VERBOSE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_PRESERVE_HARDLINKS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_HUMAN_READABLE=y +# CONFIG_BUSYBOX_DEFAULT_CHVT is not set +CONFIG_BUSYBOX_DEFAULT_CLEAR=y +# CONFIG_BUSYBOX_DEFAULT_DEALLOCVT is not set +# CONFIG_BUSYBOX_DEFAULT_DUMPKMAP is not set +# CONFIG_BUSYBOX_DEFAULT_FGCONSOLE is not set +# CONFIG_BUSYBOX_DEFAULT_KBD_MODE is not set +# CONFIG_BUSYBOX_DEFAULT_LOADFONT is not set +# CONFIG_BUSYBOX_DEFAULT_SETFONT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETFONT_TEXTUAL_MAP is not set +CONFIG_BUSYBOX_DEFAULT_DEFAULT_SETFONT_DIR="" +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LOADFONT_PSF2 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LOADFONT_RAW is not set +# CONFIG_BUSYBOX_DEFAULT_LOADKMAP is not set +# CONFIG_BUSYBOX_DEFAULT_OPENVT is not set +CONFIG_BUSYBOX_DEFAULT_RESET=y +# CONFIG_BUSYBOX_DEFAULT_RESIZE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_RESIZE_PRINT is not set +# CONFIG_BUSYBOX_DEFAULT_SETCONSOLE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETCONSOLE_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_SETKEYCODES is not set +# CONFIG_BUSYBOX_DEFAULT_SETLOGCONS is not set +# CONFIG_BUSYBOX_DEFAULT_SHOWKEY is not set +# CONFIG_BUSYBOX_DEFAULT_PIPE_PROGRESS is not set +# CONFIG_BUSYBOX_DEFAULT_RUN_PARTS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_RUN_PARTS_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_RUN_PARTS_FANCY is not set +CONFIG_BUSYBOX_DEFAULT_START_STOP_DAEMON=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_START_STOP_DAEMON_FANCY is not set +CONFIG_BUSYBOX_DEFAULT_WHICH=y +# CONFIG_BUSYBOX_DEFAULT_MINIPS is not set +# CONFIG_BUSYBOX_DEFAULT_NUKE is not set +# CONFIG_BUSYBOX_DEFAULT_RESUME is not set +# CONFIG_BUSYBOX_DEFAULT_RUN_INIT is not set +CONFIG_BUSYBOX_DEFAULT_AWK=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_AWK_LIBM=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_AWK_GNU_EXTENSIONS=y +CONFIG_BUSYBOX_DEFAULT_CMP=y +# CONFIG_BUSYBOX_DEFAULT_DIFF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DIFF_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DIFF_DIR is not set +# CONFIG_BUSYBOX_DEFAULT_ED is not set +# CONFIG_BUSYBOX_DEFAULT_PATCH is not set +CONFIG_BUSYBOX_DEFAULT_SED=y +CONFIG_BUSYBOX_DEFAULT_VI=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_MAX_LEN=1024 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_8BIT is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_COLON=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_YANKMARK=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_SEARCH=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_REGEX_SEARCH is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_USE_SIGNALS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_DOT_CMD=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_READONLY=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_SETOPTS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_SET=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_WIN_RESIZE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_ASK_TERMINAL=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_UNDO is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_UNDO_QUEUE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_UNDO_QUEUE_MAX=0 +CONFIG_BUSYBOX_DEFAULT_FEATURE_ALLOW_EXEC=y +CONFIG_BUSYBOX_DEFAULT_FIND=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PRINT0=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_MTIME=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_MMIN=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PERM=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_TYPE=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_EXECUTABLE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_XDEV=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_MAXDEPTH=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_NEWER=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_INUM is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_EXEC=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_EXEC_PLUS is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_USER=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_GROUP=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_NOT=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_DEPTH=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PAREN=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_SIZE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PRUNE=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_QUIT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_DELETE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_EMPTY is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PATH=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_REGEX=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_CONTEXT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_LINKS is not set +CONFIG_BUSYBOX_DEFAULT_GREP=y +CONFIG_BUSYBOX_DEFAULT_EGREP=y +CONFIG_BUSYBOX_DEFAULT_FGREP=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_GREP_CONTEXT=y +CONFIG_BUSYBOX_DEFAULT_XARGS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_CONFIRMATION=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_ZERO_TERM=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_REPL_STR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_PARALLEL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_ARGS_FILE is not set +# CONFIG_BUSYBOX_DEFAULT_BOOTCHARTD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_BOOTCHARTD_CONFIG_FILE is not set +CONFIG_BUSYBOX_DEFAULT_HALT=y +CONFIG_BUSYBOX_DEFAULT_POWEROFF=y +CONFIG_BUSYBOX_DEFAULT_REBOOT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WAIT_FOR_INIT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CALL_TELINIT is not set +CONFIG_BUSYBOX_DEFAULT_TELINIT_PATH="" +# CONFIG_BUSYBOX_DEFAULT_INIT is not set +# CONFIG_BUSYBOX_DEFAULT_LINUXRC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_USE_INITTAB is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_KILL_REMOVED is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_KILL_DELAY=0 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_SCTTY is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_SYSLOG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_QUIET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_COREDUMPS is not set +CONFIG_BUSYBOX_DEFAULT_INIT_TERMINAL_TYPE="" +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_MODIFY_CMDLINE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_SHADOWPASSWDS=y +# CONFIG_BUSYBOX_DEFAULT_USE_BB_PWD_GRP is not set +# CONFIG_BUSYBOX_DEFAULT_USE_BB_SHADOW is not set +# CONFIG_BUSYBOX_DEFAULT_USE_BB_CRYPT is not set +# CONFIG_BUSYBOX_DEFAULT_USE_BB_CRYPT_SHA is not set +# CONFIG_BUSYBOX_DEFAULT_ADD_SHELL is not set +# CONFIG_BUSYBOX_DEFAULT_REMOVE_SHELL is not set +# CONFIG_BUSYBOX_DEFAULT_ADDGROUP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_ADDUSER_TO_GROUP is not set +# CONFIG_BUSYBOX_DEFAULT_ADDUSER is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHECK_NAMES is not set +CONFIG_BUSYBOX_DEFAULT_LAST_ID=0 +CONFIG_BUSYBOX_DEFAULT_FIRST_SYSTEM_ID=0 +CONFIG_BUSYBOX_DEFAULT_LAST_SYSTEM_ID=0 +# CONFIG_BUSYBOX_DEFAULT_CHPASSWD is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_DEFAULT_PASSWD_ALGO="md5" +# CONFIG_BUSYBOX_DEFAULT_CRYPTPW is not set +# CONFIG_BUSYBOX_DEFAULT_MKPASSWD is not set +# CONFIG_BUSYBOX_DEFAULT_DELUSER is not set +# CONFIG_BUSYBOX_DEFAULT_DELGROUP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DEL_USER_FROM_GROUP is not set +# CONFIG_BUSYBOX_DEFAULT_GETTY is not set +CONFIG_BUSYBOX_DEFAULT_LOGIN=y +CONFIG_BUSYBOX_DEFAULT_LOGIN_SESSION_AS_CHILD=y +# CONFIG_BUSYBOX_DEFAULT_LOGIN_SCRIPTS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_NOLOGIN is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SECURETTY is not set +CONFIG_BUSYBOX_DEFAULT_PASSWD=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_PASSWD_WEAK_CHECK=y +# CONFIG_BUSYBOX_DEFAULT_SU is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SU_SYSLOG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SU_CHECKS_SHELLS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set +# CONFIG_BUSYBOX_DEFAULT_SULOGIN is not set +# CONFIG_BUSYBOX_DEFAULT_VLOCK is not set +# CONFIG_BUSYBOX_DEFAULT_CHATTR is not set +# CONFIG_BUSYBOX_DEFAULT_FSCK is not set +# CONFIG_BUSYBOX_DEFAULT_LSATTR is not set +# CONFIG_BUSYBOX_DEFAULT_TUNE2FS is not set +# CONFIG_BUSYBOX_DEFAULT_MODPROBE_SMALL is not set +# CONFIG_BUSYBOX_DEFAULT_DEPMOD is not set +# CONFIG_BUSYBOX_DEFAULT_INSMOD is not set +# CONFIG_BUSYBOX_DEFAULT_LSMOD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set +# CONFIG_BUSYBOX_DEFAULT_MODINFO is not set +# CONFIG_BUSYBOX_DEFAULT_MODPROBE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MODPROBE_BLACKLIST is not set +# CONFIG_BUSYBOX_DEFAULT_RMMOD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CMDLINE_MODULE_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_2_4_MODULES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_LOAD_MAP_FULL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHECK_TAINTED_MODULE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_TRY_MMAP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MODUTILS_ALIAS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MODUTILS_SYMBOLS is not set +CONFIG_BUSYBOX_DEFAULT_DEFAULT_MODULES_DIR="" +CONFIG_BUSYBOX_DEFAULT_DEFAULT_DEPMOD_FILE="" +# CONFIG_BUSYBOX_DEFAULT_ACPID is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_ACPID_COMPAT is not set +# CONFIG_BUSYBOX_DEFAULT_BLKDISCARD is not set +# CONFIG_BUSYBOX_DEFAULT_BLKID is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_BLKID_TYPE is not set +# CONFIG_BUSYBOX_DEFAULT_BLOCKDEV is not set +# CONFIG_BUSYBOX_DEFAULT_CAL is not set +# CONFIG_BUSYBOX_DEFAULT_CHRT is not set +CONFIG_BUSYBOX_DEFAULT_DMESG=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_DMESG_PRETTY=y +# CONFIG_BUSYBOX_DEFAULT_EJECT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_EJECT_SCSI is not set +# CONFIG_BUSYBOX_DEFAULT_FALLOCATE is not set +# CONFIG_BUSYBOX_DEFAULT_FATATTR is not set +# CONFIG_BUSYBOX_DEFAULT_FBSET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FBSET_FANCY is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FBSET_READMODE is not set +# CONFIG_BUSYBOX_DEFAULT_FDFORMAT is not set +# CONFIG_BUSYBOX_DEFAULT_FDISK is not set +# CONFIG_BUSYBOX_DEFAULT_FDISK_SUPPORT_LARGE_DISKS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FDISK_WRITABLE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_AIX_LABEL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SGI_LABEL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SUN_LABEL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_OSF_LABEL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_GPT_LABEL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FDISK_ADVANCED is not set +# CONFIG_BUSYBOX_DEFAULT_FINDFS is not set +CONFIG_BUSYBOX_DEFAULT_FLOCK=y +# CONFIG_BUSYBOX_DEFAULT_FDFLUSH is not set +# CONFIG_BUSYBOX_DEFAULT_FREERAMDISK is not set +# CONFIG_BUSYBOX_DEFAULT_FSCK_MINIX is not set +# CONFIG_BUSYBOX_DEFAULT_FSFREEZE is not set +# CONFIG_BUSYBOX_DEFAULT_FSTRIM is not set +# CONFIG_BUSYBOX_DEFAULT_GETOPT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_GETOPT_LONG is not set +CONFIG_BUSYBOX_DEFAULT_HEXDUMP=y +# CONFIG_BUSYBOX_DEFAULT_HD is not set +# CONFIG_BUSYBOX_DEFAULT_XXD is not set +CONFIG_BUSYBOX_DEFAULT_HWCLOCK=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HWCLOCK_ADJTIME_FHS is not set +# CONFIG_BUSYBOX_DEFAULT_IONICE is not set +# CONFIG_BUSYBOX_DEFAULT_IPCRM is not set +# CONFIG_BUSYBOX_DEFAULT_IPCS is not set +# CONFIG_BUSYBOX_DEFAULT_LAST is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LAST_FANCY is not set +# CONFIG_BUSYBOX_DEFAULT_LOSETUP is not set +# CONFIG_BUSYBOX_DEFAULT_LSPCI is not set +# CONFIG_BUSYBOX_DEFAULT_LSUSB is not set +# CONFIG_BUSYBOX_DEFAULT_MDEV is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_CONF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME_REGEXP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_EXEC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_LOAD_FIRMWARE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_DAEMON is not set +# CONFIG_BUSYBOX_DEFAULT_MESG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MESG_ENABLE_ONLY_GROUP is not set +# CONFIG_BUSYBOX_DEFAULT_MKE2FS is not set +# CONFIG_BUSYBOX_DEFAULT_MKFS_EXT2 is not set +# CONFIG_BUSYBOX_DEFAULT_MKFS_MINIX is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MINIX2 is not set +# CONFIG_BUSYBOX_DEFAULT_MKFS_REISER is not set +# CONFIG_BUSYBOX_DEFAULT_MKDOSFS is not set +# CONFIG_BUSYBOX_DEFAULT_MKFS_VFAT is not set +CONFIG_BUSYBOX_DEFAULT_MKSWAP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MKSWAP_UUID is not set +# CONFIG_BUSYBOX_DEFAULT_MORE is not set +CONFIG_BUSYBOX_DEFAULT_MOUNT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_FAKE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_VERBOSE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_HELPERS=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_LABEL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_NFS is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_CIFS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_FLAGS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_FSTAB=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_OTHERTAB is not set +# CONFIG_BUSYBOX_DEFAULT_MOUNTPOINT is not set +# CONFIG_BUSYBOX_DEFAULT_NOLOGIN is not set +# CONFIG_BUSYBOX_DEFAULT_NOLOGIN_DEPENDENCIES is not set +# CONFIG_BUSYBOX_DEFAULT_NSENTER is not set +CONFIG_BUSYBOX_DEFAULT_PIVOT_ROOT=y +# CONFIG_BUSYBOX_DEFAULT_RDATE is not set +# CONFIG_BUSYBOX_DEFAULT_RDEV is not set +# CONFIG_BUSYBOX_DEFAULT_READPROFILE is not set +# CONFIG_BUSYBOX_DEFAULT_RENICE is not set +# CONFIG_BUSYBOX_DEFAULT_REV is not set +# CONFIG_BUSYBOX_DEFAULT_RTCWAKE is not set +# CONFIG_BUSYBOX_DEFAULT_SCRIPT is not set +# CONFIG_BUSYBOX_DEFAULT_SCRIPTREPLAY is not set +# CONFIG_BUSYBOX_DEFAULT_SETARCH is not set +# CONFIG_BUSYBOX_DEFAULT_LINUX32 is not set +# CONFIG_BUSYBOX_DEFAULT_LINUX64 is not set +# CONFIG_BUSYBOX_DEFAULT_SETPRIV is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETPRIV_DUMP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETPRIV_CAPABILITIES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETPRIV_CAPABILITY_NAMES is not set +# CONFIG_BUSYBOX_DEFAULT_SETSID is not set +CONFIG_BUSYBOX_DEFAULT_SWAPON=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_SWAPON_DISCARD=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_SWAPON_PRI=y +CONFIG_BUSYBOX_DEFAULT_SWAPOFF=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SWAPONOFF_LABEL is not set +CONFIG_BUSYBOX_DEFAULT_SWITCH_ROOT=y +# CONFIG_BUSYBOX_DEFAULT_TASKSET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TASKSET_FANCY is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TASKSET_CPULIST is not set +# CONFIG_BUSYBOX_DEFAULT_UEVENT is not set +CONFIG_BUSYBOX_DEFAULT_UMOUNT=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_UMOUNT_ALL=y +# CONFIG_BUSYBOX_DEFAULT_UNSHARE is not set +# CONFIG_BUSYBOX_DEFAULT_WALL is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_LOOP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_LOOP_CREATE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MTAB_SUPPORT is not set +# CONFIG_BUSYBOX_DEFAULT_VOLUMEID is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BCACHE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BTRFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_CRAMFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EROFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXFAT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_F2FS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_FAT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_HFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ISO9660 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_JFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXRAID is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXSWAP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LUKS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_MINIX is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NILFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NTFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_OCFS2 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_REISERFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ROMFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SQUASHFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SYSV is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_UBIFS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_UDF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_XFS is not set +# CONFIG_BUSYBOX_DEFAULT_ADJTIMEX is not set +# CONFIG_BUSYBOX_DEFAULT_BBCONFIG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_COMPRESS_BBCONFIG is not set +# CONFIG_BUSYBOX_DEFAULT_BC is not set +# CONFIG_BUSYBOX_DEFAULT_DC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DC_BIG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DC_LIBM is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_BC_INTERACTIVE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_BC_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_BEEP is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_BEEP_FREQ=0 +CONFIG_BUSYBOX_DEFAULT_FEATURE_BEEP_LENGTH_MS=0 +# CONFIG_BUSYBOX_DEFAULT_CHAT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_NOFAIL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_TTY_HIFI is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_IMPLICIT_CR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_SWALLOW_OPTS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_SEND_ESCAPES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_VAR_ABORT_LEN is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_CLR_ABORT is not set +# CONFIG_BUSYBOX_DEFAULT_CONSPY is not set +CONFIG_BUSYBOX_DEFAULT_CROND=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_D is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_CALL_SENDMAIL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_SPECIAL_TIMES is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_DIR="/etc" +CONFIG_BUSYBOX_DEFAULT_CRONTAB=y +# CONFIG_BUSYBOX_DEFAULT_DEVFSD is not set +# CONFIG_BUSYBOX_DEFAULT_DEVFSD_MODLOAD is not set +# CONFIG_BUSYBOX_DEFAULT_DEVFSD_FG_NP is not set +# CONFIG_BUSYBOX_DEFAULT_DEVFSD_VERBOSE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_DEVFS is not set +# CONFIG_BUSYBOX_DEFAULT_DEVMEM is not set +# CONFIG_BUSYBOX_DEFAULT_FBSPLASH is not set +# CONFIG_BUSYBOX_DEFAULT_FLASH_ERASEALL is not set +# CONFIG_BUSYBOX_DEFAULT_FLASH_LOCK is not set +# CONFIG_BUSYBOX_DEFAULT_FLASH_UNLOCK is not set +# CONFIG_BUSYBOX_DEFAULT_FLASHCP is not set +# CONFIG_BUSYBOX_DEFAULT_HDPARM is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_GET_IDENTITY is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_GETSET_DMA is not set +# CONFIG_BUSYBOX_DEFAULT_HEXEDIT is not set +# CONFIG_BUSYBOX_DEFAULT_I2CGET is not set +# CONFIG_BUSYBOX_DEFAULT_I2CSET is not set +# CONFIG_BUSYBOX_DEFAULT_I2CDUMP is not set +# CONFIG_BUSYBOX_DEFAULT_I2CDETECT is not set +# CONFIG_BUSYBOX_DEFAULT_I2CTRANSFER is not set +# CONFIG_BUSYBOX_DEFAULT_INOTIFYD is not set +CONFIG_BUSYBOX_DEFAULT_LESS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_MAXLINES=9999999 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_BRACKETS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_FLAGS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_TRUNCATE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_MARKS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_REGEXP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_WINCH is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_ASK_TERMINAL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_DASHCMD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_LINENUMS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_RAW is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_ENV is not set +CONFIG_BUSYBOX_DEFAULT_LOCK=y +# CONFIG_BUSYBOX_DEFAULT_LSSCSI is not set +# CONFIG_BUSYBOX_DEFAULT_MAKEDEVS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MAKEDEVS_LEAF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_MAKEDEVS_TABLE is not set +# CONFIG_BUSYBOX_DEFAULT_MAN is not set +# CONFIG_BUSYBOX_DEFAULT_MICROCOM is not set +# CONFIG_BUSYBOX_DEFAULT_MIM is not set +# CONFIG_BUSYBOX_DEFAULT_MT is not set +# CONFIG_BUSYBOX_DEFAULT_NANDWRITE is not set +# CONFIG_BUSYBOX_DEFAULT_NANDDUMP is not set +# CONFIG_BUSYBOX_DEFAULT_PARTPROBE is not set +# CONFIG_BUSYBOX_DEFAULT_RAIDAUTORUN is not set +# CONFIG_BUSYBOX_DEFAULT_READAHEAD is not set +# CONFIG_BUSYBOX_DEFAULT_RFKILL is not set +# CONFIG_BUSYBOX_DEFAULT_RUNLEVEL is not set +# CONFIG_BUSYBOX_DEFAULT_RX is not set +# CONFIG_BUSYBOX_DEFAULT_SETFATTR is not set +# CONFIG_BUSYBOX_DEFAULT_SETSERIAL is not set +CONFIG_BUSYBOX_DEFAULT_STRINGS=y +CONFIG_BUSYBOX_DEFAULT_TIME=y +# CONFIG_BUSYBOX_DEFAULT_TS is not set +# CONFIG_BUSYBOX_DEFAULT_TTYSIZE is not set +# CONFIG_BUSYBOX_DEFAULT_UBIATTACH is not set +# CONFIG_BUSYBOX_DEFAULT_UBIDETACH is not set +# CONFIG_BUSYBOX_DEFAULT_UBIMKVOL is not set +# CONFIG_BUSYBOX_DEFAULT_UBIRMVOL is not set +# CONFIG_BUSYBOX_DEFAULT_UBIRSVOL is not set +# CONFIG_BUSYBOX_DEFAULT_UBIUPDATEVOL is not set +# CONFIG_BUSYBOX_DEFAULT_UBIRENAME is not set +# CONFIG_BUSYBOX_DEFAULT_VOLNAME is not set +# CONFIG_BUSYBOX_DEFAULT_WATCHDOG is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_IPV6=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UNIX_LOCAL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_PREFER_IPV4_ADDRESS is not set +CONFIG_BUSYBOX_DEFAULT_VERBOSE_RESOLUTION_ERRORS=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TLS_SHA1 is not set +# CONFIG_BUSYBOX_DEFAULT_ARP is not set +# CONFIG_BUSYBOX_DEFAULT_ARPING is not set +CONFIG_BUSYBOX_DEFAULT_BRCTL=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_BRCTL_FANCY=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_BRCTL_SHOW=y +# CONFIG_BUSYBOX_DEFAULT_DNSD is not set +# CONFIG_BUSYBOX_DEFAULT_ETHER_WAKE is not set +# CONFIG_BUSYBOX_DEFAULT_FTPD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FTPD_WRITE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FTPD_AUTHENTICATION is not set +# CONFIG_BUSYBOX_DEFAULT_FTPGET is not set +# CONFIG_BUSYBOX_DEFAULT_FTPPUT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_FTPGETPUT_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_HOSTNAME is not set +# CONFIG_BUSYBOX_DEFAULT_DNSDOMAINNAME is not set +# CONFIG_BUSYBOX_DEFAULT_HTTPD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_RANGES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_SETUID is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_BASIC_AUTH is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_AUTH_MD5 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_CGI is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_ENCODE_URL_STR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_ERROR_PAGES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_PROXY is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_GZIP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_ETAG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_LAST_MODIFIED is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_DATE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_ACL_IP is not set +CONFIG_BUSYBOX_DEFAULT_IFCONFIG=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_STATUS=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_SLIP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_HW=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_BROADCAST_PLUS=y +# CONFIG_BUSYBOX_DEFAULT_IFENSLAVE is not set +# CONFIG_BUSYBOX_DEFAULT_IFPLUGD is not set +# CONFIG_BUSYBOX_DEFAULT_IFUP is not set +# CONFIG_BUSYBOX_DEFAULT_IFDOWN is not set +CONFIG_BUSYBOX_DEFAULT_IFUPDOWN_IFSTATE_PATH="" +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IPV4 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IPV6 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_MAPPING is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set +# CONFIG_BUSYBOX_DEFAULT_INETD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_RPC is not set +CONFIG_BUSYBOX_DEFAULT_IP=y +# CONFIG_BUSYBOX_DEFAULT_IPADDR is not set +# CONFIG_BUSYBOX_DEFAULT_IPLINK is not set +# CONFIG_BUSYBOX_DEFAULT_IPROUTE is not set +# CONFIG_BUSYBOX_DEFAULT_IPTUNNEL is not set +# CONFIG_BUSYBOX_DEFAULT_IPRULE is not set +# CONFIG_BUSYBOX_DEFAULT_IPNEIGH is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_ADDRESS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_LINK=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_ROUTE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_ROUTE_DIR="/etc/iproute2" +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_TUNNEL is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_RULE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_NEIGH=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_RARE_PROTOCOLS is not set +# CONFIG_BUSYBOX_DEFAULT_IPCALC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IPCALC_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IPCALC_FANCY is not set +# CONFIG_BUSYBOX_DEFAULT_FAKEIDENTD is not set +# CONFIG_BUSYBOX_DEFAULT_NAMEIF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_NAMEIF_EXTENDED is not set +# CONFIG_BUSYBOX_DEFAULT_NBDCLIENT is not set +CONFIG_BUSYBOX_DEFAULT_NC=y +# CONFIG_BUSYBOX_DEFAULT_NETCAT is not set +# CONFIG_BUSYBOX_DEFAULT_NC_SERVER is not set +# CONFIG_BUSYBOX_DEFAULT_NC_EXTRA is not set +# CONFIG_BUSYBOX_DEFAULT_NC_110_COMPAT is not set +CONFIG_BUSYBOX_DEFAULT_NETMSG=y +CONFIG_BUSYBOX_DEFAULT_NETSTAT=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_NETSTAT_WIDE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_NETSTAT_PRG=y +# CONFIG_BUSYBOX_DEFAULT_NSLOOKUP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_NSLOOKUP_BIG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_NSLOOKUP_LONG_OPTIONS is not set +CONFIG_BUSYBOX_DEFAULT_NSLOOKUP_OPENWRT=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_NSLOOKUP_OPENWRT_LONG_OPTIONS is not set +CONFIG_BUSYBOX_DEFAULT_NTPD=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_NTPD_SERVER=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_NTPD_CONF is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_NTP_AUTH is not set +CONFIG_BUSYBOX_DEFAULT_PING=y +CONFIG_BUSYBOX_DEFAULT_PING6=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_PING=y +# CONFIG_BUSYBOX_DEFAULT_PSCAN is not set +CONFIG_BUSYBOX_DEFAULT_ROUTE=y +# CONFIG_BUSYBOX_DEFAULT_SLATTACH is not set +# CONFIG_BUSYBOX_DEFAULT_SSL_CLIENT is not set +# CONFIG_BUSYBOX_DEFAULT_TC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TC_INGRESS is not set +# CONFIG_BUSYBOX_DEFAULT_TCPSVD is not set +# CONFIG_BUSYBOX_DEFAULT_UDPSVD is not set +# CONFIG_BUSYBOX_DEFAULT_TELNET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNET_TTYPE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNET_AUTOLOGIN is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNET_WIDTH is not set +# CONFIG_BUSYBOX_DEFAULT_TELNETD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNETD_STANDALONE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNETD_INETD_WAIT is not set +# CONFIG_BUSYBOX_DEFAULT_TFTP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_PROGRESS_BAR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_HPA_COMPAT is not set +# CONFIG_BUSYBOX_DEFAULT_TFTPD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_GET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_PUT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_BLOCKSIZE is not set +# CONFIG_BUSYBOX_DEFAULT_TFTP_DEBUG is not set +# CONFIG_BUSYBOX_DEFAULT_TLS is not set +CONFIG_BUSYBOX_DEFAULT_TRACEROUTE=y +CONFIG_BUSYBOX_DEFAULT_TRACEROUTE6=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_TRACEROUTE_VERBOSE=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TRACEROUTE_USE_ICMP is not set +# CONFIG_BUSYBOX_DEFAULT_TUNCTL is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TUNCTL_UG is not set +# CONFIG_BUSYBOX_DEFAULT_VCONFIG is not set +# CONFIG_BUSYBOX_DEFAULT_WGET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_STATUSBAR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_AUTHENTICATION is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_TIMEOUT is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_HTTPS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_OPENSSL is not set +# CONFIG_BUSYBOX_DEFAULT_WHOIS is not set +# CONFIG_BUSYBOX_DEFAULT_ZCIP is not set +# CONFIG_BUSYBOX_DEFAULT_UDHCPD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set +CONFIG_BUSYBOX_DEFAULT_DHCPD_LEASES_FILE="" +# CONFIG_BUSYBOX_DEFAULT_DUMPLEASES is not set +# CONFIG_BUSYBOX_DEFAULT_DHCPRELAY is not set +CONFIG_BUSYBOX_DEFAULT_UDHCPC=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC_ARPING is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC_SANITIZEOPT is not set +CONFIG_BUSYBOX_DEFAULT_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +# CONFIG_BUSYBOX_DEFAULT_UDHCPC6 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC3646 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4704 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4833 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC5970 is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCP_PORT is not set +CONFIG_BUSYBOX_DEFAULT_UDHCP_DEBUG=0 +CONFIG_BUSYBOX_DEFAULT_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCP_RFC3397=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCP_8021Q is not set +CONFIG_BUSYBOX_DEFAULT_IFUPDOWN_UDHCPC_CMD_OPTIONS="" +# CONFIG_BUSYBOX_DEFAULT_LPD is not set +# CONFIG_BUSYBOX_DEFAULT_LPR is not set +# CONFIG_BUSYBOX_DEFAULT_LPQ is not set +# CONFIG_BUSYBOX_DEFAULT_MAKEMIME is not set +# CONFIG_BUSYBOX_DEFAULT_POPMAILDIR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_POPMAILDIR_DELIVERY is not set +# CONFIG_BUSYBOX_DEFAULT_REFORMIME is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_REFORMIME_COMPAT is not set +# CONFIG_BUSYBOX_DEFAULT_SENDMAIL is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_MIME_CHARSET="" +CONFIG_BUSYBOX_DEFAULT_FREE=y +# CONFIG_BUSYBOX_DEFAULT_FUSER is not set +# CONFIG_BUSYBOX_DEFAULT_IOSTAT is not set +CONFIG_BUSYBOX_DEFAULT_KILL=y +CONFIG_BUSYBOX_DEFAULT_KILLALL=y +# CONFIG_BUSYBOX_DEFAULT_KILLALL5 is not set +# CONFIG_BUSYBOX_DEFAULT_LSOF is not set +# CONFIG_BUSYBOX_DEFAULT_MPSTAT is not set +# CONFIG_BUSYBOX_DEFAULT_NMETER is not set +CONFIG_BUSYBOX_DEFAULT_PGREP=y +# CONFIG_BUSYBOX_DEFAULT_PKILL is not set +CONFIG_BUSYBOX_DEFAULT_PIDOF=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_PIDOF_SINGLE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_PIDOF_OMIT is not set +# CONFIG_BUSYBOX_DEFAULT_PMAP is not set +# CONFIG_BUSYBOX_DEFAULT_POWERTOP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_POWERTOP_INTERACTIVE is not set +CONFIG_BUSYBOX_DEFAULT_PS=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_WIDE=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_LONG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_TIME is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_UNUSUAL_SYSTEMS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_ADDITIONAL_COLUMNS is not set +# CONFIG_BUSYBOX_DEFAULT_PSTREE is not set +# CONFIG_BUSYBOX_DEFAULT_PWDX is not set +# CONFIG_BUSYBOX_DEFAULT_SMEMCAP is not set +CONFIG_BUSYBOX_DEFAULT_BB_SYSCTL=y +CONFIG_BUSYBOX_DEFAULT_TOP=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_INTERACTIVE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_SMP_CPU is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_DECIMALS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_SMP_PROCESS is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOPMEM is not set +CONFIG_BUSYBOX_DEFAULT_UPTIME=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_UPTIME_UTMP_SUPPORT is not set +# CONFIG_BUSYBOX_DEFAULT_WATCH is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SHOW_THREADS is not set +# CONFIG_BUSYBOX_DEFAULT_CHPST is not set +# CONFIG_BUSYBOX_DEFAULT_SETUIDGID is not set +# CONFIG_BUSYBOX_DEFAULT_ENVUIDGID is not set +# CONFIG_BUSYBOX_DEFAULT_ENVDIR is not set +# CONFIG_BUSYBOX_DEFAULT_SOFTLIMIT is not set +# CONFIG_BUSYBOX_DEFAULT_RUNSV is not set +# CONFIG_BUSYBOX_DEFAULT_RUNSVDIR is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_RUNSVDIR_LOG is not set +# CONFIG_BUSYBOX_DEFAULT_SV is not set +CONFIG_BUSYBOX_DEFAULT_SV_DEFAULT_SERVICE_DIR="" +# CONFIG_BUSYBOX_DEFAULT_SVC is not set +# CONFIG_BUSYBOX_DEFAULT_SVOK is not set +# CONFIG_BUSYBOX_DEFAULT_SVLOGD is not set +# CONFIG_BUSYBOX_DEFAULT_CHCON is not set +# CONFIG_BUSYBOX_DEFAULT_GETENFORCE is not set +# CONFIG_BUSYBOX_DEFAULT_GETSEBOOL is not set +# CONFIG_BUSYBOX_DEFAULT_LOAD_POLICY is not set +# CONFIG_BUSYBOX_DEFAULT_MATCHPATHCON is not set +# CONFIG_BUSYBOX_DEFAULT_RUNCON is not set +# CONFIG_BUSYBOX_DEFAULT_SELINUXENABLED is not set +# CONFIG_BUSYBOX_DEFAULT_SESTATUS is not set +# CONFIG_BUSYBOX_DEFAULT_SETENFORCE is not set +# CONFIG_BUSYBOX_DEFAULT_SETFILES is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_BUSYBOX_DEFAULT_RESTORECON is not set +# CONFIG_BUSYBOX_DEFAULT_SETSEBOOL is not set +CONFIG_BUSYBOX_DEFAULT_SH_IS_ASH=y +# CONFIG_BUSYBOX_DEFAULT_SH_IS_HUSH is not set +# CONFIG_BUSYBOX_DEFAULT_SH_IS_NONE is not set +# CONFIG_BUSYBOX_DEFAULT_BASH_IS_ASH is not set +# CONFIG_BUSYBOX_DEFAULT_BASH_IS_HUSH is not set +CONFIG_BUSYBOX_DEFAULT_BASH_IS_NONE=y +CONFIG_BUSYBOX_DEFAULT_SHELL_ASH=y +CONFIG_BUSYBOX_DEFAULT_ASH=y +# CONFIG_BUSYBOX_DEFAULT_ASH_OPTIMIZE_FOR_SIZE is not set +CONFIG_BUSYBOX_DEFAULT_ASH_INTERNAL_GLOB=y +CONFIG_BUSYBOX_DEFAULT_ASH_BASH_COMPAT=y +# CONFIG_BUSYBOX_DEFAULT_ASH_BASH_SOURCE_CURDIR is not set +# CONFIG_BUSYBOX_DEFAULT_ASH_BASH_NOT_FOUND_HOOK is not set +CONFIG_BUSYBOX_DEFAULT_ASH_JOB_CONTROL=y +CONFIG_BUSYBOX_DEFAULT_ASH_ALIAS=y +# CONFIG_BUSYBOX_DEFAULT_ASH_RANDOM_SUPPORT is not set +CONFIG_BUSYBOX_DEFAULT_ASH_EXPAND_PRMT=y +# CONFIG_BUSYBOX_DEFAULT_ASH_IDLE_TIMEOUT is not set +# CONFIG_BUSYBOX_DEFAULT_ASH_MAIL is not set +CONFIG_BUSYBOX_DEFAULT_ASH_ECHO=y +CONFIG_BUSYBOX_DEFAULT_ASH_PRINTF=y +CONFIG_BUSYBOX_DEFAULT_ASH_TEST=y +# CONFIG_BUSYBOX_DEFAULT_ASH_HELP is not set +CONFIG_BUSYBOX_DEFAULT_ASH_GETOPTS=y +CONFIG_BUSYBOX_DEFAULT_ASH_CMDCMD=y +# CONFIG_BUSYBOX_DEFAULT_CTTYHACK is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH is not set +# CONFIG_BUSYBOX_DEFAULT_SHELL_HUSH is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_BASH_COMPAT is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_BRACE_EXPANSION is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_LINENO_VAR is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_BASH_SOURCE_CURDIR is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_INTERACTIVE is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_SAVEHISTORY is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_JOB is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_TICK is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_IF is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_LOOPS is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_CASE is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_FUNCTIONS is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_LOCAL is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_RANDOM_SUPPORT is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_MODE_X is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_ECHO is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_PRINTF is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_TEST is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_HELP is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_EXPORT is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_EXPORT_N is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_READONLY is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_KILL is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_WAIT is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_COMMAND is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_TRAP is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_TYPE is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_TIMES is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_READ is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_SET is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_UNSET is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_ULIMIT is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_UMASK is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_GETOPTS is not set +# CONFIG_BUSYBOX_DEFAULT_HUSH_MEMLEAK is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_MATH=y +CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_MATH_64=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_MATH_BASE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_EXTRA_QUIET is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_STANDALONE is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_NOFORK=y +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_READ_FRAC is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_HISTFILESIZE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_EMBEDDED_SCRIPTS is not set +# CONFIG_BUSYBOX_DEFAULT_KLOGD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_KLOGD_KLOGCTL is not set +CONFIG_BUSYBOX_DEFAULT_LOGGER=y +# CONFIG_BUSYBOX_DEFAULT_LOGREAD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_LOGREAD_REDUCED_LOCKING is not set +# CONFIG_BUSYBOX_DEFAULT_SYSLOGD is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_ROTATE_LOGFILE is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_REMOTE_LOG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOGD_DUP is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOGD_CFG is not set +# CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_IPC_SYSLOG is not set +CONFIG_BUSYBOX_DEFAULT_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 +# CONFIG_BUSYBOX_DEFAULT_FEATURE_KMSG_SYSLOG is not set +CONFIG_BUSYBOX_CONFIG_HAVE_DOT_CONFIG=y + +# +# Settings +# +# CONFIG_BUSYBOX_CONFIG_DESKTOP is not set +# CONFIG_BUSYBOX_CONFIG_EXTRA_COMPAT is not set +# CONFIG_BUSYBOX_CONFIG_FEDORA_COMPAT is not set +CONFIG_BUSYBOX_CONFIG_INCLUDE_SUSv2=y +CONFIG_BUSYBOX_CONFIG_LONG_OPTS=y +CONFIG_BUSYBOX_CONFIG_SHOW_USAGE=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VERBOSE_USAGE=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_COMPRESS_USAGE is not set +CONFIG_BUSYBOX_CONFIG_LFS=y +# CONFIG_BUSYBOX_CONFIG_PAM is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_DEVPTS=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_UTMP is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_PIDFILE=y +CONFIG_BUSYBOX_CONFIG_PID_FILE_PATH="/var/run" +# CONFIG_BUSYBOX_CONFIG_BUSYBOX is not set +# CONFIG_BUSYBOX_CONFIG_INSTALL_NO_USR is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_SUID is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS=y +CONFIG_BUSYBOX_CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +# CONFIG_BUSYBOX_CONFIG_SELINUX is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_CLEAN_UP is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_SYSLOG_INFO is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_SYSLOG=y + +# +# Build Options +# +# CONFIG_BUSYBOX_CONFIG_STATIC is not set +# CONFIG_BUSYBOX_CONFIG_PIE is not set +# CONFIG_BUSYBOX_CONFIG_NOMMU is not set +CONFIG_BUSYBOX_CONFIG_CROSS_COMPILER_PREFIX="" +CONFIG_BUSYBOX_CONFIG_SYSROOT="" +CONFIG_BUSYBOX_CONFIG_EXTRA_CFLAGS="" +CONFIG_BUSYBOX_CONFIG_EXTRA_LDFLAGS="" +CONFIG_BUSYBOX_CONFIG_EXTRA_LDLIBS="" +# CONFIG_BUSYBOX_CONFIG_USE_PORTABLE_CODE is not set +# CONFIG_BUSYBOX_CONFIG_STACK_OPTIMIZATION_386 is not set +# CONFIG_BUSYBOX_CONFIG_STATIC_LIBGCC is not set + +# +# Installation Options ("make install" behavior) +# +CONFIG_BUSYBOX_CONFIG_INSTALL_APPLET_SYMLINKS=y +# CONFIG_BUSYBOX_CONFIG_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_BUSYBOX_CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +# CONFIG_BUSYBOX_CONFIG_INSTALL_APPLET_DONT is not set +CONFIG_BUSYBOX_CONFIG_PREFIX="./_install" + +# +# Debugging Options +# +# CONFIG_BUSYBOX_CONFIG_DEBUG is not set +# CONFIG_BUSYBOX_CONFIG_DEBUG_SANITIZE is not set +# CONFIG_BUSYBOX_CONFIG_UNIT_TEST is not set +# CONFIG_BUSYBOX_CONFIG_WERROR is not set +# CONFIG_BUSYBOX_CONFIG_WARN_SIMPLE_MSG is not set +CONFIG_BUSYBOX_CONFIG_NO_DEBUG_LIB=y +# CONFIG_BUSYBOX_CONFIG_DMALLOC is not set +# CONFIG_BUSYBOX_CONFIG_EFENCE is not set + +# +# Library Tuning +# +# CONFIG_BUSYBOX_CONFIG_FEATURE_USE_BSS_TAIL is not set +# CONFIG_BUSYBOX_CONFIG_FLOAT_DURATION is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_RTMINMAX is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_BUSYBOX_CONFIG_PASSWORD_MINLEN=6 +CONFIG_BUSYBOX_CONFIG_MD5_SMALL=1 +CONFIG_BUSYBOX_CONFIG_SHA3_SMALL=1 +CONFIG_BUSYBOX_CONFIG_FEATURE_FAST_TOP=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_ETC_NETWORKS is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_ETC_SERVICES is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING=y +CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_MAX_LEN=512 +# CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_VI is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_HISTORY=256 +# CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_REVERSE_SEARCH is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_TAB_COMPLETION=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_USERNAME_COMPLETION is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_FANCY_PROMPT=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_WINCH is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set +# CONFIG_BUSYBOX_CONFIG_LOCALE_SUPPORT is not set +# CONFIG_BUSYBOX_CONFIG_UNICODE_SUPPORT is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_NON_POSIX_CP=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_USE_SENDFILE=y +CONFIG_BUSYBOX_CONFIG_FEATURE_COPYBUF_KB=4 +# CONFIG_BUSYBOX_CONFIG_FEATURE_SKIP_ROOTFS is not set +CONFIG_BUSYBOX_CONFIG_MONOTONIC_SYSCALL=y +CONFIG_BUSYBOX_CONFIG_IOCTL_HEX2STR_ERROR=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_HWIB is not set +# end of Settings + +# +# Applets +# + +# +# Archival Utilities +# +# CONFIG_BUSYBOX_CONFIG_FEATURE_SEAMLESS_XZ is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_SEAMLESS_BZ2=y +CONFIG_BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z is not set +# CONFIG_BUSYBOX_CONFIG_AR is not set +# CONFIG_BUSYBOX_CONFIG_UNCOMPRESS is not set +CONFIG_BUSYBOX_CONFIG_GUNZIP=y +CONFIG_BUSYBOX_CONFIG_ZCAT=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_GUNZIP_LONG_OPTIONS is not set +CONFIG_BUSYBOX_CONFIG_BUNZIP2=y +CONFIG_BUSYBOX_CONFIG_BZCAT=y +# CONFIG_BUSYBOX_CONFIG_UNLZMA is not set +# CONFIG_BUSYBOX_CONFIG_LZCAT is not set +# CONFIG_BUSYBOX_CONFIG_LZMA is not set +# CONFIG_BUSYBOX_CONFIG_UNXZ is not set +# CONFIG_BUSYBOX_CONFIG_XZCAT is not set +# CONFIG_BUSYBOX_CONFIG_XZ is not set +# CONFIG_BUSYBOX_CONFIG_BZIP2 is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_BZIP2_DECOMPRESS=y +# CONFIG_BUSYBOX_CONFIG_CPIO is not set +# CONFIG_BUSYBOX_CONFIG_DPKG is not set +# CONFIG_BUSYBOX_CONFIG_DPKG_DEB is not set +CONFIG_BUSYBOX_CONFIG_GZIP=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set +CONFIG_BUSYBOX_CONFIG_GZIP_FAST=0 +# CONFIG_BUSYBOX_CONFIG_FEATURE_GZIP_LEVELS is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_GZIP_DECOMPRESS=y +# CONFIG_BUSYBOX_CONFIG_LZOP is not set +# CONFIG_BUSYBOX_CONFIG_UNLZOP is not set +# CONFIG_BUSYBOX_CONFIG_LZOPCAT is not set +# CONFIG_BUSYBOX_CONFIG_RPM is not set +# CONFIG_BUSYBOX_CONFIG_RPM2CPIO is not set +CONFIG_BUSYBOX_CONFIG_TAR=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_LONG_OPTIONS is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_CREATE=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_AUTODETECT is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_FROM=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_UNAME_GNAME is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set +# CONFIG_BUSYBOX_CONFIG_UNZIP is not set +# end of Archival Utilities + +# +# Coreutils +# +CONFIG_BUSYBOX_CONFIG_BASENAME=y +CONFIG_BUSYBOX_CONFIG_CAT=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_CATN is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_CATV is not set +CONFIG_BUSYBOX_CONFIG_CHGRP=y +CONFIG_BUSYBOX_CONFIG_CHMOD=y +CONFIG_BUSYBOX_CONFIG_CHOWN=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set +CONFIG_BUSYBOX_CONFIG_CHROOT=y +# CONFIG_BUSYBOX_CONFIG_CKSUM is not set +# CONFIG_BUSYBOX_CONFIG_COMM is not set +CONFIG_BUSYBOX_CONFIG_CP=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_CP_LONG_OPTIONS is not set +CONFIG_BUSYBOX_CONFIG_CUT=y +CONFIG_BUSYBOX_CONFIG_DATE=y +CONFIG_BUSYBOX_CONFIG_FEATURE_DATE_ISOFMT=y +CONFIG_BUSYBOX_CONFIG_FEATURE_DATE_NANO=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_DATE_COMPAT is not set +CONFIG_BUSYBOX_CONFIG_DD=y +CONFIG_BUSYBOX_CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_DD_IBS_OBS=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_DD_STATUS is not set +CONFIG_BUSYBOX_CONFIG_DF=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_DF_FANCY is not set +CONFIG_BUSYBOX_CONFIG_DIRNAME=y +# CONFIG_BUSYBOX_CONFIG_DOS2UNIX is not set +# CONFIG_BUSYBOX_CONFIG_UNIX2DOS is not set +CONFIG_BUSYBOX_CONFIG_DU=y +CONFIG_BUSYBOX_CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_BUSYBOX_CONFIG_ECHO=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FANCY_ECHO=y +CONFIG_BUSYBOX_CONFIG_ENV=y +# CONFIG_BUSYBOX_CONFIG_EXPAND is not set +# CONFIG_BUSYBOX_CONFIG_UNEXPAND is not set +CONFIG_BUSYBOX_CONFIG_EXPR=y +CONFIG_BUSYBOX_CONFIG_EXPR_MATH_SUPPORT_64=y +# CONFIG_BUSYBOX_CONFIG_FACTOR is not set +CONFIG_BUSYBOX_CONFIG_FALSE=y +# CONFIG_BUSYBOX_CONFIG_FOLD is not set +CONFIG_BUSYBOX_CONFIG_HEAD=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FANCY_HEAD=y +# CONFIG_BUSYBOX_CONFIG_HOSTID is not set +CONFIG_BUSYBOX_CONFIG_ID=y +# CONFIG_BUSYBOX_CONFIG_GROUPS is not set +# CONFIG_BUSYBOX_CONFIG_INSTALL is not set +# CONFIG_BUSYBOX_CONFIG_LINK is not set +CONFIG_BUSYBOX_CONFIG_LN=y +# CONFIG_BUSYBOX_CONFIG_LOGNAME is not set +CONFIG_BUSYBOX_CONFIG_LS=y +CONFIG_BUSYBOX_CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_BUSYBOX_CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_BUSYBOX_CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_BUSYBOX_CONFIG_FEATURE_LS_WIDTH=y +CONFIG_BUSYBOX_CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_BUSYBOX_CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_BUSYBOX_CONFIG_FEATURE_LS_USERNAME=y +CONFIG_BUSYBOX_CONFIG_FEATURE_LS_COLOR=y +CONFIG_BUSYBOX_CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y +CONFIG_BUSYBOX_CONFIG_MD5SUM=y +# CONFIG_BUSYBOX_CONFIG_SHA1SUM is not set +CONFIG_BUSYBOX_CONFIG_SHA256SUM=y +# CONFIG_BUSYBOX_CONFIG_SHA512SUM is not set +# CONFIG_BUSYBOX_CONFIG_SHA3SUM is not set + +# +# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum +# +CONFIG_BUSYBOX_CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y +CONFIG_BUSYBOX_CONFIG_MKDIR=y +CONFIG_BUSYBOX_CONFIG_MKFIFO=y +CONFIG_BUSYBOX_CONFIG_MKNOD=y +CONFIG_BUSYBOX_CONFIG_MKTEMP=y +CONFIG_BUSYBOX_CONFIG_MV=y +CONFIG_BUSYBOX_CONFIG_NICE=y +# CONFIG_BUSYBOX_CONFIG_NL is not set +CONFIG_BUSYBOX_CONFIG_NOHUP=y +# CONFIG_BUSYBOX_CONFIG_NPROC is not set +# CONFIG_BUSYBOX_CONFIG_OD is not set +# CONFIG_BUSYBOX_CONFIG_PASTE is not set +# CONFIG_BUSYBOX_CONFIG_PRINTENV is not set +CONFIG_BUSYBOX_CONFIG_PRINTF=y +CONFIG_BUSYBOX_CONFIG_PWD=y +CONFIG_BUSYBOX_CONFIG_READLINK=y +CONFIG_BUSYBOX_CONFIG_FEATURE_READLINK_FOLLOW=y +# CONFIG_BUSYBOX_CONFIG_REALPATH is not set +CONFIG_BUSYBOX_CONFIG_RM=y +CONFIG_BUSYBOX_CONFIG_RMDIR=y +CONFIG_BUSYBOX_CONFIG_SEQ=y +# CONFIG_BUSYBOX_CONFIG_SHRED is not set +# CONFIG_BUSYBOX_CONFIG_SHUF is not set +CONFIG_BUSYBOX_CONFIG_SLEEP=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FANCY_SLEEP=y +CONFIG_BUSYBOX_CONFIG_SORT=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_SORT_BIG is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set +# CONFIG_BUSYBOX_CONFIG_SPLIT is not set +CONFIG_BUSYBOX_CONFIG_STAT=y +CONFIG_BUSYBOX_CONFIG_FEATURE_STAT_FORMAT=y +CONFIG_BUSYBOX_CONFIG_FEATURE_STAT_FILESYSTEM=y +CONFIG_BUSYBOX_CONFIG_STTY=y +# CONFIG_BUSYBOX_CONFIG_SUM is not set +CONFIG_BUSYBOX_CONFIG_SYNC=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_SYNC_FANCY is not set +CONFIG_BUSYBOX_CONFIG_FSYNC=y +# CONFIG_BUSYBOX_CONFIG_TAC is not set +CONFIG_BUSYBOX_CONFIG_TAIL=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_BUSYBOX_CONFIG_TEE=y +CONFIG_BUSYBOX_CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_BUSYBOX_CONFIG_TEST=y +CONFIG_BUSYBOX_CONFIG_TEST1=y +CONFIG_BUSYBOX_CONFIG_TEST2=y +CONFIG_BUSYBOX_CONFIG_FEATURE_TEST_64=y +CONFIG_BUSYBOX_CONFIG_TIMEOUT=y +CONFIG_BUSYBOX_CONFIG_TOUCH=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_TOUCH_NODEREF is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_TOUCH_SUSV3=y +CONFIG_BUSYBOX_CONFIG_TR=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_TR_CLASSES is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_TR_EQUIV is not set +CONFIG_BUSYBOX_CONFIG_TRUE=y +# CONFIG_BUSYBOX_CONFIG_TRUNCATE is not set +# CONFIG_BUSYBOX_CONFIG_TTY is not set +CONFIG_BUSYBOX_CONFIG_UNAME=y +CONFIG_BUSYBOX_CONFIG_UNAME_OSNAME="GNU/Linux" +# CONFIG_BUSYBOX_CONFIG_BB_ARCH is not set +CONFIG_BUSYBOX_CONFIG_UNIQ=y +# CONFIG_BUSYBOX_CONFIG_UNLINK is not set +# CONFIG_BUSYBOX_CONFIG_USLEEP is not set +# CONFIG_BUSYBOX_CONFIG_UUDECODE is not set +# CONFIG_BUSYBOX_CONFIG_BASE32 is not set +CONFIG_BUSYBOX_CONFIG_BASE64=y +# CONFIG_BUSYBOX_CONFIG_UUENCODE is not set +CONFIG_BUSYBOX_CONFIG_WC=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_WC_LARGE is not set +# CONFIG_BUSYBOX_CONFIG_WHOAMI is not set +CONFIG_BUSYBOX_CONFIG_YES=y + +# +# Common options +# +# CONFIG_BUSYBOX_CONFIG_FEATURE_VERBOSE is not set + +# +# Common options for cp and mv +# +CONFIG_BUSYBOX_CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for df, du, ls +# +CONFIG_BUSYBOX_CONFIG_FEATURE_HUMAN_READABLE=y +# end of Coreutils + +# +# Console Utilities +# +# CONFIG_BUSYBOX_CONFIG_CHVT is not set +CONFIG_BUSYBOX_CONFIG_CLEAR=y +# CONFIG_BUSYBOX_CONFIG_DEALLOCVT is not set +# CONFIG_BUSYBOX_CONFIG_DUMPKMAP is not set +# CONFIG_BUSYBOX_CONFIG_FGCONSOLE is not set +# CONFIG_BUSYBOX_CONFIG_KBD_MODE is not set +# CONFIG_BUSYBOX_CONFIG_LOADFONT is not set +# CONFIG_BUSYBOX_CONFIG_SETFONT is not set +CONFIG_BUSYBOX_CONFIG_LOADKMAP=y +# CONFIG_BUSYBOX_CONFIG_OPENVT is not set +CONFIG_BUSYBOX_CONFIG_RESET=y +# CONFIG_BUSYBOX_CONFIG_RESIZE is not set +# CONFIG_BUSYBOX_CONFIG_SETCONSOLE is not set +# CONFIG_BUSYBOX_CONFIG_SETKEYCODES is not set +# CONFIG_BUSYBOX_CONFIG_SETLOGCONS is not set +# CONFIG_BUSYBOX_CONFIG_SHOWKEY is not set +# end of Console Utilities + +# +# Debian Utilities +# +# CONFIG_BUSYBOX_CONFIG_PIPE_PROGRESS is not set +# CONFIG_BUSYBOX_CONFIG_RUN_PARTS is not set +CONFIG_BUSYBOX_CONFIG_START_STOP_DAEMON=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set +CONFIG_BUSYBOX_CONFIG_WHICH=y +# end of Debian Utilities + +# +# klibc-utils +# +# CONFIG_BUSYBOX_CONFIG_MINIPS is not set +# CONFIG_BUSYBOX_CONFIG_NUKE is not set +# CONFIG_BUSYBOX_CONFIG_RESUME is not set +# CONFIG_BUSYBOX_CONFIG_RUN_INIT is not set +# end of klibc-utils + +# +# Editors +# +CONFIG_BUSYBOX_CONFIG_AWK=y +CONFIG_BUSYBOX_CONFIG_FEATURE_AWK_LIBM=y +CONFIG_BUSYBOX_CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y +CONFIG_BUSYBOX_CONFIG_CMP=y +CONFIG_BUSYBOX_CONFIG_DIFF=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_DIFF_DIR=y +# CONFIG_BUSYBOX_CONFIG_ED is not set +# CONFIG_BUSYBOX_CONFIG_PATCH is not set +CONFIG_BUSYBOX_CONFIG_SED=y +CONFIG_BUSYBOX_CONFIG_VI=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_MAX_LEN=1024 +# CONFIG_BUSYBOX_CONFIG_FEATURE_VI_8BIT is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_COLON=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_SEARCH=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_USE_SIGNALS=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_DOT_CMD=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_READONLY=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_SETOPTS=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_SET=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_WIN_RESIZE=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_ASK_TERMINAL=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_UNDO=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_UNDO_QUEUE=y +CONFIG_BUSYBOX_CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=32 +CONFIG_BUSYBOX_CONFIG_FEATURE_ALLOW_EXEC=y +# end of Editors + +# +# Finding Utilities +# +CONFIG_BUSYBOX_CONFIG_FIND=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_PRINT0=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_MTIME=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_MMIN=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_PERM=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_TYPE=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_EXECUTABLE is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_XDEV=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_MAXDEPTH=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_NEWER=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_INUM is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_EXEC=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_EXEC_PLUS is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_USER=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_GROUP=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_NOT=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_DEPTH=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_PAREN=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_SIZE=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_PRUNE=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_QUIT is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_DELETE is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_EMPTY is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_PATH=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_REGEX=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_LINKS is not set +CONFIG_BUSYBOX_CONFIG_GREP=y +CONFIG_BUSYBOX_CONFIG_EGREP=y +CONFIG_BUSYBOX_CONFIG_FGREP=y +CONFIG_BUSYBOX_CONFIG_FEATURE_GREP_CONTEXT=y +CONFIG_BUSYBOX_CONFIG_XARGS=y +CONFIG_BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y +CONFIG_BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE is not set +# end of Finding Utilities + +# +# Init Utilities +# +# CONFIG_BUSYBOX_CONFIG_BOOTCHARTD is not set +CONFIG_BUSYBOX_CONFIG_HALT=y +CONFIG_BUSYBOX_CONFIG_POWEROFF=y +CONFIG_BUSYBOX_CONFIG_REBOOT=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_WAIT_FOR_INIT is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_CALL_TELINIT is not set +# CONFIG_BUSYBOX_CONFIG_INIT is not set +# CONFIG_BUSYBOX_CONFIG_LINUXRC is not set +# end of Init Utilities + +# +# Login/Password Management Utilities +# +CONFIG_BUSYBOX_CONFIG_FEATURE_SHADOWPASSWDS=y +# CONFIG_BUSYBOX_CONFIG_USE_BB_PWD_GRP is not set +# CONFIG_BUSYBOX_CONFIG_USE_BB_CRYPT is not set +# CONFIG_BUSYBOX_CONFIG_ADD_SHELL is not set +# CONFIG_BUSYBOX_CONFIG_REMOVE_SHELL is not set +# CONFIG_BUSYBOX_CONFIG_ADDGROUP is not set +CONFIG_BUSYBOX_CONFIG_ADDUSER=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_CHECK_NAMES is not set +CONFIG_BUSYBOX_CONFIG_LAST_ID=0 +CONFIG_BUSYBOX_CONFIG_FIRST_SYSTEM_ID=0 +CONFIG_BUSYBOX_CONFIG_LAST_SYSTEM_ID=0 +CONFIG_BUSYBOX_CONFIG_CHPASSWD=y +CONFIG_BUSYBOX_CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="md5" +# CONFIG_BUSYBOX_CONFIG_CRYPTPW is not set +# CONFIG_BUSYBOX_CONFIG_MKPASSWD is not set +CONFIG_BUSYBOX_CONFIG_DELUSER=y +# CONFIG_BUSYBOX_CONFIG_DELGROUP is not set +# CONFIG_BUSYBOX_CONFIG_GETTY is not set +CONFIG_BUSYBOX_CONFIG_LOGIN=y +# CONFIG_BUSYBOX_CONFIG_LOGIN_SESSION_AS_CHILD is not set +# CONFIG_BUSYBOX_CONFIG_LOGIN_SCRIPTS is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_NOLOGIN is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_SECURETTY is not set +CONFIG_BUSYBOX_CONFIG_PASSWD=y +CONFIG_BUSYBOX_CONFIG_FEATURE_PASSWD_WEAK_CHECK=y +# CONFIG_BUSYBOX_CONFIG_SU is not set +# CONFIG_BUSYBOX_CONFIG_SULOGIN is not set +# CONFIG_BUSYBOX_CONFIG_VLOCK is not set +# end of Login/Password Management Utilities + +# +# Linux Ext2 FS Progs +# +# CONFIG_BUSYBOX_CONFIG_CHATTR is not set +# CONFIG_BUSYBOX_CONFIG_FSCK is not set +# CONFIG_BUSYBOX_CONFIG_LSATTR is not set +# CONFIG_BUSYBOX_CONFIG_TUNE2FS is not set +# end of Linux Ext2 FS Progs + +# +# Linux Module Utilities +# +# CONFIG_BUSYBOX_CONFIG_MODPROBE_SMALL is not set +# CONFIG_BUSYBOX_CONFIG_DEPMOD is not set +# CONFIG_BUSYBOX_CONFIG_INSMOD is not set +# CONFIG_BUSYBOX_CONFIG_LSMOD is not set +# CONFIG_BUSYBOX_CONFIG_MODINFO is not set +# CONFIG_BUSYBOX_CONFIG_MODPROBE is not set +# CONFIG_BUSYBOX_CONFIG_RMMOD is not set + +# +# Options common to multiple modutils +# +# end of Linux Module Utilities + +# +# Linux System Utilities +# +# CONFIG_BUSYBOX_CONFIG_ACPID is not set +# CONFIG_BUSYBOX_CONFIG_BLKDISCARD is not set +# CONFIG_BUSYBOX_CONFIG_BLKID is not set +# CONFIG_BUSYBOX_CONFIG_BLOCKDEV is not set +# CONFIG_BUSYBOX_CONFIG_CAL is not set +# CONFIG_BUSYBOX_CONFIG_CHRT is not set +CONFIG_BUSYBOX_CONFIG_DMESG=y +CONFIG_BUSYBOX_CONFIG_FEATURE_DMESG_PRETTY=y +# CONFIG_BUSYBOX_CONFIG_EJECT is not set +# CONFIG_BUSYBOX_CONFIG_FALLOCATE is not set +# CONFIG_BUSYBOX_CONFIG_FATATTR is not set +# CONFIG_BUSYBOX_CONFIG_FBSET is not set +# CONFIG_BUSYBOX_CONFIG_FDFORMAT is not set +# CONFIG_BUSYBOX_CONFIG_FDISK is not set +# CONFIG_BUSYBOX_CONFIG_FINDFS is not set +CONFIG_BUSYBOX_CONFIG_FLOCK=y +# CONFIG_BUSYBOX_CONFIG_FDFLUSH is not set +# CONFIG_BUSYBOX_CONFIG_FREERAMDISK is not set +# CONFIG_BUSYBOX_CONFIG_FSCK_MINIX is not set +# CONFIG_BUSYBOX_CONFIG_FSFREEZE is not set +# CONFIG_BUSYBOX_CONFIG_FSTRIM is not set +# CONFIG_BUSYBOX_CONFIG_GETOPT is not set +CONFIG_BUSYBOX_CONFIG_HEXDUMP=y +# CONFIG_BUSYBOX_CONFIG_HD is not set +# CONFIG_BUSYBOX_CONFIG_XXD is not set +CONFIG_BUSYBOX_CONFIG_HWCLOCK=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set +# CONFIG_BUSYBOX_CONFIG_IONICE is not set +# CONFIG_BUSYBOX_CONFIG_IPCRM is not set +# CONFIG_BUSYBOX_CONFIG_IPCS is not set +# CONFIG_BUSYBOX_CONFIG_LOSETUP is not set +CONFIG_BUSYBOX_CONFIG_LSPCI=y +CONFIG_BUSYBOX_CONFIG_LSUSB=y +# CONFIG_BUSYBOX_CONFIG_MDEV is not set +# CONFIG_BUSYBOX_CONFIG_MESG is not set +# CONFIG_BUSYBOX_CONFIG_MKE2FS is not set +# CONFIG_BUSYBOX_CONFIG_MKFS_EXT2 is not set +# CONFIG_BUSYBOX_CONFIG_MKFS_MINIX is not set +# CONFIG_BUSYBOX_CONFIG_MKFS_REISER is not set +# CONFIG_BUSYBOX_CONFIG_MKDOSFS is not set +# CONFIG_BUSYBOX_CONFIG_MKFS_VFAT is not set +CONFIG_BUSYBOX_CONFIG_MKSWAP=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_MKSWAP_UUID is not set +# CONFIG_BUSYBOX_CONFIG_MORE is not set +CONFIG_BUSYBOX_CONFIG_MOUNT=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_FAKE is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_VERBOSE is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_HELPERS=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_LABEL is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_NFS is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_CIFS=y +CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_FSTAB=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_OTHERTAB is not set +# CONFIG_BUSYBOX_CONFIG_MOUNTPOINT is not set +# CONFIG_BUSYBOX_CONFIG_NSENTER is not set +CONFIG_BUSYBOX_CONFIG_PIVOT_ROOT=y +# CONFIG_BUSYBOX_CONFIG_RDATE is not set +# CONFIG_BUSYBOX_CONFIG_RDEV is not set +# CONFIG_BUSYBOX_CONFIG_READPROFILE is not set +# CONFIG_BUSYBOX_CONFIG_RENICE is not set +# CONFIG_BUSYBOX_CONFIG_REV is not set +# CONFIG_BUSYBOX_CONFIG_RTCWAKE is not set +# CONFIG_BUSYBOX_CONFIG_SCRIPT is not set +# CONFIG_BUSYBOX_CONFIG_SCRIPTREPLAY is not set +# CONFIG_BUSYBOX_CONFIG_SETARCH is not set +# CONFIG_BUSYBOX_CONFIG_LINUX32 is not set +# CONFIG_BUSYBOX_CONFIG_LINUX64 is not set +# CONFIG_BUSYBOX_CONFIG_SETPRIV is not set +# CONFIG_BUSYBOX_CONFIG_SETSID is not set +CONFIG_BUSYBOX_CONFIG_SWAPON=y +CONFIG_BUSYBOX_CONFIG_FEATURE_SWAPON_DISCARD=y +CONFIG_BUSYBOX_CONFIG_FEATURE_SWAPON_PRI=y +CONFIG_BUSYBOX_CONFIG_SWAPOFF=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_SWAPONOFF_LABEL is not set +CONFIG_BUSYBOX_CONFIG_SWITCH_ROOT=y +# CONFIG_BUSYBOX_CONFIG_TASKSET is not set +# CONFIG_BUSYBOX_CONFIG_UEVENT is not set +CONFIG_BUSYBOX_CONFIG_UMOUNT=y +CONFIG_BUSYBOX_CONFIG_FEATURE_UMOUNT_ALL=y +# CONFIG_BUSYBOX_CONFIG_UNSHARE is not set + +# +# Common options for mount/umount +# +CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP_CREATE is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT is not set +# CONFIG_BUSYBOX_CONFIG_VOLUMEID is not set +# end of Linux System Utilities + +# +# Miscellaneous Utilities +# +# CONFIG_BUSYBOX_CONFIG_ADJTIMEX is not set +# CONFIG_BUSYBOX_CONFIG_BBCONFIG is not set +CONFIG_BUSYBOX_CONFIG_BC=y +# CONFIG_BUSYBOX_CONFIG_DC is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_DC_BIG is not set +# CONFIG_BUSYBOX_CONFIG_BEEP is not set +# CONFIG_BUSYBOX_CONFIG_CHAT is not set +# CONFIG_BUSYBOX_CONFIG_CONSPY is not set +CONFIG_BUSYBOX_CONFIG_CROND=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_CROND_D is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_CROND_SPECIAL_TIMES is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_CROND_DIR="/etc" +CONFIG_BUSYBOX_CONFIG_CRONTAB=y +# CONFIG_BUSYBOX_CONFIG_DEVFSD is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_DEVFS is not set +# CONFIG_BUSYBOX_CONFIG_DEVMEM is not set +# CONFIG_BUSYBOX_CONFIG_FBSPLASH is not set +# CONFIG_BUSYBOX_CONFIG_FLASH_ERASEALL is not set +# CONFIG_BUSYBOX_CONFIG_FLASH_LOCK is not set +# CONFIG_BUSYBOX_CONFIG_FLASH_UNLOCK is not set +# CONFIG_BUSYBOX_CONFIG_FLASHCP is not set +# CONFIG_BUSYBOX_CONFIG_HDPARM is not set +# CONFIG_BUSYBOX_CONFIG_HEXEDIT is not set +# CONFIG_BUSYBOX_CONFIG_I2CGET is not set +# CONFIG_BUSYBOX_CONFIG_I2CSET is not set +# CONFIG_BUSYBOX_CONFIG_I2CDUMP is not set +# CONFIG_BUSYBOX_CONFIG_I2CDETECT is not set +# CONFIG_BUSYBOX_CONFIG_I2CTRANSFER is not set +# CONFIG_BUSYBOX_CONFIG_INOTIFYD is not set +CONFIG_BUSYBOX_CONFIG_LESS=y +CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_MAXLINES=9999999 +# CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_BRACKETS is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_FLAGS is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_TRUNCATE is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_MARKS is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_REGEXP is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_WINCH is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_DASHCMD is not set +CONFIG_BUSYBOX_CONFIG_LOCK=y +# CONFIG_BUSYBOX_CONFIG_LSSCSI is not set +# CONFIG_BUSYBOX_CONFIG_MAKEDEVS is not set +# CONFIG_BUSYBOX_CONFIG_MAN is not set +# CONFIG_BUSYBOX_CONFIG_MICROCOM is not set +# CONFIG_BUSYBOX_CONFIG_MT is not set +# CONFIG_BUSYBOX_CONFIG_NANDWRITE is not set +# CONFIG_BUSYBOX_CONFIG_NANDDUMP is not set +# CONFIG_BUSYBOX_CONFIG_PARTPROBE is not set +# CONFIG_BUSYBOX_CONFIG_RAIDAUTORUN is not set +# CONFIG_BUSYBOX_CONFIG_READAHEAD is not set +# CONFIG_BUSYBOX_CONFIG_RFKILL is not set +# CONFIG_BUSYBOX_CONFIG_RX is not set +# CONFIG_BUSYBOX_CONFIG_SETFATTR is not set +# CONFIG_BUSYBOX_CONFIG_SETSERIAL is not set +CONFIG_BUSYBOX_CONFIG_STRINGS=y +CONFIG_BUSYBOX_CONFIG_TIME=y +# CONFIG_BUSYBOX_CONFIG_TS is not set +# CONFIG_BUSYBOX_CONFIG_TTYSIZE is not set +# CONFIG_BUSYBOX_CONFIG_UBIATTACH is not set +# CONFIG_BUSYBOX_CONFIG_UBIDETACH is not set +# CONFIG_BUSYBOX_CONFIG_UBIMKVOL is not set +# CONFIG_BUSYBOX_CONFIG_UBIRMVOL is not set +# CONFIG_BUSYBOX_CONFIG_UBIRSVOL is not set +# CONFIG_BUSYBOX_CONFIG_UBIUPDATEVOL is not set +# CONFIG_BUSYBOX_CONFIG_UBIRENAME is not set +# CONFIG_BUSYBOX_CONFIG_VOLNAME is not set +# CONFIG_BUSYBOX_CONFIG_WATCHDOG is not set +# end of Miscellaneous Utilities + +# +# Networking Utilities +# +CONFIG_BUSYBOX_CONFIG_FEATURE_IPV6=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_UNIX_LOCAL is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set +CONFIG_BUSYBOX_CONFIG_VERBOSE_RESOLUTION_ERRORS=y +CONFIG_BUSYBOX_CONFIG_ARP=y +CONFIG_BUSYBOX_CONFIG_ARPING=y +CONFIG_BUSYBOX_CONFIG_BRCTL=y +CONFIG_BUSYBOX_CONFIG_FEATURE_BRCTL_FANCY=y +CONFIG_BUSYBOX_CONFIG_FEATURE_BRCTL_SHOW=y +# CONFIG_BUSYBOX_CONFIG_DNSD is not set +# CONFIG_BUSYBOX_CONFIG_ETHER_WAKE is not set +# CONFIG_BUSYBOX_CONFIG_FTPD is not set +# CONFIG_BUSYBOX_CONFIG_FTPGET is not set +# CONFIG_BUSYBOX_CONFIG_FTPPUT is not set +# CONFIG_BUSYBOX_CONFIG_HOSTNAME is not set +# CONFIG_BUSYBOX_CONFIG_DNSDOMAINNAME is not set +# CONFIG_BUSYBOX_CONFIG_HTTPD is not set +CONFIG_BUSYBOX_CONFIG_IFCONFIG=y +CONFIG_BUSYBOX_CONFIG_FEATURE_IFCONFIG_STATUS=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_IFCONFIG_SLIP is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_IFCONFIG_HW=y +CONFIG_BUSYBOX_CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y +# CONFIG_BUSYBOX_CONFIG_IFENSLAVE is not set +# CONFIG_BUSYBOX_CONFIG_IFPLUGD is not set +# CONFIG_BUSYBOX_CONFIG_IFUP is not set +# CONFIG_BUSYBOX_CONFIG_IFDOWN is not set +# CONFIG_BUSYBOX_CONFIG_INETD is not set +CONFIG_BUSYBOX_CONFIG_IP=y +# CONFIG_BUSYBOX_CONFIG_IPADDR is not set +# CONFIG_BUSYBOX_CONFIG_IPLINK is not set +# CONFIG_BUSYBOX_CONFIG_IPROUTE is not set +# CONFIG_BUSYBOX_CONFIG_IPTUNNEL is not set +# CONFIG_BUSYBOX_CONFIG_IPRULE is not set +# CONFIG_BUSYBOX_CONFIG_IPNEIGH is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_BUSYBOX_CONFIG_FEATURE_IP_LINK=y +CONFIG_BUSYBOX_CONFIG_FEATURE_IP_ROUTE=y +CONFIG_BUSYBOX_CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" +# CONFIG_BUSYBOX_CONFIG_FEATURE_IP_TUNNEL is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_IP_RULE=y +CONFIG_BUSYBOX_CONFIG_FEATURE_IP_NEIGH=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set +# CONFIG_BUSYBOX_CONFIG_IPCALC is not set +# CONFIG_BUSYBOX_CONFIG_FAKEIDENTD is not set +# CONFIG_BUSYBOX_CONFIG_NAMEIF is not set +# CONFIG_BUSYBOX_CONFIG_NBDCLIENT is not set +CONFIG_BUSYBOX_CONFIG_NC=y +# CONFIG_BUSYBOX_CONFIG_NETCAT is not set +# CONFIG_BUSYBOX_CONFIG_NC_SERVER is not set +# CONFIG_BUSYBOX_CONFIG_NC_EXTRA is not set +# CONFIG_BUSYBOX_CONFIG_NC_110_COMPAT is not set +CONFIG_BUSYBOX_CONFIG_NETMSG=y +CONFIG_BUSYBOX_CONFIG_NETSTAT=y +CONFIG_BUSYBOX_CONFIG_FEATURE_NETSTAT_WIDE=y +CONFIG_BUSYBOX_CONFIG_FEATURE_NETSTAT_PRG=y +# CONFIG_BUSYBOX_CONFIG_NSLOOKUP is not set +CONFIG_BUSYBOX_CONFIG_NSLOOKUP_OPENWRT=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_NSLOOKUP_OPENWRT_LONG_OPTIONS is not set +CONFIG_BUSYBOX_CONFIG_NTPD=y +CONFIG_BUSYBOX_CONFIG_FEATURE_NTPD_SERVER=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_NTPD_CONF is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_NTP_AUTH is not set +CONFIG_BUSYBOX_CONFIG_PING=y +CONFIG_BUSYBOX_CONFIG_PING6=y +CONFIG_BUSYBOX_CONFIG_FEATURE_FANCY_PING=y +# CONFIG_BUSYBOX_CONFIG_PSCAN is not set +CONFIG_BUSYBOX_CONFIG_ROUTE=y +# CONFIG_BUSYBOX_CONFIG_SLATTACH is not set +# CONFIG_BUSYBOX_CONFIG_SSL_CLIENT is not set +# CONFIG_BUSYBOX_CONFIG_TC is not set +# CONFIG_BUSYBOX_CONFIG_TCPSVD is not set +# CONFIG_BUSYBOX_CONFIG_UDPSVD is not set +CONFIG_BUSYBOX_CONFIG_TELNET=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_TELNET_TTYPE is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_TELNET_AUTOLOGIN is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_TELNET_WIDTH is not set +# CONFIG_BUSYBOX_CONFIG_TELNETD is not set +# CONFIG_BUSYBOX_CONFIG_TFTP is not set +# CONFIG_BUSYBOX_CONFIG_TFTPD is not set +# CONFIG_BUSYBOX_CONFIG_TLS is not set +CONFIG_BUSYBOX_CONFIG_TRACEROUTE=y +CONFIG_BUSYBOX_CONFIG_TRACEROUTE6=y +CONFIG_BUSYBOX_CONFIG_FEATURE_TRACEROUTE_VERBOSE=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set +# CONFIG_BUSYBOX_CONFIG_TUNCTL is not set +# CONFIG_BUSYBOX_CONFIG_VCONFIG is not set +# CONFIG_BUSYBOX_CONFIG_WGET is not set +# CONFIG_BUSYBOX_CONFIG_WHOIS is not set +# CONFIG_BUSYBOX_CONFIG_ZCIP is not set +# CONFIG_BUSYBOX_CONFIG_UDHCPD is not set +# CONFIG_BUSYBOX_CONFIG_DUMPLEASES is not set +# CONFIG_BUSYBOX_CONFIG_DHCPRELAY is not set +CONFIG_BUSYBOX_CONFIG_UDHCPC=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_UDHCPC_ARPING is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_UDHCPC_SANITIZEOPT is not set +CONFIG_BUSYBOX_CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +# CONFIG_BUSYBOX_CONFIG_UDHCPC6 is not set + +# +# Common options for DHCP applets +# +# CONFIG_BUSYBOX_CONFIG_FEATURE_UDHCP_PORT is not set +CONFIG_BUSYBOX_CONFIG_UDHCP_DEBUG=0 +CONFIG_BUSYBOX_CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +CONFIG_BUSYBOX_CONFIG_FEATURE_UDHCP_RFC3397=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_UDHCP_8021Q is not set +# end of Networking Utilities + +# +# Print Utilities +# +# CONFIG_BUSYBOX_CONFIG_LPD is not set +# CONFIG_BUSYBOX_CONFIG_LPR is not set +# CONFIG_BUSYBOX_CONFIG_LPQ is not set +# end of Print Utilities + +# +# Mail Utilities +# +# CONFIG_BUSYBOX_CONFIG_MAKEMIME is not set +# CONFIG_BUSYBOX_CONFIG_POPMAILDIR is not set +# CONFIG_BUSYBOX_CONFIG_REFORMIME is not set +# CONFIG_BUSYBOX_CONFIG_SENDMAIL is not set +# end of Mail Utilities + +# +# Process Utilities +# +CONFIG_BUSYBOX_CONFIG_FREE=y +# CONFIG_BUSYBOX_CONFIG_FUSER is not set +CONFIG_BUSYBOX_CONFIG_IOSTAT=y +CONFIG_BUSYBOX_CONFIG_KILL=y +CONFIG_BUSYBOX_CONFIG_KILLALL=y +# CONFIG_BUSYBOX_CONFIG_KILLALL5 is not set +# CONFIG_BUSYBOX_CONFIG_LSOF is not set +# CONFIG_BUSYBOX_CONFIG_MPSTAT is not set +# CONFIG_BUSYBOX_CONFIG_NMETER is not set +CONFIG_BUSYBOX_CONFIG_PGREP=y +CONFIG_BUSYBOX_CONFIG_PKILL=y +CONFIG_BUSYBOX_CONFIG_PIDOF=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_PIDOF_SINGLE is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_PIDOF_OMIT is not set +# CONFIG_BUSYBOX_CONFIG_PMAP is not set +# CONFIG_BUSYBOX_CONFIG_POWERTOP is not set +CONFIG_BUSYBOX_CONFIG_PS=y +CONFIG_BUSYBOX_CONFIG_FEATURE_PS_WIDE=y +CONFIG_BUSYBOX_CONFIG_FEATURE_PS_LONG=y +# CONFIG_BUSYBOX_CONFIG_PSTREE is not set +# CONFIG_BUSYBOX_CONFIG_PWDX is not set +# CONFIG_BUSYBOX_CONFIG_SMEMCAP is not set +CONFIG_BUSYBOX_CONFIG_BB_SYSCTL=y +CONFIG_BUSYBOX_CONFIG_TOP=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_INTERACTIVE is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y +CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_SMP_CPU is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_DECIMALS is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_SMP_PROCESS is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_TOPMEM is not set +CONFIG_BUSYBOX_CONFIG_UPTIME=y +CONFIG_BUSYBOX_CONFIG_WATCH=y +CONFIG_BUSYBOX_CONFIG_FEATURE_SHOW_THREADS=y +# end of Process Utilities + +# +# Runit Utilities +# +# CONFIG_BUSYBOX_CONFIG_CHPST is not set +# CONFIG_BUSYBOX_CONFIG_SETUIDGID is not set +# CONFIG_BUSYBOX_CONFIG_ENVUIDGID is not set +# CONFIG_BUSYBOX_CONFIG_ENVDIR is not set +# CONFIG_BUSYBOX_CONFIG_SOFTLIMIT is not set +# CONFIG_BUSYBOX_CONFIG_RUNSV is not set +# CONFIG_BUSYBOX_CONFIG_RUNSVDIR is not set +# CONFIG_BUSYBOX_CONFIG_SV is not set +# CONFIG_BUSYBOX_CONFIG_SVC is not set +# CONFIG_BUSYBOX_CONFIG_SVOK is not set +# CONFIG_BUSYBOX_CONFIG_SVLOGD is not set +# end of Runit Utilities + +# +# Shells +# +CONFIG_BUSYBOX_CONFIG_SH_IS_ASH=y +# CONFIG_BUSYBOX_CONFIG_SH_IS_HUSH is not set +# CONFIG_BUSYBOX_CONFIG_SH_IS_NONE is not set +# CONFIG_BUSYBOX_CONFIG_BASH_IS_ASH is not set +# CONFIG_BUSYBOX_CONFIG_BASH_IS_HUSH is not set +CONFIG_BUSYBOX_CONFIG_BASH_IS_NONE=y +CONFIG_BUSYBOX_CONFIG_SHELL_ASH=y +CONFIG_BUSYBOX_CONFIG_ASH=y +# CONFIG_BUSYBOX_CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set +CONFIG_BUSYBOX_CONFIG_ASH_INTERNAL_GLOB=y +CONFIG_BUSYBOX_CONFIG_ASH_BASH_COMPAT=y +# CONFIG_BUSYBOX_CONFIG_ASH_BASH_SOURCE_CURDIR is not set +# CONFIG_BUSYBOX_CONFIG_ASH_BASH_NOT_FOUND_HOOK is not set +CONFIG_BUSYBOX_CONFIG_ASH_JOB_CONTROL=y +CONFIG_BUSYBOX_CONFIG_ASH_ALIAS=y +CONFIG_BUSYBOX_CONFIG_ASH_RANDOM_SUPPORT=y +CONFIG_BUSYBOX_CONFIG_ASH_EXPAND_PRMT=y +# CONFIG_BUSYBOX_CONFIG_ASH_IDLE_TIMEOUT is not set +# CONFIG_BUSYBOX_CONFIG_ASH_MAIL is not set +CONFIG_BUSYBOX_CONFIG_ASH_ECHO=y +CONFIG_BUSYBOX_CONFIG_ASH_PRINTF=y +CONFIG_BUSYBOX_CONFIG_ASH_TEST=y +# CONFIG_BUSYBOX_CONFIG_ASH_HELP is not set +CONFIG_BUSYBOX_CONFIG_ASH_GETOPTS=y +CONFIG_BUSYBOX_CONFIG_ASH_CMDCMD=y +# CONFIG_BUSYBOX_CONFIG_CTTYHACK is not set +# CONFIG_BUSYBOX_CONFIG_HUSH is not set +# CONFIG_BUSYBOX_CONFIG_SHELL_HUSH is not set + +# +# Options common to all shells +# +CONFIG_BUSYBOX_CONFIG_FEATURE_SH_MATH=y +CONFIG_BUSYBOX_CONFIG_FEATURE_SH_MATH_64=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_SH_MATH_BASE is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_SH_EXTRA_QUIET is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_SH_STANDALONE is not set +CONFIG_BUSYBOX_CONFIG_FEATURE_SH_NOFORK=y +# CONFIG_BUSYBOX_CONFIG_FEATURE_SH_READ_FRAC is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_SH_HISTFILESIZE is not set +# CONFIG_BUSYBOX_CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS is not set +# end of Shells + +# +# System Logging Utilities +# +# CONFIG_BUSYBOX_CONFIG_KLOGD is not set +CONFIG_BUSYBOX_CONFIG_LOGGER=y +# CONFIG_BUSYBOX_CONFIG_LOGREAD is not set +# CONFIG_BUSYBOX_CONFIG_SYSLOGD is not set +# end of System Logging Utilities + +# CONFIG_PACKAGE_busybox-selinux is not set +CONFIG_PACKAGE_ca-bundle=y +CONFIG_PACKAGE_ca-certificates=y +# CONFIG_PACKAGE_dnsmasq is not set +# CONFIG_PACKAGE_dnsmasq-dhcpv6 is not set +CONFIG_PACKAGE_dnsmasq-full=y +CONFIG_PACKAGE_dnsmasq_full_dhcp=y +CONFIG_PACKAGE_dnsmasq_full_dhcpv6=y +CONFIG_PACKAGE_dnsmasq_full_dnssec=y +CONFIG_PACKAGE_dnsmasq_full_auth=y +CONFIG_PACKAGE_dnsmasq_full_ipset=y +CONFIG_PACKAGE_dnsmasq_full_conntrack=y +CONFIG_PACKAGE_dnsmasq_full_noid=y +# CONFIG_PACKAGE_dnsmasq_full_broken_rtc is not set +CONFIG_PACKAGE_dnsmasq_full_tftp=y +CONFIG_PACKAGE_dropbear=y + +# +# Configuration +# +CONFIG_DROPBEAR_CURVE25519=y +# CONFIG_DROPBEAR_ECC is not set +CONFIG_DROPBEAR_ED25519=y +CONFIG_DROPBEAR_CHACHA20POLY1305=y +# CONFIG_DROPBEAR_ZLIB is not set +CONFIG_DROPBEAR_DBCLIENT=y +CONFIG_DROPBEAR_SCP=y +# CONFIG_DROPBEAR_ASKPASS is not set +# end of Configuration + +# CONFIG_PACKAGE_ead is not set +CONFIG_PACKAGE_firewall=y +CONFIG_PACKAGE_fstools=y +CONFIG_FSTOOLS_UBIFS_EXTROOT=y +# CONFIG_FSTOOLS_OVL_MOUNT_FULL_ACCESS_TIME is not set +# CONFIG_FSTOOLS_OVL_MOUNT_COMPRESS_ZLIB is not set +CONFIG_PACKAGE_fwtool=y +CONFIG_PACKAGE_getrandom=y +CONFIG_PACKAGE_jsonfilter=y +CONFIG_PACKAGE_libatomic=y +CONFIG_PACKAGE_libc=y +CONFIG_PACKAGE_libgcc=y +# CONFIG_PACKAGE_libgomp is not set +CONFIG_PACKAGE_libpthread=y +CONFIG_PACKAGE_librt=y +CONFIG_PACKAGE_libstdcpp=y +CONFIG_PACKAGE_logd=y +CONFIG_PACKAGE_mtd=y +CONFIG_PACKAGE_netifd=y +# CONFIG_PACKAGE_nft-qos is not set +# CONFIG_PACKAGE_om-watchdog is not set +CONFIG_PACKAGE_openwrt-keyring=y +CONFIG_PACKAGE_opkg=y +CONFIG_PACKAGE_procd=y + +# +# Configuration +# +# CONFIG_PROCD_SHOW_BOOT is not set +# CONFIG_PROCD_ZRAM_TMPFS is not set +# end of Configuration + +# CONFIG_PACKAGE_procd-seccomp is not set +# CONFIG_PACKAGE_procd-selinux is not set +# CONFIG_PACKAGE_procd-ujail is not set +# CONFIG_PACKAGE_procd-ujail-console is not set +# CONFIG_PACKAGE_qos-scripts is not set +# CONFIG_PACKAGE_refpolicy is not set +CONFIG_PACKAGE_resolveip=y +CONFIG_PACKAGE_rpcd=y +CONFIG_PACKAGE_rpcd-mod-file=y +CONFIG_PACKAGE_rpcd-mod-iwinfo=y +CONFIG_PACKAGE_rpcd-mod-rpcsys=y +# CONFIG_PACKAGE_selinux-policy is not set +# CONFIG_PACKAGE_snapshot-tool is not set +CONFIG_PACKAGE_sqm-scripts=y +CONFIG_PACKAGE_sqm-scripts-extra=y +CONFIG_PACKAGE_swconfig=y +CONFIG_PACKAGE_ubox=y +CONFIG_PACKAGE_ubus=y +CONFIG_PACKAGE_ubusd=y +# CONFIG_PACKAGE_ucert is not set +# CONFIG_PACKAGE_ucert-full is not set +CONFIG_PACKAGE_uci=y +CONFIG_PACKAGE_urandom-seed=y +CONFIG_PACKAGE_urngd=y +CONFIG_PACKAGE_usign=y +# CONFIG_PACKAGE_uxc is not set +CONFIG_PACKAGE_wireless-tools=y +# CONFIG_PACKAGE_zram-swap is not set +# end of Base system + +# +# Administration +# + +# +# Zabbix +# +# CONFIG_PACKAGE_zabbix-agentd is not set + +# +# SSL support +# +# CONFIG_ZABBIX_OPENSSL is not set +# CONFIG_ZABBIX_GNUTLS is not set +CONFIG_ZABBIX_NOSSL=y +# CONFIG_PACKAGE_zabbix-extra-mac80211 is not set +# CONFIG_PACKAGE_zabbix-extra-network is not set +# CONFIG_PACKAGE_zabbix-extra-wifi is not set +# CONFIG_PACKAGE_zabbix-get is not set +# CONFIG_PACKAGE_zabbix-proxy is not set +# CONFIG_PACKAGE_zabbix-sender is not set +# CONFIG_PACKAGE_zabbix-server is not set + +# +# Database Software +# +# CONFIG_ZABBIX_MYSQL is not set +CONFIG_ZABBIX_POSTGRESQL=y +# CONFIG_PACKAGE_zabbix-server-frontend is not set +# end of Zabbix + +# +# openwisp +# +# CONFIG_PACKAGE_openwisp-config-mbedtls is not set +# CONFIG_PACKAGE_openwisp-config-nossl is not set +# CONFIG_PACKAGE_openwisp-config-openssl is not set +# CONFIG_PACKAGE_openwisp-config-wolfssl is not set +# end of openwisp + +# CONFIG_PACKAGE_atop is not set +# CONFIG_PACKAGE_backuppc is not set +# CONFIG_PACKAGE_debian-archive-keyring is not set +# CONFIG_PACKAGE_debootstrap is not set +# CONFIG_PACKAGE_gkrellmd is not set +CONFIG_PACKAGE_htop=y +# CONFIG_HTOP_LMSENSORS is not set +# CONFIG_PACKAGE_ipmitool is not set +# CONFIG_PACKAGE_monit is not set +# CONFIG_PACKAGE_monit-nossl is not set +# CONFIG_PACKAGE_muninlite is not set +# CONFIG_PACKAGE_netatop is not set +# CONFIG_PACKAGE_netdata is not set +# CONFIG_PACKAGE_nyx is not set +# CONFIG_PACKAGE_schroot is not set + +# +# Configuration +# +# CONFIG_SCHROOT_BTRFS is not set +# CONFIG_SCHROOT_LOOPBACK is not set +# CONFIG_SCHROOT_LVM is not set +# CONFIG_SCHROOT_UUID is not set +# end of Configuration + +# CONFIG_PACKAGE_sudo is not set +# CONFIG_PACKAGE_syslog-ng is not set +# end of Administration + +# +# Boot Loaders +# +# CONFIG_PACKAGE_u-boot-fritz1200 is not set +# CONFIG_PACKAGE_u-boot-fritz3000 is not set +# CONFIG_PACKAGE_u-boot-fritz4040 is not set +# CONFIG_PACKAGE_u-boot-fritz7530 is not set +# end of Boot Loaders + +# +# Development +# + +# +# Libraries +# +# CONFIG_PACKAGE_libncurses-dev is not set +# CONFIG_PACKAGE_libxml2-dev is not set +# CONFIG_PACKAGE_zlib-dev is not set +# end of Libraries + +# CONFIG_PACKAGE_ar is not set +# CONFIG_PACKAGE_autoconf is not set +# CONFIG_PACKAGE_automake is not set +# CONFIG_PACKAGE_binutils is not set +# CONFIG_PACKAGE_diffutils is not set +# CONFIG_PACKAGE_gcc is not set +# CONFIG_PACKAGE_gdb is not set +# CONFIG_PACKAGE_gdbserver is not set +# CONFIG_PACKAGE_gitlab-runner is not set +# CONFIG_PACKAGE_libtool-bin is not set +# CONFIG_PACKAGE_lpc21isp is not set +# CONFIG_PACKAGE_lttng-tools is not set +# CONFIG_PACKAGE_m4 is not set +# CONFIG_PACKAGE_make is not set +# CONFIG_PACKAGE_meson is not set +# CONFIG_PACKAGE_mt76-test is not set +# CONFIG_PACKAGE_ninja is not set +# CONFIG_PACKAGE_objdump is not set +# CONFIG_PACKAGE_packr is not set +# CONFIG_PACKAGE_patch is not set +# CONFIG_PACKAGE_pkg-config is not set +# CONFIG_PACKAGE_pkgconf is not set +# CONFIG_PACKAGE_trace-cmd is not set +# CONFIG_PACKAGE_trace-cmd-extra is not set +# CONFIG_PACKAGE_valgrind is not set +# end of Development + +# +# Extra packages +# +# CONFIG_PACKAGE_jose is not set +CONFIG_PACKAGE_libiwinfo-data=y +# CONFIG_PACKAGE_libjose is not set +# CONFIG_PACKAGE_nginx-util is not set +# CONFIG_PACKAGE_tang is not set +# end of Extra packages + +# +# Firmware +# + +# +# ath10k Board-Specific Overrides +# +# CONFIG_PACKAGE_ipq-wifi-8dev_habanero-dvk is not set +# CONFIG_PACKAGE_ipq-wifi-aruba_ap-303 is not set +# CONFIG_PACKAGE_ipq-wifi-avm_fritzrepeater-1200 is not set +# CONFIG_PACKAGE_ipq-wifi-buffalo_wtr-m2133hp is not set +# CONFIG_PACKAGE_ipq-wifi-cellc_rtl30vw is not set +# CONFIG_PACKAGE_ipq-wifi-devolo_magic-2-wifi-next is not set +# CONFIG_PACKAGE_ipq-wifi-dlink_dap2610 is not set +# CONFIG_PACKAGE_ipq-wifi-edgecore_ecw5410 is not set +# CONFIG_PACKAGE_ipq-wifi-edgecore_oap100 is not set +# CONFIG_PACKAGE_ipq-wifi-engenius_eap2200 is not set +# CONFIG_PACKAGE_ipq-wifi-engenius_emd1 is not set +# CONFIG_PACKAGE_ipq-wifi-engenius_emr3500 is not set +# CONFIG_PACKAGE_ipq-wifi-ezviz_cs-w3-wd1200g-eup is not set +# CONFIG_PACKAGE_ipq-wifi-glinet_gl-ap1300 is not set +# CONFIG_PACKAGE_ipq-wifi-glinet_gl-s1300 is not set +# CONFIG_PACKAGE_ipq-wifi-linksys_ea8300 is not set +# CONFIG_PACKAGE_ipq-wifi-linksys_mr8300-v0 is not set +# CONFIG_PACKAGE_ipq-wifi-luma_wrtq-329acn is not set +# CONFIG_PACKAGE_ipq-wifi-mobipromo_cm520-79f is not set +# CONFIG_PACKAGE_ipq-wifi-nec_wg2600hp3 is not set +# CONFIG_PACKAGE_ipq-wifi-p2w_r619ac is not set +CONFIG_PACKAGE_ipq-wifi-pangu_l1000=y +# CONFIG_PACKAGE_ipq-wifi-plasmacloud_pa1200 is not set +# CONFIG_PACKAGE_ipq-wifi-plasmacloud_pa2200 is not set +# CONFIG_PACKAGE_ipq-wifi-qxwlan_e2600ac is not set +# end of ath10k Board-Specific Overrides + +# CONFIG_PACKAGE_aircard-pcmcia-firmware is not set +# CONFIG_PACKAGE_amdgpu-firmware is not set +CONFIG_PACKAGE_ar3k-firmware=m +CONFIG_PACKAGE_ath10k-board-qca4019=y +# CONFIG_PACKAGE_ath10k-board-qca9887 is not set +# CONFIG_PACKAGE_ath10k-board-qca9888 is not set +# CONFIG_PACKAGE_ath10k-board-qca988x is not set +# CONFIG_PACKAGE_ath10k-board-qca9984 is not set +# CONFIG_PACKAGE_ath10k-board-qca99x0 is not set +# CONFIG_PACKAGE_ath10k-firmware-qca4019 is not set +CONFIG_PACKAGE_ath10k-firmware-qca4019-ct=y +# CONFIG_PACKAGE_ath10k-firmware-qca4019-ct-full-htt is not set +# CONFIG_PACKAGE_ath10k-firmware-qca4019-ct-htt is not set +# CONFIG_PACKAGE_ath10k-firmware-qca6174 is not set +# CONFIG_PACKAGE_ath10k-firmware-qca9887 is not set +# CONFIG_PACKAGE_ath10k-firmware-qca9887-ct is not set +# CONFIG_PACKAGE_ath10k-firmware-qca9887-ct-full-htt is not set +# CONFIG_PACKAGE_ath10k-firmware-qca9888 is not set +# CONFIG_PACKAGE_ath10k-firmware-qca9888-ct is not set +# CONFIG_PACKAGE_ath10k-firmware-qca9888-ct-full-htt is not set +# CONFIG_PACKAGE_ath10k-firmware-qca9888-ct-htt is not set +# CONFIG_PACKAGE_ath10k-firmware-qca988x is not set +# CONFIG_PACKAGE_ath10k-firmware-qca988x-ct is not set +# CONFIG_PACKAGE_ath10k-firmware-qca988x-ct-full-htt is not set +# CONFIG_PACKAGE_ath10k-firmware-qca9984 is not set +# CONFIG_PACKAGE_ath10k-firmware-qca9984-ct is not set +# CONFIG_PACKAGE_ath10k-firmware-qca9984-ct-full-htt is not set +# CONFIG_PACKAGE_ath10k-firmware-qca9984-ct-htt is not set +# CONFIG_PACKAGE_ath10k-firmware-qca99x0 is not set +# CONFIG_PACKAGE_ath10k-firmware-qca99x0-ct is not set +# CONFIG_PACKAGE_ath10k-firmware-qca99x0-ct-full-htt is not set +# CONFIG_PACKAGE_ath10k-firmware-qca99x0-ct-htt is not set +# CONFIG_PACKAGE_ath6k-firmware is not set +CONFIG_PACKAGE_ath9k-htc-firmware=y +CONFIG_PACKAGE_b43legacy-firmware=m +CONFIG_B43LEGACY_FW_SQUASH=y +CONFIG_B43LEGACY_FW_SQUASH_COREREVS="1,2,3,4" +CONFIG_PACKAGE_bnx2-firmware=y +CONFIG_PACKAGE_bnx2x-firmware=m +# CONFIG_PACKAGE_brcmfmac-firmware-4329-sdio is not set +# CONFIG_PACKAGE_brcmfmac-firmware-43362-sdio is not set +# CONFIG_PACKAGE_brcmfmac-firmware-43430-sdio is not set +# CONFIG_PACKAGE_brcmfmac-firmware-43430-sdio-rpi-3b is not set +# CONFIG_PACKAGE_brcmfmac-firmware-43430-sdio-rpi-zero-w is not set +# CONFIG_PACKAGE_brcmfmac-firmware-43430a0-sdio is not set +# CONFIG_PACKAGE_brcmfmac-firmware-43455-sdio is not set +# CONFIG_PACKAGE_brcmfmac-firmware-43455-sdio-rpi-3b-plus is not set +# CONFIG_PACKAGE_brcmfmac-firmware-43455-sdio-rpi-4b is not set +# CONFIG_PACKAGE_brcmfmac-firmware-43602a1-pcie is not set +# CONFIG_PACKAGE_brcmfmac-firmware-4366b1-pcie is not set +# CONFIG_PACKAGE_brcmfmac-firmware-4366c0-pcie is not set +CONFIG_PACKAGE_brcmfmac-firmware-usb=m +# CONFIG_PACKAGE_brcmsmac-firmware is not set +CONFIG_PACKAGE_carl9170-firmware=m +# CONFIG_PACKAGE_cypress-firmware-43012-sdio is not set +# CONFIG_PACKAGE_cypress-firmware-43340-sdio is not set +# CONFIG_PACKAGE_cypress-firmware-43362-sdio is not set +# CONFIG_PACKAGE_cypress-firmware-4339-sdio is not set +# CONFIG_PACKAGE_cypress-firmware-43430-sdio is not set +# CONFIG_PACKAGE_cypress-firmware-43455-sdio is not set +# CONFIG_PACKAGE_cypress-firmware-4354-sdio is not set +# CONFIG_PACKAGE_cypress-firmware-4356-pcie is not set +# CONFIG_PACKAGE_cypress-firmware-4356-sdio is not set +# CONFIG_PACKAGE_cypress-firmware-43570-pcie is not set +# CONFIG_PACKAGE_cypress-firmware-4359-pcie is not set +# CONFIG_PACKAGE_cypress-firmware-4359-sdio is not set +# CONFIG_PACKAGE_cypress-firmware-4373-sdio is not set +# CONFIG_PACKAGE_cypress-firmware-4373-usb is not set +# CONFIG_PACKAGE_cypress-firmware-54591-pcie is not set +# CONFIG_PACKAGE_cypress-firmware-89459-pcie is not set +CONFIG_PACKAGE_e100-firmware=y +CONFIG_PACKAGE_edgeport-firmware=m +# CONFIG_PACKAGE_eip197-mini-firmware is not set +# CONFIG_PACKAGE_ibt-firmware is not set +CONFIG_PACKAGE_iwl3945-firmware=m +CONFIG_PACKAGE_iwl4965-firmware=m +# CONFIG_PACKAGE_iwlwifi-firmware-iwl100 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl1000 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl105 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl135 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl2000 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl2030 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl3160 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl3168 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl5000 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl5150 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl6000g2 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl6000g2a is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl6000g2b is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl6050 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl7260 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl7265 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl7265d is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl8260c is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl8265 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl9000 is not set +# CONFIG_PACKAGE_iwlwifi-firmware-iwl9260 is not set +CONFIG_PACKAGE_libertas-sdio-firmware=m +CONFIG_PACKAGE_libertas-spi-firmware=m +CONFIG_PACKAGE_libertas-usb-firmware=m +CONFIG_PACKAGE_mt7601u-firmware=y +# CONFIG_PACKAGE_mt7622bt-firmware is not set +CONFIG_PACKAGE_mwifiex-pcie-firmware=m +CONFIG_PACKAGE_mwifiex-sdio-firmware=m +CONFIG_PACKAGE_mwl8k-firmware=m +CONFIG_PACKAGE_p54-pci-firmware=m +# CONFIG_PACKAGE_p54-spi-firmware is not set +CONFIG_PACKAGE_p54-usb-firmware=m +CONFIG_PACKAGE_prism54-firmware=m +CONFIG_PACKAGE_r8169-firmware=y +# CONFIG_PACKAGE_radeon-firmware is not set +CONFIG_PACKAGE_rs9113-firmware=m +CONFIG_PACKAGE_rt2800-pci-firmware=m +CONFIG_PACKAGE_rt2800-usb-firmware=y +CONFIG_PACKAGE_rt61-pci-firmware=m +CONFIG_PACKAGE_rt73-usb-firmware=m +# CONFIG_PACKAGE_rtl8188eu-firmware is not set +CONFIG_PACKAGE_rtl8192ce-firmware=m +CONFIG_PACKAGE_rtl8192cu-firmware=y +CONFIG_PACKAGE_rtl8192de-firmware=m +# CONFIG_PACKAGE_rtl8192eu-firmware is not set +CONFIG_PACKAGE_rtl8192se-firmware=m +CONFIG_PACKAGE_rtl8192su-firmware=y +# CONFIG_PACKAGE_rtl8723au-firmware is not set +# CONFIG_PACKAGE_rtl8723bs-firmware is not set +# CONFIG_PACKAGE_rtl8723bu-firmware is not set +CONFIG_PACKAGE_rtl8821ae-firmware=m +# CONFIG_PACKAGE_rtl8822be-firmware is not set +# CONFIG_PACKAGE_rtl8822ce-firmware is not set +# CONFIG_PACKAGE_ti-3410-firmware is not set +# CONFIG_PACKAGE_ti-5052-firmware is not set +CONFIG_PACKAGE_wil6210-firmware=m +CONFIG_PACKAGE_wireless-regdb=y +CONFIG_PACKAGE_wl12xx-firmware=m +CONFIG_PACKAGE_wl18xx-firmware=m +# end of Firmware + +# +# Fonts +# + +# +# DejaVu +# +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuMathTeXGyre is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSans is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSans-Bold is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSans-BoldOblique is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSans-ExtraLight is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSans-Oblique is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansCondensed is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansCondensed-Bold is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansCondensed-BoldOblique is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansCondensed-Oblique is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansMono is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansMono-Bold is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansMono-BoldOblique is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansMono-Oblique is not set +CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerif=y +CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerif-Bold=y +CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerif-BoldItalic=y +CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerif-Italic=y +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerifCondensed is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerifCondensed-Bold is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerifCondensed-BoldItalic is not set +# CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerifCondensed-Italic is not set +# end of DejaVu +# end of Fonts + +# +# IPv6 +# + +# +# IPv6 discovery tools +# +# CONFIG_PACKAGE_ndisc6 is not set +CONFIG_PACKAGE_rdisc6=y +# CONFIG_PACKAGE_rdnssd is not set +# CONFIG_PACKAGE_traceroute6 is not set +# end of IPv6 discovery tools +# end of IPv6 + +# +# Kernel modules +# + +# +# Block Devices +# +CONFIG_PACKAGE_kmod-aoe=m +CONFIG_PACKAGE_kmod-ata-ahci=y +CONFIG_PACKAGE_kmod-ata-artop=m +CONFIG_PACKAGE_kmod-ata-core=y +CONFIG_PACKAGE_kmod-ata-marvell-sata=m +CONFIG_PACKAGE_kmod-ata-nvidia-sata=m +CONFIG_PACKAGE_kmod-ata-pdc202xx-old=m +CONFIG_PACKAGE_kmod-ata-piix=m +CONFIG_PACKAGE_kmod-ata-sil=m +CONFIG_PACKAGE_kmod-ata-sil24=m +CONFIG_PACKAGE_kmod-ata-via-sata=m +CONFIG_PACKAGE_kmod-block2mtd=y +CONFIG_PACKAGE_kmod-dax=m +CONFIG_PACKAGE_kmod-dm=m +CONFIG_PACKAGE_kmod-dm-raid=m +CONFIG_PACKAGE_kmod-iosched-bfq=m +CONFIG_PACKAGE_kmod-iscsi-initiator=m +CONFIG_PACKAGE_kmod-loop=y +CONFIG_PACKAGE_kmod-md-mod=m +CONFIG_PACKAGE_kmod-md-linear=m +CONFIG_PACKAGE_kmod-md-multipath=m +CONFIG_PACKAGE_kmod-md-raid0=m +CONFIG_PACKAGE_kmod-md-raid1=m +CONFIG_PACKAGE_kmod-md-raid10=m +CONFIG_PACKAGE_kmod-md-raid456=m +CONFIG_PACKAGE_kmod-nbd=m +CONFIG_PACKAGE_kmod-scsi-cdrom=m +CONFIG_PACKAGE_kmod-scsi-core=y +CONFIG_PACKAGE_kmod-scsi-generic=m +CONFIG_PACKAGE_kmod-scsi-tape=m +# end of Block Devices + +# +# CAN Support +# +CONFIG_PACKAGE_kmod-can=m +CONFIG_PACKAGE_kmod-can-bcm=m +CONFIG_PACKAGE_kmod-can-c-can=m +CONFIG_PACKAGE_kmod-can-c-can-pci=m +CONFIG_PACKAGE_kmod-can-c-can-platform=m +CONFIG_PACKAGE_kmod-can-gw=m +CONFIG_PACKAGE_kmod-can-mcp251x=m +CONFIG_PACKAGE_kmod-can-raw=m +CONFIG_PACKAGE_kmod-can-slcan=m +CONFIG_PACKAGE_kmod-can-usb-8dev=m +CONFIG_PACKAGE_kmod-can-usb-ems=m +CONFIG_PACKAGE_kmod-can-usb-esd=m +CONFIG_PACKAGE_kmod-can-usb-kvaser=m +CONFIG_PACKAGE_kmod-can-usb-peak=m +CONFIG_PACKAGE_kmod-can-vcan=m +# end of CAN Support + +# +# Cryptographic API modules +# +CONFIG_PACKAGE_kmod-crypto-acompress=y +CONFIG_PACKAGE_kmod-crypto-aead=y +CONFIG_PACKAGE_kmod-crypto-arc4=m +CONFIG_PACKAGE_kmod-crypto-authenc=y +CONFIG_PACKAGE_kmod-crypto-cbc=y +CONFIG_PACKAGE_kmod-crypto-ccm=m +CONFIG_PACKAGE_kmod-crypto-cmac=m +CONFIG_PACKAGE_kmod-crypto-crc32=m +CONFIG_PACKAGE_kmod-crypto-crc32c=y +CONFIG_PACKAGE_kmod-crypto-ctr=y +CONFIG_PACKAGE_kmod-crypto-cts=m +CONFIG_PACKAGE_kmod-crypto-deflate=y +CONFIG_PACKAGE_kmod-crypto-des=y +CONFIG_PACKAGE_kmod-crypto-ecb=m +CONFIG_PACKAGE_kmod-crypto-ecdh=m +CONFIG_PACKAGE_kmod-crypto-echainiv=y +CONFIG_PACKAGE_kmod-crypto-fcrypt=m +CONFIG_PACKAGE_kmod-crypto-gcm=y +CONFIG_PACKAGE_kmod-crypto-gf128=y +CONFIG_PACKAGE_kmod-crypto-ghash=y +CONFIG_PACKAGE_kmod-crypto-hash=y +CONFIG_PACKAGE_kmod-crypto-hmac=y +CONFIG_PACKAGE_kmod-crypto-hw-hifn-795x=m +CONFIG_PACKAGE_kmod-crypto-hw-padlock=m +CONFIG_PACKAGE_kmod-crypto-kpp=y +CONFIG_PACKAGE_kmod-crypto-lib-blake2s=y +CONFIG_PACKAGE_kmod-crypto-lib-chacha20=y +CONFIG_PACKAGE_kmod-crypto-lib-chacha20poly1305=y +CONFIG_PACKAGE_kmod-crypto-lib-curve25519=y +CONFIG_PACKAGE_kmod-crypto-lib-poly1305=y +CONFIG_PACKAGE_kmod-crypto-manager=y +CONFIG_PACKAGE_kmod-crypto-md4=m +CONFIG_PACKAGE_kmod-crypto-md5=y +CONFIG_PACKAGE_kmod-crypto-michael-mic=m +CONFIG_PACKAGE_kmod-crypto-misc=m +CONFIG_PACKAGE_kmod-crypto-null=y +CONFIG_PACKAGE_kmod-crypto-pcbc=m +CONFIG_PACKAGE_kmod-crypto-rmd160=m +CONFIG_PACKAGE_kmod-crypto-rng=y +CONFIG_PACKAGE_kmod-crypto-seqiv=y +CONFIG_PACKAGE_kmod-crypto-sha1=y +CONFIG_PACKAGE_kmod-crypto-sha256=y +CONFIG_PACKAGE_kmod-crypto-sha512=m +CONFIG_PACKAGE_kmod-crypto-test=m +CONFIG_PACKAGE_kmod-crypto-user=m +CONFIG_PACKAGE_kmod-crypto-xcbc=m +CONFIG_PACKAGE_kmod-crypto-xts=m +CONFIG_PACKAGE_kmod-cryptodev=m +# end of Cryptographic API modules + +# +# Filesystems +# +# CONFIG_PACKAGE_kmod-fs-afs is not set +CONFIG_PACKAGE_kmod-fs-antfs=m +CONFIG_PACKAGE_kmod-fs-autofs4=y +CONFIG_PACKAGE_kmod-fs-btrfs=m +CONFIG_PACKAGE_kmod-fs-cifs=m +CONFIG_PACKAGE_kmod-fs-configfs=m +CONFIG_PACKAGE_kmod-fs-cramfs=m +CONFIG_PACKAGE_kmod-fs-exfat=m +CONFIG_PACKAGE_kmod-fs-exportfs=m +CONFIG_PACKAGE_kmod-fs-ext4=m +CONFIG_PACKAGE_kmod-fs-f2fs=m +CONFIG_PACKAGE_kmod-fs-fscache=m +CONFIG_PACKAGE_kmod-fs-hfs=m +CONFIG_PACKAGE_kmod-fs-hfsplus=m +CONFIG_PACKAGE_kmod-fs-isofs=m +CONFIG_PACKAGE_kmod-fs-jfs=m +CONFIG_PACKAGE_kmod-fs-ksmbd=m +CONFIG_KSMBD_SMB_INSECURE_SERVER=y +CONFIG_PACKAGE_kmod-fs-minix=m +CONFIG_PACKAGE_kmod-fs-msdos=m +CONFIG_PACKAGE_kmod-fs-nfs=m +CONFIG_PACKAGE_kmod-fs-nfs-common=m +CONFIG_PACKAGE_kmod-fs-nfs-common-rpcsec=m +CONFIG_PACKAGE_kmod-fs-nfs-v3=m +CONFIG_PACKAGE_kmod-fs-nfs-v4=m +CONFIG_PACKAGE_kmod-fs-nfsd=m +CONFIG_PACKAGE_kmod-fs-ntfs=m +CONFIG_PACKAGE_kmod-fs-reiserfs=m +CONFIG_PACKAGE_kmod-fs-squashfs=m +CONFIG_PACKAGE_kmod-fs-udf=m +CONFIG_PACKAGE_kmod-fs-vfat=y +CONFIG_PACKAGE_kmod-fs-xfs=m +CONFIG_PACKAGE_kmod-fuse=m +# end of Filesystems + +# +# FireWire support +# +CONFIG_PACKAGE_kmod-firewire=m +CONFIG_PACKAGE_kmod-firewire-net=m +CONFIG_PACKAGE_kmod-firewire-ohci=m +CONFIG_PACKAGE_kmod-firewire-sbp2=m +# end of FireWire support + +# +# Hardware Monitoring Support +# +CONFIG_PACKAGE_kmod-gl-mifi-mcu=m +CONFIG_PACKAGE_kmod-hwmon-ad7418=m +CONFIG_PACKAGE_kmod-hwmon-adcxx=m +CONFIG_PACKAGE_kmod-hwmon-ads1015=m +CONFIG_PACKAGE_kmod-hwmon-adt7410=m +CONFIG_PACKAGE_kmod-hwmon-adt7475=m +CONFIG_PACKAGE_kmod-hwmon-core=y +CONFIG_PACKAGE_kmod-hwmon-dme1737=m +CONFIG_PACKAGE_kmod-hwmon-drivetemp=m +CONFIG_PACKAGE_kmod-hwmon-gpiofan=m +CONFIG_PACKAGE_kmod-hwmon-ina209=m +CONFIG_PACKAGE_kmod-hwmon-ina2xx=m +CONFIG_PACKAGE_kmod-hwmon-it87=m +CONFIG_PACKAGE_kmod-hwmon-lm63=m +CONFIG_PACKAGE_kmod-hwmon-lm75=m +CONFIG_PACKAGE_kmod-hwmon-lm77=m +CONFIG_PACKAGE_kmod-hwmon-lm85=m +CONFIG_PACKAGE_kmod-hwmon-lm90=m +CONFIG_PACKAGE_kmod-hwmon-lm92=m +CONFIG_PACKAGE_kmod-hwmon-lm95241=m +CONFIG_PACKAGE_kmod-hwmon-ltc4151=m +CONFIG_PACKAGE_kmod-hwmon-mcp3021=m +CONFIG_PACKAGE_kmod-hwmon-pwmfan=m +CONFIG_PACKAGE_kmod-hwmon-sch5627=m +CONFIG_PACKAGE_kmod-hwmon-sht21=m +CONFIG_PACKAGE_kmod-hwmon-tmp102=m +CONFIG_PACKAGE_kmod-hwmon-tmp103=m +CONFIG_PACKAGE_kmod-hwmon-tmp421=m +CONFIG_PACKAGE_kmod-hwmon-vid=m +CONFIG_PACKAGE_kmod-hwmon-w83793=m +CONFIG_PACKAGE_kmod-pmbus-core=m +CONFIG_PACKAGE_kmod-pmbus-zl6100=m +# end of Hardware Monitoring Support + +# +# I2C support +# +CONFIG_PACKAGE_kmod-i2c-algo-bit=y +CONFIG_PACKAGE_kmod-i2c-algo-pca=m +CONFIG_PACKAGE_kmod-i2c-algo-pcf=m +CONFIG_PACKAGE_kmod-i2c-core=y +CONFIG_PACKAGE_kmod-i2c-gpio=y +CONFIG_PACKAGE_kmod-i2c-mux=m +CONFIG_PACKAGE_kmod-i2c-mux-gpio=m +CONFIG_PACKAGE_kmod-i2c-mux-pca9541=m +CONFIG_PACKAGE_kmod-i2c-mux-pca954x=m +CONFIG_PACKAGE_kmod-i2c-pxa=m +CONFIG_PACKAGE_kmod-i2c-smbus=m +CONFIG_PACKAGE_kmod-i2c-tiny-usb=m +# end of I2C support + +# +# Industrial I/O Modules +# +CONFIG_PACKAGE_kmod-iio-ad799x=m +CONFIG_PACKAGE_kmod-iio-am2315=m +CONFIG_PACKAGE_kmod-iio-bh1750=m +CONFIG_PACKAGE_kmod-iio-bme680=m +CONFIG_PACKAGE_kmod-iio-bme680-i2c=m +CONFIG_PACKAGE_kmod-iio-bme680-spi=m +CONFIG_PACKAGE_kmod-iio-bmp280=m +CONFIG_PACKAGE_kmod-iio-bmp280-i2c=m +CONFIG_PACKAGE_kmod-iio-bmp280-spi=m +CONFIG_PACKAGE_kmod-iio-ccs811=m +CONFIG_PACKAGE_kmod-iio-core=m +CONFIG_PACKAGE_kmod-iio-dht11=m +CONFIG_PACKAGE_kmod-iio-fxas21002c=m +CONFIG_PACKAGE_kmod-iio-fxas21002c-i2c=m +CONFIG_PACKAGE_kmod-iio-fxas21002c-spi=m +CONFIG_PACKAGE_kmod-iio-fxos8700=m +CONFIG_PACKAGE_kmod-iio-fxos8700-i2c=m +CONFIG_PACKAGE_kmod-iio-fxos8700-spi=m +CONFIG_PACKAGE_kmod-iio-hmc5843=m +CONFIG_PACKAGE_kmod-iio-htu21=m +CONFIG_PACKAGE_kmod-iio-kfifo-buf=m +CONFIG_PACKAGE_kmod-iio-lsm6dsx=m +CONFIG_PACKAGE_kmod-iio-lsm6dsx-i2c=m +CONFIG_PACKAGE_kmod-iio-lsm6dsx-spi=m +CONFIG_PACKAGE_kmod-iio-si7020=m +CONFIG_PACKAGE_kmod-iio-sps30=m +CONFIG_PACKAGE_kmod-iio-st_accel=m +CONFIG_PACKAGE_kmod-iio-st_accel-i2c=m +CONFIG_PACKAGE_kmod-iio-st_accel-spi=m +CONFIG_PACKAGE_kmod-iio-tsl4531=m +CONFIG_PACKAGE_kmod-industrialio-triggered-buffer=m +# end of Industrial I/O Modules + +# +# Input modules +# +CONFIG_PACKAGE_kmod-hid=y +CONFIG_PACKAGE_kmod-hid-generic=y +CONFIG_PACKAGE_kmod-input-core=y +CONFIG_PACKAGE_kmod-input-evdev=y +CONFIG_PACKAGE_kmod-input-gpio-encoder=m +CONFIG_PACKAGE_kmod-input-gpio-keys=m +CONFIG_PACKAGE_kmod-input-gpio-keys-polled=m +CONFIG_PACKAGE_kmod-input-joydev=m +CONFIG_PACKAGE_kmod-input-matrixkmap=m +CONFIG_PACKAGE_kmod-input-polldev=m +CONFIG_PACKAGE_kmod-input-touchscreen-ads7846=m +CONFIG_PACKAGE_kmod-input-uinput=m +# end of Input modules + +# +# LED modules +# +CONFIG_PACKAGE_kmod-leds-gpio=y +CONFIG_PACKAGE_kmod-leds-pca963x=y +CONFIG_PACKAGE_kmod-ledtrig-activity=y +CONFIG_PACKAGE_kmod-ledtrig-gpio=y +CONFIG_PACKAGE_kmod-ledtrig-oneshot=y +CONFIG_PACKAGE_kmod-ledtrig-transient=y +# end of LED modules + +# +# Libraries +# +CONFIG_PACKAGE_kmod-asn1-decoder=y +CONFIG_PACKAGE_kmod-lib-cordic=m +CONFIG_PACKAGE_kmod-lib-crc-ccitt=y +CONFIG_PACKAGE_kmod-lib-crc-itu-t=y +CONFIG_PACKAGE_kmod-lib-crc16=y +CONFIG_PACKAGE_kmod-lib-crc32c=y +CONFIG_PACKAGE_kmod-lib-crc7=y +CONFIG_PACKAGE_kmod-lib-crc8=m +CONFIG_PACKAGE_kmod-lib-lz4=m +CONFIG_PACKAGE_kmod-lib-lzo=y +CONFIG_PACKAGE_kmod-lib-raid6=m +CONFIG_PACKAGE_kmod-lib-textsearch=y +CONFIG_PACKAGE_kmod-lib-xor=m +CONFIG_PACKAGE_kmod-lib-zlib-deflate=y +CONFIG_PACKAGE_kmod-lib-zlib-inflate=y +CONFIG_PACKAGE_kmod-lib-zstd=m +# end of Libraries + +# +# Native Language Support +# +CONFIG_PACKAGE_kmod-nls-base=y +CONFIG_PACKAGE_kmod-nls-cp1250=m +CONFIG_PACKAGE_kmod-nls-cp1251=m +CONFIG_PACKAGE_kmod-nls-cp437=y +CONFIG_PACKAGE_kmod-nls-cp775=m +CONFIG_PACKAGE_kmod-nls-cp850=m +CONFIG_PACKAGE_kmod-nls-cp852=m +CONFIG_PACKAGE_kmod-nls-cp862=m +CONFIG_PACKAGE_kmod-nls-cp864=m +CONFIG_PACKAGE_kmod-nls-cp866=m +CONFIG_PACKAGE_kmod-nls-cp932=m +CONFIG_PACKAGE_kmod-nls-cp936=m +CONFIG_PACKAGE_kmod-nls-cp950=m +CONFIG_PACKAGE_kmod-nls-iso8859-1=y +CONFIG_PACKAGE_kmod-nls-iso8859-13=m +CONFIG_PACKAGE_kmod-nls-iso8859-15=m +CONFIG_PACKAGE_kmod-nls-iso8859-2=m +CONFIG_PACKAGE_kmod-nls-iso8859-6=m +CONFIG_PACKAGE_kmod-nls-iso8859-8=m +CONFIG_PACKAGE_kmod-nls-koi8r=m +CONFIG_PACKAGE_kmod-nls-utf8=y +# end of Native Language Support + +# +# Netfilter Extensions +# +CONFIG_PACKAGE_kmod-arptables=y +CONFIG_PACKAGE_kmod-br-netfilter=m +CONFIG_PACKAGE_kmod-ebtables=y +CONFIG_PACKAGE_kmod-ebtables-ipv4=m +CONFIG_PACKAGE_kmod-ebtables-ipv6=m +CONFIG_PACKAGE_kmod-ebtables-watchers=m +CONFIG_PACKAGE_kmod-ip6tables=y +CONFIG_PACKAGE_kmod-ip6tables-extra=m +CONFIG_PACKAGE_kmod-ipt-account=y +CONFIG_PACKAGE_kmod-ipt-chaos=m +CONFIG_PACKAGE_kmod-ipt-checksum=m +CONFIG_PACKAGE_kmod-ipt-cluster=m +CONFIG_PACKAGE_kmod-ipt-clusterip=m +CONFIG_PACKAGE_kmod-ipt-compat-xtables=y +CONFIG_PACKAGE_kmod-ipt-condition=y +CONFIG_PACKAGE_kmod-ipt-conntrack=y +CONFIG_PACKAGE_kmod-ipt-conntrack-extra=y +CONFIG_PACKAGE_kmod-ipt-conntrack-label=m +CONFIG_PACKAGE_kmod-ipt-core=y +CONFIG_PACKAGE_kmod-ipt-debug=y +CONFIG_PACKAGE_kmod-ipt-delude=m +CONFIG_PACKAGE_kmod-ipt-dhcpmac=m +CONFIG_PACKAGE_kmod-ipt-dnetmap=m +CONFIG_PACKAGE_kmod-ipt-extra=y +CONFIG_PACKAGE_kmod-ipt-filter=m +CONFIG_PACKAGE_kmod-ipt-fullconenat=m +CONFIG_PACKAGE_kmod-ipt-fuzzy=m +CONFIG_PACKAGE_kmod-ipt-geoip=m +CONFIG_PACKAGE_kmod-ipt-hashlimit=y +CONFIG_PACKAGE_kmod-ipt-iface=y +CONFIG_PACKAGE_kmod-ipt-ipmark=y +CONFIG_PACKAGE_kmod-ipt-ipopt=y +CONFIG_PACKAGE_kmod-ipt-ipp2p=m +CONFIG_PACKAGE_kmod-ipt-iprange=m +CONFIG_PACKAGE_kmod-ipt-ipsec=y +CONFIG_PACKAGE_kmod-ipt-ipset=y +CONFIG_PACKAGE_kmod-ipt-ipv4options=m +CONFIG_PACKAGE_kmod-ipt-led=m +CONFIG_PACKAGE_kmod-ipt-length2=m +CONFIG_PACKAGE_kmod-ipt-logmark=m +CONFIG_PACKAGE_kmod-ipt-lscan=m +CONFIG_PACKAGE_kmod-ipt-lua=m +CONFIG_PACKAGE_kmod-ipt-nat=y +CONFIG_PACKAGE_kmod-ipt-nat-extra=m +CONFIG_PACKAGE_kmod-ipt-nat6=y +CONFIG_PACKAGE_kmod-ipt-nathelper-rtsp=m +CONFIG_PACKAGE_kmod-ipt-ndpi=y +CONFIG_PACKAGE_kmod-ipt-nflog=m +CONFIG_PACKAGE_kmod-ipt-nfqueue=m +CONFIG_PACKAGE_kmod-ipt-offload=y +CONFIG_PACKAGE_kmod-ipt-physdev=m +CONFIG_PACKAGE_kmod-ipt-proto=m +CONFIG_PACKAGE_kmod-ipt-psd=m +CONFIG_PACKAGE_kmod-ipt-quota2=m +CONFIG_PACKAGE_kmod-ipt-raw=y +CONFIG_PACKAGE_kmod-ipt-raw6=y +CONFIG_PACKAGE_kmod-ipt-rpfilter=m +CONFIG_PACKAGE_kmod-ipt-sysrq=m +CONFIG_PACKAGE_kmod-ipt-tarpit=m +CONFIG_PACKAGE_kmod-ipt-tee=m +CONFIG_PACKAGE_kmod-ipt-tproxy=y +CONFIG_PACKAGE_kmod-ipt-u32=m +CONFIG_PACKAGE_kmod-ipt-ulog=m +CONFIG_PACKAGE_kmod-netatop=m +CONFIG_PACKAGE_kmod-nf-conntrack=y +CONFIG_PACKAGE_kmod-nf-conntrack-netlink=y +CONFIG_PACKAGE_kmod-nf-conntrack6=y +CONFIG_PACKAGE_kmod-nf-flow=y +CONFIG_PACKAGE_kmod-nf-ipt=y +CONFIG_PACKAGE_kmod-nf-ipt6=y +CONFIG_PACKAGE_kmod-nf-ipvs=m +CONFIG_PACKAGE_kmod-nf-ipvs-ftp=m +CONFIG_PACKAGE_kmod-nf-ipvs-sip=m +CONFIG_PACKAGE_kmod-nf-nat=y +CONFIG_PACKAGE_kmod-nf-nat6=y +CONFIG_PACKAGE_kmod-nf-nathelper=y +CONFIG_PACKAGE_kmod-nf-nathelper-extra=y +CONFIG_PACKAGE_kmod-nf-reject=y +CONFIG_PACKAGE_kmod-nf-reject6=y +CONFIG_PACKAGE_kmod-nfnetlink=y +CONFIG_PACKAGE_kmod-nfnetlink-log=m +CONFIG_PACKAGE_kmod-nfnetlink-queue=m +CONFIG_PACKAGE_kmod-nft-arp=m +CONFIG_PACKAGE_kmod-nft-bridge=m +CONFIG_PACKAGE_kmod-nft-core=m +CONFIG_PACKAGE_kmod-nft-fib=m +CONFIG_PACKAGE_kmod-nft-nat=m +CONFIG_PACKAGE_kmod-nft-nat6=m +CONFIG_PACKAGE_kmod-nft-netdev=m +CONFIG_PACKAGE_kmod-nft-offload=m +CONFIG_PACKAGE_kmod-nft-queue=m +# end of Netfilter Extensions + +# +# Network Devices +# +CONFIG_PACKAGE_kmod-3c59x=y +CONFIG_PACKAGE_kmod-8139cp=y +CONFIG_PACKAGE_kmod-8139too=y +CONFIG_PACKAGE_kmod-alx=m +CONFIG_PACKAGE_kmod-atl1=y +CONFIG_PACKAGE_kmod-atl1c=y +CONFIG_PACKAGE_kmod-atl1e=y +CONFIG_PACKAGE_kmod-atl2=y +CONFIG_PACKAGE_kmod-b44=y +CONFIG_PACKAGE_kmod-be2net=m +CONFIG_PACKAGE_kmod-bnx2=y +CONFIG_PACKAGE_kmod-bnx2x=m +CONFIG_PACKAGE_kmod-dm9000=y +CONFIG_PACKAGE_kmod-dummy=m +CONFIG_PACKAGE_kmod-e100=y +CONFIG_PACKAGE_kmod-e1000=y +CONFIG_PACKAGE_kmod-e1000e=y +CONFIG_PACKAGE_kmod-et131x=y +CONFIG_PACKAGE_kmod-ethoc=y +CONFIG_PACKAGE_kmod-forcedeth=y +CONFIG_PACKAGE_kmod-hfcmulti=y +CONFIG_PACKAGE_kmod-hfcpci=y +CONFIG_PACKAGE_kmod-i40e=m +CONFIG_PACKAGE_kmod-iavf=m +CONFIG_PACKAGE_kmod-ifb=y +CONFIG_PACKAGE_kmod-igb=m +CONFIG_PACKAGE_kmod-igc=m +CONFIG_PACKAGE_kmod-ixgbe=m +CONFIG_PACKAGE_kmod-ixgbevf=m +CONFIG_PACKAGE_kmod-libphy=y +CONFIG_PACKAGE_kmod-macvlan=y +CONFIG_PACKAGE_kmod-mdio-gpio=m +CONFIG_PACKAGE_kmod-mii=y +CONFIG_PACKAGE_kmod-mlx4-core=m +CONFIG_PACKAGE_kmod-mlx5-core=m +CONFIG_PACKAGE_kmod-natsemi=y +CONFIG_PACKAGE_kmod-ne2k-pci=y +CONFIG_PACKAGE_kmod-niu=m +CONFIG_PACKAGE_kmod-of-mdio=y +CONFIG_PACKAGE_kmod-pcnet32=y +CONFIG_PACKAGE_kmod-phy-bcm84881=m +CONFIG_PACKAGE_kmod-phy-broadcom=y +CONFIG_PACKAGE_kmod-phy-realtek=y +CONFIG_PACKAGE_kmod-phylib-broadcom=y +CONFIG_PACKAGE_kmod-phylink=m +CONFIG_PACKAGE_kmod-r6040=y +CONFIG_PACKAGE_kmod-r8169=y +CONFIG_PACKAGE_kmod-sfc=m +CONFIG_PACKAGE_kmod-sfc-falcon=m +CONFIG_PACKAGE_kmod-sfp=m +CONFIG_PACKAGE_kmod-siit=m +CONFIG_PACKAGE_kmod-sis190=y +CONFIG_PACKAGE_kmod-sis900=y +CONFIG_PACKAGE_kmod-skge=y +CONFIG_PACKAGE_kmod-sky2=y +CONFIG_PACKAGE_kmod-solos-pci=y +CONFIG_PACKAGE_kmod-spi-ks8995=y +CONFIG_PACKAGE_kmod-swconfig=y +CONFIG_PACKAGE_kmod-switch-bcm53xx=m +CONFIG_PACKAGE_kmod-switch-bcm53xx-mdio=m +CONFIG_PACKAGE_kmod-switch-ip17xx=m +CONFIG_PACKAGE_kmod-switch-rtl8306=m +CONFIG_PACKAGE_kmod-switch-rtl8366-smi=m +CONFIG_PACKAGE_kmod-switch-rtl8366rb=m +CONFIG_PACKAGE_kmod-switch-rtl8366s=m +CONFIG_PACKAGE_kmod-switch-rtl8367b=m +CONFIG_PACKAGE_kmod-tg3=y +CONFIG_PACKAGE_kmod-tulip=y +CONFIG_PACKAGE_kmod-via-rhine=y +CONFIG_PACKAGE_kmod-via-velocity=y +CONFIG_PACKAGE_kmod-vmxnet3=y +# end of Network Devices + +# +# Network Support +# +CONFIG_PACKAGE_kmod-atm=y +CONFIG_PACKAGE_kmod-atmtcp=m +CONFIG_PACKAGE_kmod-ax25=m +CONFIG_PACKAGE_kmod-bonding=y +CONFIG_PACKAGE_kmod-bpf-test=m +CONFIG_PACKAGE_kmod-dnsresolver=m +CONFIG_PACKAGE_kmod-fast-classifier=y +# CONFIG_PACKAGE_kmod-fast-classifier-noload is not set +CONFIG_PACKAGE_kmod-fou=m +CONFIG_PACKAGE_kmod-fou6=m +CONFIG_PACKAGE_kmod-geneve=m +CONFIG_PACKAGE_kmod-gre=y +CONFIG_PACKAGE_kmod-gre6=y +CONFIG_PACKAGE_kmod-ip-vti=m +CONFIG_PACKAGE_kmod-ip6-tunnel=y +CONFIG_PACKAGE_kmod-ip6-vti=m +CONFIG_PACKAGE_kmod-ipip=m +CONFIG_PACKAGE_kmod-ipoa=m +CONFIG_PACKAGE_kmod-ipsec=y +CONFIG_PACKAGE_kmod-ipsec4=y +CONFIG_PACKAGE_kmod-ipsec6=y +CONFIG_PACKAGE_kmod-iptunnel=y +CONFIG_PACKAGE_kmod-iptunnel4=y +CONFIG_PACKAGE_kmod-iptunnel6=y +CONFIG_PACKAGE_kmod-isdn4linux=m +CONFIG_PACKAGE_kmod-jool=m +CONFIG_PACKAGE_kmod-l2tp=m +CONFIG_PACKAGE_kmod-l2tp-eth=m +CONFIG_PACKAGE_kmod-l2tp-ip=m +CONFIG_PACKAGE_kmod-macremapper=m +CONFIG_PACKAGE_kmod-macsec=m +CONFIG_PACKAGE_kmod-mdio=m +CONFIG_PACKAGE_kmod-misdn=y +CONFIG_PACKAGE_kmod-mpls=m +CONFIG_PACKAGE_kmod-nat46=y +CONFIG_PACKAGE_kmod-netem=y +CONFIG_PACKAGE_kmod-netlink-diag=y +CONFIG_PACKAGE_kmod-nlmon=m +CONFIG_PACKAGE_kmod-nsh=m +CONFIG_PACKAGE_kmod-openvswitch=m +CONFIG_PACKAGE_kmod-openvswitch-geneve=m +CONFIG_PACKAGE_kmod-openvswitch-geneve-intree=m +CONFIG_PACKAGE_kmod-openvswitch-gre=m +CONFIG_PACKAGE_kmod-openvswitch-gre-intree=m +CONFIG_PACKAGE_kmod-openvswitch-intree=m +CONFIG_PACKAGE_kmod-openvswitch-lisp-intree=m +CONFIG_PACKAGE_kmod-openvswitch-stt-intree=m +CONFIG_PACKAGE_kmod-openvswitch-vxlan=m +CONFIG_PACKAGE_kmod-openvswitch-vxlan-intree=m +CONFIG_PACKAGE_kmod-pf-ring=m +CONFIG_PACKAGE_kmod-pktgen=m +CONFIG_PACKAGE_kmod-ppp=y +CONFIG_PACKAGE_kmod-mppe=m +CONFIG_PACKAGE_kmod-ppp-synctty=m +CONFIG_PACKAGE_kmod-pppoa=m +CONFIG_PACKAGE_kmod-pppoe=y +CONFIG_PACKAGE_kmod-pppol2tp=m +CONFIG_PACKAGE_kmod-pppox=y +CONFIG_PACKAGE_kmod-pptp=m +CONFIG_PACKAGE_kmod-sched=y +CONFIG_PACKAGE_kmod-sched-act-vlan=m +CONFIG_PACKAGE_kmod-sched-bpf=m +CONFIG_PACKAGE_kmod-sched-cake=y +CONFIG_PACKAGE_kmod-sched-connmark=m +CONFIG_PACKAGE_kmod-sched-core=y +CONFIG_PACKAGE_kmod-sched-ctinfo=m +CONFIG_PACKAGE_kmod-sched-flower=m +CONFIG_PACKAGE_kmod-sched-ipset=m +CONFIG_PACKAGE_kmod-sched-mqprio=m +CONFIG_PACKAGE_kmod-sctp=y +CONFIG_PACKAGE_kmod-shortcut-fe=y +# CONFIG_PACKAGE_kmod-shortcut-fe-cm is not set +CONFIG_PACKAGE_kmod-sit=y +CONFIG_PACKAGE_kmod-slhc=y +CONFIG_PACKAGE_kmod-slip=m +CONFIG_PACKAGE_kmod-tcp-bbr=y +CONFIG_PACKAGE_kmod-tcp-hybla=y +CONFIG_PACKAGE_kmod-tcp-nanqinlang=y +CONFIG_PACKAGE_kmod-trelay=m +CONFIG_PACKAGE_kmod-tun=y +CONFIG_PACKAGE_kmod-udptunnel4=y +CONFIG_PACKAGE_kmod-udptunnel6=y +CONFIG_PACKAGE_kmod-veth=y +CONFIG_PACKAGE_kmod-vxlan=m +CONFIG_PACKAGE_kmod-wireguard=y +CONFIG_PACKAGE_kmod-xfrm-interface=m +# end of Network Support + +# +# Other modules +# +CONFIG_PACKAGE_kmod-6lowpan=m +CONFIG_PACKAGE_kmod-ath3k=m +CONFIG_PACKAGE_kmod-bcma=m +CONFIG_PACKAGE_kmod-bluetooth=m +CONFIG_PACKAGE_kmod-bluetooth-6lowpan=m +CONFIG_PACKAGE_kmod-btmrvl=m +CONFIG_PACKAGE_kmod-button-hotplug=m +CONFIG_PACKAGE_kmod-dma-buf=m +CONFIG_PACKAGE_kmod-echo=m +CONFIG_PACKAGE_kmod-eeprom-93cx6=y +CONFIG_PACKAGE_kmod-eeprom-at24=m +CONFIG_PACKAGE_kmod-eeprom-at25=m +CONFIG_PACKAGE_kmod-gpio-beeper=m +CONFIG_PACKAGE_kmod-gpio-button-hotplug=y +CONFIG_PACKAGE_kmod-gpio-dev=m +CONFIG_PACKAGE_kmod-gpio-mcp23s08=m +CONFIG_PACKAGE_kmod-gpio-nxp-74hc164=m +CONFIG_PACKAGE_kmod-gpio-pca953x=m +CONFIG_PACKAGE_kmod-gpio-pcf857x=m +CONFIG_PACKAGE_kmod-ikconfig=y +CONFIG_PACKAGE_kmod-it87-wdt=m +CONFIG_PACKAGE_kmod-itco-wdt=m +CONFIG_PACKAGE_kmod-keys-encrypted=m +CONFIG_PACKAGE_kmod-keys-trusted=m +CONFIG_PACKAGE_kmod-lp=m +CONFIG_PACKAGE_kmod-mmc=y +CONFIG_PACKAGE_kmod-mtd-rw=m +CONFIG_PACKAGE_kmod-mtdoops=m +CONFIG_PACKAGE_kmod-mtdram=m +CONFIG_PACKAGE_kmod-mtdtests=m +CONFIG_PACKAGE_kmod-parport-pc=m +CONFIG_PACKAGE_kmod-ppdev=m +CONFIG_PACKAGE_kmod-pps=y +CONFIG_PACKAGE_kmod-pps-gpio=m +CONFIG_PACKAGE_kmod-pps-ldisc=m +CONFIG_PACKAGE_kmod-ptp=y +CONFIG_PACKAGE_kmod-random-core=y +CONFIG_PACKAGE_kmod-regmap-core=m +CONFIG_PACKAGE_kmod-regmap-i2c=m +CONFIG_PACKAGE_kmod-regmap-spi=m +CONFIG_PACKAGE_kmod-rtc-ds1307=m +CONFIG_PACKAGE_kmod-rtc-ds1374=m +CONFIG_PACKAGE_kmod-rtc-ds1672=m +CONFIG_PACKAGE_kmod-rtc-em3027=m +CONFIG_PACKAGE_kmod-rtc-isl1208=m +CONFIG_PACKAGE_kmod-rtc-pcf2123=m +CONFIG_PACKAGE_kmod-rtc-pcf2127=m +CONFIG_PACKAGE_kmod-rtc-pcf8563=m +CONFIG_PACKAGE_kmod-rtc-pt7c4338=m +CONFIG_PACKAGE_kmod-rtc-rs5c372a=m +CONFIG_PACKAGE_kmod-rtc-rx8025=m +CONFIG_PACKAGE_kmod-rtc-s35390a=m +CONFIG_PACKAGE_kmod-sdhci=y +CONFIG_PACKAGE_kmod-serial-8250=y +CONFIG_PACKAGE_kmod-serial-8250-exar=m +CONFIG_PACKAGE_kmod-softdog=m +CONFIG_PACKAGE_kmod-ssb=y +CONFIG_PACKAGE_kmod-thermal=m +CONFIG_PACKAGE_kmod-tpm=m +CONFIG_PACKAGE_kmod-tpm-i2c-atmel=m +CONFIG_PACKAGE_kmod-tpm-i2c-infineon=m +CONFIG_PACKAGE_kmod-w83627hf-wdt=m +CONFIG_PACKAGE_kmod-zram=y +# end of Other modules + +# +# PCMCIA support +# +# end of PCMCIA support + +# +# SPI Support +# +CONFIG_PACKAGE_kmod-mmc-spi=y +CONFIG_PACKAGE_kmod-spi-bitbang=m +CONFIG_PACKAGE_kmod-spi-dev=m +CONFIG_PACKAGE_kmod-spi-gpio=m +# end of SPI Support + +# +# Sound Support +# +CONFIG_PACKAGE_kmod-sound-core=m +CONFIG_PACKAGE_kmod-ac97=m +CONFIG_PACKAGE_kmod-sound-dummy=m +CONFIG_PACKAGE_kmod-sound-ens1371=m +CONFIG_PACKAGE_kmod-sound-hda-core=m +CONFIG_PACKAGE_kmod-sound-hda-codec-analog=m +CONFIG_PACKAGE_kmod-sound-hda-codec-ca0110=m +CONFIG_PACKAGE_kmod-sound-hda-codec-ca0132=m +CONFIG_PACKAGE_kmod-sound-hda-codec-cirrus=m +CONFIG_PACKAGE_kmod-sound-hda-codec-cmedia=m +CONFIG_PACKAGE_kmod-sound-hda-codec-conexant=m +CONFIG_PACKAGE_kmod-sound-hda-codec-hdmi=m +CONFIG_PACKAGE_kmod-sound-hda-codec-idt=m +CONFIG_PACKAGE_kmod-sound-hda-codec-realtek=m +CONFIG_PACKAGE_kmod-sound-hda-codec-si3054=m +CONFIG_PACKAGE_kmod-sound-hda-codec-via=m +CONFIG_PACKAGE_kmod-sound-i8x0=m +CONFIG_PACKAGE_kmod-sound-mpu401=m +CONFIG_PACKAGE_kmod-sound-seq=m +CONFIG_PACKAGE_kmod-sound-soc-ac97=m +CONFIG_PACKAGE_kmod-sound-soc-core=m +CONFIG_PACKAGE_kmod-sound-soc-spdif=m +CONFIG_PACKAGE_kmod-sound-via82xx=m +CONFIG_PACKAGE_kmod-usb-audio=m +# end of Sound Support + +# +# USB Support +# +CONFIG_PACKAGE_kmod-chaoskey=m +CONFIG_PACKAGE_kmod-usb-acm=y +CONFIG_PACKAGE_kmod-usb-atm=m +CONFIG_PACKAGE_kmod-usb-atm-cxacru=m +CONFIG_PACKAGE_kmod-usb-atm-speedtouch=m +CONFIG_PACKAGE_kmod-usb-atm-ueagle=m +CONFIG_PACKAGE_kmod-usb-cm109=m +CONFIG_PACKAGE_kmod-usb-core=y +CONFIG_PACKAGE_kmod-usb-dwc2=m +CONFIG_PACKAGE_kmod-usb-dwc3=y +CONFIG_PACKAGE_kmod-usb-dwc3-qcom=y +CONFIG_PACKAGE_kmod-usb-ehci=y +CONFIG_PACKAGE_kmod-usb-hid=y +CONFIG_PACKAGE_kmod-usb-hid-cp2112=m +CONFIG_PACKAGE_kmod-usb-ledtrig-usbport=y +CONFIG_PACKAGE_kmod-usb-net=y +CONFIG_PACKAGE_kmod-usb-net-aqc111=m +CONFIG_PACKAGE_kmod-usb-net-asix=y +CONFIG_PACKAGE_kmod-usb-net-asix-ax88179=y +CONFIG_PACKAGE_kmod-usb-net-cdc-eem=y +CONFIG_PACKAGE_kmod-usb-net-cdc-ether=y +CONFIG_PACKAGE_kmod-usb-net-cdc-mbim=y +CONFIG_PACKAGE_kmod-usb-net-cdc-ncm=y +CONFIG_PACKAGE_kmod-usb-net-cdc-subset=y +CONFIG_PACKAGE_kmod-usb-net-dm9601-ether=y +CONFIG_PACKAGE_kmod-usb-net-hso=y +CONFIG_PACKAGE_kmod-usb-net-huawei-cdc-ncm=y +CONFIG_PACKAGE_kmod-usb-net-ipheth=y +CONFIG_PACKAGE_kmod-usb-net-kalmia=y +CONFIG_PACKAGE_kmod-usb-net-kaweth=y +CONFIG_PACKAGE_kmod-usb-net-mcs7830=y +CONFIG_PACKAGE_kmod-usb-net-pegasus=y +CONFIG_PACKAGE_kmod-usb-net-pl=m +CONFIG_PACKAGE_kmod-usb-net-qmi-wwan=y +CONFIG_PACKAGE_kmod-usb-net-rndis=y +CONFIG_PACKAGE_kmod-usb-net-rtl8150=y +CONFIG_PACKAGE_kmod-usb-net-rtl8152=y +CONFIG_PACKAGE_kmod-usb-net-sierrawireless=y +CONFIG_PACKAGE_kmod-usb-net-smsc75xx=y +CONFIG_PACKAGE_kmod-usb-net-smsc95xx=y +CONFIG_PACKAGE_kmod-usb-net-sr9700=y +CONFIG_PACKAGE_kmod-usb-ohci=m +CONFIG_PACKAGE_kmod-usb-ohci-pci=m +CONFIG_PACKAGE_kmod-usb-printer=m +CONFIG_PACKAGE_kmod-usb-serial=y +CONFIG_PACKAGE_kmod-usb-serial-ark3116=y +CONFIG_PACKAGE_kmod-usb-serial-belkin=y +CONFIG_PACKAGE_kmod-usb-serial-ch341=y +CONFIG_PACKAGE_kmod-usb-serial-cp210x=y +CONFIG_PACKAGE_kmod-usb-serial-cypress-m8=y +CONFIG_PACKAGE_kmod-usb-serial-dmx_usb_module=m +CONFIG_PACKAGE_kmod-usb-serial-edgeport=m +CONFIG_PACKAGE_kmod-usb-serial-ftdi=y +CONFIG_PACKAGE_kmod-usb-serial-garmin=y +CONFIG_PACKAGE_kmod-usb-serial-ipw=y +CONFIG_PACKAGE_kmod-usb-serial-keyspan=y +CONFIG_PACKAGE_kmod-usb-serial-mct=y +CONFIG_PACKAGE_kmod-usb-serial-mos7720=y +CONFIG_PACKAGE_kmod-usb-serial-mos7840=m +CONFIG_PACKAGE_kmod-usb-serial-option=y +CONFIG_PACKAGE_kmod-usb-serial-oti6858=y +CONFIG_PACKAGE_kmod-usb-serial-pl2303=y +CONFIG_PACKAGE_kmod-usb-serial-qualcomm=y +CONFIG_PACKAGE_kmod-usb-serial-sierrawireless=y +CONFIG_PACKAGE_kmod-usb-serial-simple=y +CONFIG_PACKAGE_kmod-usb-serial-ti-usb=y +CONFIG_PACKAGE_kmod-usb-serial-visor=y +CONFIG_PACKAGE_kmod-usb-serial-wwan=y +CONFIG_PACKAGE_kmod-usb-serial-xr_usb_serial_common=m +CONFIG_PACKAGE_kmod-usb-storage=y +CONFIG_PACKAGE_kmod-usb-storage-extras=m +CONFIG_PACKAGE_kmod-usb-storage-uas=m +CONFIG_PACKAGE_kmod-usb-test=m +CONFIG_PACKAGE_kmod-usb-uhci=m +CONFIG_PACKAGE_kmod-usb-wdm=y +CONFIG_PACKAGE_kmod-usb-yealink=m +CONFIG_PACKAGE_kmod-usb2=y +CONFIG_PACKAGE_kmod-usb2-pci=m +CONFIG_PACKAGE_kmod-usb3=y +CONFIG_PACKAGE_kmod-usbip=m +CONFIG_PACKAGE_kmod-usbip-client=m +CONFIG_PACKAGE_kmod-usbip-server=m +CONFIG_PACKAGE_kmod-usbmon=m +# end of USB Support + +# +# Video Support +# +CONFIG_PACKAGE_kmod-video-core=m +CONFIG_PACKAGE_kmod-video-cpia2=m +CONFIG_PACKAGE_kmod-video-gspca-core=m +CONFIG_PACKAGE_kmod-video-gspca-conex=m +CONFIG_PACKAGE_kmod-video-gspca-etoms=m +CONFIG_PACKAGE_kmod-video-gspca-finepix=m +CONFIG_PACKAGE_kmod-video-gspca-gl860=m +CONFIG_PACKAGE_kmod-video-gspca-jeilinj=m +CONFIG_PACKAGE_kmod-video-gspca-konica=m +CONFIG_PACKAGE_kmod-video-gspca-m5602=m +CONFIG_PACKAGE_kmod-video-gspca-mars=m +CONFIG_PACKAGE_kmod-video-gspca-mr97310a=m +CONFIG_PACKAGE_kmod-video-gspca-ov519=m +CONFIG_PACKAGE_kmod-video-gspca-ov534=m +CONFIG_PACKAGE_kmod-video-gspca-ov534-9=m +CONFIG_PACKAGE_kmod-video-gspca-pac207=m +CONFIG_PACKAGE_kmod-video-gspca-pac7311=m +CONFIG_PACKAGE_kmod-video-gspca-se401=m +CONFIG_PACKAGE_kmod-video-gspca-sn9c20x=m +CONFIG_PACKAGE_kmod-video-gspca-sonixb=m +CONFIG_PACKAGE_kmod-video-gspca-sonixj=m +CONFIG_PACKAGE_kmod-video-gspca-spca500=m +CONFIG_PACKAGE_kmod-video-gspca-spca501=m +CONFIG_PACKAGE_kmod-video-gspca-spca505=m +CONFIG_PACKAGE_kmod-video-gspca-spca506=m +CONFIG_PACKAGE_kmod-video-gspca-spca508=m +CONFIG_PACKAGE_kmod-video-gspca-spca561=m +CONFIG_PACKAGE_kmod-video-gspca-sq905=m +CONFIG_PACKAGE_kmod-video-gspca-sq905c=m +CONFIG_PACKAGE_kmod-video-gspca-stk014=m +CONFIG_PACKAGE_kmod-video-gspca-stv06xx=m +CONFIG_PACKAGE_kmod-video-gspca-sunplus=m +CONFIG_PACKAGE_kmod-video-gspca-t613=m +CONFIG_PACKAGE_kmod-video-gspca-tv8532=m +CONFIG_PACKAGE_kmod-video-gspca-vc032x=m +CONFIG_PACKAGE_kmod-video-gspca-zc3xx=m +CONFIG_PACKAGE_kmod-video-pwc=m +CONFIG_PACKAGE_kmod-video-uvc=m +CONFIG_PACKAGE_kmod-video-videobuf2=m +# end of Video Support + +# +# Virtualization +# +# end of Virtualization + +# +# Voice over IP +# +# end of Voice over IP + +# +# W1 support +# +CONFIG_PACKAGE_kmod-w1=m +CONFIG_PACKAGE_kmod-w1-master-ds2482=m +CONFIG_PACKAGE_kmod-w1-master-ds2490=m +CONFIG_PACKAGE_kmod-w1-master-gpio=m +CONFIG_PACKAGE_kmod-w1-slave-ds2413=m +CONFIG_PACKAGE_kmod-w1-slave-ds2431=m +CONFIG_PACKAGE_kmod-w1-slave-ds2433=m +CONFIG_PACKAGE_kmod-w1-slave-ds2760=m +CONFIG_PACKAGE_kmod-w1-slave-smem=m +CONFIG_PACKAGE_kmod-w1-slave-therm=m +# end of W1 support + +# +# WPAN 802.15.4 Support +# +CONFIG_PACKAGE_kmod-at86rf230=m +CONFIG_PACKAGE_kmod-atusb=m +CONFIG_PACKAGE_kmod-ca8210=m +CONFIG_PACKAGE_kmod-cc2520=m +CONFIG_PACKAGE_kmod-fakelb=m +CONFIG_PACKAGE_kmod-ieee802154=m +CONFIG_PACKAGE_kmod-ieee802154-6lowpan=m +CONFIG_PACKAGE_kmod-mac802154=m +CONFIG_PACKAGE_kmod-mrf24j40=m +# end of WPAN 802.15.4 Support + +# +# Wireless Drivers +# +CONFIG_PACKAGE_kmod-adm8211=m +CONFIG_PACKAGE_kmod-ar5523=m +CONFIG_PACKAGE_kmod-ath=y +CONFIG_ATH_USER_REGD=y +# CONFIG_PACKAGE_ATH_DEBUG is not set +CONFIG_PACKAGE_ATH_DFS=y +# CONFIG_PACKAGE_ATH_DYNACK is not set +CONFIG_PACKAGE_kmod-ath10k=m +CONFIG_ATH10K_LEDS=y +# CONFIG_ATH10K_THERMAL is not set +CONFIG_PACKAGE_kmod-ath10k-ct=y +CONFIG_ATH10K-CT_LEDS=y +CONFIG_PACKAGE_kmod-ath10k-ct-smallbuffers=m +CONFIG_PACKAGE_kmod-ath5k=m +CONFIG_PACKAGE_kmod-ath6kl=m +CONFIG_PACKAGE_kmod-ath6kl-sdio=m +CONFIG_PACKAGE_kmod-ath6kl-usb=m +CONFIG_PACKAGE_kmod-ath9k=m +# CONFIG_ATH9K_HWRNG is not set +# CONFIG_ATH9K_SUPPORT_PCOEM is not set +# CONFIG_ATH9K_TX99 is not set +CONFIG_PACKAGE_kmod-ath9k-common=y +CONFIG_PACKAGE_kmod-ath9k-htc=y +CONFIG_PACKAGE_kmod-b43=m +CONFIG_PACKAGE_B43_USE_SSB=m +CONFIG_PACKAGE_B43_USE_BCMA=m +# CONFIG_B43_FW_4_150 is not set +# CONFIG_B43_FW_4_178 is not set +# CONFIG_B43_FW_5_10 is not set +CONFIG_B43_FW_5_100_138=y +# CONFIG_B43_FW_6_30 is not set +# CONFIG_B43_OPENFIRMWARE is not set +CONFIG_B43_FW_SQUASH=y +CONFIG_B43_FW_SQUASH_COREREVS="5,6,7,8,9,10,11,13,15,16,28,29,30" +CONFIG_B43_FW_SQUASH_PHYTYPES="G,N,LP,HT" +CONFIG_PACKAGE_B43_BUSES_BCMA_AND_SSB=y +# CONFIG_PACKAGE_B43_BUSES_BCMA is not set +# CONFIG_PACKAGE_B43_BUSES_SSB is not set +# CONFIG_PACKAGE_B43_DEBUG is not set +# CONFIG_PACKAGE_B43_PIO is not set +CONFIG_PACKAGE_B43_PHY_G=y +CONFIG_PACKAGE_B43_PHY_N=y +CONFIG_PACKAGE_B43_PHY_LP=y +CONFIG_PACKAGE_B43_PHY_HT=y +CONFIG_PACKAGE_kmod-b43legacy=m +CONFIG_PACKAGE_kmod-brcmfmac=m +# CONFIG_BRCMFMAC_SDIO is not set +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +CONFIG_PACKAGE_kmod-brcmsmac=m +CONFIG_BRCMSMAC_USE_FW_FROM_WL=y +CONFIG_PACKAGE_kmod-brcmutil=m +# CONFIG_PACKAGE_BRCM80211_DEBUG is not set +CONFIG_PACKAGE_kmod-carl9170=m +CONFIG_PACKAGE_kmod-cfg80211=y +# CONFIG_PACKAGE_CFG80211_TESTMODE is not set +CONFIG_PACKAGE_kmod-hermes=m +CONFIG_PACKAGE_kmod-hermes-pci=m +CONFIG_PACKAGE_kmod-hermes-plx=m +CONFIG_PACKAGE_kmod-ipw2100=m +CONFIG_PACKAGE_kmod-ipw2200=m +CONFIG_PACKAGE_kmod-iwl-legacy=m +CONFIG_PACKAGE_kmod-iwl3945=m +CONFIG_PACKAGE_kmod-iwl4965=m +CONFIG_PACKAGE_kmod-iwlwifi=m +# CONFIG_PACKAGE_IWLWIFI_DEBUG is not set +# CONFIG_PACKAGE_IWLWIFI_DEBUGFS is not set +CONFIG_PACKAGE_kmod-lib80211=m +CONFIG_PACKAGE_kmod-libertas-sdio=m +CONFIG_PACKAGE_kmod-libertas-spi=m +CONFIG_PACKAGE_kmod-libertas-usb=m +CONFIG_PACKAGE_kmod-libipw=m +CONFIG_PACKAGE_kmod-mac80211=y +CONFIG_PACKAGE_MAC80211_DEBUGFS=y +# CONFIG_PACKAGE_MAC80211_TRACING is not set +CONFIG_PACKAGE_MAC80211_MESH=y +CONFIG_PACKAGE_kmod-mac80211-hwsim=m +CONFIG_PACKAGE_kmod-mt76=m +CONFIG_PACKAGE_kmod-mt76-connac=m +CONFIG_PACKAGE_kmod-mt76-core=m +CONFIG_PACKAGE_kmod-mt76-usb=m +CONFIG_PACKAGE_kmod-mt7601u=y +CONFIG_PACKAGE_kmod-mt7603=m +CONFIG_PACKAGE_kmod-mt7615-common=m +CONFIG_PACKAGE_kmod-mt7615-firmware=m +CONFIG_PACKAGE_kmod-mt7615e=m +CONFIG_PACKAGE_kmod-mt7663-firmware-ap=m +CONFIG_PACKAGE_kmod-mt7663-firmware-sta=m +CONFIG_PACKAGE_kmod-mt7663-usb-sdio=m +CONFIG_PACKAGE_kmod-mt7663s=m +CONFIG_PACKAGE_kmod-mt7663u=m +CONFIG_PACKAGE_kmod-mt76x0-common=m +CONFIG_PACKAGE_kmod-mt76x02-common=m +CONFIG_PACKAGE_kmod-mt76x02-usb=m +CONFIG_PACKAGE_kmod-mt76x0e=m +CONFIG_PACKAGE_kmod-mt76x0u=m +CONFIG_PACKAGE_kmod-mt76x2=m +CONFIG_PACKAGE_kmod-mt76x2-common=m +CONFIG_PACKAGE_kmod-mt76x2u=m +CONFIG_PACKAGE_kmod-mt7915e=m +CONFIG_PACKAGE_kmod-mt7921e=m +CONFIG_PACKAGE_kmod-mwifiex-pcie=m +CONFIG_PACKAGE_kmod-mwifiex-sdio=m +CONFIG_PACKAGE_kmod-mwl8k=m +CONFIG_PACKAGE_kmod-net-prism54=m +CONFIG_PACKAGE_kmod-net-rtl8192su=y +CONFIG_PACKAGE_kmod-owl-loader=m +CONFIG_PACKAGE_kmod-p54-common=m +CONFIG_PACKAGE_kmod-p54-pci=m +CONFIG_PACKAGE_kmod-p54-usb=m +CONFIG_PACKAGE_kmod-rsi91x=m +CONFIG_PACKAGE_kmod-rsi91x-sdio=m +CONFIG_PACKAGE_kmod-rsi91x-usb=m +CONFIG_PACKAGE_kmod-rt2400-pci=m +CONFIG_PACKAGE_kmod-rt2500-pci=m +CONFIG_PACKAGE_kmod-rt2500-usb=m +CONFIG_PACKAGE_kmod-rt2800-lib=y +CONFIG_PACKAGE_kmod-rt2800-mmio=m +CONFIG_PACKAGE_kmod-rt2800-pci=m +CONFIG_PACKAGE_kmod-rt2800-usb=y +CONFIG_PACKAGE_kmod-rt2x00-lib=y +# CONFIG_PACKAGE_RT2X00_LIB_DEBUGFS is not set +# CONFIG_PACKAGE_RT2X00_DEBUG is not set +CONFIG_PACKAGE_kmod-rt2x00-mmio=m +CONFIG_PACKAGE_kmod-rt2x00-pci=m +CONFIG_PACKAGE_kmod-rt2x00-usb=y +CONFIG_PACKAGE_kmod-rt61-pci=m +CONFIG_PACKAGE_kmod-rt73-usb=m +CONFIG_PACKAGE_kmod-rtl8180=m +CONFIG_PACKAGE_kmod-rtl8187=y +CONFIG_PACKAGE_kmod-rtl8192c-common=y +CONFIG_PACKAGE_kmod-rtl8192ce=m +CONFIG_PACKAGE_kmod-rtl8192cu=y +CONFIG_PACKAGE_kmod-rtl8192de=m +CONFIG_PACKAGE_kmod-rtl8192se=m +CONFIG_PACKAGE_kmod-rtl8723bs=m +CONFIG_PACKAGE_kmod-rtl8812au-ct=y +CONFIG_PACKAGE_kmod-rtl8821ae=m +CONFIG_PACKAGE_kmod-rtl8xxxu=y +CONFIG_PACKAGE_kmod-rtlwifi=y +# CONFIG_PACKAGE_RTLWIFI_DEBUG is not set +CONFIG_PACKAGE_kmod-rtlwifi-btcoexist=m +CONFIG_PACKAGE_kmod-rtlwifi-pci=m +CONFIG_PACKAGE_kmod-rtlwifi-usb=y +CONFIG_PACKAGE_kmod-rtw88=m +CONFIG_PACKAGE_kmod-wil6210=m +CONFIG_PACKAGE_kmod-wl12xx=m +CONFIG_PACKAGE_kmod-wl18xx=m +CONFIG_PACKAGE_kmod-wlcore=m +CONFIG_PACKAGE_kmod-zd1211rw=m +# end of Wireless Drivers +# end of Kernel modules + +# +# Languages +# + +# +# Erlang +# +# CONFIG_PACKAGE_erlang is not set +# CONFIG_PACKAGE_erlang-asn1 is not set +# CONFIG_PACKAGE_erlang-compiler is not set +# CONFIG_PACKAGE_erlang-crypto is not set +# CONFIG_PACKAGE_erlang-erl-interface is not set +# CONFIG_PACKAGE_erlang-hipe is not set +# CONFIG_PACKAGE_erlang-inets is not set +# CONFIG_PACKAGE_erlang-mnesia is not set +# CONFIG_PACKAGE_erlang-os_mon is not set +# CONFIG_PACKAGE_erlang-public-key is not set +# CONFIG_PACKAGE_erlang-reltool is not set +# CONFIG_PACKAGE_erlang-runtime-tools is not set +# CONFIG_PACKAGE_erlang-snmp is not set +# CONFIG_PACKAGE_erlang-ssh is not set +# CONFIG_PACKAGE_erlang-ssl is not set +# CONFIG_PACKAGE_erlang-syntax-tools is not set +# CONFIG_PACKAGE_erlang-tools is not set +# CONFIG_PACKAGE_erlang-xmerl is not set +# end of Erlang + +# +# Go +# +# CONFIG_PACKAGE_golang is not set + +# +# Configuration +# +CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT="" +CONFIG_GOLANG_BUILD_CACHE_DIR="" +# CONFIG_GOLANG_MOD_CACHE_WORLD_READABLE is not set +# end of Configuration + +# CONFIG_PACKAGE_golang-doc is not set +# CONFIG_PACKAGE_golang-github-jedisct1-dnscrypt-proxy2-dev is not set +# CONFIG_PACKAGE_golang-github-nextdns-nextdns-dev is not set +# CONFIG_PACKAGE_golang-gitlab-yawning-obfs4-dev is not set +# CONFIG_PACKAGE_golang-golang-x-crypto-dev is not set +# CONFIG_PACKAGE_golang-golang-x-net-dev is not set +# CONFIG_PACKAGE_golang-golang-x-sys-dev is not set +# CONFIG_PACKAGE_golang-golang-x-text-dev is not set +# CONFIG_PACKAGE_golang-protobuf-dev is not set +# CONFIG_PACKAGE_golang-src is not set +# CONFIG_PACKAGE_golang-torproject-tor-fw-helper-dev is not set +# CONFIG_PACKAGE_v2ray-ext-dev is not set +# end of Go + +# +# Lua +# +# CONFIG_PACKAGE_dkjson is not set +# CONFIG_PACKAGE_json4lua is not set +# CONFIG_PACKAGE_ldbus is not set +CONFIG_PACKAGE_libiwinfo-lua=y +# CONFIG_PACKAGE_linotify is not set +# CONFIG_PACKAGE_lpeg is not set +# CONFIG_PACKAGE_lsqlite3 is not set +CONFIG_PACKAGE_lua=y +# CONFIG_PACKAGE_lua-argparse is not set +# CONFIG_PACKAGE_lua-bencode is not set +# CONFIG_PACKAGE_lua-bit32 is not set +# CONFIG_PACKAGE_lua-cjson is not set +# CONFIG_PACKAGE_lua-copas is not set +# CONFIG_PACKAGE_lua-coxpcall is not set +# CONFIG_PACKAGE_lua-ev is not set +# CONFIG_PACKAGE_lua-examples is not set +# CONFIG_PACKAGE_lua-libmodbus is not set +# CONFIG_PACKAGE_lua-lzlib is not set +# CONFIG_PACKAGE_lua-md5 is not set +# CONFIG_PACKAGE_lua-mobdebug is not set +# CONFIG_PACKAGE_lua-mosquitto is not set +# CONFIG_PACKAGE_lua-openssl is not set +# CONFIG_PACKAGE_lua-penlight is not set +# CONFIG_PACKAGE_lua-rings is not set +# CONFIG_PACKAGE_lua-rs232 is not set +# CONFIG_PACKAGE_lua-sha2 is not set +# CONFIG_PACKAGE_lua-wsapi-base is not set +# CONFIG_PACKAGE_lua-wsapi-xavante is not set +# CONFIG_PACKAGE_lua-xavante is not set +# CONFIG_PACKAGE_lua5.3 is not set +# CONFIG_PACKAGE_luabitop is not set +# CONFIG_PACKAGE_luac is not set +# CONFIG_PACKAGE_luac5.3 is not set +# CONFIG_PACKAGE_luaexpat is not set +# CONFIG_PACKAGE_luafilesystem is not set +# CONFIG_PACKAGE_luajit is not set +# CONFIG_PACKAGE_lualanes is not set +# CONFIG_PACKAGE_luaposix is not set +# CONFIG_PACKAGE_luarocks is not set +# CONFIG_PACKAGE_luasec is not set +# CONFIG_PACKAGE_luasoap is not set +# CONFIG_PACKAGE_luasocket is not set +# CONFIG_PACKAGE_luasocket5.3 is not set +# CONFIG_PACKAGE_luasql-mysql is not set +# CONFIG_PACKAGE_luasql-pgsql is not set +# CONFIG_PACKAGE_luasql-sqlite3 is not set +# CONFIG_PACKAGE_luasrcdiet is not set +# CONFIG_PACKAGE_luv is not set +# CONFIG_PACKAGE_lyaml is not set +# CONFIG_PACKAGE_lzmq is not set +# CONFIG_PACKAGE_uuid is not set +# end of Lua + +# +# Node.js +# +# CONFIG_PACKAGE_node is not set +# CONFIG_PACKAGE_node-arduino-firmata is not set +# CONFIG_PACKAGE_node-cylon is not set +# CONFIG_PACKAGE_node-cylon-firmata is not set +# CONFIG_PACKAGE_node-cylon-gpio is not set +# CONFIG_PACKAGE_node-cylon-i2c is not set +# CONFIG_PACKAGE_node-hid is not set +# CONFIG_PACKAGE_node-homebridge is not set +# CONFIG_PACKAGE_node-javascript-obfuscator is not set +# CONFIG_PACKAGE_node-npm is not set +# CONFIG_PACKAGE_node-serialport is not set +# CONFIG_PACKAGE_node-serialport-bindings is not set +# end of Node.js + +# +# PHP7 +# +# CONFIG_PACKAGE_php7 is not set +# end of PHP7 + +# +# PHP8 +# +# CONFIG_PACKAGE_php8 is not set +# end of PHP8 + +# +# Perl +# +# CONFIG_PACKAGE_perl is not set +# end of Perl + +# +# Python +# +# CONFIG_PACKAGE_libpython3 is not set +# CONFIG_PACKAGE_micropython is not set +# CONFIG_PACKAGE_micropython-lib is not set +# CONFIG_PACKAGE_python-pip-conf is not set +# CONFIG_PACKAGE_python3 is not set +# CONFIG_PACKAGE_python3-aiohttp is not set +# CONFIG_PACKAGE_python3-aiohttp-cors is not set +# CONFIG_PACKAGE_python3-apipkg is not set +# CONFIG_PACKAGE_python3-appdirs is not set +# CONFIG_PACKAGE_python3-asgiref is not set +# CONFIG_PACKAGE_python3-asn1crypto is not set +# CONFIG_PACKAGE_python3-astral is not set +# CONFIG_PACKAGE_python3-async-timeout is not set +# CONFIG_PACKAGE_python3-asyncio is not set +# CONFIG_PACKAGE_python3-atomicwrites is not set +# CONFIG_PACKAGE_python3-attrs is not set +# CONFIG_PACKAGE_python3-augeas is not set +# CONFIG_PACKAGE_python3-automat is not set +# CONFIG_PACKAGE_python3-awscli is not set +# CONFIG_PACKAGE_python3-babel is not set +# CONFIG_PACKAGE_python3-base is not set +# CONFIG_PACKAGE_python3-bcrypt is not set +# CONFIG_PACKAGE_python3-bidict is not set +# CONFIG_PACKAGE_python3-boto3 is not set +# CONFIG_PACKAGE_python3-botocore is not set +# CONFIG_PACKAGE_python3-bottle is not set +# CONFIG_PACKAGE_python3-cached-property is not set +# CONFIG_PACKAGE_python3-cachelib is not set +# CONFIG_PACKAGE_python3-cachetools is not set +# CONFIG_PACKAGE_python3-certifi is not set +# CONFIG_PACKAGE_python3-cffi is not set +# CONFIG_PACKAGE_python3-cgi is not set +# CONFIG_PACKAGE_python3-cgitb is not set +# CONFIG_PACKAGE_python3-chardet is not set +# CONFIG_PACKAGE_python3-ciso8601 is not set +# CONFIG_PACKAGE_python3-click is not set +# CONFIG_PACKAGE_python3-click-log is not set +# CONFIG_PACKAGE_python3-codecs is not set +# CONFIG_PACKAGE_python3-colorama is not set +# CONFIG_PACKAGE_python3-constantly is not set +# CONFIG_PACKAGE_python3-contextlib2 is not set +# CONFIG_PACKAGE_python3-cryptodome is not set +# CONFIG_PACKAGE_python3-cryptodomex is not set +# CONFIG_PACKAGE_python3-cryptography is not set +# CONFIG_PACKAGE_python3-ctypes is not set +# CONFIG_PACKAGE_python3-curl is not set +# CONFIG_PACKAGE_python3-dateutil is not set +# CONFIG_PACKAGE_python3-dbm is not set +# CONFIG_PACKAGE_python3-decimal is not set +# CONFIG_PACKAGE_python3-decorator is not set +# CONFIG_PACKAGE_python3-defusedxml is not set +# CONFIG_PACKAGE_python3-dev is not set +# CONFIG_PACKAGE_python3-distro is not set +# CONFIG_PACKAGE_python3-distutils is not set +# CONFIG_PACKAGE_python3-django is not set +# CONFIG_PACKAGE_python3-django-appconf is not set +# CONFIG_PACKAGE_python3-django-compressor is not set +# CONFIG_PACKAGE_python3-django-cors-headers is not set +# CONFIG_PACKAGE_python3-django-etesync-journal is not set +# CONFIG_PACKAGE_python3-django-formtools is not set +# CONFIG_PACKAGE_python3-django-jsonfield is not set +# CONFIG_PACKAGE_python3-django-jsonfield2 is not set +# CONFIG_PACKAGE_python3-django-picklefield is not set +# CONFIG_PACKAGE_python3-django-postoffice is not set +# CONFIG_PACKAGE_python3-django-ranged-response is not set +# CONFIG_PACKAGE_python3-django-restframework is not set +# CONFIG_PACKAGE_python3-django-restframework39 is not set +# CONFIG_PACKAGE_python3-django-simple-captcha is not set +# CONFIG_PACKAGE_python3-django-statici18n is not set +# CONFIG_PACKAGE_python3-django-webpack-loader is not set +# CONFIG_PACKAGE_python3-django1 is not set +# CONFIG_PACKAGE_python3-dns is not set +# CONFIG_PACKAGE_python3-docker is not set +# CONFIG_PACKAGE_python3-dockerpty is not set +# CONFIG_PACKAGE_python3-docopt is not set +# CONFIG_PACKAGE_python3-docutils is not set +# CONFIG_PACKAGE_python3-dotenv is not set +# CONFIG_PACKAGE_python3-drf-nested-routers is not set +# CONFIG_PACKAGE_python3-email is not set +# CONFIG_PACKAGE_python3-engineio is not set +# CONFIG_PACKAGE_python3-et_xmlfile is not set +# CONFIG_PACKAGE_python3-evdev is not set +# CONFIG_PACKAGE_python3-eventlet is not set +# CONFIG_PACKAGE_python3-execnet is not set +# CONFIG_PACKAGE_python3-flask is not set +# CONFIG_PACKAGE_python3-flask-babel is not set +# CONFIG_PACKAGE_python3-flask-httpauth is not set +# CONFIG_PACKAGE_python3-flask-login is not set +# CONFIG_PACKAGE_python3-flask-seasurf is not set +# CONFIG_PACKAGE_python3-flask-session is not set +# CONFIG_PACKAGE_python3-flask-socketio is not set +# CONFIG_PACKAGE_python3-flup is not set +# CONFIG_PACKAGE_python3-gdbm is not set +# CONFIG_PACKAGE_python3-gmpy2 is not set +# CONFIG_PACKAGE_python3-gnupg is not set +# CONFIG_PACKAGE_python3-gpiod is not set +# CONFIG_PACKAGE_python3-greenlet is not set +# CONFIG_PACKAGE_python3-hyperlink is not set +# CONFIG_PACKAGE_python3-idna is not set +# CONFIG_PACKAGE_python3-ifaddr is not set +# CONFIG_PACKAGE_python3-incremental is not set +# CONFIG_PACKAGE_python3-influxdb is not set +# CONFIG_PACKAGE_python3-iniconfig is not set +# CONFIG_PACKAGE_python3-intelhex is not set +# CONFIG_PACKAGE_python3-itsdangerous is not set +# CONFIG_PACKAGE_python3-jdcal is not set +# CONFIG_PACKAGE_python3-jinja2 is not set +# CONFIG_PACKAGE_python3-jmespath is not set +# CONFIG_PACKAGE_python3-jsonpath-ng is not set +# CONFIG_PACKAGE_python3-jsonschema is not set +# CONFIG_PACKAGE_python3-lib2to3 is not set +# CONFIG_PACKAGE_python3-libmodbus is not set +# CONFIG_PACKAGE_python3-libselinux is not set +# CONFIG_PACKAGE_python3-libsemanage is not set +# CONFIG_PACKAGE_python3-light is not set + +# +# Configuration +# +# CONFIG_PYTHON3_BLUETOOTH_SUPPORT is not set +# CONFIG_PYTHON3_HOST_PIP_CACHE_WORLD_READABLE is not set +# end of Configuration + +# CONFIG_PACKAGE_python3-logging is not set +# CONFIG_PACKAGE_python3-lxml is not set +# CONFIG_PACKAGE_python3-lzma is not set +# CONFIG_PACKAGE_python3-markdown is not set +# CONFIG_PACKAGE_python3-markupsafe is not set +# CONFIG_PACKAGE_python3-maxminddb is not set +# CONFIG_PACKAGE_python3-more-itertools is not set +# CONFIG_PACKAGE_python3-msgpack is not set +# CONFIG_PACKAGE_python3-multidict is not set +# CONFIG_PACKAGE_python3-multiprocessing is not set +# CONFIG_PACKAGE_python3-ncurses is not set +# CONFIG_PACKAGE_python3-netdisco is not set +# CONFIG_PACKAGE_python3-netifaces is not set +# CONFIG_PACKAGE_python3-networkx is not set +# CONFIG_PACKAGE_python3-newt is not set +# CONFIG_PACKAGE_python3-numpy is not set +# CONFIG_PACKAGE_python3-oauthlib is not set +# CONFIG_PACKAGE_python3-openpyxl is not set +# CONFIG_PACKAGE_python3-openssl is not set +# CONFIG_PACKAGE_python3-packages is not set +# CONFIG_PACKAGE_python3-packaging is not set +# CONFIG_PACKAGE_python3-paho-mqtt is not set +# CONFIG_PACKAGE_python3-paramiko is not set +# CONFIG_PACKAGE_python3-parsley is not set +# CONFIG_PACKAGE_python3-passlib is not set +# CONFIG_PACKAGE_python3-pillow is not set +# CONFIG_PACKAGE_python3-pip is not set +# CONFIG_PACKAGE_python3-pkg-resources is not set +# CONFIG_PACKAGE_python3-pluggy is not set +# CONFIG_PACKAGE_python3-ply is not set +# CONFIG_PACKAGE_python3-psutil is not set +# CONFIG_PACKAGE_python3-psycopg2 is not set +# CONFIG_PACKAGE_python3-py is not set +# CONFIG_PACKAGE_python3-pyasn1 is not set +# CONFIG_PACKAGE_python3-pyasn1-modules is not set +# CONFIG_PACKAGE_python3-pycparser is not set +# CONFIG_PACKAGE_python3-pydoc is not set +# CONFIG_PACKAGE_python3-pyinotify is not set +# CONFIG_PACKAGE_python3-pyjwt is not set +# CONFIG_PACKAGE_python3-pymysql is not set +# CONFIG_PACKAGE_python3-pynacl is not set +# CONFIG_PACKAGE_python3-pyodbc is not set +# CONFIG_PACKAGE_python3-pyopenssl is not set +# CONFIG_PACKAGE_python3-pyotp is not set +# CONFIG_PACKAGE_python3-pyparsing is not set +# CONFIG_PACKAGE_python3-pyroute2 is not set +# CONFIG_PACKAGE_python3-pyrsistent is not set +# CONFIG_PACKAGE_python3-pyserial is not set +# CONFIG_PACKAGE_python3-pysocks is not set +# CONFIG_PACKAGE_python3-pytest is not set +# CONFIG_PACKAGE_python3-pytest-forked is not set +# CONFIG_PACKAGE_python3-pytest-xdist is not set +# CONFIG_PACKAGE_python3-pytz is not set +# CONFIG_PACKAGE_python3-qrcode is not set +# CONFIG_PACKAGE_python3-rcssmin is not set +# CONFIG_PACKAGE_python3-readline is not set +# CONFIG_PACKAGE_python3-requests is not set +# CONFIG_PACKAGE_python3-requests-oauthlib is not set +# CONFIG_PACKAGE_python3-rsa is not set +# CONFIG_PACKAGE_python3-ruamel-yaml is not set +# CONFIG_PACKAGE_python3-s3transfer is not set +# CONFIG_PACKAGE_python3-schedule is not set +# CONFIG_PACKAGE_python3-schema is not set +# CONFIG_PACKAGE_python3-seafile-ccnet is not set +# CONFIG_PACKAGE_python3-seafile-server is not set +# CONFIG_PACKAGE_python3-searpc is not set +# CONFIG_PACKAGE_python3-sentry-sdk is not set +# CONFIG_PACKAGE_python3-sepolgen is not set +# CONFIG_PACKAGE_python3-sepolicy is not set +# CONFIG_PACKAGE_python3-service-identity is not set +# CONFIG_PACKAGE_python3-setuptools is not set +# CONFIG_PACKAGE_python3-simplejson is not set +# CONFIG_PACKAGE_python3-six is not set +# CONFIG_PACKAGE_python3-slugify is not set +# CONFIG_PACKAGE_python3-smbus is not set +# CONFIG_PACKAGE_python3-socketio is not set +# CONFIG_PACKAGE_python3-speedtest-cli is not set +# CONFIG_PACKAGE_python3-sqlalchemy is not set +# CONFIG_PACKAGE_python3-sqlite3 is not set +# CONFIG_PACKAGE_python3-sqlparse is not set +# CONFIG_PACKAGE_python3-stem is not set +# CONFIG_PACKAGE_python3-sysrepo is not set +# CONFIG_PACKAGE_python3-text-unidecode is not set +# CONFIG_PACKAGE_python3-texttable is not set +# CONFIG_PACKAGE_python3-toml is not set +# CONFIG_PACKAGE_python3-tornado is not set +# CONFIG_PACKAGE_python3-twisted is not set +# CONFIG_PACKAGE_python3-typing-extensions is not set +# CONFIG_PACKAGE_python3-ubus is not set +# CONFIG_PACKAGE_python3-uci is not set +# CONFIG_PACKAGE_python3-unidecode is not set +# CONFIG_PACKAGE_python3-unittest is not set +# CONFIG_PACKAGE_python3-urllib is not set +# CONFIG_PACKAGE_python3-urllib3 is not set +# CONFIG_PACKAGE_python3-vobject is not set +# CONFIG_PACKAGE_python3-voluptuous is not set +# CONFIG_PACKAGE_python3-voluptuous-serialize is not set +# CONFIG_PACKAGE_python3-wcwidth is not set +# CONFIG_PACKAGE_python3-websocket-client is not set +# CONFIG_PACKAGE_python3-werkzeug is not set +# CONFIG_PACKAGE_python3-xml is not set +# CONFIG_PACKAGE_python3-xmltodict is not set +# CONFIG_PACKAGE_python3-yaml is not set +# CONFIG_PACKAGE_python3-yarl is not set +# CONFIG_PACKAGE_python3-zeroconf is not set +# CONFIG_PACKAGE_python3-zipp is not set +# CONFIG_PACKAGE_python3-zope-interface is not set +# end of Python + +# +# Ruby +# +# CONFIG_PACKAGE_ruby is not set +# end of Ruby + +# +# Tcl +# +# CONFIG_PACKAGE_tcl is not set +# end of Tcl + +# CONFIG_PACKAGE_chicken-scheme-full is not set +# CONFIG_PACKAGE_chicken-scheme-interpreter is not set +# CONFIG_PACKAGE_slsh is not set +# end of Languages + +# +# Libraries +# + +# +# Compression +# +# CONFIG_PACKAGE_libbz2 is not set +# CONFIG_PACKAGE_liblz4 is not set +# CONFIG_PACKAGE_liblzma is not set +# CONFIG_PACKAGE_libunrar is not set +# CONFIG_PACKAGE_libzip-gnutls is not set +# CONFIG_PACKAGE_libzip-mbedtls is not set +# CONFIG_PACKAGE_libzip-nossl is not set +# CONFIG_PACKAGE_libzip-openssl is not set +# CONFIG_PACKAGE_libzstd is not set +# end of Compression + +# +# Database +# +# CONFIG_PACKAGE_libmariadb is not set +# CONFIG_PACKAGE_libpq is not set +# CONFIG_PACKAGE_libpqxx is not set +CONFIG_PACKAGE_libsqlite3=y + +# +# Configuration +# +CONFIG_SQLITE3_DYNAMIC_EXTENSIONS=y +CONFIG_SQLITE3_FTS3=y +CONFIG_SQLITE3_FTS4=y +CONFIG_SQLITE3_FTS5=y +CONFIG_SQLITE3_JSON1=y +CONFIG_SQLITE3_RTREE=y +# CONFIG_SQLITE3_SESSION is not set +# end of Configuration + +# CONFIG_PACKAGE_pgsqlodbc is not set +# CONFIG_PACKAGE_psqlodbca is not set +# CONFIG_PACKAGE_psqlodbcw is not set +# CONFIG_PACKAGE_redis-cli is not set +# CONFIG_PACKAGE_redis-server is not set +# CONFIG_PACKAGE_redis-utils is not set +# CONFIG_PACKAGE_tdb is not set +# CONFIG_PACKAGE_unixodbc is not set +# end of Database + +# +# Filesystem +# +# CONFIG_PACKAGE_libacl is not set +CONFIG_PACKAGE_libattr=y +# CONFIG_PACKAGE_libfuse is not set +# CONFIG_PACKAGE_libfuse3 is not set +# CONFIG_PACKAGE_libow is not set +# CONFIG_PACKAGE_libow-capi is not set +CONFIG_PACKAGE_libsysfs=y +# end of Filesystem + +# +# Firewall +# +# CONFIG_PACKAGE_libfko is not set +CONFIG_PACKAGE_libip4tc=y +CONFIG_PACKAGE_libip6tc=y +CONFIG_PACKAGE_libxtables=y +# CONFIG_PACKAGE_libxtables-nft is not set +# end of Firewall + +# +# Instant Messaging +# +# CONFIG_PACKAGE_quasselc is not set +# end of Instant Messaging + +# +# IoT +# +# CONFIG_PACKAGE_libmraa is not set +# CONFIG_PACKAGE_libmraa-python3 is not set +# CONFIG_PACKAGE_libupm is not set +# CONFIG_PACKAGE_libupm-a110x is not set +# CONFIG_PACKAGE_libupm-a110x-python3 is not set +# CONFIG_PACKAGE_libupm-abp is not set +# CONFIG_PACKAGE_libupm-abp-python3 is not set +# CONFIG_PACKAGE_libupm-ad8232 is not set +# CONFIG_PACKAGE_libupm-ad8232-python3 is not set +# CONFIG_PACKAGE_libupm-adafruitms1438 is not set +# CONFIG_PACKAGE_libupm-adafruitms1438-python3 is not set +# CONFIG_PACKAGE_libupm-adafruitss is not set +# CONFIG_PACKAGE_libupm-adafruitss-python3 is not set +# CONFIG_PACKAGE_libupm-adc121c021 is not set +# CONFIG_PACKAGE_libupm-adc121c021-python3 is not set +# CONFIG_PACKAGE_libupm-adis16448 is not set +# CONFIG_PACKAGE_libupm-adis16448-python3 is not set +# CONFIG_PACKAGE_libupm-ads1x15 is not set +# CONFIG_PACKAGE_libupm-ads1x15-python3 is not set +# CONFIG_PACKAGE_libupm-adxl335 is not set +# CONFIG_PACKAGE_libupm-adxl335-python3 is not set +# CONFIG_PACKAGE_libupm-adxl345 is not set +# CONFIG_PACKAGE_libupm-adxl345-python3 is not set +# CONFIG_PACKAGE_libupm-adxrs610 is not set +# CONFIG_PACKAGE_libupm-adxrs610-python3 is not set +# CONFIG_PACKAGE_libupm-am2315 is not set +# CONFIG_PACKAGE_libupm-am2315-python3 is not set +# CONFIG_PACKAGE_libupm-apa102 is not set +# CONFIG_PACKAGE_libupm-apa102-python3 is not set +# CONFIG_PACKAGE_libupm-apds9002 is not set +# CONFIG_PACKAGE_libupm-apds9002-python3 is not set +# CONFIG_PACKAGE_libupm-apds9930 is not set +# CONFIG_PACKAGE_libupm-apds9930-python3 is not set +# CONFIG_PACKAGE_libupm-at42qt1070 is not set +# CONFIG_PACKAGE_libupm-at42qt1070-python3 is not set +# CONFIG_PACKAGE_libupm-bh1749 is not set +# CONFIG_PACKAGE_libupm-bh1749-python3 is not set +# CONFIG_PACKAGE_libupm-bh1750 is not set +# CONFIG_PACKAGE_libupm-bh1750-python3 is not set +# CONFIG_PACKAGE_libupm-bh1792 is not set +# CONFIG_PACKAGE_libupm-bh1792-python3 is not set +# CONFIG_PACKAGE_libupm-biss0001 is not set +# CONFIG_PACKAGE_libupm-biss0001-python3 is not set +# CONFIG_PACKAGE_libupm-bma220 is not set +# CONFIG_PACKAGE_libupm-bma220-python3 is not set +# CONFIG_PACKAGE_libupm-bma250e is not set +# CONFIG_PACKAGE_libupm-bma250e-python3 is not set +# CONFIG_PACKAGE_libupm-bmg160 is not set +# CONFIG_PACKAGE_libupm-bmg160-python3 is not set +# CONFIG_PACKAGE_libupm-bmi160 is not set +# CONFIG_PACKAGE_libupm-bmi160-python3 is not set +# CONFIG_PACKAGE_libupm-bmm150 is not set +# CONFIG_PACKAGE_libupm-bmm150-python3 is not set +# CONFIG_PACKAGE_libupm-bmp280 is not set +# CONFIG_PACKAGE_libupm-bmp280-python3 is not set +# CONFIG_PACKAGE_libupm-bmpx8x is not set +# CONFIG_PACKAGE_libupm-bmpx8x-python3 is not set +# CONFIG_PACKAGE_libupm-bmx055 is not set +# CONFIG_PACKAGE_libupm-bmx055-python3 is not set +# CONFIG_PACKAGE_libupm-bno055 is not set +# CONFIG_PACKAGE_libupm-bno055-python3 is not set +# CONFIG_PACKAGE_libupm-button is not set +# CONFIG_PACKAGE_libupm-button-python3 is not set +# CONFIG_PACKAGE_libupm-buzzer is not set +# CONFIG_PACKAGE_libupm-buzzer-python3 is not set +# CONFIG_PACKAGE_libupm-cjq4435 is not set +# CONFIG_PACKAGE_libupm-cjq4435-python3 is not set +# CONFIG_PACKAGE_libupm-collision is not set +# CONFIG_PACKAGE_libupm-collision-python3 is not set +# CONFIG_PACKAGE_libupm-curieimu is not set +# CONFIG_PACKAGE_libupm-curieimu-python3 is not set +# CONFIG_PACKAGE_libupm-cwlsxxa is not set +# CONFIG_PACKAGE_libupm-cwlsxxa-python3 is not set +# CONFIG_PACKAGE_libupm-dfrec is not set +# CONFIG_PACKAGE_libupm-dfrec-python3 is not set +# CONFIG_PACKAGE_libupm-dfrorp is not set +# CONFIG_PACKAGE_libupm-dfrorp-python3 is not set +# CONFIG_PACKAGE_libupm-dfrph is not set +# CONFIG_PACKAGE_libupm-dfrph-python3 is not set +# CONFIG_PACKAGE_libupm-ds1307 is not set +# CONFIG_PACKAGE_libupm-ds1307-python3 is not set +# CONFIG_PACKAGE_libupm-ds1808lc is not set +# CONFIG_PACKAGE_libupm-ds1808lc-python3 is not set +# CONFIG_PACKAGE_libupm-ds18b20 is not set +# CONFIG_PACKAGE_libupm-ds18b20-python3 is not set +# CONFIG_PACKAGE_libupm-ds2413 is not set +# CONFIG_PACKAGE_libupm-ds2413-python3 is not set +# CONFIG_PACKAGE_libupm-ecezo is not set +# CONFIG_PACKAGE_libupm-ecezo-python3 is not set +# CONFIG_PACKAGE_libupm-ecs1030 is not set +# CONFIG_PACKAGE_libupm-ecs1030-python3 is not set +# CONFIG_PACKAGE_libupm-ehr is not set +# CONFIG_PACKAGE_libupm-ehr-python3 is not set +# CONFIG_PACKAGE_libupm-eldriver is not set +# CONFIG_PACKAGE_libupm-eldriver-python3 is not set +# CONFIG_PACKAGE_libupm-electromagnet is not set +# CONFIG_PACKAGE_libupm-electromagnet-python3 is not set +# CONFIG_PACKAGE_libupm-emg is not set +# CONFIG_PACKAGE_libupm-emg-python3 is not set +# CONFIG_PACKAGE_libupm-enc03r is not set +# CONFIG_PACKAGE_libupm-enc03r-python3 is not set +# CONFIG_PACKAGE_libupm-flex is not set +# CONFIG_PACKAGE_libupm-flex-python3 is not set +# CONFIG_PACKAGE_libupm-gas is not set +# CONFIG_PACKAGE_libupm-gas-python3 is not set +# CONFIG_PACKAGE_libupm-gp2y0a is not set +# CONFIG_PACKAGE_libupm-gp2y0a-python3 is not set +# CONFIG_PACKAGE_libupm-gprs is not set +# CONFIG_PACKAGE_libupm-gprs-python3 is not set +# CONFIG_PACKAGE_libupm-gsr is not set +# CONFIG_PACKAGE_libupm-gsr-python3 is not set +# CONFIG_PACKAGE_libupm-guvas12d is not set +# CONFIG_PACKAGE_libupm-guvas12d-python3 is not set +# CONFIG_PACKAGE_libupm-h3lis331dl is not set +# CONFIG_PACKAGE_libupm-h3lis331dl-python3 is not set +# CONFIG_PACKAGE_libupm-h803x is not set +# CONFIG_PACKAGE_libupm-h803x-python3 is not set +# CONFIG_PACKAGE_libupm-hcsr04 is not set +# CONFIG_PACKAGE_libupm-hcsr04-python3 is not set +# CONFIG_PACKAGE_libupm-hdc1000 is not set +# CONFIG_PACKAGE_libupm-hdc1000-python3 is not set +# CONFIG_PACKAGE_libupm-hdxxvxta is not set +# CONFIG_PACKAGE_libupm-hdxxvxta-python3 is not set +# CONFIG_PACKAGE_libupm-hka5 is not set +# CONFIG_PACKAGE_libupm-hka5-python3 is not set +# CONFIG_PACKAGE_libupm-hlg150h is not set +# CONFIG_PACKAGE_libupm-hlg150h-python3 is not set +# CONFIG_PACKAGE_libupm-hm11 is not set +# CONFIG_PACKAGE_libupm-hm11-python3 is not set +# CONFIG_PACKAGE_libupm-hmc5883l is not set +# CONFIG_PACKAGE_libupm-hmc5883l-python3 is not set +# CONFIG_PACKAGE_libupm-hmtrp is not set +# CONFIG_PACKAGE_libupm-hmtrp-python3 is not set +# CONFIG_PACKAGE_libupm-hp20x is not set +# CONFIG_PACKAGE_libupm-hp20x-python3 is not set +# CONFIG_PACKAGE_libupm-ht9170 is not set +# CONFIG_PACKAGE_libupm-ht9170-python3 is not set +# CONFIG_PACKAGE_libupm-htu21d is not set +# CONFIG_PACKAGE_libupm-htu21d-python3 is not set +# CONFIG_PACKAGE_libupm-hwxpxx is not set +# CONFIG_PACKAGE_libupm-hwxpxx-python3 is not set +# CONFIG_PACKAGE_libupm-hx711 is not set +# CONFIG_PACKAGE_libupm-hx711-python3 is not set +# CONFIG_PACKAGE_libupm-ili9341 is not set +# CONFIG_PACKAGE_libupm-ili9341-python3 is not set +# CONFIG_PACKAGE_libupm-ims is not set +# CONFIG_PACKAGE_libupm-ims-python3 is not set +# CONFIG_PACKAGE_libupm-ina132 is not set +# CONFIG_PACKAGE_libupm-ina132-python3 is not set +# CONFIG_PACKAGE_libupm-interfaces is not set +# CONFIG_PACKAGE_libupm-interfaces-python3 is not set +# CONFIG_PACKAGE_libupm-isd1820 is not set +# CONFIG_PACKAGE_libupm-isd1820-python3 is not set +# CONFIG_PACKAGE_libupm-itg3200 is not set +# CONFIG_PACKAGE_libupm-itg3200-python3 is not set +# CONFIG_PACKAGE_libupm-jhd1313m1 is not set +# CONFIG_PACKAGE_libupm-jhd1313m1-python3 is not set +# CONFIG_PACKAGE_libupm-joystick12 is not set +# CONFIG_PACKAGE_libupm-joystick12-python3 is not set +# CONFIG_PACKAGE_libupm-kx122 is not set +# CONFIG_PACKAGE_libupm-kx122-python3 is not set +# CONFIG_PACKAGE_libupm-kxcjk1013 is not set +# CONFIG_PACKAGE_libupm-kxcjk1013-python3 is not set +# CONFIG_PACKAGE_libupm-kxtj3 is not set +# CONFIG_PACKAGE_libupm-kxtj3-python3 is not set +# CONFIG_PACKAGE_libupm-l298 is not set +# CONFIG_PACKAGE_libupm-l298-python3 is not set +# CONFIG_PACKAGE_libupm-l3gd20 is not set +# CONFIG_PACKAGE_libupm-l3gd20-python3 is not set +# CONFIG_PACKAGE_libupm-lcd is not set +# CONFIG_PACKAGE_libupm-lcd-python3 is not set +# CONFIG_PACKAGE_libupm-lcdks is not set +# CONFIG_PACKAGE_libupm-lcdks-python3 is not set +# CONFIG_PACKAGE_libupm-lcm1602 is not set +# CONFIG_PACKAGE_libupm-lcm1602-python3 is not set +# CONFIG_PACKAGE_libupm-ldt0028 is not set +# CONFIG_PACKAGE_libupm-ldt0028-python3 is not set +# CONFIG_PACKAGE_libupm-led is not set +# CONFIG_PACKAGE_libupm-led-python3 is not set +# CONFIG_PACKAGE_libupm-lidarlitev3 is not set +# CONFIG_PACKAGE_libupm-lidarlitev3-python3 is not set +# CONFIG_PACKAGE_libupm-light is not set +# CONFIG_PACKAGE_libupm-light-python3 is not set +# CONFIG_PACKAGE_libupm-linefinder is not set +# CONFIG_PACKAGE_libupm-linefinder-python3 is not set +# CONFIG_PACKAGE_libupm-lis2ds12 is not set +# CONFIG_PACKAGE_libupm-lis2ds12-python3 is not set +# CONFIG_PACKAGE_libupm-lis3dh is not set +# CONFIG_PACKAGE_libupm-lis3dh-python3 is not set +# CONFIG_PACKAGE_libupm-lm35 is not set +# CONFIG_PACKAGE_libupm-lm35-python3 is not set +# CONFIG_PACKAGE_libupm-lol is not set +# CONFIG_PACKAGE_libupm-lol-python3 is not set +# CONFIG_PACKAGE_libupm-loudness is not set +# CONFIG_PACKAGE_libupm-loudness-python3 is not set +# CONFIG_PACKAGE_libupm-lp8860 is not set +# CONFIG_PACKAGE_libupm-lp8860-python3 is not set +# CONFIG_PACKAGE_libupm-lpd8806 is not set +# CONFIG_PACKAGE_libupm-lpd8806-python3 is not set +# CONFIG_PACKAGE_libupm-lsm303agr is not set +# CONFIG_PACKAGE_libupm-lsm303agr-python3 is not set +# CONFIG_PACKAGE_libupm-lsm303d is not set +# CONFIG_PACKAGE_libupm-lsm303d-python3 is not set +# CONFIG_PACKAGE_libupm-lsm303dlh is not set +# CONFIG_PACKAGE_libupm-lsm303dlh-python3 is not set +# CONFIG_PACKAGE_libupm-lsm6ds3h is not set +# CONFIG_PACKAGE_libupm-lsm6ds3h-python3 is not set +# CONFIG_PACKAGE_libupm-lsm6dsl is not set +# CONFIG_PACKAGE_libupm-lsm6dsl-python3 is not set +# CONFIG_PACKAGE_libupm-lsm9ds0 is not set +# CONFIG_PACKAGE_libupm-lsm9ds0-python3 is not set +# CONFIG_PACKAGE_libupm-m24lr64e is not set +# CONFIG_PACKAGE_libupm-m24lr64e-python3 is not set +# CONFIG_PACKAGE_libupm-mag3110 is not set +# CONFIG_PACKAGE_libupm-mag3110-python3 is not set +# CONFIG_PACKAGE_libupm-max30100 is not set +# CONFIG_PACKAGE_libupm-max30100-python3 is not set +# CONFIG_PACKAGE_libupm-max31723 is not set +# CONFIG_PACKAGE_libupm-max31723-python3 is not set +# CONFIG_PACKAGE_libupm-max31855 is not set +# CONFIG_PACKAGE_libupm-max31855-python3 is not set +# CONFIG_PACKAGE_libupm-max44000 is not set +# CONFIG_PACKAGE_libupm-max44000-python3 is not set +# CONFIG_PACKAGE_libupm-max44009 is not set +# CONFIG_PACKAGE_libupm-max44009-python3 is not set +# CONFIG_PACKAGE_libupm-max5487 is not set +# CONFIG_PACKAGE_libupm-max5487-python3 is not set +# CONFIG_PACKAGE_libupm-maxds3231m is not set +# CONFIG_PACKAGE_libupm-maxds3231m-python3 is not set +# CONFIG_PACKAGE_libupm-maxsonarez is not set +# CONFIG_PACKAGE_libupm-maxsonarez-python3 is not set +# CONFIG_PACKAGE_libupm-mb704x is not set +# CONFIG_PACKAGE_libupm-mb704x-python3 is not set +# CONFIG_PACKAGE_libupm-mcp2515 is not set +# CONFIG_PACKAGE_libupm-mcp2515-python3 is not set +# CONFIG_PACKAGE_libupm-mcp9808 is not set +# CONFIG_PACKAGE_libupm-mcp9808-python3 is not set +# CONFIG_PACKAGE_libupm-md is not set +# CONFIG_PACKAGE_libupm-md-python3 is not set +# CONFIG_PACKAGE_libupm-mg811 is not set +# CONFIG_PACKAGE_libupm-mg811-python3 is not set +# CONFIG_PACKAGE_libupm-mhz16 is not set +# CONFIG_PACKAGE_libupm-mhz16-python3 is not set +# CONFIG_PACKAGE_libupm-mic is not set +# CONFIG_PACKAGE_libupm-mic-python3 is not set +# CONFIG_PACKAGE_libupm-micsv89 is not set +# CONFIG_PACKAGE_libupm-micsv89-python3 is not set +# CONFIG_PACKAGE_libupm-mlx90614 is not set +# CONFIG_PACKAGE_libupm-mlx90614-python3 is not set +# CONFIG_PACKAGE_libupm-mma7361 is not set +# CONFIG_PACKAGE_libupm-mma7361-python3 is not set +# CONFIG_PACKAGE_libupm-mma7455 is not set +# CONFIG_PACKAGE_libupm-mma7455-python3 is not set +# CONFIG_PACKAGE_libupm-mma7660 is not set +# CONFIG_PACKAGE_libupm-mma7660-python3 is not set +# CONFIG_PACKAGE_libupm-mma8x5x is not set +# CONFIG_PACKAGE_libupm-mma8x5x-python3 is not set +# CONFIG_PACKAGE_libupm-mmc35240 is not set +# CONFIG_PACKAGE_libupm-mmc35240-python3 is not set +# CONFIG_PACKAGE_libupm-moisture is not set +# CONFIG_PACKAGE_libupm-moisture-python3 is not set +# CONFIG_PACKAGE_libupm-mpl3115a2 is not set +# CONFIG_PACKAGE_libupm-mpl3115a2-python3 is not set +# CONFIG_PACKAGE_libupm-mpr121 is not set +# CONFIG_PACKAGE_libupm-mpr121-python3 is not set +# CONFIG_PACKAGE_libupm-mpu9150 is not set +# CONFIG_PACKAGE_libupm-mpu9150-python3 is not set +# CONFIG_PACKAGE_libupm-mq303a is not set +# CONFIG_PACKAGE_libupm-mq303a-python3 is not set +# CONFIG_PACKAGE_libupm-ms5611 is not set +# CONFIG_PACKAGE_libupm-ms5611-python3 is not set +# CONFIG_PACKAGE_libupm-ms5803 is not set +# CONFIG_PACKAGE_libupm-ms5803-python3 is not set +# CONFIG_PACKAGE_libupm-my9221 is not set +# CONFIG_PACKAGE_libupm-my9221-python3 is not set +# CONFIG_PACKAGE_libupm-nlgpio16 is not set +# CONFIG_PACKAGE_libupm-nlgpio16-python3 is not set +# CONFIG_PACKAGE_libupm-nmea_gps is not set +# CONFIG_PACKAGE_libupm-nmea_gps-python3 is not set +# CONFIG_PACKAGE_libupm-nrf24l01 is not set +# CONFIG_PACKAGE_libupm-nrf24l01-python3 is not set +# CONFIG_PACKAGE_libupm-nrf8001 is not set +# CONFIG_PACKAGE_libupm-nrf8001-python3 is not set +# CONFIG_PACKAGE_libupm-nunchuck is not set +# CONFIG_PACKAGE_libupm-nunchuck-python3 is not set +# CONFIG_PACKAGE_libupm-o2 is not set +# CONFIG_PACKAGE_libupm-o2-python3 is not set +# CONFIG_PACKAGE_libupm-otp538u is not set +# CONFIG_PACKAGE_libupm-otp538u-python3 is not set +# CONFIG_PACKAGE_libupm-ozw is not set +# CONFIG_PACKAGE_libupm-ozw-python3 is not set +# CONFIG_PACKAGE_libupm-p9813 is not set +# CONFIG_PACKAGE_libupm-p9813-python3 is not set +# CONFIG_PACKAGE_libupm-pca9685 is not set +# CONFIG_PACKAGE_libupm-pca9685-python3 is not set +# CONFIG_PACKAGE_libupm-pn532 is not set +# CONFIG_PACKAGE_libupm-pn532-python3 is not set +# CONFIG_PACKAGE_libupm-ppd42ns is not set +# CONFIG_PACKAGE_libupm-ppd42ns-python3 is not set +# CONFIG_PACKAGE_libupm-pulsensor is not set +# CONFIG_PACKAGE_libupm-pulsensor-python3 is not set +# CONFIG_PACKAGE_libupm-relay is not set +# CONFIG_PACKAGE_libupm-relay-python3 is not set +# CONFIG_PACKAGE_libupm-rf22 is not set +# CONFIG_PACKAGE_libupm-rf22-python3 is not set +# CONFIG_PACKAGE_libupm-rfr359f is not set +# CONFIG_PACKAGE_libupm-rfr359f-python3 is not set +# CONFIG_PACKAGE_libupm-rgbringcoder is not set +# CONFIG_PACKAGE_libupm-rgbringcoder-python3 is not set +# CONFIG_PACKAGE_libupm-rhusb is not set +# CONFIG_PACKAGE_libupm-rhusb-python3 is not set +# CONFIG_PACKAGE_libupm-rn2903 is not set +# CONFIG_PACKAGE_libupm-rn2903-python3 is not set +# CONFIG_PACKAGE_libupm-rotary is not set +# CONFIG_PACKAGE_libupm-rotary-python3 is not set +# CONFIG_PACKAGE_libupm-rotaryencoder is not set +# CONFIG_PACKAGE_libupm-rotaryencoder-python3 is not set +# CONFIG_PACKAGE_libupm-rpr220 is not set +# CONFIG_PACKAGE_libupm-rpr220-python3 is not set +# CONFIG_PACKAGE_libupm-rsc is not set +# CONFIG_PACKAGE_libupm-rsc-python3 is not set +# CONFIG_PACKAGE_libupm-scam is not set +# CONFIG_PACKAGE_libupm-scam-python3 is not set +# CONFIG_PACKAGE_libupm-sensortemplate is not set +# CONFIG_PACKAGE_libupm-sensortemplate-python3 is not set +# CONFIG_PACKAGE_libupm-servo is not set +# CONFIG_PACKAGE_libupm-servo-python3 is not set +# CONFIG_PACKAGE_libupm-sht1x is not set +# CONFIG_PACKAGE_libupm-sht1x-python3 is not set +# CONFIG_PACKAGE_libupm-si1132 is not set +# CONFIG_PACKAGE_libupm-si1132-python3 is not set +# CONFIG_PACKAGE_libupm-si114x is not set +# CONFIG_PACKAGE_libupm-si114x-python3 is not set +# CONFIG_PACKAGE_libupm-si7005 is not set +# CONFIG_PACKAGE_libupm-si7005-python3 is not set +# CONFIG_PACKAGE_libupm-slide is not set +# CONFIG_PACKAGE_libupm-slide-python3 is not set +# CONFIG_PACKAGE_libupm-sm130 is not set +# CONFIG_PACKAGE_libupm-sm130-python3 is not set +# CONFIG_PACKAGE_libupm-smartdrive is not set +# CONFIG_PACKAGE_libupm-smartdrive-python3 is not set +# CONFIG_PACKAGE_libupm-speaker is not set +# CONFIG_PACKAGE_libupm-speaker-python3 is not set +# CONFIG_PACKAGE_libupm-ssd1351 is not set +# CONFIG_PACKAGE_libupm-ssd1351-python3 is not set +# CONFIG_PACKAGE_libupm-st7735 is not set +# CONFIG_PACKAGE_libupm-st7735-python3 is not set +# CONFIG_PACKAGE_libupm-stepmotor is not set +# CONFIG_PACKAGE_libupm-stepmotor-python3 is not set +# CONFIG_PACKAGE_libupm-sx1276 is not set +# CONFIG_PACKAGE_libupm-sx1276-python3 is not set +# CONFIG_PACKAGE_libupm-sx6119 is not set +# CONFIG_PACKAGE_libupm-sx6119-python3 is not set +# CONFIG_PACKAGE_libupm-t3311 is not set +# CONFIG_PACKAGE_libupm-t3311-python3 is not set +# CONFIG_PACKAGE_libupm-t6713 is not set +# CONFIG_PACKAGE_libupm-t6713-python3 is not set +# CONFIG_PACKAGE_libupm-ta12200 is not set +# CONFIG_PACKAGE_libupm-ta12200-python3 is not set +# CONFIG_PACKAGE_libupm-tca9548a is not set +# CONFIG_PACKAGE_libupm-tca9548a-python3 is not set +# CONFIG_PACKAGE_libupm-tcs3414cs is not set +# CONFIG_PACKAGE_libupm-tcs3414cs-python3 is not set +# CONFIG_PACKAGE_libupm-tcs37727 is not set +# CONFIG_PACKAGE_libupm-tcs37727-python3 is not set +# CONFIG_PACKAGE_libupm-teams is not set +# CONFIG_PACKAGE_libupm-teams-python3 is not set +# CONFIG_PACKAGE_libupm-temperature is not set +# CONFIG_PACKAGE_libupm-temperature-python3 is not set +# CONFIG_PACKAGE_libupm-tex00 is not set +# CONFIG_PACKAGE_libupm-tex00-python3 is not set +# CONFIG_PACKAGE_libupm-th02 is not set +# CONFIG_PACKAGE_libupm-th02-python3 is not set +# CONFIG_PACKAGE_libupm-tm1637 is not set +# CONFIG_PACKAGE_libupm-tm1637-python3 is not set +# CONFIG_PACKAGE_libupm-tmp006 is not set +# CONFIG_PACKAGE_libupm-tmp006-python3 is not set +# CONFIG_PACKAGE_libupm-tsl2561 is not set +# CONFIG_PACKAGE_libupm-tsl2561-python3 is not set +# CONFIG_PACKAGE_libupm-ttp223 is not set +# CONFIG_PACKAGE_libupm-ttp223-python3 is not set +# CONFIG_PACKAGE_libupm-uartat is not set +# CONFIG_PACKAGE_libupm-uartat-python3 is not set +# CONFIG_PACKAGE_libupm-uln200xa is not set +# CONFIG_PACKAGE_libupm-uln200xa-python3 is not set +# CONFIG_PACKAGE_libupm-ultrasonic is not set +# CONFIG_PACKAGE_libupm-ultrasonic-python3 is not set +# CONFIG_PACKAGE_libupm-urm37 is not set +# CONFIG_PACKAGE_libupm-urm37-python3 is not set +# CONFIG_PACKAGE_libupm-utilities is not set +# CONFIG_PACKAGE_libupm-utilities-python3 is not set +# CONFIG_PACKAGE_libupm-vcap is not set +# CONFIG_PACKAGE_libupm-vcap-python3 is not set +# CONFIG_PACKAGE_libupm-vdiv is not set +# CONFIG_PACKAGE_libupm-vdiv-python3 is not set +# CONFIG_PACKAGE_libupm-veml6070 is not set +# CONFIG_PACKAGE_libupm-veml6070-python3 is not set +# CONFIG_PACKAGE_libupm-water is not set +# CONFIG_PACKAGE_libupm-water-python3 is not set +# CONFIG_PACKAGE_libupm-waterlevel is not set +# CONFIG_PACKAGE_libupm-waterlevel-python3 is not set +# CONFIG_PACKAGE_libupm-wfs is not set +# CONFIG_PACKAGE_libupm-wfs-python3 is not set +# CONFIG_PACKAGE_libupm-wheelencoder is not set +# CONFIG_PACKAGE_libupm-wheelencoder-python3 is not set +# CONFIG_PACKAGE_libupm-wt5001 is not set +# CONFIG_PACKAGE_libupm-wt5001-python3 is not set +# CONFIG_PACKAGE_libupm-xbee is not set +# CONFIG_PACKAGE_libupm-xbee-python3 is not set +# CONFIG_PACKAGE_libupm-yg1006 is not set +# CONFIG_PACKAGE_libupm-yg1006-python3 is not set +# CONFIG_PACKAGE_libupm-zfm20 is not set +# CONFIG_PACKAGE_libupm-zfm20-python3 is not set +# end of IoT + +# +# Languages +# +# CONFIG_PACKAGE_libyaml is not set +# end of Languages + +# +# LibElektra +# +# CONFIG_PACKAGE_libelektra-boost is not set +# CONFIG_PACKAGE_libelektra-core is not set +# CONFIG_PACKAGE_libelektra-cpp is not set +# CONFIG_PACKAGE_libelektra-crypto is not set +# CONFIG_PACKAGE_libelektra-curlget is not set +# CONFIG_PACKAGE_libelektra-dbus is not set +# CONFIG_PACKAGE_libelektra-extra is not set +# CONFIG_PACKAGE_libelektra-lua is not set +# CONFIG_PACKAGE_libelektra-plugins is not set +# CONFIG_PACKAGE_libelektra-python3 is not set +# CONFIG_PACKAGE_libelektra-resolvers is not set +# CONFIG_PACKAGE_libelektra-xerces is not set +# CONFIG_PACKAGE_libelektra-xml is not set +# CONFIG_PACKAGE_libelektra-yajl is not set +# CONFIG_PACKAGE_libelektra-yamlcpp is not set +# CONFIG_PACKAGE_libelektra-zmq is not set +# end of LibElektra + +# +# Networking +# +# CONFIG_PACKAGE_libdcwproto is not set +# CONFIG_PACKAGE_libdcwsocket is not set +# CONFIG_PACKAGE_libsctp is not set +# CONFIG_PACKAGE_libuhttpd-mbedtls is not set +# CONFIG_PACKAGE_libuhttpd-nossl is not set +# CONFIG_PACKAGE_libuhttpd-openssl is not set +# CONFIG_PACKAGE_libuhttpd-wolfssl is not set +# CONFIG_PACKAGE_libulfius-gnutls is not set +# CONFIG_PACKAGE_libulfius-nossl is not set +CONFIG_PACKAGE_libunbound=y +# CONFIG_PACKAGE_libunbound_dnscrypt is not set +CONFIG_PACKAGE_libunbound_ipset=y +CONFIG_PACKAGE_libunbound_libevent=y +CONFIG_PACKAGE_libunbound_libpthread=y +# CONFIG_PACKAGE_libunbound_nghttp2 is not set +# CONFIG_PACKAGE_libunbound_pythonmodule is not set +# CONFIG_PACKAGE_libunbound_subnet is not set +# CONFIG_PACKAGE_libunbound_dnstap is not set +# CONFIG_PACKAGE_libuwsc-mbedtls is not set +# CONFIG_PACKAGE_libuwsc-nossl is not set +# CONFIG_PACKAGE_libuwsc-openssl is not set +# CONFIG_PACKAGE_libuwsc-wolfssl is not set +# end of Networking + +# +# SSL +# +CONFIG_PACKAGE_libgnutls=y + +# +# Configuration +# +CONFIG_GNUTLS_DTLS_SRTP=y +CONFIG_GNUTLS_ALPN=y +CONFIG_GNUTLS_OCSP=y +# CONFIG_GNUTLS_CRYPTODEV is not set +CONFIG_GNUTLS_HEARTBEAT=y +# CONFIG_GNUTLS_SRP is not set +CONFIG_GNUTLS_PSK=y +CONFIG_GNUTLS_ANON=y +# CONFIG_GNUTLS_TPM is not set +# CONFIG_GNUTLS_PKCS11 is not set +# CONFIG_GNUTLS_EXT_LIBTASN1 is not set +# end of Configuration + +# CONFIG_PACKAGE_libgnutls-dane is not set +CONFIG_PACKAGE_libmbedtls=y +# CONFIG_LIBMBEDTLS_DEBUG_C is not set +# CONFIG_LIBMBEDTLS_HKDF_C is not set +# CONFIG_PACKAGE_libnss is not set +CONFIG_PACKAGE_libopenssl=y + +# +# Build Options +# +# CONFIG_OPENSSL_OPTIMIZE_SPEED is not set +CONFIG_OPENSSL_WITH_ASM=y +CONFIG_OPENSSL_WITH_DEPRECATED=y +# CONFIG_OPENSSL_NO_DEPRECATED is not set +CONFIG_OPENSSL_WITH_ERROR_MESSAGES=y + +# +# Protocol Support +# +CONFIG_OPENSSL_WITH_TLS13=y +# CONFIG_OPENSSL_WITH_DTLS is not set +# CONFIG_OPENSSL_WITH_NPN is not set +CONFIG_OPENSSL_WITH_SRP=y +CONFIG_OPENSSL_WITH_CMS=y + +# +# Algorithm Selection +# +# CONFIG_OPENSSL_WITH_EC2M is not set +CONFIG_OPENSSL_WITH_CHACHA_POLY1305=y +CONFIG_OPENSSL_PREFER_CHACHA_OVER_GCM=y +CONFIG_OPENSSL_WITH_PSK=y + +# +# Less commonly used build options +# +# CONFIG_OPENSSL_WITH_ARIA is not set +# CONFIG_OPENSSL_WITH_CAMELLIA is not set +# CONFIG_OPENSSL_WITH_IDEA is not set +# CONFIG_OPENSSL_WITH_SEED is not set +# CONFIG_OPENSSL_WITH_SM234 is not set +# CONFIG_OPENSSL_WITH_BLAKE2 is not set +# CONFIG_OPENSSL_WITH_MDC2 is not set +# CONFIG_OPENSSL_WITH_WHIRLPOOL is not set +# CONFIG_OPENSSL_WITH_COMPRESSION is not set +# CONFIG_OPENSSL_WITH_RFC3779 is not set + +# +# Engine/Hardware Support +# +CONFIG_OPENSSL_ENGINE=y +# CONFIG_OPENSSL_ENGINE_BUILTIN is not set +# CONFIG_OPENSSL_WITH_GOST is not set +# CONFIG_PACKAGE_libopenssl-afalg is not set +# CONFIG_PACKAGE_libopenssl-afalg_sync is not set +CONFIG_PACKAGE_libopenssl-conf=y +# CONFIG_PACKAGE_libopenssl-devcrypto is not set +CONFIG_PACKAGE_libwolfssl=y +CONFIG_WOLFSSL_HAS_AES_CCM=y +CONFIG_WOLFSSL_HAS_CHACHA_POLY=y +CONFIG_WOLFSSL_HAS_DH=y +CONFIG_WOLFSSL_HAS_ARC4=y +CONFIG_WOLFSSL_HAS_CERTGEN=y +CONFIG_WOLFSSL_HAS_TLSV10=y +CONFIG_WOLFSSL_HAS_TLSV13=y +CONFIG_WOLFSSL_HAS_SESSION_TICKET=y +# CONFIG_WOLFSSL_HAS_DTLS is not set +CONFIG_WOLFSSL_HAS_OCSP=y +CONFIG_WOLFSSL_HAS_WPAS=y +# CONFIG_WOLFSSL_HAS_ECC25519 is not set +CONFIG_WOLFSSL_HAS_NO_HW=y +# CONFIG_WOLFSSL_HAS_AFALG is not set +# CONFIG_WOLFSSL_HAS_DEVCRYPTO_CBC is not set +# CONFIG_WOLFSSL_HAS_DEVCRYPTO_AES is not set +# CONFIG_WOLFSSL_HAS_DEVCRYPTO_FULL is not set +# end of SSL + +# +# Sound +# +# CONFIG_PACKAGE_alsa-ucm-conf is not set +# CONFIG_PACKAGE_liblo is not set +# end of Sound + +# +# libimobiledevice +# +CONFIG_PACKAGE_libimobiledevice=y +# CONFIG_PACKAGE_libirecovery is not set +CONFIG_PACKAGE_libplist=y +# CONFIG_PACKAGE_libplistcxx is not set +CONFIG_PACKAGE_libusbmuxd=y +# end of libimobiledevice + +# CONFIG_PACKAGE_acsccid is not set +# CONFIG_PACKAGE_alsa-lib is not set +# CONFIG_PACKAGE_argp-standalone is not set +CONFIG_PACKAGE_bind-libs=y +# CONFIG_PACKAGE_bluez-libs is not set +# CONFIG_PACKAGE_boost is not set +# CONFIG_boost-context-exclude is not set +# CONFIG_boost-coroutine-exclude is not set +# CONFIG_boost-fiber-exclude is not set +# CONFIG_PACKAGE_cJSON is not set +# CONFIG_PACKAGE_ccid is not set +# CONFIG_PACKAGE_check is not set +# CONFIG_PACKAGE_confuse is not set +# CONFIG_PACKAGE_czmq is not set +# CONFIG_PACKAGE_dtndht is not set +# CONFIG_PACKAGE_getdns is not set +# CONFIG_PACKAGE_giflib is not set +CONFIG_PACKAGE_glib2=y +# CONFIG_PACKAGE_google-authenticator-libpam is not set +# CONFIG_PACKAGE_hidapi is not set +# CONFIG_PACKAGE_ibrcommon is not set +# CONFIG_PACKAGE_ibrdtn is not set +# CONFIG_PACKAGE_icu is not set +# CONFIG_PACKAGE_icu-data-tools is not set +# CONFIG_PACKAGE_icu-full-data is not set +# CONFIG_PACKAGE_jansson is not set +# CONFIG_PACKAGE_json-glib is not set +# CONFIG_PACKAGE_jsoncpp is not set +# CONFIG_PACKAGE_knot-libs is not set +# CONFIG_PACKAGE_knot-libzscanner is not set +# CONFIG_PACKAGE_libaio is not set +# CONFIG_PACKAGE_libantlr3c is not set +# CONFIG_PACKAGE_libao is not set +# CONFIG_PACKAGE_libapr is not set +# CONFIG_PACKAGE_libaprutil is not set +# CONFIG_PACKAGE_libarchive is not set +# CONFIG_PACKAGE_libarchive-noopenssl is not set +# CONFIG_PACKAGE_libasm is not set +# CONFIG_PACKAGE_libassuan is not set +# CONFIG_PACKAGE_libatasmart is not set +# CONFIG_PACKAGE_libaudit is not set +# CONFIG_PACKAGE_libauparse is not set +# CONFIG_PACKAGE_libavahi-client is not set +# CONFIG_PACKAGE_libavahi-compat-libdnssd is not set +# CONFIG_PACKAGE_libavahi-dbus-support is not set +# CONFIG_PACKAGE_libavahi-nodbus-support is not set +# CONFIG_PACKAGE_libbfd is not set +CONFIG_PACKAGE_libblkid=y +CONFIG_PACKAGE_libblobmsg-json=y +CONFIG_PACKAGE_libbpf=y +# CONFIG_PACKAGE_libbsd is not set +CONFIG_PACKAGE_libcap=y +# CONFIG_PACKAGE_libcap-bin is not set +CONFIG_PACKAGE_libcap-ng=y +# CONFIG_PACKAGE_libcap-ng-bin is not set +CONFIG_PACKAGE_libcares=y +# CONFIG_PACKAGE_libcbor is not set +# CONFIG_PACKAGE_libcgroup is not set +# CONFIG_PACKAGE_libcharset is not set +# CONFIG_PACKAGE_libcoap is not set +# CONFIG_PACKAGE_libcomerr is not set +# CONFIG_PACKAGE_libconfig is not set +# CONFIG_PACKAGE_libctf is not set +CONFIG_PACKAGE_libcurl=y + +# +# SSL support +# +# CONFIG_LIBCURL_MBEDTLS is not set +CONFIG_LIBCURL_WOLFSSL=y +# CONFIG_LIBCURL_OPENSSL is not set +# CONFIG_LIBCURL_GNUTLS is not set +# CONFIG_LIBCURL_NOSSL is not set + +# +# Supported protocols +# +# CONFIG_LIBCURL_DICT is not set +CONFIG_LIBCURL_FILE=y +CONFIG_LIBCURL_FTP=y +# CONFIG_LIBCURL_GOPHER is not set +CONFIG_LIBCURL_HTTP=y +CONFIG_LIBCURL_COOKIES=y +# CONFIG_LIBCURL_IMAP is not set +# CONFIG_LIBCURL_LDAP is not set +# CONFIG_LIBCURL_POP3 is not set +# CONFIG_LIBCURL_RTSP is not set +# CONFIG_LIBCURL_SSH2 is not set +CONFIG_LIBCURL_NO_SMB="!" +# CONFIG_LIBCURL_SMTP is not set +# CONFIG_LIBCURL_TELNET is not set +# CONFIG_LIBCURL_TFTP is not set +CONFIG_LIBCURL_NGHTTP2=y + +# +# Miscellaneous +# +CONFIG_LIBCURL_PROXY=y +# CONFIG_LIBCURL_CRYPTO_AUTH is not set +# CONFIG_LIBCURL_TLS_SRP is not set +# CONFIG_LIBCURL_LIBIDN2 is not set +# CONFIG_LIBCURL_THREADED_RESOLVER is not set +# CONFIG_LIBCURL_ZLIB is not set +# CONFIG_LIBCURL_ZSTD is not set +# CONFIG_LIBCURL_UNIX_SOCKETS is not set +# CONFIG_LIBCURL_LIBCURL_OPTION is not set +# CONFIG_LIBCURL_VERBOSE is not set +# CONFIG_PACKAGE_libdaemon is not set +# CONFIG_PACKAGE_libdaq is not set +# CONFIG_PACKAGE_libdaq3 is not set +# CONFIG_PACKAGE_libdb47 is not set +# CONFIG_PACKAGE_libdb47xx is not set +# CONFIG_PACKAGE_libdbi is not set +CONFIG_PACKAGE_libdbus=y +# CONFIG_PACKAGE_libdevmapper-normal is not set +# CONFIG_PACKAGE_libdevmapper-selinux is not set +# CONFIG_PACKAGE_libdmapsharing is not set +# CONFIG_PACKAGE_libdnet is not set +# CONFIG_PACKAGE_libdrm is not set +# CONFIG_PACKAGE_libdvbcsa is not set +# CONFIG_PACKAGE_libdw is not set +# CONFIG_PACKAGE_libecdsautil is not set +# CONFIG_PACKAGE_libedit is not set +CONFIG_PACKAGE_libelf=y +# CONFIG_PACKAGE_libell is not set +# CONFIG_PACKAGE_libesmtp is not set +# CONFIG_PACKAGE_libestr is not set +CONFIG_PACKAGE_libev=y +# CONFIG_PACKAGE_libevdev is not set +CONFIG_PACKAGE_libevent2=y +# CONFIG_PACKAGE_libevent2-core is not set +# CONFIG_PACKAGE_libevent2-extra is not set +# CONFIG_PACKAGE_libevent2-openssl is not set +# CONFIG_PACKAGE_libevent2-pthreads is not set +# CONFIG_PACKAGE_libexif is not set +CONFIG_PACKAGE_libexpat=y +# CONFIG_PACKAGE_libexslt is not set +# CONFIG_PACKAGE_libext2fs is not set +# CONFIG_PACKAGE_libextractor is not set +CONFIG_PACKAGE_libf2fs=y +# CONFIG_PACKAGE_libf2fs-selinux is not set +# CONFIG_PACKAGE_libfaad2 is not set +# CONFIG_PACKAGE_libfastjson is not set +# CONFIG_PACKAGE_libfdisk is not set +# CONFIG_PACKAGE_libfdt is not set +CONFIG_PACKAGE_libffi=y +# CONFIG_PACKAGE_libffmpeg-audio-dec is not set +# CONFIG_PACKAGE_libffmpeg-custom is not set +# CONFIG_PACKAGE_libffmpeg-full is not set +# CONFIG_PACKAGE_libffmpeg-mini is not set +# CONFIG_PACKAGE_libfido2 is not set +# CONFIG_PACKAGE_libflac is not set +# CONFIG_PACKAGE_libfmt is not set +# CONFIG_PACKAGE_libfreetype is not set +# CONFIG_PACKAGE_libfstrm is not set +# CONFIG_PACKAGE_libftdi is not set +# CONFIG_PACKAGE_libftdi1 is not set +# CONFIG_PACKAGE_libgabe is not set +# CONFIG_PACKAGE_libgcrypt is not set +CONFIG_PACKAGE_libgd=y +# CONFIG_LIBGD_TIFF is not set +# CONFIG_LIBGD_FREETYPE is not set +# CONFIG_PACKAGE_libgd-full is not set +# CONFIG_PACKAGE_libgdbm is not set +# CONFIG_PACKAGE_libgee is not set +CONFIG_PACKAGE_libgmp=y +# CONFIG_PACKAGE_libgnurl is not set +# CONFIG_PACKAGE_libgpg-error is not set +# CONFIG_PACKAGE_libgpgme is not set +# CONFIG_PACKAGE_libgpgmepp is not set +# CONFIG_PACKAGE_libgphoto2 is not set +# CONFIG_PACKAGE_libgpiod is not set +# CONFIG_PACKAGE_libgps is not set +# CONFIG_PACKAGE_libh2o is not set +# CONFIG_PACKAGE_libh2o-evloop is not set +# CONFIG_PACKAGE_libhamlib is not set +# CONFIG_PACKAGE_libhavege is not set +# CONFIG_PACKAGE_libhiredis is not set +# CONFIG_PACKAGE_libhttp-parser is not set +# CONFIG_PACKAGE_libhwloc is not set +# CONFIG_PACKAGE_libi2c is not set +# CONFIG_PACKAGE_libical is not set +# CONFIG_PACKAGE_libiconv is not set +# CONFIG_PACKAGE_libiconv-full is not set +# CONFIG_PACKAGE_libid3tag is not set +# CONFIG_PACKAGE_libidn is not set +# CONFIG_PACKAGE_libidn2 is not set +# CONFIG_PACKAGE_libiio is not set +# CONFIG_PACKAGE_libinotifytools is not set +# CONFIG_PACKAGE_libinput is not set +# CONFIG_PACKAGE_libintl is not set +# CONFIG_PACKAGE_libintl-full is not set +# CONFIG_PACKAGE_libipfs-http-client is not set +# CONFIG_PACKAGE_libiw is not set +CONFIG_PACKAGE_libiwinfo=y +CONFIG_PACKAGE_libjpeg-turbo=y +CONFIG_PACKAGE_libjson-c=y +# CONFIG_PACKAGE_libkeyutils is not set +# CONFIG_PACKAGE_libkmod is not set +# CONFIG_PACKAGE_libksba is not set +# CONFIG_PACKAGE_libldns is not set +# CONFIG_PACKAGE_libleptonica is not set +# CONFIG_PACKAGE_libloragw is not set +# CONFIG_PACKAGE_libltdl is not set +CONFIG_PACKAGE_liblua=y +# CONFIG_PACKAGE_liblua5.3 is not set +CONFIG_PACKAGE_liblucihttp=y +CONFIG_PACKAGE_liblucihttp-lua=y +CONFIG_PACKAGE_liblzo=y +# CONFIG_PACKAGE_libmad is not set +# CONFIG_PACKAGE_libmagic is not set +# CONFIG_PACKAGE_libmaxminddb is not set +CONFIG_PACKAGE_libmbim=y +# CONFIG_PACKAGE_libmcrypt is not set +# CONFIG_PACKAGE_libmicrohttpd-no-ssl is not set +# CONFIG_PACKAGE_libmicrohttpd-ssl is not set +# CONFIG_PACKAGE_libmilter-sendmail is not set +# CONFIG_PACKAGE_libminiupnpc is not set +# CONFIG_PACKAGE_libmms is not set +CONFIG_PACKAGE_libmnl=y +# CONFIG_PACKAGE_libmodbus is not set +# CONFIG_PACKAGE_libmosquitto-nossl is not set +# CONFIG_PACKAGE_libmosquitto-ssl is not set +CONFIG_PACKAGE_libmount=y +# CONFIG_PACKAGE_libmpdclient is not set +# CONFIG_PACKAGE_libmpeg2 is not set +# CONFIG_PACKAGE_libmpg123 is not set +# CONFIG_PACKAGE_libnatpmp is not set +CONFIG_PACKAGE_libncurses=y +# CONFIG_PACKAGE_libndpi is not set +# CONFIG_PACKAGE_libneon is not set +CONFIG_PACKAGE_libnet-1.2.x=y +# CONFIG_PACKAGE_libnetconf2 is not set +# CONFIG_PACKAGE_libnetfilter-acct is not set +CONFIG_PACKAGE_libnetfilter-conntrack=y +CONFIG_PACKAGE_libnetfilter-cthelper=y +CONFIG_PACKAGE_libnetfilter-cttimeout=y +# CONFIG_PACKAGE_libnetfilter-log is not set +CONFIG_PACKAGE_libnetfilter-queue=y +CONFIG_PACKAGE_libnetsnmp=y +CONFIG_PACKAGE_libnettle=y + +# +# Configuration +# +# CONFIG_LIBNETTLE_MINI is not set +# end of Configuration + +# CONFIG_PACKAGE_libnewt is not set +CONFIG_PACKAGE_libnfnetlink=y +# CONFIG_PACKAGE_libnftnl is not set +CONFIG_PACKAGE_libnghttp2=y +# CONFIG_PACKAGE_libnl is not set +# CONFIG_PACKAGE_libnl-core is not set +# CONFIG_PACKAGE_libnl-genl is not set +# CONFIG_PACKAGE_libnl-nf is not set +# CONFIG_PACKAGE_libnl-route is not set +CONFIG_PACKAGE_libnl-tiny=y +# CONFIG_PACKAGE_libnopoll is not set +# CONFIG_PACKAGE_libnpth is not set +# CONFIG_PACKAGE_libnpupnp is not set +# CONFIG_PACKAGE_libogg is not set +# CONFIG_PACKAGE_liboil is not set +# CONFIG_PACKAGE_libopcodes is not set +# CONFIG_PACKAGE_libopendkim is not set +# CONFIG_PACKAGE_libopenobex is not set +# CONFIG_PACKAGE_libopensc is not set +# CONFIG_PACKAGE_libopenzwave is not set +# CONFIG_PACKAGE_liboping is not set +# CONFIG_PACKAGE_libopus is not set +# CONFIG_PACKAGE_libopusenc is not set +# CONFIG_PACKAGE_libopusfile is not set +# CONFIG_PACKAGE_liborcania is not set +# CONFIG_PACKAGE_libout123 is not set +# CONFIG_PACKAGE_libowipcalc is not set +# CONFIG_PACKAGE_libp11 is not set +# CONFIG_PACKAGE_libpagekite is not set +# CONFIG_PACKAGE_libpam is not set +# CONFIG_PACKAGE_libpbc is not set +CONFIG_PACKAGE_libpcap=y + +# +# Configuration +# +# CONFIG_PCAP_HAS_USB is not set +# CONFIG_PCAP_HAS_NETFILTER is not set +# end of Configuration + +CONFIG_PACKAGE_libpci=y +# CONFIG_PACKAGE_libpciaccess is not set +CONFIG_PACKAGE_libpcre=y +CONFIG_PCRE_JIT_ENABLED=y +# CONFIG_PACKAGE_libpcre16 is not set +# CONFIG_PACKAGE_libpcre2 is not set +# CONFIG_PACKAGE_libpcre2-16 is not set +# CONFIG_PACKAGE_libpcre2-32 is not set +# CONFIG_PACKAGE_libpcre32 is not set +# CONFIG_PACKAGE_libpcrecpp is not set +# CONFIG_PACKAGE_libpcsclite is not set +# CONFIG_PACKAGE_libpfring is not set +# CONFIG_PACKAGE_libpkcs11-spy is not set +# CONFIG_PACKAGE_libpkgconf is not set +CONFIG_PACKAGE_libpng=y +# CONFIG_PACKAGE_libpopt is not set +# CONFIG_PACKAGE_libprotobuf-c is not set +# CONFIG_PACKAGE_libpsl is not set +CONFIG_PACKAGE_libqmi=y + +# +# Configuration +# +CONFIG_LIBQMI_WITH_MBIM_QMUX=y +CONFIG_LIBQMI_WITH_QRTR_GLIB=y +# end of Configuration + +# CONFIG_PACKAGE_libqrencode is not set +CONFIG_PACKAGE_libqrtr-glib=y +# CONFIG_PACKAGE_libradcli is not set +# CONFIG_PACKAGE_libradiotap is not set +# CONFIG_PACKAGE_libreadline is not set +# CONFIG_PACKAGE_libredblack is not set +# CONFIG_PACKAGE_librouteros is not set +# CONFIG_PACKAGE_libroxml is not set +# CONFIG_PACKAGE_librrd1 is not set +# CONFIG_PACKAGE_librtlsdr is not set +# CONFIG_PACKAGE_libruby is not set +# CONFIG_PACKAGE_libsamplerate is not set +# CONFIG_PACKAGE_libsane is not set +# CONFIG_PACKAGE_libsasl2 is not set +# CONFIG_PACKAGE_libsearpc is not set +# CONFIG_PACKAGE_libseccomp is not set +# CONFIG_PACKAGE_libselinux is not set +# CONFIG_PACKAGE_libsemanage is not set +# CONFIG_PACKAGE_libsensors is not set +# CONFIG_PACKAGE_libsepol is not set +# CONFIG_PACKAGE_libshout is not set +# CONFIG_PACKAGE_libshout-full is not set +# CONFIG_PACKAGE_libshout-nossl is not set +# CONFIG_PACKAGE_libsispmctl is not set +# CONFIG_PACKAGE_libslang2 is not set +# CONFIG_PACKAGE_libslang2-mod-base64 is not set +# CONFIG_PACKAGE_libslang2-mod-chksum is not set +# CONFIG_PACKAGE_libslang2-mod-csv is not set +# CONFIG_PACKAGE_libslang2-mod-fcntl is not set +# CONFIG_PACKAGE_libslang2-mod-fork is not set +# CONFIG_PACKAGE_libslang2-mod-histogram is not set +# CONFIG_PACKAGE_libslang2-mod-iconv is not set +# CONFIG_PACKAGE_libslang2-mod-json is not set +# CONFIG_PACKAGE_libslang2-mod-onig is not set +# CONFIG_PACKAGE_libslang2-mod-pcre is not set +# CONFIG_PACKAGE_libslang2-mod-png is not set +# CONFIG_PACKAGE_libslang2-mod-rand is not set +# CONFIG_PACKAGE_libslang2-mod-select is not set +# CONFIG_PACKAGE_libslang2-mod-slsmg is not set +# CONFIG_PACKAGE_libslang2-mod-socket is not set +# CONFIG_PACKAGE_libslang2-mod-stats is not set +# CONFIG_PACKAGE_libslang2-mod-sysconf is not set +# CONFIG_PACKAGE_libslang2-mod-termios is not set +# CONFIG_PACKAGE_libslang2-mod-varray is not set +# CONFIG_PACKAGE_libslang2-mod-zlib is not set +# CONFIG_PACKAGE_libslang2-modules is not set +# CONFIG_PACKAGE_libsmartcols is not set +# CONFIG_PACKAGE_libsndfile is not set +# CONFIG_PACKAGE_libsoc is not set +# CONFIG_PACKAGE_libsocks is not set +CONFIG_PACKAGE_libsodium=y + +# +# Configuration +# +CONFIG_LIBSODIUM_MINIMAL=y +# end of Configuration + +# CONFIG_PACKAGE_libsoup is not set +# CONFIG_PACKAGE_libsoxr is not set +# CONFIG_PACKAGE_libspeex is not set +# CONFIG_PACKAGE_libspeexdsp is not set +# CONFIG_PACKAGE_libspice-server is not set +# CONFIG_PACKAGE_libss is not set +# CONFIG_PACKAGE_libssh is not set +CONFIG_PACKAGE_libssh2=y +CONFIG_LIBSSH2_OPENSSL=y +# CONFIG_LIBSSH2_MBEDTLS is not set +# CONFIG_PACKAGE_libstoken is not set +# CONFIG_PACKAGE_libstrophe is not set +# CONFIG_PACKAGE_libsyn123 is not set +# CONFIG_PACKAGE_libsysrepo is not set +# CONFIG_PACKAGE_libtalloc is not set +# CONFIG_PACKAGE_libtasn1 is not set +# CONFIG_PACKAGE_libtheora is not set +# CONFIG_PACKAGE_libtiff is not set +# CONFIG_PACKAGE_libtiffxx is not set +# CONFIG_PACKAGE_libtins is not set +# CONFIG_PACKAGE_libtirpc is not set +# CONFIG_PACKAGE_libtorrent-rasterbar is not set +CONFIG_PACKAGE_libubox=y +# CONFIG_PACKAGE_libubox-lua is not set +CONFIG_PACKAGE_libubus=y +CONFIG_PACKAGE_libubus-lua=y +CONFIG_PACKAGE_libuci=y +# CONFIG_PACKAGE_libuci-lua is not set +# CONFIG_PACKAGE_libuci2 is not set +CONFIG_PACKAGE_libuclient=y +# CONFIG_PACKAGE_libudev-zero is not set +# CONFIG_PACKAGE_libudns is not set +# CONFIG_PACKAGE_libuecc is not set +# CONFIG_PACKAGE_libugpio is not set +# CONFIG_PACKAGE_libunistring is not set +# CONFIG_PACKAGE_libunwind is not set +# CONFIG_PACKAGE_libupnp is not set +# CONFIG_PACKAGE_libupnpp is not set +# CONFIG_PACKAGE_liburcu is not set +# CONFIG_PACKAGE_liburing is not set +CONFIG_PACKAGE_libusb-1.0=y +# CONFIG_PACKAGE_libusb-compat is not set +# CONFIG_PACKAGE_libustream-mbedtls is not set +# CONFIG_PACKAGE_libustream-openssl is not set +CONFIG_PACKAGE_libustream-wolfssl=y +CONFIG_PACKAGE_libuuid=y +CONFIG_PACKAGE_libuv=y +# CONFIG_PACKAGE_libuwifi is not set +# CONFIG_PACKAGE_libv4l is not set +# CONFIG_PACKAGE_libvorbis is not set +# CONFIG_PACKAGE_libvorbisidec is not set +# CONFIG_PACKAGE_libvpx is not set +CONFIG_PACKAGE_libwebp=y +CONFIG_PACKAGE_libwebsockets-full=y +# CONFIG_PACKAGE_libwebsockets-mbedtls is not set +# CONFIG_PACKAGE_libwebsockets-openssl is not set +# CONFIG_PACKAGE_libwrap is not set +# CONFIG_PACKAGE_libxerces-c is not set +# CONFIG_PACKAGE_libxerces-c-samples is not set +CONFIG_PACKAGE_libxml2=y +# CONFIG_PACKAGE_libxslt is not set +# CONFIG_PACKAGE_libyaml-cpp is not set +# CONFIG_PACKAGE_libyang is not set +# CONFIG_PACKAGE_libyang-cpp is not set +# CONFIG_PACKAGE_libyubikey is not set +# CONFIG_PACKAGE_libzmq-curve is not set +# CONFIG_PACKAGE_libzmq-nc is not set +# CONFIG_PACKAGE_linux-atm is not set +# CONFIG_PACKAGE_lmdb is not set +# CONFIG_PACKAGE_log4cplus is not set +# CONFIG_PACKAGE_loudmouth is not set +# CONFIG_PACKAGE_lttng-ust is not set +# CONFIG_PACKAGE_minizip is not set +# CONFIG_PACKAGE_msgpack-c is not set +# CONFIG_PACKAGE_mtdev is not set +# CONFIG_PACKAGE_musl-fts is not set +# CONFIG_PACKAGE_mxml is not set +# CONFIG_PACKAGE_nspr is not set +# CONFIG_PACKAGE_oniguruma is not set +# CONFIG_PACKAGE_open-isns is not set +# CONFIG_PACKAGE_p11-kit is not set +# CONFIG_PACKAGE_pixman is not set +# CONFIG_PACKAGE_poco is not set +# CONFIG_PACKAGE_poco-all is not set +CONFIG_PACKAGE_protobuf=y +CONFIG_PACKAGE_protobuf-lite=y +# CONFIG_PACKAGE_pthsem is not set +# CONFIG_PACKAGE_re2 is not set +CONFIG_PACKAGE_rpcd-mod-luci=y +# CONFIG_PACKAGE_rpcd-mod-rad2-enc is not set +# CONFIG_PACKAGE_rpcd-mod-rrdns is not set +# CONFIG_PACKAGE_sbc is not set +# CONFIG_PACKAGE_serdisplib is not set +CONFIG_PACKAGE_terminfo=y +# CONFIG_PACKAGE_tinycdb is not set +# CONFIG_PACKAGE_uclibcxx is not set +# CONFIG_PACKAGE_uw-imap is not set +# CONFIG_PACKAGE_xmlrpc-c is not set +# CONFIG_PACKAGE_xmlrpc-c-client is not set +# CONFIG_PACKAGE_xmlrpc-c-server is not set +# CONFIG_PACKAGE_yajl is not set +# CONFIG_PACKAGE_yubico-pam is not set +CONFIG_PACKAGE_zlib=y + +# +# Configuration +# +# CONFIG_ZLIB_OPTIMIZE_SPEED is not set +# end of Configuration +# end of Libraries + +# +# LuCI +# + +# +# 1. Collections +# +# CONFIG_PACKAGE_luci is not set +# CONFIG_PACKAGE_luci-lib-docker is not set +# CONFIG_PACKAGE_luci-nginx is not set +# CONFIG_PACKAGE_luci-ssl is not set +# CONFIG_PACKAGE_luci-ssl-nginx is not set +# CONFIG_PACKAGE_luci-ssl-openssl is not set +# end of 1. Collections + +# +# 2. Modules +# +CONFIG_PACKAGE_luci-base=y +# CONFIG_LUCI_SRCDIET is not set +CONFIG_LUCI_JSMIN=y +# CONFIG_LUCI_CSSTIDY is not set + +# +# Translations +# +# CONFIG_LUCI_LANG_ar is not set +# CONFIG_LUCI_LANG_bg is not set +# CONFIG_LUCI_LANG_bn_BD is not set +# CONFIG_LUCI_LANG_ca is not set +# CONFIG_LUCI_LANG_cs is not set +# CONFIG_LUCI_LANG_de is not set +# CONFIG_LUCI_LANG_el is not set +CONFIG_LUCI_LANG_en=y +# CONFIG_LUCI_LANG_es is not set +# CONFIG_LUCI_LANG_fi is not set +# CONFIG_LUCI_LANG_fr is not set +# CONFIG_LUCI_LANG_he is not set +# CONFIG_LUCI_LANG_hi is not set +# CONFIG_LUCI_LANG_hu is not set +# CONFIG_LUCI_LANG_it is not set +# CONFIG_LUCI_LANG_ja is not set +# CONFIG_LUCI_LANG_ko is not set +# CONFIG_LUCI_LANG_mr is not set +# CONFIG_LUCI_LANG_ms is not set +# CONFIG_LUCI_LANG_nb_NO is not set +# CONFIG_LUCI_LANG_nl is not set +# CONFIG_LUCI_LANG_oc is not set +# CONFIG_LUCI_LANG_pl is not set +# CONFIG_LUCI_LANG_pt is not set +# CONFIG_LUCI_LANG_pt_BR is not set +# CONFIG_LUCI_LANG_ro is not set +# CONFIG_LUCI_LANG_ru is not set +# CONFIG_LUCI_LANG_sk is not set +# CONFIG_LUCI_LANG_sv is not set +# CONFIG_LUCI_LANG_tr is not set +# CONFIG_LUCI_LANG_uk is not set +# CONFIG_LUCI_LANG_vi is not set +CONFIG_LUCI_LANG_zh_Hans=y +# CONFIG_LUCI_LANG_zh_Hant is not set +# end of Translations + +CONFIG_PACKAGE_luci-compat=y +CONFIG_PACKAGE_luci-mod-admin-full=y +# CONFIG_PACKAGE_luci-mod-battstatus is not set +CONFIG_PACKAGE_luci-mod-dashboard=y +# CONFIG_PACKAGE_luci-mod-failsafe is not set +CONFIG_PACKAGE_luci-mod-network=y +CONFIG_PACKAGE_luci-mod-rpc=y +CONFIG_PACKAGE_luci-mod-status=y +CONFIG_PACKAGE_luci-mod-system=y +# end of 2. Modules + +# +# 3. Applications +# +CONFIG_PACKAGE_luci-app-acl=y +# CONFIG_PACKAGE_luci-app-acme is not set +# CONFIG_PACKAGE_luci-app-adblock is not set +# CONFIG_PACKAGE_luci-app-advanced-reboot is not set +# CONFIG_PACKAGE_luci-app-ahcp is not set +# CONFIG_PACKAGE_luci-app-aria2 is not set +# CONFIG_PACKAGE_luci-app-attendedsysupgrade is not set +# CONFIG_PACKAGE_luci-app-babeld is not set +# CONFIG_PACKAGE_luci-app-banip is not set +# CONFIG_PACKAGE_luci-app-bcp38 is not set +# CONFIG_PACKAGE_luci-app-bmx7 is not set +# CONFIG_PACKAGE_luci-app-clamav is not set +# CONFIG_PACKAGE_luci-app-commands is not set +# CONFIG_PACKAGE_luci-app-cshark is not set +# CONFIG_PACKAGE_luci-app-dawn is not set +# CONFIG_PACKAGE_luci-app-dcwapd is not set +# CONFIG_PACKAGE_luci-app-ddns is not set +# CONFIG_PACKAGE_luci-app-diag-core is not set +# CONFIG_PACKAGE_luci-app-dnscrypt-proxy is not set +# CONFIG_PACKAGE_luci-app-dockerman is not set +CONFIG_PACKAGE_luci-app-dsvpn=y +# CONFIG_PACKAGE_luci-app-dump1090 is not set +# CONFIG_PACKAGE_luci-app-dynapoint is not set +# CONFIG_PACKAGE_luci-app-eoip is not set +CONFIG_PACKAGE_luci-app-firewall=y +# CONFIG_PACKAGE_luci-app-frpc is not set +# CONFIG_PACKAGE_luci-app-frps is not set +# CONFIG_PACKAGE_luci-app-fwknopd is not set +CONFIG_PACKAGE_luci-app-glorytun-tcp=y +CONFIG_PACKAGE_luci-app-glorytun-udp=y +# CONFIG_PACKAGE_luci-app-haproxy-tcp is not set +# CONFIG_PACKAGE_luci-app-hd-idle is not set +CONFIG_PACKAGE_luci-app-https-dns-proxy=y +CONFIG_PACKAGE_luci-app-iperf=y +# CONFIG_PACKAGE_luci-app-ksmbd is not set +CONFIG_PACKAGE_luci-app-ledtrig-rssi=y +CONFIG_PACKAGE_luci-app-ledtrig-switch=y +CONFIG_PACKAGE_luci-app-ledtrig-usbport=y +# CONFIG_PACKAGE_luci-app-lxc is not set +CONFIG_PACKAGE_luci-app-mail=y +# CONFIG_PACKAGE_luci-app-minidlna is not set +# CONFIG_PACKAGE_luci-app-mjpg-streamer is not set +CONFIG_PACKAGE_luci-app-mlvpn=y +CONFIG_PACKAGE_luci-app-mptcp=y +# CONFIG_PACKAGE_luci-app-mwan3 is not set +# CONFIG_PACKAGE_luci-app-nextdns is not set +# CONFIG_PACKAGE_luci-app-nft-qos is not set +# CONFIG_PACKAGE_luci-app-nginx-ha is not set +# CONFIG_PACKAGE_luci-app-nlbwmon is not set +# CONFIG_PACKAGE_luci-app-ntpc is not set +# CONFIG_PACKAGE_luci-app-nut is not set +# CONFIG_PACKAGE_luci-app-ocserv is not set +# CONFIG_PACKAGE_luci-app-olsr is not set +# CONFIG_PACKAGE_luci-app-olsr-services is not set +# CONFIG_PACKAGE_luci-app-olsr-viz is not set +# CONFIG_PACKAGE_luci-app-omcproxy is not set +CONFIG_PACKAGE_luci-app-omr-bypass=y +CONFIG_PACKAGE_luci-app-omr-dscp=y +CONFIG_PACKAGE_luci-app-omr-quota=y +CONFIG_PACKAGE_luci-app-omr-tracker=y +CONFIG_PACKAGE_luci-app-openmptcprouter=y +CONFIG_PACKAGE_luci-app-openvpn=y +CONFIG_PACKAGE_luci-app-opkg=y +# CONFIG_PACKAGE_luci-app-p910nd is not set +CONFIG_PACKAGE_luci-app-packet-capture=y +# CONFIG_PACKAGE_luci-app-pagekitec is not set +# CONFIG_PACKAGE_luci-app-polipo is not set +# CONFIG_PACKAGE_luci-app-privoxy is not set +# CONFIG_PACKAGE_luci-app-qos is not set +# CONFIG_PACKAGE_luci-app-radicale is not set +# CONFIG_PACKAGE_luci-app-radicale2 is not set +# CONFIG_PACKAGE_luci-app-rosy-file-server is not set +# CONFIG_PACKAGE_luci-app-rp-pppoe-server is not set +# CONFIG_PACKAGE_luci-app-samba4 is not set +# CONFIG_PACKAGE_luci-app-ser2net is not set +CONFIG_PACKAGE_luci-app-shadowsocks-libev=y +# CONFIG_PACKAGE_luci-app-shairplay is not set +CONFIG_PACKAGE_luci-app-shutdown=y +# CONFIG_PACKAGE_luci-app-siitwizard is not set +# CONFIG_PACKAGE_luci-app-simple-adblock is not set +# CONFIG_PACKAGE_luci-app-smartdns is not set +CONFIG_PACKAGE_luci-app-snmpd=y +# CONFIG_PACKAGE_luci-app-softether is not set +# CONFIG_PACKAGE_luci-app-splash is not set +CONFIG_PACKAGE_luci-app-sqm=y +# CONFIG_PACKAGE_luci-app-squid is not set +# CONFIG_PACKAGE_luci-app-statistics is not set +CONFIG_PACKAGE_luci-app-status=y +CONFIG_PACKAGE_luci-app-sysupgrade=y +# CONFIG_PACKAGE_luci-app-tinyproxy is not set +# CONFIG_PACKAGE_luci-app-transmission is not set +# CONFIG_PACKAGE_luci-app-travelmate is not set +CONFIG_PACKAGE_luci-app-ttyd=y +# CONFIG_PACKAGE_luci-app-udpxy is not set +CONFIG_PACKAGE_luci-app-uhttpd=y +CONFIG_PACKAGE_luci-app-unbound=y +CONFIG_PACKAGE_luci-app-upnp=y +# CONFIG_PACKAGE_luci-app-vnstat is not set +CONFIG_PACKAGE_luci-app-vnstat2=y +# CONFIG_PACKAGE_luci-app-vpn-policy-routing is not set +# CONFIG_PACKAGE_luci-app-vpnbypass is not set +# CONFIG_PACKAGE_luci-app-watchcat is not set +# CONFIG_PACKAGE_luci-app-wifischedule is not set +CONFIG_PACKAGE_luci-app-wireguard=y +CONFIG_PACKAGE_luci-app-wol=y +# CONFIG_PACKAGE_luci-app-xinetd is not set +# CONFIG_PACKAGE_luci-app-yggdrasil is not set +# end of 3. Applications + +# +# 4. Themes +# +CONFIG_PACKAGE_luci-theme-argon=y +CONFIG_PACKAGE_luci-theme-bootstrap=y +# CONFIG_PACKAGE_luci-theme-material is not set +CONFIG_PACKAGE_luci-theme-openmptcprouter=y +# CONFIG_PACKAGE_luci-theme-openwrt is not set +CONFIG_PACKAGE_luci-theme-openwrt-2020=y +# end of 4. Themes + +# +# 5. Protocols +# +CONFIG_PACKAGE_luci-proto-3g=y +CONFIG_PACKAGE_luci-proto-bonding=y +CONFIG_PACKAGE_luci-proto-gre=y +# CONFIG_PACKAGE_luci-proto-hnet is not set +# CONFIG_PACKAGE_luci-proto-ipip is not set +CONFIG_PACKAGE_luci-proto-ipv6=y +CONFIG_PACKAGE_luci-proto-mbim=y +CONFIG_PACKAGE_luci-proto-modemmanager=y +CONFIG_PACKAGE_luci-proto-ncm=y +# CONFIG_PACKAGE_luci-proto-openconnect is not set +# CONFIG_PACKAGE_luci-proto-openfortivpn is not set +CONFIG_PACKAGE_luci-proto-ppp=y +# CONFIG_PACKAGE_luci-proto-pppossh is not set +CONFIG_PACKAGE_luci-proto-qmi=y +# CONFIG_PACKAGE_luci-proto-relay is not set +# CONFIG_PACKAGE_luci-proto-sstp is not set +# CONFIG_PACKAGE_luci-proto-vpnc is not set +# CONFIG_PACKAGE_luci-proto-vxlan is not set +CONFIG_PACKAGE_luci-proto-wireguard=y +# end of 5. Protocols + +# +# 6. Libraries +# +CONFIG_PACKAGE_luci-lib-base=y +# CONFIG_PACKAGE_luci-lib-httpclient is not set +# CONFIG_PACKAGE_luci-lib-httpprotoutils is not set +CONFIG_PACKAGE_luci-lib-ip=y +# CONFIG_PACKAGE_luci-lib-ipkg is not set +# CONFIG_PACKAGE_luci-lib-iptparser is not set +CONFIG_PACKAGE_luci-lib-json=y +CONFIG_PACKAGE_luci-lib-jsonc=y +CONFIG_PACKAGE_luci-lib-nixio=y +CONFIG_PACKAGE_luci-lib-nixio_notls=y +# CONFIG_PACKAGE_luci-lib-nixio_axtls is not set +# CONFIG_PACKAGE_luci-lib-nixio_cyassl is not set +# CONFIG_PACKAGE_luci-lib-nixio_openssl is not set +# CONFIG_PACKAGE_luci-lib-px5g is not set +# end of 6. Libraries + +# CONFIG_PACKAGE_luci-i18n-acl-ar is not set +# CONFIG_PACKAGE_luci-i18n-acl-bg is not set +# CONFIG_PACKAGE_luci-i18n-acl-bn is not set +# CONFIG_PACKAGE_luci-i18n-acl-ca is not set +# CONFIG_PACKAGE_luci-i18n-acl-cs is not set +# CONFIG_PACKAGE_luci-i18n-acl-cy is not set +# CONFIG_PACKAGE_luci-i18n-acl-da is not set +# CONFIG_PACKAGE_luci-i18n-acl-de is not set +# CONFIG_PACKAGE_luci-i18n-acl-el is not set +CONFIG_PACKAGE_luci-i18n-acl-en=y +# CONFIG_PACKAGE_luci-i18n-acl-es is not set +# CONFIG_PACKAGE_luci-i18n-acl-fi is not set +# CONFIG_PACKAGE_luci-i18n-acl-fr is not set +# CONFIG_PACKAGE_luci-i18n-acl-he is not set +# CONFIG_PACKAGE_luci-i18n-acl-hi is not set +# CONFIG_PACKAGE_luci-i18n-acl-hu is not set +# CONFIG_PACKAGE_luci-i18n-acl-id is not set +# CONFIG_PACKAGE_luci-i18n-acl-it is not set +# CONFIG_PACKAGE_luci-i18n-acl-ja is not set +# CONFIG_PACKAGE_luci-i18n-acl-ko is not set +# CONFIG_PACKAGE_luci-i18n-acl-mr is not set +# CONFIG_PACKAGE_luci-i18n-acl-ms is not set +# CONFIG_PACKAGE_luci-i18n-acl-no is not set +# CONFIG_PACKAGE_luci-i18n-acl-pl is not set +# CONFIG_PACKAGE_luci-i18n-acl-pt is not set +# CONFIG_PACKAGE_luci-i18n-acl-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-acl-ro is not set +# CONFIG_PACKAGE_luci-i18n-acl-ru is not set +# CONFIG_PACKAGE_luci-i18n-acl-sk is not set +# CONFIG_PACKAGE_luci-i18n-acl-sv is not set +# CONFIG_PACKAGE_luci-i18n-acl-tr is not set +# CONFIG_PACKAGE_luci-i18n-acl-uk is not set +# CONFIG_PACKAGE_luci-i18n-acl-vi is not set +CONFIG_PACKAGE_luci-i18n-acl-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-acl-zh-tw is not set +# CONFIG_PACKAGE_luci-i18n-base-ar is not set +# CONFIG_PACKAGE_luci-i18n-base-bg is not set +# CONFIG_PACKAGE_luci-i18n-base-bn is not set +# CONFIG_PACKAGE_luci-i18n-base-ca is not set +# CONFIG_PACKAGE_luci-i18n-base-cs is not set +# CONFIG_PACKAGE_luci-i18n-base-de is not set +# CONFIG_PACKAGE_luci-i18n-base-el is not set +CONFIG_PACKAGE_luci-i18n-base-en=y +# CONFIG_PACKAGE_luci-i18n-base-es is not set +# CONFIG_PACKAGE_luci-i18n-base-fi is not set +# CONFIG_PACKAGE_luci-i18n-base-fr is not set +# CONFIG_PACKAGE_luci-i18n-base-he is not set +# CONFIG_PACKAGE_luci-i18n-base-hi is not set +# CONFIG_PACKAGE_luci-i18n-base-hu is not set +# CONFIG_PACKAGE_luci-i18n-base-it is not set +# CONFIG_PACKAGE_luci-i18n-base-ja is not set +# CONFIG_PACKAGE_luci-i18n-base-ko is not set +# CONFIG_PACKAGE_luci-i18n-base-mr is not set +# CONFIG_PACKAGE_luci-i18n-base-ms is not set +# CONFIG_PACKAGE_luci-i18n-base-nl is not set +# CONFIG_PACKAGE_luci-i18n-base-no is not set +# CONFIG_PACKAGE_luci-i18n-base-oc is not set +# CONFIG_PACKAGE_luci-i18n-base-pl is not set +# CONFIG_PACKAGE_luci-i18n-base-pt is not set +# CONFIG_PACKAGE_luci-i18n-base-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-base-ro is not set +# CONFIG_PACKAGE_luci-i18n-base-ru is not set +# CONFIG_PACKAGE_luci-i18n-base-sk is not set +# CONFIG_PACKAGE_luci-i18n-base-sv is not set +# CONFIG_PACKAGE_luci-i18n-base-tr is not set +# CONFIG_PACKAGE_luci-i18n-base-uk is not set +# CONFIG_PACKAGE_luci-i18n-base-vi is not set +CONFIG_PACKAGE_luci-i18n-base-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-base-zh-tw is not set +# CONFIG_PACKAGE_luci-i18n-dashboard-fr is not set +# CONFIG_PACKAGE_luci-i18n-dashboard-ru is not set +CONFIG_PACKAGE_luci-i18n-dashboard-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-dsvpn-fr is not set +# CONFIG_PACKAGE_luci-i18n-dsvpn-ru is not set +CONFIG_PACKAGE_luci-i18n-dsvpn-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-firewall-bg is not set +# CONFIG_PACKAGE_luci-i18n-firewall-ca is not set +# CONFIG_PACKAGE_luci-i18n-firewall-cs is not set +# CONFIG_PACKAGE_luci-i18n-firewall-de is not set +# CONFIG_PACKAGE_luci-i18n-firewall-el is not set +CONFIG_PACKAGE_luci-i18n-firewall-en=y +# CONFIG_PACKAGE_luci-i18n-firewall-es is not set +# CONFIG_PACKAGE_luci-i18n-firewall-fr is not set +# CONFIG_PACKAGE_luci-i18n-firewall-he is not set +# CONFIG_PACKAGE_luci-i18n-firewall-hi is not set +# CONFIG_PACKAGE_luci-i18n-firewall-hu is not set +# CONFIG_PACKAGE_luci-i18n-firewall-it is not set +# CONFIG_PACKAGE_luci-i18n-firewall-ja is not set +# CONFIG_PACKAGE_luci-i18n-firewall-ko is not set +# CONFIG_PACKAGE_luci-i18n-firewall-mr is not set +# CONFIG_PACKAGE_luci-i18n-firewall-ms is not set +# CONFIG_PACKAGE_luci-i18n-firewall-no is not set +# CONFIG_PACKAGE_luci-i18n-firewall-pl is not set +# CONFIG_PACKAGE_luci-i18n-firewall-pt is not set +# CONFIG_PACKAGE_luci-i18n-firewall-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-firewall-ro is not set +# CONFIG_PACKAGE_luci-i18n-firewall-ru is not set +# CONFIG_PACKAGE_luci-i18n-firewall-sk is not set +# CONFIG_PACKAGE_luci-i18n-firewall-sv is not set +# CONFIG_PACKAGE_luci-i18n-firewall-tr is not set +# CONFIG_PACKAGE_luci-i18n-firewall-uk is not set +# CONFIG_PACKAGE_luci-i18n-firewall-vi is not set +CONFIG_PACKAGE_luci-i18n-firewall-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-firewall-zh-tw is not set +# CONFIG_PACKAGE_luci-i18n-glorytun-tcp-fr is not set +# CONFIG_PACKAGE_luci-i18n-glorytun-tcp-ru is not set +CONFIG_PACKAGE_luci-i18n-glorytun-tcp-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-glorytun-udp-fr is not set +# CONFIG_PACKAGE_luci-i18n-glorytun-udp-ru is not set +CONFIG_PACKAGE_luci-i18n-glorytun-udp-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-bg is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-ca is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-cs is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-de is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-el is not set +CONFIG_PACKAGE_luci-i18n-https-dns-proxy-en=y +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-es is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-fr is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-he is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-hi is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-hu is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-it is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-ja is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-ko is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-mr is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-ms is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-no is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-pl is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-pt is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-ro is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-ru is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-sk is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-sv is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-tr is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-uk is not set +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-vi is not set +CONFIG_PACKAGE_luci-i18n-https-dns-proxy-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-https-dns-proxy-zh-tw is not set +# CONFIG_PACKAGE_luci-i18n-iperf-de is not set +# CONFIG_PACKAGE_luci-i18n-iperf-fr is not set +# CONFIG_PACKAGE_luci-i18n-iperf-it is not set +# CONFIG_PACKAGE_luci-i18n-iperf-oc is not set +# CONFIG_PACKAGE_luci-i18n-iperf-ru is not set +CONFIG_PACKAGE_luci-i18n-iperf-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-mail-de is not set +# CONFIG_PACKAGE_luci-i18n-mail-fr is not set +# CONFIG_PACKAGE_luci-i18n-mail-it is not set +# CONFIG_PACKAGE_luci-i18n-mail-oc is not set +# CONFIG_PACKAGE_luci-i18n-mail-ru is not set +CONFIG_PACKAGE_luci-i18n-mail-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-mlvpn-fr is not set +# CONFIG_PACKAGE_luci-i18n-mlvpn-ru is not set +CONFIG_PACKAGE_luci-i18n-mlvpn-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-mptcp-de is not set +# CONFIG_PACKAGE_luci-i18n-mptcp-fr is not set +# CONFIG_PACKAGE_luci-i18n-mptcp-it is not set +# CONFIG_PACKAGE_luci-i18n-mptcp-oc is not set +# CONFIG_PACKAGE_luci-i18n-mptcp-ru is not set +CONFIG_PACKAGE_luci-i18n-mptcp-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-omr-bypass-de is not set +# CONFIG_PACKAGE_luci-i18n-omr-bypass-fr is not set +# CONFIG_PACKAGE_luci-i18n-omr-bypass-it is not set +# CONFIG_PACKAGE_luci-i18n-omr-bypass-oc is not set +# CONFIG_PACKAGE_luci-i18n-omr-bypass-ru is not set +CONFIG_PACKAGE_luci-i18n-omr-bypass-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-omr-dscp-de is not set +# CONFIG_PACKAGE_luci-i18n-omr-dscp-fr is not set +# CONFIG_PACKAGE_luci-i18n-omr-dscp-it is not set +# CONFIG_PACKAGE_luci-i18n-omr-dscp-oc is not set +CONFIG_PACKAGE_luci-i18n-omr-dscp-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-omr-quota-de is not set +# CONFIG_PACKAGE_luci-i18n-omr-quota-fr is not set +# CONFIG_PACKAGE_luci-i18n-omr-quota-it is not set +# CONFIG_PACKAGE_luci-i18n-omr-quota-oc is not set +# CONFIG_PACKAGE_luci-i18n-omr-quota-ru is not set +CONFIG_PACKAGE_luci-i18n-omr-quota-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-omr-tracker-de is not set +# CONFIG_PACKAGE_luci-i18n-omr-tracker-fr is not set +# CONFIG_PACKAGE_luci-i18n-omr-tracker-it is not set +# CONFIG_PACKAGE_luci-i18n-omr-tracker-oc is not set +CONFIG_PACKAGE_luci-i18n-omr-tracker-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-openmptcprouter-de is not set +# CONFIG_PACKAGE_luci-i18n-openmptcprouter-fr is not set +# CONFIG_PACKAGE_luci-i18n-openmptcprouter-it is not set +# CONFIG_PACKAGE_luci-i18n-openmptcprouter-oc is not set +CONFIG_PACKAGE_luci-i18n-openmptcprouter-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-openvpn-ar is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-bg is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-bn is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-ca is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-cs is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-de is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-el is not set +CONFIG_PACKAGE_luci-i18n-openvpn-en=y +# CONFIG_PACKAGE_luci-i18n-openvpn-es is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-fa is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-fi is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-fr is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-he is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-hi is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-hu is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-it is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-ja is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-ko is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-mr is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-ms is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-no is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-pl is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-pt is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-ro is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-ru is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-sk is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-sv is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-tr is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-uk is not set +# CONFIG_PACKAGE_luci-i18n-openvpn-vi is not set +CONFIG_PACKAGE_luci-i18n-openvpn-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-openvpn-zh-tw is not set +# CONFIG_PACKAGE_luci-i18n-opkg-ar is not set +# CONFIG_PACKAGE_luci-i18n-opkg-bg is not set +# CONFIG_PACKAGE_luci-i18n-opkg-bn is not set +# CONFIG_PACKAGE_luci-i18n-opkg-ca is not set +# CONFIG_PACKAGE_luci-i18n-opkg-cs is not set +# CONFIG_PACKAGE_luci-i18n-opkg-de is not set +# CONFIG_PACKAGE_luci-i18n-opkg-el is not set +CONFIG_PACKAGE_luci-i18n-opkg-en=y +# CONFIG_PACKAGE_luci-i18n-opkg-es is not set +# CONFIG_PACKAGE_luci-i18n-opkg-fi is not set +# CONFIG_PACKAGE_luci-i18n-opkg-fr is not set +# CONFIG_PACKAGE_luci-i18n-opkg-he is not set +# CONFIG_PACKAGE_luci-i18n-opkg-hi is not set +# CONFIG_PACKAGE_luci-i18n-opkg-hu is not set +# CONFIG_PACKAGE_luci-i18n-opkg-it is not set +# CONFIG_PACKAGE_luci-i18n-opkg-ja is not set +# CONFIG_PACKAGE_luci-i18n-opkg-ko is not set +# CONFIG_PACKAGE_luci-i18n-opkg-mr is not set +# CONFIG_PACKAGE_luci-i18n-opkg-ms is not set +# CONFIG_PACKAGE_luci-i18n-opkg-no is not set +# CONFIG_PACKAGE_luci-i18n-opkg-pl is not set +# CONFIG_PACKAGE_luci-i18n-opkg-pt is not set +# CONFIG_PACKAGE_luci-i18n-opkg-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-opkg-ro is not set +# CONFIG_PACKAGE_luci-i18n-opkg-ru is not set +# CONFIG_PACKAGE_luci-i18n-opkg-sk is not set +# CONFIG_PACKAGE_luci-i18n-opkg-sv is not set +# CONFIG_PACKAGE_luci-i18n-opkg-tr is not set +# CONFIG_PACKAGE_luci-i18n-opkg-uk is not set +# CONFIG_PACKAGE_luci-i18n-opkg-vi is not set +CONFIG_PACKAGE_luci-i18n-opkg-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-opkg-zh-tw is not set +# CONFIG_PACKAGE_luci-i18n-packet-capture-fr is not set +CONFIG_PACKAGE_luci-i18n-packet-capture-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-bg is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-ca is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-cs is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-de is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-el is not set +CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-en=y +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-es is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-fr is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-he is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-hi is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-hu is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-it is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-ja is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-ko is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-ms is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-no is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-pl is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-pt is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-ro is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-ru is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-sk is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-sv is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-tr is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-uk is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-vi is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-zh-cn is not set +# CONFIG_PACKAGE_luci-i18n-shadowsocks-libev-zh-tw is not set +# CONFIG_PACKAGE_luci-i18n-shutdown-de is not set +# CONFIG_PACKAGE_luci-i18n-shutdown-fr is not set +# CONFIG_PACKAGE_luci-i18n-shutdown-it is not set +# CONFIG_PACKAGE_luci-i18n-shutdown-oc is not set +# CONFIG_PACKAGE_luci-i18n-shutdown-pl is not set +# CONFIG_PACKAGE_luci-i18n-shutdown-ru is not set +CONFIG_PACKAGE_luci-i18n-shutdown-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-snmpd-de is not set +# CONFIG_PACKAGE_luci-i18n-snmpd-fr is not set +# CONFIG_PACKAGE_luci-i18n-snmpd-it is not set +# CONFIG_PACKAGE_luci-i18n-snmpd-oc is not set +CONFIG_PACKAGE_luci-i18n-snmpd-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-sqm-ar is not set +# CONFIG_PACKAGE_luci-i18n-sqm-bg is not set +# CONFIG_PACKAGE_luci-i18n-sqm-bn is not set +# CONFIG_PACKAGE_luci-i18n-sqm-ca is not set +# CONFIG_PACKAGE_luci-i18n-sqm-cs is not set +# CONFIG_PACKAGE_luci-i18n-sqm-de is not set +# CONFIG_PACKAGE_luci-i18n-sqm-el is not set +CONFIG_PACKAGE_luci-i18n-sqm-en=y +# CONFIG_PACKAGE_luci-i18n-sqm-es is not set +# CONFIG_PACKAGE_luci-i18n-sqm-fi is not set +# CONFIG_PACKAGE_luci-i18n-sqm-fr is not set +# CONFIG_PACKAGE_luci-i18n-sqm-he is not set +# CONFIG_PACKAGE_luci-i18n-sqm-hi is not set +# CONFIG_PACKAGE_luci-i18n-sqm-hu is not set +# CONFIG_PACKAGE_luci-i18n-sqm-it is not set +# CONFIG_PACKAGE_luci-i18n-sqm-ja is not set +# CONFIG_PACKAGE_luci-i18n-sqm-ko is not set +# CONFIG_PACKAGE_luci-i18n-sqm-mr is not set +# CONFIG_PACKAGE_luci-i18n-sqm-ms is not set +# CONFIG_PACKAGE_luci-i18n-sqm-no is not set +# CONFIG_PACKAGE_luci-i18n-sqm-pl is not set +# CONFIG_PACKAGE_luci-i18n-sqm-pt is not set +# CONFIG_PACKAGE_luci-i18n-sqm-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-sqm-ro is not set +# CONFIG_PACKAGE_luci-i18n-sqm-ru is not set +# CONFIG_PACKAGE_luci-i18n-sqm-sk is not set +# CONFIG_PACKAGE_luci-i18n-sqm-sv is not set +# CONFIG_PACKAGE_luci-i18n-sqm-tr is not set +# CONFIG_PACKAGE_luci-i18n-sqm-uk is not set +# CONFIG_PACKAGE_luci-i18n-sqm-vi is not set +CONFIG_PACKAGE_luci-i18n-sqm-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-sqm-zh-tw is not set +CONFIG_PACKAGE_luci-i18n-status-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-sysupgrade-fr is not set +# CONFIG_PACKAGE_luci-i18n-sysupgrade-ru is not set +CONFIG_PACKAGE_luci-i18n-sysupgrade-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-ttyd-ar is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-bg is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-bn is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-ca is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-cs is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-de is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-el is not set +CONFIG_PACKAGE_luci-i18n-ttyd-en=y +# CONFIG_PACKAGE_luci-i18n-ttyd-es is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-fi is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-fr is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-he is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-hi is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-hu is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-it is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-ja is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-ko is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-mr is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-ms is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-no is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-pl is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-pt is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-ro is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-ru is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-sk is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-sv is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-tr is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-uk is not set +# CONFIG_PACKAGE_luci-i18n-ttyd-vi is not set +CONFIG_PACKAGE_luci-i18n-ttyd-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-ttyd-zh-tw is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-ar is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-bg is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-bn is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-ca is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-cs is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-de is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-el is not set +CONFIG_PACKAGE_luci-i18n-uhttpd-en=y +# CONFIG_PACKAGE_luci-i18n-uhttpd-es is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-fi is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-fr is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-he is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-hi is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-hu is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-it is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-ja is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-ko is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-mr is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-ms is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-no is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-pl is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-pt is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-ro is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-ru is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-sk is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-sv is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-tr is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-uk is not set +# CONFIG_PACKAGE_luci-i18n-uhttpd-vi is not set +CONFIG_PACKAGE_luci-i18n-uhttpd-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-uhttpd-zh-tw is not set +# CONFIG_PACKAGE_luci-i18n-unbound-ar is not set +# CONFIG_PACKAGE_luci-i18n-unbound-bg is not set +# CONFIG_PACKAGE_luci-i18n-unbound-bn is not set +# CONFIG_PACKAGE_luci-i18n-unbound-ca is not set +# CONFIG_PACKAGE_luci-i18n-unbound-cs is not set +# CONFIG_PACKAGE_luci-i18n-unbound-de is not set +# CONFIG_PACKAGE_luci-i18n-unbound-el is not set +CONFIG_PACKAGE_luci-i18n-unbound-en=y +# CONFIG_PACKAGE_luci-i18n-unbound-es is not set +# CONFIG_PACKAGE_luci-i18n-unbound-fi is not set +# CONFIG_PACKAGE_luci-i18n-unbound-fr is not set +# CONFIG_PACKAGE_luci-i18n-unbound-he is not set +# CONFIG_PACKAGE_luci-i18n-unbound-hi is not set +# CONFIG_PACKAGE_luci-i18n-unbound-hu is not set +# CONFIG_PACKAGE_luci-i18n-unbound-it is not set +# CONFIG_PACKAGE_luci-i18n-unbound-ja is not set +# CONFIG_PACKAGE_luci-i18n-unbound-ko is not set +# CONFIG_PACKAGE_luci-i18n-unbound-mr is not set +# CONFIG_PACKAGE_luci-i18n-unbound-ms is not set +# CONFIG_PACKAGE_luci-i18n-unbound-no is not set +# CONFIG_PACKAGE_luci-i18n-unbound-pl is not set +# CONFIG_PACKAGE_luci-i18n-unbound-pt is not set +# CONFIG_PACKAGE_luci-i18n-unbound-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-unbound-ro is not set +# CONFIG_PACKAGE_luci-i18n-unbound-ru is not set +# CONFIG_PACKAGE_luci-i18n-unbound-sk is not set +# CONFIG_PACKAGE_luci-i18n-unbound-sv is not set +# CONFIG_PACKAGE_luci-i18n-unbound-tr is not set +# CONFIG_PACKAGE_luci-i18n-unbound-uk is not set +# CONFIG_PACKAGE_luci-i18n-unbound-vi is not set +CONFIG_PACKAGE_luci-i18n-unbound-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-unbound-zh-tw is not set +# CONFIG_PACKAGE_luci-i18n-upnp-ar is not set +# CONFIG_PACKAGE_luci-i18n-upnp-bg is not set +# CONFIG_PACKAGE_luci-i18n-upnp-bn is not set +# CONFIG_PACKAGE_luci-i18n-upnp-ca is not set +# CONFIG_PACKAGE_luci-i18n-upnp-cs is not set +# CONFIG_PACKAGE_luci-i18n-upnp-de is not set +# CONFIG_PACKAGE_luci-i18n-upnp-el is not set +CONFIG_PACKAGE_luci-i18n-upnp-en=y +# CONFIG_PACKAGE_luci-i18n-upnp-es is not set +# CONFIG_PACKAGE_luci-i18n-upnp-fi is not set +# CONFIG_PACKAGE_luci-i18n-upnp-fr is not set +# CONFIG_PACKAGE_luci-i18n-upnp-he is not set +# CONFIG_PACKAGE_luci-i18n-upnp-hi is not set +# CONFIG_PACKAGE_luci-i18n-upnp-hu is not set +# CONFIG_PACKAGE_luci-i18n-upnp-it is not set +# CONFIG_PACKAGE_luci-i18n-upnp-ja is not set +# CONFIG_PACKAGE_luci-i18n-upnp-ko is not set +# CONFIG_PACKAGE_luci-i18n-upnp-mr is not set +# CONFIG_PACKAGE_luci-i18n-upnp-ms is not set +# CONFIG_PACKAGE_luci-i18n-upnp-no is not set +# CONFIG_PACKAGE_luci-i18n-upnp-pl is not set +# CONFIG_PACKAGE_luci-i18n-upnp-pt is not set +# CONFIG_PACKAGE_luci-i18n-upnp-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-upnp-ro is not set +# CONFIG_PACKAGE_luci-i18n-upnp-ru is not set +# CONFIG_PACKAGE_luci-i18n-upnp-sk is not set +# CONFIG_PACKAGE_luci-i18n-upnp-sv is not set +# CONFIG_PACKAGE_luci-i18n-upnp-tr is not set +# CONFIG_PACKAGE_luci-i18n-upnp-uk is not set +# CONFIG_PACKAGE_luci-i18n-upnp-vi is not set +CONFIG_PACKAGE_luci-i18n-upnp-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-upnp-zh-tw is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-ar is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-bg is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-bn is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-ca is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-cs is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-de is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-el is not set +CONFIG_PACKAGE_luci-i18n-vnstat2-en=y +# CONFIG_PACKAGE_luci-i18n-vnstat2-es is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-fi is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-fr is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-he is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-hi is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-hu is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-it is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-ja is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-ko is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-mr is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-ms is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-no is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-pl is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-pt is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-ro is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-ru is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-sk is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-sv is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-tr is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-uk is not set +# CONFIG_PACKAGE_luci-i18n-vnstat2-vi is not set +CONFIG_PACKAGE_luci-i18n-vnstat2-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-vnstat2-zh-tw is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-ar is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-bg is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-bn is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-ca is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-cs is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-de is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-el is not set +CONFIG_PACKAGE_luci-i18n-wireguard-en=y +# CONFIG_PACKAGE_luci-i18n-wireguard-es is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-fi is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-fr is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-he is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-hi is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-hu is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-it is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-ja is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-ko is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-mr is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-ms is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-no is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-pl is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-pt is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-ro is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-ru is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-sk is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-sv is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-tr is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-uk is not set +# CONFIG_PACKAGE_luci-i18n-wireguard-vi is not set +CONFIG_PACKAGE_luci-i18n-wireguard-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-wireguard-zh-tw is not set +# CONFIG_PACKAGE_luci-i18n-wol-ar is not set +# CONFIG_PACKAGE_luci-i18n-wol-bg is not set +# CONFIG_PACKAGE_luci-i18n-wol-bn is not set +# CONFIG_PACKAGE_luci-i18n-wol-ca is not set +# CONFIG_PACKAGE_luci-i18n-wol-cs is not set +# CONFIG_PACKAGE_luci-i18n-wol-de is not set +# CONFIG_PACKAGE_luci-i18n-wol-el is not set +CONFIG_PACKAGE_luci-i18n-wol-en=y +# CONFIG_PACKAGE_luci-i18n-wol-es is not set +# CONFIG_PACKAGE_luci-i18n-wol-fi is not set +# CONFIG_PACKAGE_luci-i18n-wol-fr is not set +# CONFIG_PACKAGE_luci-i18n-wol-he is not set +# CONFIG_PACKAGE_luci-i18n-wol-hi is not set +# CONFIG_PACKAGE_luci-i18n-wol-hu is not set +# CONFIG_PACKAGE_luci-i18n-wol-it is not set +# CONFIG_PACKAGE_luci-i18n-wol-ja is not set +# CONFIG_PACKAGE_luci-i18n-wol-ko is not set +# CONFIG_PACKAGE_luci-i18n-wol-mr is not set +# CONFIG_PACKAGE_luci-i18n-wol-ms is not set +# CONFIG_PACKAGE_luci-i18n-wol-no is not set +# CONFIG_PACKAGE_luci-i18n-wol-pl is not set +# CONFIG_PACKAGE_luci-i18n-wol-pt is not set +# CONFIG_PACKAGE_luci-i18n-wol-pt-br is not set +# CONFIG_PACKAGE_luci-i18n-wol-ro is not set +# CONFIG_PACKAGE_luci-i18n-wol-ru is not set +# CONFIG_PACKAGE_luci-i18n-wol-sk is not set +# CONFIG_PACKAGE_luci-i18n-wol-sv is not set +# CONFIG_PACKAGE_luci-i18n-wol-tr is not set +# CONFIG_PACKAGE_luci-i18n-wol-uk is not set +# CONFIG_PACKAGE_luci-i18n-wol-vi is not set +CONFIG_PACKAGE_luci-i18n-wol-zh-cn=y +# CONFIG_PACKAGE_luci-i18n-wol-zh-tw is not set +# end of LuCI + +# +# Mail +# +# CONFIG_PACKAGE_alpine is not set +# CONFIG_PACKAGE_bogofilter is not set +# CONFIG_PACKAGE_dovecot is not set +# CONFIG_PACKAGE_dovecot-pigeonhole is not set +# CONFIG_PACKAGE_dovecot-utils is not set +# CONFIG_PACKAGE_emailrelay is not set +# CONFIG_PACKAGE_exim is not set +# CONFIG_PACKAGE_exim-gnutls is not set +# CONFIG_PACKAGE_exim-ldap is not set +# CONFIG_PACKAGE_exim-openssl is not set +# CONFIG_PACKAGE_fdm is not set +# CONFIG_PACKAGE_greyfix is not set +# CONFIG_PACKAGE_mailsend is not set +# CONFIG_PACKAGE_mailsend-nossl is not set +# CONFIG_PACKAGE_mblaze is not set +CONFIG_PACKAGE_msmtp=y +CONFIG_PACKAGE_msmtp-mta=y +# CONFIG_PACKAGE_msmtp-nossl is not set +# CONFIG_PACKAGE_msmtp-queue is not set +# CONFIG_PACKAGE_mutt is not set +# CONFIG_PACKAGE_nail is not set +# CONFIG_PACKAGE_opendkim is not set +# CONFIG_PACKAGE_opendkim-tools is not set +# CONFIG_PACKAGE_postfix is not set + +# +# Select postfix build options +# +CONFIG_POSTFIX_TLS=y +CONFIG_POSTFIX_SASL=y +CONFIG_POSTFIX_LDAP=y +# CONFIG_POSTFIX_DB is not set +CONFIG_POSTFIX_CDB=y +CONFIG_POSTFIX_SQLITE=y +# CONFIG_POSTFIX_MYSQL is not set +# CONFIG_POSTFIX_PGSQL is not set +CONFIG_POSTFIX_PCRE=y +# CONFIG_POSTFIX_EAI is not set +# end of Select postfix build options + +# CONFIG_PACKAGE_spamc is not set +# CONFIG_PACKAGE_spamc-ssl is not set +# end of Mail + +# +# Multimedia +# + +# +# Streaming +# +# CONFIG_PACKAGE_oggfwd is not set +# end of Streaming + +# CONFIG_PACKAGE_ffmpeg is not set +# CONFIG_PACKAGE_ffprobe is not set +# CONFIG_PACKAGE_fswebcam is not set +# CONFIG_PACKAGE_gerbera is not set +# CONFIG_PACKAGE_gphoto2 is not set +# CONFIG_PACKAGE_graphicsmagick is not set +# CONFIG_PACKAGE_grilo is not set +# CONFIG_PACKAGE_grilo-plugins is not set +# CONFIG_PACKAGE_gst1-libav is not set +# CONFIG_PACKAGE_gstreamer1-libs is not set +# CONFIG_PACKAGE_gstreamer1-plugins-bad is not set +# CONFIG_PACKAGE_gstreamer1-plugins-base is not set +# CONFIG_PACKAGE_gstreamer1-plugins-good is not set +# CONFIG_PACKAGE_gstreamer1-plugins-ugly is not set +# CONFIG_PACKAGE_gstreamer1-utils is not set +# CONFIG_PACKAGE_icecast is not set +# CONFIG_PACKAGE_imagemagick is not set +# CONFIG_PACKAGE_lcdgrilo is not set +# CONFIG_PACKAGE_minidlna is not set +# CONFIG_PACKAGE_minisatip is not set +# CONFIG_PACKAGE_mjpg-streamer is not set +# CONFIG_PACKAGE_motion is not set +# CONFIG_PACKAGE_tvheadend is not set +# CONFIG_PACKAGE_v4l2rtspserver is not set +# CONFIG_PACKAGE_vips is not set +# CONFIG_PACKAGE_xupnpd is not set +# CONFIG_PACKAGE_youtube-dl is not set +# end of Multimedia + +# +# Network +# + +# +# BitTorrent +# +# CONFIG_PACKAGE_mktorrent is not set +# CONFIG_PACKAGE_opentracker is not set +# CONFIG_PACKAGE_opentracker6 is not set +# CONFIG_PACKAGE_rtorrent is not set +# CONFIG_PACKAGE_rtorrent-rpc is not set +# CONFIG_PACKAGE_transmission-cli is not set +# CONFIG_PACKAGE_transmission-daemon is not set +# CONFIG_PACKAGE_transmission-remote is not set +# CONFIG_PACKAGE_transmission-web is not set +# CONFIG_PACKAGE_transmission-web-control is not set +# end of BitTorrent + +# +# Captive Portals +# +# CONFIG_PACKAGE_apfree-wifidog is not set +# CONFIG_PACKAGE_coova-chilli is not set +# CONFIG_PACKAGE_wifidog is not set +# CONFIG_PACKAGE_wifidog-tls is not set +# end of Captive Portals + +# +# Dial-in/up +# +# CONFIG_PACKAGE_rp-pppoe-common is not set +# CONFIG_PACKAGE_rp-pppoe-relay is not set +# CONFIG_PACKAGE_rp-pppoe-server is not set +# end of Dial-in/up + +# +# Download Manager +# +# CONFIG_PACKAGE_ariang is not set +# CONFIG_PACKAGE_ariang-nginx is not set +# CONFIG_PACKAGE_leech is not set +# CONFIG_PACKAGE_webui-aria2 is not set +# end of Download Manager + +# +# File Transfer +# +# CONFIG_PACKAGE_aria2 is not set +# CONFIG_PACKAGE_atftp is not set +# CONFIG_PACKAGE_atftpd is not set +CONFIG_PACKAGE_curl=y +# CONFIG_PACKAGE_gnurl is not set +# CONFIG_PACKAGE_lftp is not set +# CONFIG_PACKAGE_rosy-file-server is not set +# CONFIG_PACKAGE_rsync is not set +# CONFIG_PACKAGE_rsyncd is not set +# CONFIG_PACKAGE_vsftpd is not set +# CONFIG_PACKAGE_vsftpd-tls is not set +# CONFIG_PACKAGE_wget-nossl is not set +# CONFIG_PACKAGE_wget-ssl is not set +# end of File Transfer + +# +# Filesystem +# +# CONFIG_PACKAGE_davfs2 is not set +# CONFIG_PACKAGE_ksmbd-avahi-service is not set +# CONFIG_PACKAGE_ksmbd-server is not set +# CONFIG_PACKAGE_ksmbd-utils is not set +# CONFIG_PACKAGE_netatalk is not set +# CONFIG_PACKAGE_nfs-kernel-server is not set +# CONFIG_PACKAGE_owftpd is not set +# CONFIG_PACKAGE_owhttpd is not set +# CONFIG_PACKAGE_owserver is not set +# CONFIG_PACKAGE_sshfs is not set +# end of Filesystem + +# +# Firewall +# +CONFIG_PACKAGE_arptables=y +CONFIG_PACKAGE_conntrack=y +# CONFIG_PACKAGE_conntrackd is not set +CONFIG_PACKAGE_ebtables=y +CONFIG_PACKAGE_ebtables-utils=y +# CONFIG_PACKAGE_fwknop is not set +# CONFIG_PACKAGE_fwknopd is not set +CONFIG_PACKAGE_ip6tables=y +# CONFIG_PACKAGE_ip6tables-extra is not set +CONFIG_PACKAGE_ip6tables-mod-nat=y +CONFIG_PACKAGE_iptables=y +# CONFIG_IPTABLES_CONNLABEL is not set +# CONFIG_IPTABLES_NFTABLES is not set +CONFIG_PACKAGE_iptables-mod-account=y +# CONFIG_PACKAGE_iptables-mod-chaos is not set +# CONFIG_PACKAGE_iptables-mod-checksum is not set +# CONFIG_PACKAGE_iptables-mod-cluster is not set +# CONFIG_PACKAGE_iptables-mod-clusterip is not set +CONFIG_PACKAGE_iptables-mod-condition=y +CONFIG_PACKAGE_iptables-mod-conntrack-extra=y +# CONFIG_PACKAGE_iptables-mod-delude is not set +# CONFIG_PACKAGE_iptables-mod-dhcpmac is not set +# CONFIG_PACKAGE_iptables-mod-dnetmap is not set +CONFIG_PACKAGE_iptables-mod-extra=y +# CONFIG_PACKAGE_iptables-mod-filter is not set +# CONFIG_PACKAGE_iptables-mod-fullconenat is not set +# CONFIG_PACKAGE_iptables-mod-fuzzy is not set +# CONFIG_PACKAGE_iptables-mod-geoip is not set +CONFIG_PACKAGE_iptables-mod-hashlimit=y +CONFIG_PACKAGE_iptables-mod-iface=y +CONFIG_PACKAGE_iptables-mod-ipmark=y +CONFIG_PACKAGE_iptables-mod-ipopt=y +# CONFIG_PACKAGE_iptables-mod-ipp2p is not set +# CONFIG_PACKAGE_iptables-mod-iprange is not set +CONFIG_PACKAGE_iptables-mod-ipsec=y +# CONFIG_PACKAGE_iptables-mod-ipv4options is not set +# CONFIG_PACKAGE_iptables-mod-led is not set +# CONFIG_PACKAGE_iptables-mod-length2 is not set +# CONFIG_PACKAGE_iptables-mod-logmark is not set +# CONFIG_PACKAGE_iptables-mod-lscan is not set +# CONFIG_PACKAGE_iptables-mod-lua is not set +# CONFIG_PACKAGE_iptables-mod-nat-extra is not set +CONFIG_PACKAGE_iptables-mod-ndpi=y +# CONFIG_PACKAGE_iptables-mod-nflog is not set +# CONFIG_PACKAGE_iptables-mod-nfqueue is not set +# CONFIG_PACKAGE_iptables-mod-physdev is not set +# CONFIG_PACKAGE_iptables-mod-proto is not set +# CONFIG_PACKAGE_iptables-mod-psd is not set +# CONFIG_PACKAGE_iptables-mod-quota2 is not set +# CONFIG_PACKAGE_iptables-mod-rpfilter is not set +# CONFIG_PACKAGE_iptables-mod-sysrq is not set +# CONFIG_PACKAGE_iptables-mod-tarpit is not set +# CONFIG_PACKAGE_iptables-mod-tee is not set +CONFIG_PACKAGE_iptables-mod-tproxy=y +CONFIG_PACKAGE_iptables-mod-trace=y +# CONFIG_PACKAGE_iptables-mod-u32 is not set +# CONFIG_PACKAGE_iptables-mod-ulog is not set +# CONFIG_PACKAGE_iptaccount is not set +# CONFIG_PACKAGE_iptgeoip is not set + +# +# Select iptgeoip options +# +# CONFIG_IPTGEOIP_PRESERVE is not set +# end of Select iptgeoip options + +# CONFIG_PACKAGE_miniupnpc is not set +CONFIG_PACKAGE_miniupnpd=y +# CONFIG_PACKAGE_natpmpc is not set +# CONFIG_PACKAGE_nftables-json is not set +# CONFIG_PACKAGE_nftables-nojson is not set +# CONFIG_PACKAGE_shorewall is not set +# CONFIG_PACKAGE_shorewall-core is not set +# CONFIG_PACKAGE_shorewall-lite is not set +# CONFIG_PACKAGE_shorewall6 is not set +# CONFIG_PACKAGE_shorewall6-lite is not set +# CONFIG_PACKAGE_snort is not set +# CONFIG_PACKAGE_snort3 is not set +# end of Firewall + +# +# Firewall Tunnel +# +# CONFIG_PACKAGE_iodine is not set +# CONFIG_PACKAGE_iodined is not set +# end of Firewall Tunnel + +# +# FreeRADIUS (version 3) +# +# CONFIG_PACKAGE_freeradius3 is not set +# CONFIG_PACKAGE_freeradius3-common is not set +# CONFIG_PACKAGE_freeradius3-utils is not set +# end of FreeRADIUS (version 3) + +# +# IP Addresses and Names +# +# CONFIG_PACKAGE_aggregate is not set +# CONFIG_PACKAGE_announce is not set +# CONFIG_PACKAGE_avahi-autoipd is not set +# CONFIG_PACKAGE_avahi-daemon-service-http is not set +# CONFIG_PACKAGE_avahi-daemon-service-ssh is not set +# CONFIG_PACKAGE_avahi-dbus-daemon is not set +# CONFIG_PACKAGE_avahi-dnsconfd is not set +# CONFIG_PACKAGE_avahi-nodbus-daemon is not set +# CONFIG_PACKAGE_avahi-utils is not set +# CONFIG_PACKAGE_bind-check is not set +# CONFIG_PACKAGE_bind-client is not set +CONFIG_PACKAGE_bind-dig=y +# CONFIG_PACKAGE_bind-dnssec is not set +# CONFIG_PACKAGE_bind-host is not set +# CONFIG_PACKAGE_bind-nslookup is not set +# CONFIG_PACKAGE_bind-rndc is not set +# CONFIG_PACKAGE_bind-server is not set +# CONFIG_PACKAGE_bind-tools is not set +# CONFIG_PACKAGE_ddns-scripts is not set +# CONFIG_PACKAGE_ddns-scripts-services is not set +# CONFIG_PACKAGE_dhcp-forwarder is not set +# CONFIG_PACKAGE_dnscrypt-proxy is not set +# CONFIG_PACKAGE_dnscrypt-proxy-resolvers is not set +# CONFIG_PACKAGE_dnsdist is not set +# CONFIG_PACKAGE_drill is not set +# CONFIG_PACKAGE_hostip is not set +# CONFIG_PACKAGE_idn is not set +# CONFIG_PACKAGE_idn2 is not set +# CONFIG_PACKAGE_inadyn is not set +# CONFIG_PACKAGE_isc-dhcp-client-ipv4 is not set +# CONFIG_PACKAGE_isc-dhcp-client-ipv6 is not set +# CONFIG_PACKAGE_isc-dhcp-relay-ipv4 is not set +# CONFIG_PACKAGE_isc-dhcp-relay-ipv6 is not set +# CONFIG_PACKAGE_kadnode is not set +# CONFIG_PACKAGE_kea-admin is not set +# CONFIG_PACKAGE_kea-ctrl is not set +# CONFIG_PACKAGE_kea-dhcp-ddns is not set +# CONFIG_PACKAGE_kea-dhcp4 is not set +# CONFIG_PACKAGE_kea-dhcp6 is not set +# CONFIG_PACKAGE_kea-lfc is not set +# CONFIG_PACKAGE_kea-libs is not set +# CONFIG_PACKAGE_kea-perfdhcp is not set +# CONFIG_PACKAGE_kea-shell is not set +# CONFIG_PACKAGE_knot is not set +# CONFIG_PACKAGE_knot-dig is not set +# CONFIG_PACKAGE_knot-host is not set +# CONFIG_PACKAGE_knot-keymgr is not set +# CONFIG_PACKAGE_knot-nsupdate is not set +# CONFIG_PACKAGE_knot-resolver is not set + +# +# Configuration +# +# CONFIG_PACKAGE_knot-resolver_dnstap is not set +# end of Configuration + +# CONFIG_PACKAGE_knot-tests is not set +# CONFIG_PACKAGE_knot-zonecheck is not set +# CONFIG_PACKAGE_ldns-examples is not set +# CONFIG_PACKAGE_mdns-utils is not set +# CONFIG_PACKAGE_mdnsd is not set +# CONFIG_PACKAGE_mdnsresponder is not set +# CONFIG_PACKAGE_nsd is not set +# CONFIG_PACKAGE_nsd-control is not set +# CONFIG_PACKAGE_nsd-control-setup is not set +# CONFIG_PACKAGE_nsd-nossl is not set +# CONFIG_PACKAGE_overture is not set +# CONFIG_PACKAGE_pdns is not set +# CONFIG_PACKAGE_pdns-ixfrdist is not set +# CONFIG_PACKAGE_pdns-recursor is not set +# CONFIG_PACKAGE_pdns-tools is not set +# CONFIG_PACKAGE_stubby is not set +# CONFIG_PACKAGE_tor-hs is not set +# CONFIG_PACKAGE_torsocks is not set +CONFIG_PACKAGE_unbound-anchor=y +# CONFIG_PACKAGE_unbound-checkconf is not set +CONFIG_PACKAGE_unbound-control=y +# CONFIG_PACKAGE_unbound-control-setup is not set +CONFIG_PACKAGE_unbound-daemon=y +# CONFIG_PACKAGE_unbound-host is not set +# CONFIG_PACKAGE_wsdd2 is not set +# end of IP Addresses and Names + +# +# Instant Messaging +# +# CONFIG_PACKAGE_bitlbee is not set +# CONFIG_PACKAGE_irssi is not set +# CONFIG_PACKAGE_ngircd is not set +# CONFIG_PACKAGE_ngircd-nossl is not set +# CONFIG_PACKAGE_prosody is not set +# CONFIG_PACKAGE_quassel-irssi is not set +# CONFIG_PACKAGE_umurmur-mbedtls is not set +# CONFIG_PACKAGE_umurmur-openssl is not set +# CONFIG_PACKAGE_znc is not set +# end of Instant Messaging + +# +# Linux ATM tools +# +# CONFIG_PACKAGE_atm-aread is not set +# CONFIG_PACKAGE_atm-atmaddr is not set +# CONFIG_PACKAGE_atm-atmdiag is not set +# CONFIG_PACKAGE_atm-atmdump is not set +# CONFIG_PACKAGE_atm-atmloop is not set +# CONFIG_PACKAGE_atm-atmsigd is not set +# CONFIG_PACKAGE_atm-atmswitch is not set +# CONFIG_PACKAGE_atm-atmtcp is not set +# CONFIG_PACKAGE_atm-awrite is not set +# CONFIG_PACKAGE_atm-bus is not set +# CONFIG_PACKAGE_atm-debug-tools is not set +# CONFIG_PACKAGE_atm-diagnostics is not set +# CONFIG_PACKAGE_atm-esi is not set +# CONFIG_PACKAGE_atm-ilmid is not set +# CONFIG_PACKAGE_atm-ilmidiag is not set +# CONFIG_PACKAGE_atm-lecs is not set +# CONFIG_PACKAGE_atm-les is not set +# CONFIG_PACKAGE_atm-mpcd is not set +# CONFIG_PACKAGE_atm-saaldump is not set +# CONFIG_PACKAGE_atm-sonetdiag is not set +# CONFIG_PACKAGE_atm-svc_recv is not set +# CONFIG_PACKAGE_atm-svc_send is not set +# CONFIG_PACKAGE_atm-tools is not set +# CONFIG_PACKAGE_atm-ttcp_atm is not set +# CONFIG_PACKAGE_atm-zeppelin is not set +# CONFIG_PACKAGE_br2684ctl is not set +# end of Linux ATM tools + +# +# LoRaWAN +# +# CONFIG_PACKAGE_libloragw-tests is not set +# CONFIG_PACKAGE_libloragw-utils is not set +# end of LoRaWAN + +# +# NMAP Suite +# +# CONFIG_PACKAGE_ncat is not set +# CONFIG_PACKAGE_ncat-full is not set +# CONFIG_PACKAGE_ncat-ssl is not set +# CONFIG_PACKAGE_ndiff is not set +# CONFIG_PACKAGE_nmap is not set +# CONFIG_PACKAGE_nmap-full is not set +# CONFIG_PACKAGE_nmap-ssl is not set +# CONFIG_PACKAGE_nping is not set +# CONFIG_PACKAGE_nping-ssl is not set +# end of NMAP Suite + +# +# NTRIP +# +# CONFIG_PACKAGE_ntripcaster is not set +# CONFIG_PACKAGE_ntripclient is not set +# CONFIG_PACKAGE_ntripserver is not set +# end of NTRIP + +# +# Open vSwitch +# +# CONFIG_PACKAGE_openvswitch is not set +# CONFIG_PACKAGE_openvswitch-ovn-host is not set +# CONFIG_PACKAGE_openvswitch-ovn-north is not set +# CONFIG_PACKAGE_openvswitch-python3 is not set +# end of Open vSwitch + +# +# OpenLDAP +# +# CONFIG_PACKAGE_libopenldap is not set +CONFIG_OPENLDAP_DEBUG=y +# CONFIG_OPENLDAP_CRYPT is not set +# CONFIG_OPENLDAP_MONITOR is not set +# CONFIG_OPENLDAP_DB47 is not set +# CONFIG_OPENLDAP_ICU is not set +# CONFIG_PACKAGE_openldap-server is not set +# CONFIG_PACKAGE_openldap-utils is not set +# end of OpenLDAP + +# +# Printing +# +# CONFIG_PACKAGE_p910nd is not set +# end of Printing + +# +# Project V +# +# CONFIG_PACKAGE_v2ray-core is not set +# end of Project V + +# +# Routing and Redirection +# +# CONFIG_PACKAGE_bcp38 is not set +# CONFIG_PACKAGE_bfdd is not set +# CONFIG_PACKAGE_dcstad is not set +# CONFIG_PACKAGE_dcwapd is not set +# CONFIG_PACKAGE_devlink is not set +# CONFIG_PACKAGE_frr is not set +# CONFIG_PACKAGE_genl is not set +CONFIG_PACKAGE_igmpproxy=y +# CONFIG_PACKAGE_ip-bridge is not set +CONFIG_PACKAGE_ip-full=y +# CONFIG_PACKAGE_ip-tiny is not set +# CONFIG_PACKAGE_lldpd is not set +# CONFIG_PACKAGE_mrmctl is not set +# CONFIG_PACKAGE_mwan3 is not set +CONFIG_PACKAGE_nstat=y +# CONFIG_PACKAGE_rdma is not set +# CONFIG_PACKAGE_relayd is not set +# CONFIG_PACKAGE_smcroute is not set +CONFIG_PACKAGE_ss=y +# CONFIG_PACKAGE_sslh is not set +# CONFIG_PACKAGE_tc-full is not set +CONFIG_PACKAGE_tc-mod-iptables=y +CONFIG_PACKAGE_tc-tiny=y +# CONFIG_PACKAGE_tcpproxy is not set +# CONFIG_PACKAGE_yggdrasil is not set +# end of Routing and Redirection + +# +# SSH +# +# CONFIG_PACKAGE_autossh is not set +# CONFIG_PACKAGE_openssh-client is not set +# CONFIG_PACKAGE_openssh-client-utils is not set +# CONFIG_PACKAGE_openssh-keygen is not set +# CONFIG_PACKAGE_openssh-moduli is not set +# CONFIG_PACKAGE_openssh-server is not set +# CONFIG_PACKAGE_openssh-server-pam is not set +# CONFIG_PACKAGE_openssh-sftp-avahi-service is not set +# CONFIG_PACKAGE_openssh-sftp-client is not set +# CONFIG_PACKAGE_openssh-sftp-server is not set +# CONFIG_PACKAGE_sshtunnel is not set +# CONFIG_PACKAGE_tmate is not set +# end of SSH + +# +# THC-IPv6 attack and analyzing toolkit +# +# CONFIG_PACKAGE_thc-ipv6-address6 is not set +# CONFIG_PACKAGE_thc-ipv6-alive6 is not set +# CONFIG_PACKAGE_thc-ipv6-covert-send6 is not set +# CONFIG_PACKAGE_thc-ipv6-covert-send6d is not set +# CONFIG_PACKAGE_thc-ipv6-denial6 is not set +# CONFIG_PACKAGE_thc-ipv6-detect-new-ip6 is not set +# CONFIG_PACKAGE_thc-ipv6-detect-sniffer6 is not set +# CONFIG_PACKAGE_thc-ipv6-dnsdict6 is not set +# CONFIG_PACKAGE_thc-ipv6-dnsrevenum6 is not set +# CONFIG_PACKAGE_thc-ipv6-dos-new-ip6 is not set +# CONFIG_PACKAGE_thc-ipv6-dump-router6 is not set +# CONFIG_PACKAGE_thc-ipv6-exploit6 is not set +# CONFIG_PACKAGE_thc-ipv6-fake-advertise6 is not set +# CONFIG_PACKAGE_thc-ipv6-fake-dhcps6 is not set +# CONFIG_PACKAGE_thc-ipv6-fake-dns6d is not set +# CONFIG_PACKAGE_thc-ipv6-fake-dnsupdate6 is not set +# CONFIG_PACKAGE_thc-ipv6-fake-mipv6 is not set +# CONFIG_PACKAGE_thc-ipv6-fake-mld26 is not set +# CONFIG_PACKAGE_thc-ipv6-fake-mld6 is not set +# CONFIG_PACKAGE_thc-ipv6-fake-mldrouter6 is not set +# CONFIG_PACKAGE_thc-ipv6-fake-router26 is not set +# CONFIG_PACKAGE_thc-ipv6-fake-router6 is not set +# CONFIG_PACKAGE_thc-ipv6-fake-solicitate6 is not set +# CONFIG_PACKAGE_thc-ipv6-flood-advertise6 is not set +# CONFIG_PACKAGE_thc-ipv6-flood-dhcpc6 is not set +# CONFIG_PACKAGE_thc-ipv6-flood-mld26 is not set +# CONFIG_PACKAGE_thc-ipv6-flood-mld6 is not set +# CONFIG_PACKAGE_thc-ipv6-flood-mldrouter6 is not set +# CONFIG_PACKAGE_thc-ipv6-flood-router26 is not set +# CONFIG_PACKAGE_thc-ipv6-flood-router6 is not set +# CONFIG_PACKAGE_thc-ipv6-flood-solicitate6 is not set +# CONFIG_PACKAGE_thc-ipv6-fragmentation6 is not set +# CONFIG_PACKAGE_thc-ipv6-fuzz-dhcpc6 is not set +# CONFIG_PACKAGE_thc-ipv6-fuzz-dhcps6 is not set +# CONFIG_PACKAGE_thc-ipv6-fuzz-ip6 is not set +# CONFIG_PACKAGE_thc-ipv6-implementation6 is not set +# CONFIG_PACKAGE_thc-ipv6-implementation6d is not set +# CONFIG_PACKAGE_thc-ipv6-inverse-lookup6 is not set +# CONFIG_PACKAGE_thc-ipv6-kill-router6 is not set +# CONFIG_PACKAGE_thc-ipv6-ndpexhaust6 is not set +# CONFIG_PACKAGE_thc-ipv6-node-query6 is not set +# CONFIG_PACKAGE_thc-ipv6-parasite6 is not set +# CONFIG_PACKAGE_thc-ipv6-passive-discovery6 is not set +# CONFIG_PACKAGE_thc-ipv6-randicmp6 is not set +# CONFIG_PACKAGE_thc-ipv6-redir6 is not set +# CONFIG_PACKAGE_thc-ipv6-rsmurf6 is not set +# CONFIG_PACKAGE_thc-ipv6-sendpees6 is not set +# CONFIG_PACKAGE_thc-ipv6-sendpeesmp6 is not set +# CONFIG_PACKAGE_thc-ipv6-smurf6 is not set +# CONFIG_PACKAGE_thc-ipv6-thcping6 is not set +# CONFIG_PACKAGE_thc-ipv6-toobig6 is not set +# CONFIG_PACKAGE_thc-ipv6-trace6 is not set +# end of THC-IPv6 attack and analyzing toolkit + +# +# Tcpreplay +# +# CONFIG_PACKAGE_tcpbridge is not set +# CONFIG_PACKAGE_tcpcapinfo is not set +# CONFIG_PACKAGE_tcpliveplay is not set +# CONFIG_PACKAGE_tcpprep is not set +# CONFIG_PACKAGE_tcpreplay is not set +# CONFIG_PACKAGE_tcpreplay-all is not set +# CONFIG_PACKAGE_tcpreplay-edit is not set +# CONFIG_PACKAGE_tcprewrite is not set +# end of Tcpreplay + +# +# Time Synchronization +# +# CONFIG_PACKAGE_chrony is not set +# CONFIG_PACKAGE_chrony-nts is not set +# CONFIG_PACKAGE_htpdate is not set +# CONFIG_PACKAGE_linuxptp is not set +# CONFIG_PACKAGE_ntp-keygen is not set +# CONFIG_PACKAGE_ntp-utils is not set +# CONFIG_PACKAGE_ntpclient is not set +# CONFIG_PACKAGE_ntpd is not set +# CONFIG_PACKAGE_ntpdate is not set +# end of Time Synchronization + +# +# VPN +# +# CONFIG_PACKAGE_chaosvpn is not set +CONFIG_PACKAGE_dsvpn=y +# CONFIG_PACKAGE_eoip is not set +# CONFIG_PACKAGE_fastd is not set +CONFIG_PACKAGE_glorytun=y +CONFIG_PACKAGE_glorytun-udp=y +# CONFIG_PACKAGE_libreswan is not set +CONFIG_PACKAGE_mlvpn=y +# CONFIG_PACKAGE_ocserv is not set +# CONFIG_PACKAGE_openconnect is not set +# CONFIG_PACKAGE_openfortivpn is not set +# CONFIG_PACKAGE_openvpn-easy-rsa is not set +# CONFIG_PACKAGE_openvpn-mbedtls is not set +CONFIG_PACKAGE_openvpn-openssl=y +CONFIG_OPENVPN_openssl_ENABLE_LZO=y +CONFIG_OPENVPN_openssl_ENABLE_LZ4=y +# CONFIG_OPENVPN_openssl_ENABLE_X509_ALT_USERNAME is not set +# CONFIG_OPENVPN_openssl_ENABLE_MANAGEMENT is not set +CONFIG_OPENVPN_openssl_ENABLE_FRAGMENT=y +CONFIG_OPENVPN_openssl_ENABLE_MULTIHOME=y +CONFIG_OPENVPN_openssl_ENABLE_PORT_SHARE=y +CONFIG_OPENVPN_openssl_ENABLE_DEF_AUTH=y +CONFIG_OPENVPN_openssl_ENABLE_PF=y +# CONFIG_OPENVPN_openssl_ENABLE_IPROUTE2 is not set +CONFIG_OPENVPN_openssl_ENABLE_SMALL=y +# CONFIG_PACKAGE_pptpd is not set +# CONFIG_PACKAGE_softethervpn-base is not set +# CONFIG_PACKAGE_softethervpn-bridge is not set +# CONFIG_PACKAGE_softethervpn-client is not set +# CONFIG_PACKAGE_softethervpn-server is not set +# CONFIG_PACKAGE_softethervpn5-bridge is not set +# CONFIG_PACKAGE_softethervpn5-client is not set +# CONFIG_PACKAGE_softethervpn5-server is not set +# CONFIG_PACKAGE_sstp-client is not set +# CONFIG_PACKAGE_strongswan is not set +# CONFIG_PACKAGE_tailscale is not set +# CONFIG_PACKAGE_tailscaled is not set +# CONFIG_PACKAGE_tinc is not set +# CONFIG_PACKAGE_uanytun is not set +# CONFIG_PACKAGE_uanytun-nettle is not set +# CONFIG_PACKAGE_uanytun-nocrypt is not set +# CONFIG_PACKAGE_uanytun-sslcrypt is not set +# CONFIG_PACKAGE_vpnc is not set +# CONFIG_PACKAGE_vpnc-scripts is not set +CONFIG_PACKAGE_wireguard-tools=y +# CONFIG_PACKAGE_xl2tpd is not set +# CONFIG_PACKAGE_zerotier is not set +# end of VPN + +# +# Version Control Systems +# +# CONFIG_PACKAGE_git is not set +# CONFIG_PACKAGE_git-http is not set +# CONFIG_PACKAGE_subversion-client is not set +# CONFIG_PACKAGE_subversion-libs is not set +# CONFIG_PACKAGE_subversion-server is not set +# end of Version Control Systems + +# +# WWAN +# +# CONFIG_PACKAGE_adb-enablemodem is not set +CONFIG_PACKAGE_comgt=y +# CONFIG_PACKAGE_comgt-directip is not set +CONFIG_PACKAGE_comgt-ncm=y +CONFIG_PACKAGE_umbim=y +CONFIG_PACKAGE_uqmi=y +# end of WWAN + +# +# Web Servers/Proxies +# +# CONFIG_PACKAGE_apache is not set +CONFIG_PACKAGE_cgi-io=y +# CONFIG_PACKAGE_clamav is not set +# CONFIG_PACKAGE_etebase is not set +# CONFIG_PACKAGE_freshclam is not set +CONFIG_PACKAGE_frpc=y +# CONFIG_PACKAGE_frps is not set +# CONFIG_PACKAGE_gateway-go is not set +# CONFIG_PACKAGE_gunicorn3 is not set +# CONFIG_PACKAGE_haproxy is not set +# CONFIG_PACKAGE_haproxy-nossl is not set +# CONFIG_PACKAGE_kcptun-client is not set +# CONFIG_PACKAGE_kcptun-config is not set +# CONFIG_PACKAGE_kcptun-server is not set +# CONFIG_PACKAGE_lighttpd is not set +# CONFIG_PACKAGE_nginx is not set +# CONFIG_PACKAGE_nginx-all-module is not set +# CONFIG_PACKAGE_nginx-ssl is not set +# CONFIG_PACKAGE_nginx-ssl-util is not set +# CONFIG_PACKAGE_nginx-ssl-util-nopcre is not set +# CONFIG_PACKAGE_polipo is not set +# CONFIG_PACKAGE_privoxy is not set +# CONFIG_PACKAGE_python3-gunicorn is not set +# CONFIG_PACKAGE_radicale is not set +# CONFIG_PACKAGE_radicale2 is not set +# CONFIG_PACKAGE_radicale2-examples is not set +CONFIG_PACKAGE_shadowsocks-libev-config=y +CONFIG_PACKAGE_shadowsocks-libev-ss-local=y +CONFIG_PACKAGE_shadowsocks-libev-ss-redir=y +CONFIG_PACKAGE_shadowsocks-libev-ss-rules=y +CONFIG_PACKAGE_shadowsocks-libev-ss-server=y +CONFIG_PACKAGE_shadowsocks-libev-ss-tunnel=y +# CONFIG_PACKAGE_sockd is not set +# CONFIG_PACKAGE_socksify is not set +# CONFIG_PACKAGE_spawn-fcgi is not set +# CONFIG_PACKAGE_squid is not set +# CONFIG_PACKAGE_tinyproxy is not set +CONFIG_PACKAGE_uhttpd=y +# CONFIG_PACKAGE_uhttpd-mod-lua is not set +CONFIG_PACKAGE_uhttpd-mod-ubus=y +# CONFIG_PACKAGE_uwsgi is not set +# end of Web Servers/Proxies + +# +# Wireless +# +# CONFIG_PACKAGE_aircrack-ng is not set +# CONFIG_PACKAGE_airmon-ng is not set +# CONFIG_PACKAGE_dynapoint is not set +# CONFIG_PACKAGE_hcxdumptool is not set +# CONFIG_PACKAGE_hcxtools is not set +# CONFIG_PACKAGE_horst is not set +# CONFIG_PACKAGE_kismet-client is not set +# CONFIG_PACKAGE_kismet-drone is not set +# CONFIG_PACKAGE_kismet-server is not set +# CONFIG_PACKAGE_pixiewps is not set +# CONFIG_PACKAGE_reaver is not set +# CONFIG_PACKAGE_wavemon is not set +# CONFIG_PACKAGE_wifischedule is not set +# end of Wireless + +# +# WirelessAPD +# +# CONFIG_PACKAGE_eapol-test is not set +# CONFIG_PACKAGE_eapol-test-openssl is not set +# CONFIG_PACKAGE_eapol-test-wolfssl is not set +# CONFIG_PACKAGE_hostapd is not set +# CONFIG_PACKAGE_hostapd-basic is not set +# CONFIG_PACKAGE_hostapd-basic-openssl is not set +# CONFIG_PACKAGE_hostapd-basic-wolfssl is not set +CONFIG_PACKAGE_hostapd-common=y +# CONFIG_PACKAGE_hostapd-mini is not set +# CONFIG_PACKAGE_hostapd-openssl is not set +# CONFIG_PACKAGE_hostapd-utils is not set +# CONFIG_PACKAGE_hostapd-wolfssl is not set +# CONFIG_PACKAGE_hs20-client is not set +# CONFIG_PACKAGE_hs20-common is not set +# CONFIG_PACKAGE_hs20-server is not set +# CONFIG_PACKAGE_wpa-cli is not set +# CONFIG_PACKAGE_wpa-supplicant is not set +# CONFIG_WPA_RFKILL_SUPPORT is not set +CONFIG_WPA_MSG_MIN_PRIORITY=3 +CONFIG_WPA_WOLFSSL=y +CONFIG_DRIVER_WEXT_SUPPORT=y +CONFIG_DRIVER_11N_SUPPORT=y +CONFIG_DRIVER_11AC_SUPPORT=y +CONFIG_DRIVER_11AX_SUPPORT=y +# CONFIG_WPA_ENABLE_WEP is not set +# CONFIG_PACKAGE_wpa-supplicant-basic is not set +# CONFIG_PACKAGE_wpa-supplicant-mesh-openssl is not set +# CONFIG_PACKAGE_wpa-supplicant-mesh-wolfssl is not set +# CONFIG_PACKAGE_wpa-supplicant-mini is not set +# CONFIG_PACKAGE_wpa-supplicant-openssl is not set +# CONFIG_PACKAGE_wpa-supplicant-p2p is not set +# CONFIG_PACKAGE_wpa-supplicant-wolfssl is not set +# CONFIG_PACKAGE_wpad is not set +CONFIG_PACKAGE_wpad-basic=y +# CONFIG_PACKAGE_wpad-basic-openssl is not set +CONFIG_PACKAGE_wpad-basic-wolfssl=m +# CONFIG_PACKAGE_wpad-mesh-openssl is not set +# CONFIG_PACKAGE_wpad-mesh-wolfssl is not set +# CONFIG_PACKAGE_wpad-mini is not set +# CONFIG_PACKAGE_wpad-openssl is not set +# CONFIG_PACKAGE_wpad-wolfssl is not set +# end of WirelessAPD + +# +# arp-scan +# +# CONFIG_PACKAGE_arp-scan is not set +# CONFIG_PACKAGE_arp-scan-database is not set +# end of arp-scan + +CONFIG_PACKAGE_464xlat=y +CONFIG_PACKAGE_6in4=y +CONFIG_PACKAGE_6rd=y +CONFIG_PACKAGE_6to4=y +# CONFIG_PACKAGE_UDPspeeder is not set +# CONFIG_PACKAGE_acme is not set +# CONFIG_PACKAGE_acme-dnsapi is not set +# CONFIG_PACKAGE_adblock is not set +# CONFIG_PACKAGE_addrwatch is not set +# CONFIG_PACKAGE_addrwatch-mysql is not set +# CONFIG_PACKAGE_addrwatch-stdout is not set +# CONFIG_PACKAGE_addrwatch-syslog is not set +# CONFIG_PACKAGE_adguardhome is not set +# CONFIG_PACKAGE_apcupsd is not set +# CONFIG_PACKAGE_apcupsd-cgi is not set +# CONFIG_PACKAGE_apinger is not set +# CONFIG_PACKAGE_atlas-probe is not set +# CONFIG_PACKAGE_atlas-sw-probe is not set +# CONFIG_PACKAGE_atlas-sw-probe-rpc is not set +# CONFIG_PACKAGE_banip is not set +# CONFIG_PACKAGE_beanstalkd is not set +# CONFIG_PACKAGE_bmon is not set +# CONFIG_PACKAGE_boinc is not set +# CONFIG_PACKAGE_bpftool-full is not set +# CONFIG_PACKAGE_bpftool-minimal is not set +# CONFIG_PACKAGE_bwm-ng is not set +# CONFIG_PACKAGE_bwping is not set +CONFIG_PACKAGE_chat=y +# CONFIG_PACKAGE_cifsmount is not set +# CONFIG_PACKAGE_coap-server is not set +# CONFIG_PACKAGE_conserver is not set +# CONFIG_PACKAGE_cshark is not set +# CONFIG_PACKAGE_daemonlogger is not set +# CONFIG_PACKAGE_darkstat is not set +# CONFIG_PACKAGE_dawn is not set +# CONFIG_PACKAGE_dhcpcd is not set +# CONFIG_PACKAGE_dmapd is not set +# CONFIG_PACKAGE_dnscrypt-proxy2 is not set +# CONFIG_PACKAGE_dnstap is not set +# CONFIG_PACKAGE_dnstop is not set +# CONFIG_PACKAGE_ds-lite is not set +# CONFIG_PACKAGE_esniper is not set +CONFIG_PACKAGE_etherwake=y +# CONFIG_PACKAGE_etherwake-nfqueue is not set +CONFIG_PACKAGE_ethtool=y +# CONFIG_ETHTOOL_PRETTY_DUMP is not set +# CONFIG_PACKAGE_fail2ban is not set +# CONFIG_PACKAGE_fakeidentd is not set +# CONFIG_PACKAGE_fakepop is not set +# CONFIG_PACKAGE_family-dns is not set +# CONFIG_PACKAGE_foolsm is not set +# CONFIG_PACKAGE_fping is not set +# CONFIG_PACKAGE_generate-ipv6-address is not set +# CONFIG_PACKAGE_geth is not set +# CONFIG_PACKAGE_git-lfs is not set +# CONFIG_PACKAGE_gnunet is not set +CONFIG_PACKAGE_gre=y +CONFIG_PACKAGE_httping=y +# CONFIG_PACKAGE_httping-nossl is not set +CONFIG_PACKAGE_https-dns-proxy=y +# CONFIG_PACKAGE_i2pd is not set +# CONFIG_PACKAGE_ibrdtn-tools is not set +# CONFIG_PACKAGE_ibrdtnd is not set +# CONFIG_PACKAGE_ifstat is not set +CONFIG_PACKAGE_iftop=y +# CONFIG_PACKAGE_iiod is not set +CONFIG_PACKAGE_ipcalc=y +# CONFIG_PACKAGE_iperf is not set +# CONFIG_PACKAGE_iperf3 is not set +CONFIG_PACKAGE_iperf3-ssl=y +# CONFIG_PACKAGE_ipip is not set +CONFIG_PACKAGE_ipset=y +# CONFIG_PACKAGE_ipset-dns is not set +CONFIG_PACKAGE_iptraf-ng=y +# CONFIG_PACKAGE_iputils-arping is not set +# CONFIG_PACKAGE_iputils-clockdiff is not set +CONFIG_PACKAGE_iputils-ping=y +# CONFIG_PING_LEGACY_SYMLINKS is not set +# CONFIG_PACKAGE_iputils-tftpd is not set +CONFIG_PACKAGE_iputils-tracepath=y +# CONFIG_TRACEPATH_LEGACY_SYMLINKS is not set +# CONFIG_PACKAGE_ipvsadm is not set +CONFIG_PACKAGE_iw=y +# CONFIG_PACKAGE_iw-full is not set +# CONFIG_PACKAGE_jool-tools is not set +# CONFIG_PACKAGE_keepalived is not set +# CONFIG_PACKAGE_knxd is not set +# CONFIG_PACKAGE_kplex is not set +# CONFIG_PACKAGE_krb5-client is not set +# CONFIG_PACKAGE_krb5-libs is not set +# CONFIG_PACKAGE_krb5-server is not set +# CONFIG_PACKAGE_krb5-server-extras is not set +CONFIG_PACKAGE_libipset=y +# CONFIG_PACKAGE_libndp is not set +# CONFIG_PACKAGE_linknx is not set +# CONFIG_PACKAGE_lynx is not set +# CONFIG_PACKAGE_mac-telnet-client is not set +# CONFIG_PACKAGE_mac-telnet-discover is not set +# CONFIG_PACKAGE_mac-telnet-ping is not set +# CONFIG_PACKAGE_mac-telnet-server is not set +# CONFIG_PACKAGE_macvlan is not set +# CONFIG_PACKAGE_map is not set +# CONFIG_PACKAGE_mbusd is not set +# CONFIG_PACKAGE_memcached is not set +# CONFIG_PACKAGE_mii-tool is not set +# CONFIG_PACKAGE_mikrotik-btest is not set +# CONFIG_PACKAGE_mini_snmpd is not set +# CONFIG_PACKAGE_miredo is not set +CONFIG_PACKAGE_modemmanager=y + +# +# Configuration +# +CONFIG_MODEMMANAGER_WITH_MBIM=y +CONFIG_MODEMMANAGER_WITH_QMI=y +# CONFIG_MODEMMANAGER_WITH_AT_COMMAND_VIA_DBUS is not set +# end of Configuration + +# CONFIG_PACKAGE_mosquitto-client-nossl is not set +# CONFIG_PACKAGE_mosquitto-client-ssl is not set +# CONFIG_PACKAGE_mosquitto-nossl is not set +# CONFIG_PACKAGE_mosquitto-ssl is not set +CONFIG_PACKAGE_mptcp=y +# CONFIG_PACKAGE_mptcpd is not set +# CONFIG_PACKAGE_mstpd is not set +CONFIG_PACKAGE_mtr=y +# CONFIG_PACKAGE_nbd is not set +# CONFIG_PACKAGE_nbd-server is not set +# CONFIG_PACKAGE_ncp is not set +# CONFIG_PACKAGE_ndptool is not set +# CONFIG_PACKAGE_nebula is not set +# CONFIG_PACKAGE_nebula-cert is not set +# CONFIG_PACKAGE_net-tools-route is not set +CONFIG_PACKAGE_netcat=y +# CONFIG_PACKAGE_netdiscover is not set +# CONFIG_PACKAGE_netifyd is not set +# CONFIG_PACKAGE_netperf is not set +# CONFIG_PACKAGE_netsniff-ng is not set +# CONFIG_PACKAGE_netstinky is not set +# CONFIG_PACKAGE_nextdns is not set +# CONFIG_PACKAGE_nfdump is not set +# CONFIG_PACKAGE_nlbwmon is not set +# CONFIG_PACKAGE_noping is not set +# CONFIG_PACKAGE_nut is not set +# CONFIG_PACKAGE_obfs4proxy is not set +CONFIG_PACKAGE_odhcp6c=y +CONFIG_PACKAGE_odhcp6c_ext_cer_id=0 +# CONFIG_PACKAGE_odhcpd is not set +CONFIG_PACKAGE_odhcpd-ipv6only=y + +# +# Configuration +# +CONFIG_PACKAGE_odhcpd_ipv6only_ext_cer_id=0 +# end of Configuration + +# CONFIG_PACKAGE_ola is not set +# CONFIG_PACKAGE_omcproxy is not set +CONFIG_PACKAGE_omr-quota=y +CONFIG_PACKAGE_omr-tracker=y +# CONFIG_PACKAGE_onionshare-cli is not set +# CONFIG_PACKAGE_ooniprobe is not set +# CONFIG_PACKAGE_oor is not set +# CONFIG_PACKAGE_open-iscsi is not set +# CONFIG_PACKAGE_oping is not set +# CONFIG_PACKAGE_ostiary is not set +# CONFIG_PACKAGE_pagekitec is not set +# CONFIG_PACKAGE_pen is not set +# CONFIG_PACKAGE_phantap is not set +# CONFIG_PACKAGE_pingcheck is not set +# CONFIG_PACKAGE_port-mirroring is not set +CONFIG_PACKAGE_ppp=y +# CONFIG_PACKAGE_ppp-mod-passwordfd is not set +# CONFIG_PACKAGE_ppp-mod-pppoa is not set +CONFIG_PACKAGE_ppp-mod-pppoe=y +# CONFIG_PACKAGE_ppp-mod-pppol2tp is not set +# CONFIG_PACKAGE_ppp-mod-pptp is not set +# CONFIG_PACKAGE_ppp-mod-radius is not set +# CONFIG_PACKAGE_ppp-multilink is not set +# CONFIG_PACKAGE_pppdump is not set +# CONFIG_PACKAGE_pppoe-discovery is not set +# CONFIG_PACKAGE_pppossh is not set +# CONFIG_PACKAGE_pppstats is not set +CONFIG_PACKAGE_proto-bonding=y +# CONFIG_PACKAGE_proxychains-ng is not set +# CONFIG_PACKAGE_ptunnel-ng is not set +# CONFIG_PACKAGE_radsecproxy is not set +# CONFIG_PACKAGE_ratched is not set +# CONFIG_PACKAGE_ratechecker is not set +# CONFIG_PACKAGE_redsocks is not set +# CONFIG_PACKAGE_remserial is not set +# CONFIG_PACKAGE_restic-rest-server is not set +# CONFIG_PACKAGE_rpcbind is not set +CONFIG_PACKAGE_rssileds=y +# CONFIG_PACKAGE_rsyslog is not set +# CONFIG_PACKAGE_safe-search is not set +# CONFIG_PACKAGE_samba4-admin is not set +# CONFIG_PACKAGE_samba4-client is not set +# CONFIG_PACKAGE_samba4-libs is not set +# CONFIG_PACKAGE_samba4-server is not set +# CONFIG_PACKAGE_samba4-utils is not set +# CONFIG_PACKAGE_samplicator is not set +# CONFIG_PACKAGE_scapy is not set +# CONFIG_PACKAGE_sctp-tools is not set +# CONFIG_PACKAGE_seafile-ccnet is not set +# CONFIG_PACKAGE_seafile-seahub is not set +# CONFIG_PACKAGE_seafile-server is not set +# CONFIG_PACKAGE_seafile-server-fuse is not set +# CONFIG_PACKAGE_ser2net is not set +# CONFIG_PACKAGE_simple-adblock is not set +CONFIG_PACKAGE_simple-obfs=y +# CONFIG_PACKAGE_simple-obfs-server is not set +# CONFIG_PACKAGE_smartdns is not set +# CONFIG_PACKAGE_smbinfo is not set +CONFIG_PACKAGE_snmp-mibs=y +CONFIG_PACKAGE_snmp-utils=y +CONFIG_PACKAGE_snmpd=y +CONFIG_PACKAGE_snmptrapd=y +# CONFIG_PACKAGE_socat is not set +# CONFIG_PACKAGE_softflowd is not set +# CONFIG_PACKAGE_soloscli is not set +# CONFIG_PACKAGE_speedtest-netperf is not set +CONFIG_PACKAGE_speedtestc=y +# CONFIG_PACKAGE_spoofer is not set +# CONFIG_PACKAGE_static-neighbor-reports is not set +# CONFIG_PACKAGE_stunnel is not set +# CONFIG_PACKAGE_switchdev-poller is not set +# CONFIG_PACKAGE_tac_plus is not set +# CONFIG_PACKAGE_tac_plus-pam is not set +# CONFIG_PACKAGE_tayga is not set +CONFIG_PACKAGE_tcpdump=y +# CONFIG_PACKAGE_tcpdump-mini is not set +CONFIG_PACKAGE_tcptraceroute=y +# CONFIG_PACKAGE_tgt is not set +# CONFIG_PACKAGE_tor is not set +# CONFIG_PACKAGE_tor-basic is not set +# CONFIG_PACKAGE_tor-fw-helper is not set +CONFIG_PACKAGE_tracebox=y +# CONFIG_PACKAGE_trafficshaper is not set +# CONFIG_PACKAGE_travelmate is not set +# CONFIG_PACKAGE_u2pnpd is not set +# CONFIG_PACKAGE_uacme is not set +CONFIG_PACKAGE_uclient-fetch=y +# CONFIG_PACKAGE_udptunnel is not set +# CONFIG_PACKAGE_udpxy is not set +# CONFIG_PACKAGE_ulogd is not set +# CONFIG_PACKAGE_umdns is not set +# CONFIG_PACKAGE_usbip is not set +# CONFIG_PACKAGE_v2ray-plugin is not set +# CONFIG_PACKAGE_vallumd is not set +# CONFIG_PACKAGE_vncrepeater is not set +# CONFIG_PACKAGE_vnstat is not set +CONFIG_PACKAGE_vnstat2=y +CONFIG_PACKAGE_vnstati2=y +# CONFIG_PACKAGE_vpn-policy-routing is not set +# CONFIG_PACKAGE_vpnbypass is not set +# CONFIG_PACKAGE_vti is not set +# CONFIG_PACKAGE_vxlan is not set +# CONFIG_PACKAGE_wakeonlan is not set +# CONFIG_PACKAGE_wg-installer-client is not set +# CONFIG_PACKAGE_wg-installer-server is not set +# CONFIG_PACKAGE_wpan-tools is not set +CONFIG_PACKAGE_wwan=y +# CONFIG_PACKAGE_xfrm is not set +# CONFIG_PACKAGE_xinetd is not set +# CONFIG_PACKAGE_xray-core is not set +# end of Network + +# +# OpenMPTCProuter +# +CONFIG_PACKAGE_omr-6in4=y +CONFIG_PACKAGE_omr-update=y +CONFIG_PACKAGE_openmptcprouter=y +# CONFIG_PACKAGE_openmptcprouter-full is not set +# CONFIG_PACKAGE_openmptcprouter-mini is not set +# CONFIG_PACKAGE_openmptcprouter-zuixiao is not set +# end of OpenMPTCProuter + +# +# Sound +# +# CONFIG_PACKAGE_alsa-utils is not set +# CONFIG_PACKAGE_alsa-utils-seq is not set +# CONFIG_PACKAGE_alsa-utils-tests is not set +# CONFIG_PACKAGE_aserver is not set +# CONFIG_PACKAGE_beep is not set +# CONFIG_PACKAGE_espeak is not set +# CONFIG_PACKAGE_faad2 is not set +# CONFIG_PACKAGE_fdk-aac is not set +# CONFIG_PACKAGE_forked-daapd is not set +# CONFIG_PACKAGE_ices is not set +# CONFIG_PACKAGE_lame is not set +# CONFIG_PACKAGE_lame-lib is not set +# CONFIG_PACKAGE_liblo-utils is not set +# CONFIG_PACKAGE_madplay is not set +# CONFIG_PACKAGE_moc is not set +# CONFIG_PACKAGE_mpc is not set +# CONFIG_PACKAGE_mpd-avahi-service is not set +# CONFIG_PACKAGE_mpd-full is not set +# CONFIG_PACKAGE_mpd-mini is not set +# CONFIG_PACKAGE_mpg123 is not set +# CONFIG_PACKAGE_opus-tools is not set +# CONFIG_PACKAGE_pianod is not set +# CONFIG_PACKAGE_pianod-client is not set +# CONFIG_PACKAGE_portaudio is not set +# CONFIG_PACKAGE_pulseaudio-daemon is not set +# CONFIG_PACKAGE_pulseaudio-daemon-avahi is not set +# CONFIG_PACKAGE_shairplay is not set +# CONFIG_PACKAGE_shairport-sync-mbedtls is not set +# CONFIG_PACKAGE_shairport-sync-mini is not set +# CONFIG_PACKAGE_shairport-sync-openssl is not set +# CONFIG_PACKAGE_shine is not set +# CONFIG_PACKAGE_sox is not set +# CONFIG_PACKAGE_squeezelite-full is not set +# CONFIG_PACKAGE_squeezelite-mini is not set +# CONFIG_PACKAGE_svox is not set +# CONFIG_PACKAGE_upmpdcli is not set +# end of Sound + +# +# Utilities +# + +# +# BigClown +# +# CONFIG_PACKAGE_bigclown-control-tool is not set +# CONFIG_PACKAGE_bigclown-firmware-tool is not set +# CONFIG_PACKAGE_bigclown-gateway is not set +# CONFIG_PACKAGE_bigclown-mqtt2influxdb is not set +# end of BigClown + +# +# Boot Loaders +# +# CONFIG_PACKAGE_fconfig is not set +CONFIG_PACKAGE_uboot-envtools=y +# end of Boot Loaders + +# +# Compression +# +# CONFIG_PACKAGE_bsdtar is not set +# CONFIG_PACKAGE_bsdtar-noopenssl is not set +# CONFIG_PACKAGE_bzip2 is not set +# CONFIG_PACKAGE_gzip is not set +# CONFIG_PACKAGE_lz4 is not set +# CONFIG_PACKAGE_pigz is not set +# CONFIG_PACKAGE_unrar is not set +# CONFIG_PACKAGE_unzip is not set +# CONFIG_PACKAGE_xz-utils is not set +# CONFIG_PACKAGE_zipcmp is not set +# CONFIG_PACKAGE_zipmerge is not set +# CONFIG_PACKAGE_ziptool is not set +# CONFIG_PACKAGE_zstd is not set +# end of Compression + +# +# Database +# +# CONFIG_PACKAGE_mariadb-common is not set +# CONFIG_PACKAGE_pgsql-cli is not set +# CONFIG_PACKAGE_pgsql-cli-extra is not set +# CONFIG_PACKAGE_pgsql-server is not set +# CONFIG_PACKAGE_rrdcgi1 is not set +# CONFIG_PACKAGE_rrdtool1 is not set +# CONFIG_PACKAGE_sqlite3-cli is not set +# CONFIG_PACKAGE_unixodbc-tools is not set +# end of Database + +# +# Disc +# +# CONFIG_PACKAGE_blkdiscard is not set +# CONFIG_PACKAGE_blkid is not set +# CONFIG_PACKAGE_blockdev is not set +# CONFIG_PACKAGE_cfdisk is not set +# CONFIG_PACKAGE_cgdisk is not set +# CONFIG_PACKAGE_eject is not set +# CONFIG_PACKAGE_fdisk is not set +# CONFIG_PACKAGE_findfs is not set +# CONFIG_PACKAGE_fio is not set +# CONFIG_PACKAGE_fixparts is not set +# CONFIG_PACKAGE_gdisk is not set +# CONFIG_PACKAGE_hd-idle is not set +# CONFIG_PACKAGE_hdparm is not set +# CONFIG_PACKAGE_lsblk is not set +# CONFIG_PACKAGE_lvm2-normal is not set +# CONFIG_PACKAGE_lvm2-selinux is not set +# CONFIG_PACKAGE_mdadm is not set +# CONFIG_PACKAGE_parted is not set +# CONFIG_PACKAGE_partx-utils is not set +# CONFIG_PACKAGE_sfdisk is not set +# CONFIG_PACKAGE_sgdisk is not set +# CONFIG_PACKAGE_wipefs is not set +# end of Disc + +# +# Editors +# +# CONFIG_PACKAGE_joe is not set +# CONFIG_PACKAGE_jupp is not set +# CONFIG_PACKAGE_mg is not set +CONFIG_PACKAGE_nano=y +# CONFIG_PACKAGE_vim is not set +# CONFIG_PACKAGE_vim-full is not set +# CONFIG_PACKAGE_vim-fuller is not set +# CONFIG_PACKAGE_vim-help is not set +# CONFIG_PACKAGE_vim-runtime is not set +# CONFIG_PACKAGE_zile is not set +# end of Editors + +# +# Encryption +# +# CONFIG_PACKAGE_ccrypt is not set +# CONFIG_PACKAGE_certtool is not set +# CONFIG_PACKAGE_cryptsetup is not set +# CONFIG_PACKAGE_gnupg is not set +# CONFIG_PACKAGE_gnupg2 is not set +# CONFIG_PACKAGE_gnupg2-dirmngr is not set +# CONFIG_PACKAGE_gnutls-utils is not set +# CONFIG_PACKAGE_gpgv is not set +# CONFIG_PACKAGE_gpgv2 is not set +# CONFIG_PACKAGE_keyctl is not set +# CONFIG_PACKAGE_keyutils is not set +# CONFIG_PACKAGE_px5g-mbedtls is not set +# CONFIG_PACKAGE_px5g-standalone is not set +# CONFIG_PACKAGE_px5g-wolfssl is not set +# CONFIG_PACKAGE_stoken is not set +# end of Encryption + +# +# Filesystem +# +# CONFIG_PACKAGE_acl is not set +# CONFIG_PACKAGE_antfs-mount is not set +# CONFIG_PACKAGE_attr is not set +# CONFIG_PACKAGE_badblocks is not set +# CONFIG_PACKAGE_btrfs-progs is not set +# CONFIG_PACKAGE_chattr is not set +# CONFIG_PACKAGE_debugfs is not set +# CONFIG_PACKAGE_dosfstools is not set +# CONFIG_PACKAGE_dumpe2fs is not set +# CONFIG_PACKAGE_e2freefrag is not set +# CONFIG_PACKAGE_e2fsprogs is not set +# CONFIG_PACKAGE_e4crypt is not set +# CONFIG_PACKAGE_exfat-fsck is not set +# CONFIG_PACKAGE_exfat-mkfs is not set +CONFIG_PACKAGE_f2fs-tools=y +# CONFIG_PACKAGE_f2fs-tools-selinux is not set +CONFIG_PACKAGE_f2fsck=y +# CONFIG_PACKAGE_f2fsck-selinux is not set +# CONFIG_PACKAGE_filefrag is not set +# CONFIG_PACKAGE_fstrim is not set +# CONFIG_PACKAGE_fuse-utils is not set +# CONFIG_PACKAGE_fuse3-utils is not set +# CONFIG_PACKAGE_hfsfsck is not set +# CONFIG_PACKAGE_lsattr is not set +CONFIG_PACKAGE_mkf2fs=y +# CONFIG_PACKAGE_mkf2fs-selinux is not set +# CONFIG_PACKAGE_mkhfs is not set +# CONFIG_PACKAGE_ncdu is not set +# CONFIG_PACKAGE_nfs-utils is not set +# CONFIG_PACKAGE_nfs-utils-libs is not set +# CONFIG_PACKAGE_ntfs-3g is not set +# CONFIG_PACKAGE_ntfs-3g-low is not set +# CONFIG_PACKAGE_ntfs-3g-utils is not set +# CONFIG_PACKAGE_owfs is not set +# CONFIG_PACKAGE_owshell is not set +# CONFIG_PACKAGE_resize2fs is not set +# CONFIG_PACKAGE_squashfs-tools-mksquashfs is not set +# CONFIG_PACKAGE_squashfs-tools-unsquashfs is not set +# CONFIG_PACKAGE_swap-utils is not set +# CONFIG_PACKAGE_sysfsutils is not set +# CONFIG_PACKAGE_tune2fs is not set +# CONFIG_PACKAGE_xfs-admin is not set +# CONFIG_PACKAGE_xfs-fsck is not set +# CONFIG_PACKAGE_xfs-growfs is not set +# CONFIG_PACKAGE_xfs-mkfs is not set +# end of Filesystem + +# +# Image Manipulation +# +# CONFIG_PACKAGE_libjpeg-turbo-utils is not set +# CONFIG_PACKAGE_tiff-utils is not set +# end of Image Manipulation + +# +# Microcontroller programming +# +# CONFIG_PACKAGE_avrdude is not set +# CONFIG_PACKAGE_dfu-programmer is not set +# CONFIG_PACKAGE_stm32flash is not set +# end of Microcontroller programming + +# +# RTKLIB Suite +# +# CONFIG_PACKAGE_convbin is not set +# CONFIG_PACKAGE_pos2kml is not set +# CONFIG_PACKAGE_rnx2rtkp is not set +# CONFIG_PACKAGE_rtkrcv is not set +# CONFIG_PACKAGE_str2str is not set +# end of RTKLIB Suite + +# +# Shells +# +# CONFIG_PACKAGE_bash is not set +# CONFIG_PACKAGE_fish is not set +# CONFIG_PACKAGE_klish is not set +# CONFIG_PACKAGE_mksh is not set +# CONFIG_PACKAGE_tcsh is not set +# CONFIG_PACKAGE_zsh is not set +# end of Shells + +# +# Terminal +# +# CONFIG_PACKAGE_agetty is not set +# CONFIG_PACKAGE_dvtm is not set +CONFIG_PACKAGE_minicom=y +# CONFIG_PACKAGE_picocom is not set +# CONFIG_PACKAGE_rtty-mbedtls is not set +CONFIG_PACKAGE_rtty-nossl=y +# CONFIG_PACKAGE_rtty-openssl is not set +# CONFIG_PACKAGE_rtty-wolfssl is not set +# CONFIG_PACKAGE_screen is not set +# CONFIG_PACKAGE_script-utils is not set +# CONFIG_PACKAGE_serialconsole is not set +# CONFIG_PACKAGE_setterm is not set +# CONFIG_PACKAGE_tio is not set +# CONFIG_PACKAGE_tmux is not set +CONFIG_PACKAGE_ttyd=y +# CONFIG_PACKAGE_wall is not set +# end of Terminal + +# +# Virtualization +# +# end of Virtualization + +# +# Zoneinfo +# +# CONFIG_PACKAGE_zoneinfo-africa is not set +# CONFIG_PACKAGE_zoneinfo-all is not set +# CONFIG_PACKAGE_zoneinfo-asia is not set +# CONFIG_PACKAGE_zoneinfo-atlantic is not set +# CONFIG_PACKAGE_zoneinfo-australia-nz is not set +# CONFIG_PACKAGE_zoneinfo-core is not set +# CONFIG_PACKAGE_zoneinfo-europe is not set +# CONFIG_PACKAGE_zoneinfo-india is not set +# CONFIG_PACKAGE_zoneinfo-northamerica is not set +# CONFIG_PACKAGE_zoneinfo-pacific is not set +# CONFIG_PACKAGE_zoneinfo-poles is not set +# CONFIG_PACKAGE_zoneinfo-simple is not set +# CONFIG_PACKAGE_zoneinfo-southamerica is not set +# end of Zoneinfo + +# +# libimobiledevice +# +# CONFIG_PACKAGE_idevicerestore is not set +# CONFIG_PACKAGE_irecovery is not set +# CONFIG_PACKAGE_libimobiledevice-utils is not set +# CONFIG_PACKAGE_libusbmuxd-utils is not set +# CONFIG_PACKAGE_plistutil is not set +CONFIG_PACKAGE_usbmuxd=y +# end of libimobiledevice + +# +# libselinux tools +# +# CONFIG_PACKAGE_libselinux-avcstat is not set +# CONFIG_PACKAGE_libselinux-compute_av is not set +# CONFIG_PACKAGE_libselinux-compute_create is not set +# CONFIG_PACKAGE_libselinux-compute_member is not set +# CONFIG_PACKAGE_libselinux-compute_relabel is not set +# CONFIG_PACKAGE_libselinux-getconlist is not set +# CONFIG_PACKAGE_libselinux-getdefaultcon is not set +# CONFIG_PACKAGE_libselinux-getenforce is not set +# CONFIG_PACKAGE_libselinux-getfilecon is not set +# CONFIG_PACKAGE_libselinux-getpidcon is not set +# CONFIG_PACKAGE_libselinux-getsebool is not set +# CONFIG_PACKAGE_libselinux-getseuser is not set +# CONFIG_PACKAGE_libselinux-matchpathcon is not set +# CONFIG_PACKAGE_libselinux-policyvers is not set +# CONFIG_PACKAGE_libselinux-sefcontext_compile is not set +# CONFIG_PACKAGE_libselinux-selabel_digest is not set +# CONFIG_PACKAGE_libselinux-selabel_get_digests_all_partial_matches is not set +# CONFIG_PACKAGE_libselinux-selabel_lookup is not set +# CONFIG_PACKAGE_libselinux-selabel_lookup_best_match is not set +# CONFIG_PACKAGE_libselinux-selabel_partial_match is not set +# CONFIG_PACKAGE_libselinux-selinux_check_access is not set +# CONFIG_PACKAGE_libselinux-selinux_check_securetty_context is not set +# CONFIG_PACKAGE_libselinux-selinuxenabled is not set +# CONFIG_PACKAGE_libselinux-selinuxexeccon is not set +# CONFIG_PACKAGE_libselinux-setenforce is not set +# CONFIG_PACKAGE_libselinux-setfilecon is not set +# CONFIG_PACKAGE_libselinux-togglesebool is not set +# CONFIG_PACKAGE_libselinux-validatetrans is not set +# end of libselinux tools + +# CONFIG_PACKAGE_acpid is not set +# CONFIG_PACKAGE_adb is not set +# CONFIG_PACKAGE_airos-dfs-reset is not set +# CONFIG_PACKAGE_ap51-flash is not set +# CONFIG_PACKAGE_apk is not set +# CONFIG_PACKAGE_at is not set +# CONFIG_PACKAGE_atheepmgr is not set +# CONFIG_PACKAGE_audit is not set +# CONFIG_PACKAGE_audit-utils is not set +# CONFIG_PACKAGE_augeas is not set +# CONFIG_PACKAGE_augeas-lenses is not set +# CONFIG_PACKAGE_augeas-lenses-tests is not set +# CONFIG_PACKAGE_bandwidthd is not set +# CONFIG_PACKAGE_bandwidthd-pgsql is not set +# CONFIG_PACKAGE_bandwidthd-php is not set +# CONFIG_PACKAGE_bandwidthd-sqlite is not set +# CONFIG_PACKAGE_banhostlist is not set +# CONFIG_PACKAGE_bc is not set +# CONFIG_PACKAGE_bluelog is not set +# CONFIG_PACKAGE_bluez-daemon is not set +# CONFIG_PACKAGE_bluez-utils is not set +# CONFIG_PACKAGE_bluez-utils-extra is not set +# CONFIG_PACKAGE_bonniexx is not set +# CONFIG_PACKAGE_bottlerocket is not set +# CONFIG_PACKAGE_bsdiff is not set +# CONFIG_PACKAGE_bspatch is not set +# CONFIG_PACKAGE_byobu is not set +# CONFIG_PACKAGE_byobu-utils is not set +# CONFIG_PACKAGE_cache-domains-mbedtls is not set +# CONFIG_PACKAGE_cache-domains-openssl is not set +# CONFIG_PACKAGE_cache-domains-wolfssl is not set +# CONFIG_PACKAGE_cal is not set +# CONFIG_PACKAGE_canutils is not set +# CONFIG_PACKAGE_cgroup-tools is not set +# CONFIG_PACKAGE_cgroupfs-mount is not set +# CONFIG_PACKAGE_checkpolicy is not set +# CONFIG_PACKAGE_checksec is not set +# CONFIG_PACKAGE_checksec_automator is not set +# CONFIG_PACKAGE_chkcon is not set +# CONFIG_PACKAGE_cmdpad is not set +# CONFIG_PACKAGE_cni is not set +# CONFIG_PACKAGE_cni-plugins is not set +# CONFIG_PACKAGE_coap-client is not set +# CONFIG_PACKAGE_collectd is not set +# CONFIG_PACKAGE_conmon is not set +# CONFIG_PACKAGE_containerd is not set +# CONFIG_PACKAGE_coremark is not set +CONFIG_PACKAGE_coreutils=y +# CONFIG_PACKAGE_coreutils-b2sum is not set +# CONFIG_PACKAGE_coreutils-base32 is not set +# CONFIG_PACKAGE_coreutils-base64 is not set +# CONFIG_PACKAGE_coreutils-basename is not set +# CONFIG_PACKAGE_coreutils-basenc is not set +# CONFIG_PACKAGE_coreutils-cat is not set +# CONFIG_PACKAGE_coreutils-chcon is not set +# CONFIG_PACKAGE_coreutils-chgrp is not set +# CONFIG_PACKAGE_coreutils-chmod is not set +# CONFIG_PACKAGE_coreutils-chown is not set +# CONFIG_PACKAGE_coreutils-chroot is not set +# CONFIG_PACKAGE_coreutils-cksum is not set +# CONFIG_PACKAGE_coreutils-comm is not set +# CONFIG_PACKAGE_coreutils-cp is not set +# CONFIG_PACKAGE_coreutils-csplit is not set +# CONFIG_PACKAGE_coreutils-cut is not set +# CONFIG_PACKAGE_coreutils-date is not set +# CONFIG_PACKAGE_coreutils-dd is not set +# CONFIG_PACKAGE_coreutils-df is not set +# CONFIG_PACKAGE_coreutils-dir is not set +# CONFIG_PACKAGE_coreutils-dircolors is not set +# CONFIG_PACKAGE_coreutils-dirname is not set +# CONFIG_PACKAGE_coreutils-du is not set +# CONFIG_PACKAGE_coreutils-echo is not set +# CONFIG_PACKAGE_coreutils-env is not set +# CONFIG_PACKAGE_coreutils-expand is not set +# CONFIG_PACKAGE_coreutils-expr is not set +# CONFIG_PACKAGE_coreutils-factor is not set +# CONFIG_PACKAGE_coreutils-false is not set +# CONFIG_PACKAGE_coreutils-fmt is not set +# CONFIG_PACKAGE_coreutils-fold is not set +# CONFIG_PACKAGE_coreutils-groups is not set +# CONFIG_PACKAGE_coreutils-head is not set +# CONFIG_PACKAGE_coreutils-hostid is not set +# CONFIG_PACKAGE_coreutils-id is not set +# CONFIG_PACKAGE_coreutils-install is not set +# CONFIG_PACKAGE_coreutils-join is not set +# CONFIG_PACKAGE_coreutils-kill is not set +# CONFIG_PACKAGE_coreutils-link is not set +# CONFIG_PACKAGE_coreutils-ln is not set +# CONFIG_PACKAGE_coreutils-logname is not set +# CONFIG_PACKAGE_coreutils-ls is not set +# CONFIG_PACKAGE_coreutils-md5sum is not set +# CONFIG_PACKAGE_coreutils-mkdir is not set +# CONFIG_PACKAGE_coreutils-mkfifo is not set +# CONFIG_PACKAGE_coreutils-mknod is not set +# CONFIG_PACKAGE_coreutils-mktemp is not set +# CONFIG_PACKAGE_coreutils-mv is not set +# CONFIG_PACKAGE_coreutils-nice is not set +# CONFIG_PACKAGE_coreutils-nl is not set +# CONFIG_PACKAGE_coreutils-nohup is not set +# CONFIG_PACKAGE_coreutils-nproc is not set +# CONFIG_PACKAGE_coreutils-numfmt is not set +# CONFIG_PACKAGE_coreutils-od is not set +# CONFIG_PACKAGE_coreutils-paste is not set +# CONFIG_PACKAGE_coreutils-pathchk is not set +# CONFIG_PACKAGE_coreutils-pinky is not set +# CONFIG_PACKAGE_coreutils-pr is not set +# CONFIG_PACKAGE_coreutils-printenv is not set +# CONFIG_PACKAGE_coreutils-printf is not set +# CONFIG_PACKAGE_coreutils-ptx is not set +# CONFIG_PACKAGE_coreutils-pwd is not set +# CONFIG_PACKAGE_coreutils-readlink is not set +# CONFIG_PACKAGE_coreutils-realpath is not set +# CONFIG_PACKAGE_coreutils-rm is not set +# CONFIG_PACKAGE_coreutils-rmdir is not set +# CONFIG_PACKAGE_coreutils-runcon is not set +# CONFIG_PACKAGE_coreutils-seq is not set +# CONFIG_PACKAGE_coreutils-sha1sum is not set +# CONFIG_PACKAGE_coreutils-sha224sum is not set +# CONFIG_PACKAGE_coreutils-sha256sum is not set +# CONFIG_PACKAGE_coreutils-sha384sum is not set +# CONFIG_PACKAGE_coreutils-sha512sum is not set +# CONFIG_PACKAGE_coreutils-shred is not set +# CONFIG_PACKAGE_coreutils-shuf is not set +# CONFIG_PACKAGE_coreutils-sleep is not set +# CONFIG_PACKAGE_coreutils-sort is not set +# CONFIG_PACKAGE_coreutils-split is not set +# CONFIG_PACKAGE_coreutils-stat is not set +# CONFIG_PACKAGE_coreutils-stdbuf is not set +CONFIG_PACKAGE_coreutils-stty=y +# CONFIG_PACKAGE_coreutils-sum is not set +# CONFIG_PACKAGE_coreutils-sync is not set +# CONFIG_PACKAGE_coreutils-tac is not set +# CONFIG_PACKAGE_coreutils-tail is not set +# CONFIG_PACKAGE_coreutils-tee is not set +# CONFIG_PACKAGE_coreutils-test is not set +CONFIG_PACKAGE_coreutils-timeout=y +# CONFIG_PACKAGE_coreutils-touch is not set +# CONFIG_PACKAGE_coreutils-tr is not set +# CONFIG_PACKAGE_coreutils-true is not set +# CONFIG_PACKAGE_coreutils-truncate is not set +# CONFIG_PACKAGE_coreutils-tsort is not set +# CONFIG_PACKAGE_coreutils-tty is not set +# CONFIG_PACKAGE_coreutils-uname is not set +# CONFIG_PACKAGE_coreutils-unexpand is not set +# CONFIG_PACKAGE_coreutils-uniq is not set +# CONFIG_PACKAGE_coreutils-unlink is not set +# CONFIG_PACKAGE_coreutils-uptime is not set +# CONFIG_PACKAGE_coreutils-users is not set +# CONFIG_PACKAGE_coreutils-vdir is not set +# CONFIG_PACKAGE_coreutils-wc is not set +# CONFIG_PACKAGE_coreutils-who is not set +# CONFIG_PACKAGE_coreutils-whoami is not set +# CONFIG_PACKAGE_coreutils-yes is not set +# CONFIG_PACKAGE_crconf is not set +# CONFIG_PACKAGE_crelay is not set +# CONFIG_PACKAGE_crun is not set +# CONFIG_PACKAGE_csstidy is not set +# CONFIG_PACKAGE_ct-bugcheck is not set +# CONFIG_PACKAGE_ctop is not set +CONFIG_PACKAGE_dbus=y +# CONFIG_PACKAGE_dbus-utils is not set +# CONFIG_PACKAGE_device-observatory is not set +# CONFIG_PACKAGE_dfu-util is not set +# CONFIG_PACKAGE_digitemp is not set +# CONFIG_PACKAGE_digitemp-usb is not set +# CONFIG_PACKAGE_dmesg is not set +# CONFIG_PACKAGE_docker is not set +# CONFIG_PACKAGE_docker-compose is not set +# CONFIG_PACKAGE_dockerd is not set +# CONFIG_PACKAGE_domoticz is not set +# CONFIG_PACKAGE_dropbearconvert is not set +# CONFIG_PACKAGE_dtc is not set +# CONFIG_PACKAGE_dumb-init is not set +# CONFIG_PACKAGE_dump1090 is not set +# CONFIG_PACKAGE_ecdsautils is not set +# CONFIG_PACKAGE_elektra-kdb is not set +# CONFIG_PACKAGE_evtest is not set +# CONFIG_PACKAGE_extract is not set +# CONFIG_PACKAGE_fdt-utils is not set +# CONFIG_PACKAGE_file is not set +# CONFIG_PACKAGE_findutils is not set +# CONFIG_PACKAGE_findutils-find is not set +# CONFIG_PACKAGE_findutils-locate is not set +# CONFIG_PACKAGE_findutils-xargs is not set +# CONFIG_PACKAGE_flashrom is not set +# CONFIG_PACKAGE_flashrom-pci is not set +# CONFIG_PACKAGE_flashrom-spi is not set +# CONFIG_PACKAGE_flashrom-usb is not set +# CONFIG_PACKAGE_flent-tools is not set +# CONFIG_PACKAGE_flock is not set +# CONFIG_PACKAGE_fritz-caldata is not set +# CONFIG_PACKAGE_fritz-tffs is not set +# CONFIG_PACKAGE_fritz-tffs-nand is not set +# CONFIG_PACKAGE_ftdi_eeprom is not set +# CONFIG_PACKAGE_gammu is not set +# CONFIG_PACKAGE_gawk is not set +# CONFIG_PACKAGE_gddrescue is not set +# CONFIG_PACKAGE_getopt is not set +# CONFIG_PACKAGE_giflib-utils is not set +# CONFIG_PACKAGE_gkermit is not set +# CONFIG_PACKAGE_gnuplot is not set +# CONFIG_PACKAGE_gpioctl-sysfs is not set +# CONFIG_PACKAGE_gpiod-tools is not set +# CONFIG_PACKAGE_gpsd is not set +# CONFIG_PACKAGE_gpsd-clients is not set +# CONFIG_PACKAGE_gpsd-utils is not set +# CONFIG_PACKAGE_grep is not set +# CONFIG_PACKAGE_hamlib is not set +# CONFIG_PACKAGE_haserl is not set +# CONFIG_PACKAGE_hashdeep is not set +# CONFIG_PACKAGE_haveged is not set +# CONFIG_PACKAGE_hplip-common is not set +# CONFIG_PACKAGE_hplip-sane is not set +# CONFIG_PACKAGE_hub-ctrl is not set +# CONFIG_PACKAGE_hwclock is not set +CONFIG_PACKAGE_hwinfo=y +# CONFIG_PACKAGE_hwloc-utils is not set +# CONFIG_PACKAGE_i2c-tools is not set +# CONFIG_PACKAGE_iconv is not set +# CONFIG_PACKAGE_iio-utils is not set +# CONFIG_PACKAGE_inotifywait is not set +# CONFIG_PACKAGE_inotifywatch is not set +# CONFIG_PACKAGE_io is not set +# CONFIG_PACKAGE_ipfs-http-client-tests is not set +CONFIG_PACKAGE_irqbalance=y +# CONFIG_PACKAGE_iwcap is not set +CONFIG_PACKAGE_iwinfo=y +# CONFIG_PACKAGE_jq is not set +CONFIG_PACKAGE_jshn=y +# CONFIG_PACKAGE_kdump is not set +# CONFIG_PACKAGE_kexec is not set +# CONFIG_PACKAGE_kexec-tools is not set +# CONFIG_PACKAGE_kmod is not set +# CONFIG_PACKAGE_lcd4linux-custom is not set +# CONFIG_PACKAGE_lcd4linux-full is not set +# CONFIG_PACKAGE_lcdproc-clients is not set +# CONFIG_PACKAGE_lcdproc-drivers is not set +# CONFIG_PACKAGE_lcdproc-server is not set +# CONFIG_PACKAGE_less is not set +# CONFIG_PACKAGE_less-wide is not set +CONFIG_PACKAGE_libjson-script=y +# CONFIG_PACKAGE_libnetwork is not set +# CONFIG_PACKAGE_libxml2-utils is not set +# CONFIG_PACKAGE_lm-sensors is not set +# CONFIG_PACKAGE_lm-sensors-detect is not set +# CONFIG_PACKAGE_logger is not set +# CONFIG_PACKAGE_logrotate is not set +# CONFIG_PACKAGE_look is not set +# CONFIG_PACKAGE_losetup is not set +# CONFIG_PACKAGE_lrzsz is not set +# CONFIG_PACKAGE_lscpu is not set +# CONFIG_PACKAGE_lsof is not set +# CONFIG_PACKAGE_lxc is not set +# CONFIG_PACKAGE_maccalc is not set +# CONFIG_PACKAGE_macchanger is not set +# CONFIG_PACKAGE_mbedtls-util is not set +# CONFIG_PACKAGE_mbim-utils is not set +# CONFIG_PACKAGE_mbtools is not set +CONFIG_PACKAGE_mc=y + +# +# Configuration +# +# CONFIG_MC_DIFFVIEWER is not set +CONFIG_MC_EDITOR=y +CONFIG_MC_SUBSHELL=y +# CONFIG_MC_LARGEFILE is not set +# CONFIG_MC_BACKGROUND is not set +CONFIG_MC_CHARSET=y +CONFIG_MC_VFS=y +# end of Configuration + +# CONFIG_PACKAGE_mcookie is not set +# CONFIG_PACKAGE_micrond is not set +CONFIG_PACKAGE_mmc-utils=y +# CONFIG_PACKAGE_more is not set +# CONFIG_PACKAGE_moreutils is not set +# CONFIG_PACKAGE_mosh-client is not set +# CONFIG_PACKAGE_mosh-server is not set +# CONFIG_PACKAGE_mount-utils is not set +# CONFIG_PACKAGE_mpack is not set +# CONFIG_PACKAGE_mt-st is not set +# CONFIG_PACKAGE_namei is not set +# CONFIG_PACKAGE_nand-utils is not set +# CONFIG_PACKAGE_netopeer2-cli is not set +# CONFIG_PACKAGE_netopeer2-server is not set +# CONFIG_PACKAGE_netwhere is not set +# CONFIG_PACKAGE_nnn is not set +# CONFIG_PACKAGE_nsenter is not set +# CONFIG_PACKAGE_nss-utils is not set +# CONFIG_PACKAGE_oath-toolkit is not set +# CONFIG_PACKAGE_oci-runtime-tool is not set +# CONFIG_PACKAGE_open-plc-utils is not set +# CONFIG_PACKAGE_open2300 is not set +# CONFIG_PACKAGE_openobex is not set +# CONFIG_PACKAGE_openobex-apps is not set +# CONFIG_PACKAGE_openocd is not set +# CONFIG_PACKAGE_opensc-utils is not set +CONFIG_PACKAGE_openssl-util=y +# CONFIG_PACKAGE_openzwave is not set +# CONFIG_PACKAGE_openzwave-config is not set +# CONFIG_PACKAGE_owipcalc is not set +# CONFIG_PACKAGE_pciids is not set +# CONFIG_PACKAGE_pciutils is not set +# CONFIG_PACKAGE_pcsc-tools is not set +# CONFIG_PACKAGE_pcscd is not set +# CONFIG_PACKAGE_podman is not set +# CONFIG_PACKAGE_policycoreutils is not set +# CONFIG_PACKAGE_powertop is not set +# CONFIG_PACKAGE_pps-tools is not set +# CONFIG_PACKAGE_prlimit is not set +# CONFIG_PACKAGE_procps-ng is not set +# CONFIG_PACKAGE_progress is not set +# CONFIG_PACKAGE_prometheus is not set +# CONFIG_PACKAGE_prometheus-node-exporter-lua is not set +# CONFIG_PACKAGE_prometheus-statsd-exporter is not set +# CONFIG_PACKAGE_pservice is not set +# CONFIG_PACKAGE_psmisc is not set +# CONFIG_PACKAGE_pv is not set +# CONFIG_PACKAGE_qmi-utils is not set +# CONFIG_PACKAGE_qrencode is not set +# CONFIG_PACKAGE_quota is not set +# CONFIG_PACKAGE_ravpower-mcu is not set +# CONFIG_PACKAGE_readsb is not set +# CONFIG_PACKAGE_relayctl is not set +# CONFIG_PACKAGE_rename is not set +# CONFIG_PACKAGE_reptyr is not set +# CONFIG_PACKAGE_restic is not set +CONFIG_PACKAGE_rng-tools=y +# CONFIG_PACKAGE_rtl-ais is not set +# CONFIG_PACKAGE_rtl-sdr is not set +# CONFIG_PACKAGE_rtl_433 is not set +# CONFIG_PACKAGE_runc is not set +# CONFIG_PACKAGE_sane-backends is not set +# CONFIG_PACKAGE_sane-daemon is not set +# CONFIG_PACKAGE_sane-frontends is not set +# CONFIG_PACKAGE_secilc is not set +# CONFIG_PACKAGE_sed is not set +# CONFIG_PACKAGE_selinux-audit2allow is not set +# CONFIG_PACKAGE_selinux-chcat is not set +# CONFIG_PACKAGE_selinux-semanage is not set +# CONFIG_PACKAGE_semodule-utils is not set +# CONFIG_PACKAGE_setools is not set +# CONFIG_PACKAGE_setserial is not set +# CONFIG_PACKAGE_shadow-utils is not set +# CONFIG_PACKAGE_sipcalc is not set +# CONFIG_PACKAGE_sispmctl is not set +# CONFIG_PACKAGE_slide-switch is not set +# CONFIG_PACKAGE_smartd is not set +# CONFIG_PACKAGE_smartd-mail is not set +# CONFIG_PACKAGE_smartmontools is not set +# CONFIG_PACKAGE_smartmontools-drivedb is not set +# CONFIG_PACKAGE_smstools3 is not set +# CONFIG_PACKAGE_sockread is not set +# CONFIG_PACKAGE_spi-tools is not set +# CONFIG_PACKAGE_spidev-test is not set +# CONFIG_PACKAGE_ssdeep is not set +# CONFIG_PACKAGE_sshpass is not set +# CONFIG_PACKAGE_strace is not set +CONFIG_STRACE_NONE=y +# CONFIG_STRACE_LIBDW is not set +# CONFIG_STRACE_LIBUNWIND is not set +# CONFIG_PACKAGE_stress is not set +# CONFIG_PACKAGE_stress-ng is not set +# CONFIG_PACKAGE_sumo is not set +# CONFIG_PACKAGE_syncthing is not set +# CONFIG_PACKAGE_sysrepo is not set +# CONFIG_PACKAGE_sysrepocfg is not set +# CONFIG_PACKAGE_sysrepoctl is not set +# CONFIG_PACKAGE_sysstat is not set +# CONFIG_PACKAGE_tar is not set +# CONFIG_PACKAGE_taskwarrior is not set +# CONFIG_PACKAGE_telldus-core is not set +# CONFIG_PACKAGE_temperusb is not set +# CONFIG_PACKAGE_tesseract is not set +# CONFIG_PACKAGE_tini is not set +# CONFIG_PACKAGE_tracertools is not set +# CONFIG_PACKAGE_tree is not set +# CONFIG_PACKAGE_triggerhappy is not set +CONFIG_PACKAGE_ubi-utils=y +# CONFIG_PACKAGE_udns-dnsget is not set +# CONFIG_PACKAGE_udns-ex-rdns is not set +# CONFIG_PACKAGE_udns-rblcheck is not set +# CONFIG_PACKAGE_ugps is not set +# CONFIG_PACKAGE_uhubctl is not set +# CONFIG_PACKAGE_uledd is not set +# CONFIG_PACKAGE_unshare is not set +CONFIG_PACKAGE_usb-modeswitch=y +# CONFIG_PACKAGE_usbids is not set +# CONFIG_PACKAGE_usbutils is not set +# CONFIG_PACKAGE_uuidd is not set +# CONFIG_PACKAGE_uuidgen is not set +# CONFIG_PACKAGE_uvcdynctrl is not set +# CONFIG_PACKAGE_v4l-utils is not set +# CONFIG_PACKAGE_view1090 is not set +# CONFIG_PACKAGE_viewadsb is not set +# CONFIG_PACKAGE_watchcat is not set +# CONFIG_PACKAGE_whereis is not set +# CONFIG_PACKAGE_which is not set +# CONFIG_PACKAGE_whiptail is not set +CONFIG_PACKAGE_whois=y +# CONFIG_PACKAGE_wifitoggle is not set +# CONFIG_PACKAGE_wipe is not set +# CONFIG_PACKAGE_xsltproc is not set +# CONFIG_PACKAGE_xxd is not set +# CONFIG_PACKAGE_yanglint is not set +# CONFIG_PACKAGE_yara is not set +# CONFIG_PACKAGE_ykclient is not set +# CONFIG_PACKAGE_ykpers is not set +# CONFIG_PACKAGE_yq is not set +# end of Utilities + +# +# Xorg +# + +# +# Font-Utils +# +# CONFIG_PACKAGE_fontconfig is not set +# end of Font-Utils +# end of Xorg + +CONFIG_OVERRIDE_PKGS="6in4 cryptodev-linux" diff --git a/config-nanopi_neo b/config-nanopi_neo new file mode 100644 index 00000000..109c6682 --- /dev/null +++ b/config-nanopi_neo @@ -0,0 +1,71 @@ +CONFIG_MODULES=y +CONFIG_HAVE_DOT_CONFIG=y +CONFIG_TARGET_sunxi=y +CONFIG_TARGET_sunxi_cortexa7=y +CONFIG_TARGET_sunxi_cortexa7_DEVICE_friendlyarm_nanopi-neo=y +CONFIG_PACKAGE_kmod-6lowpan=y +CONFIG_HAS_SUBTARGETS=y +CONFIG_HAS_DEVICES=y +CONFIG_TARGET_BOARD="sunxi" +CONFIG_TARGET_SUBTARGET="cortexa7" +CONFIG_TARGET_PROFILE="DEVICE_friendlyarm_nanopi-neo" +CONFIG_TARGET_ARCH_PACKAGES="arm_cortex-a7_neon-vfpv4" +CONFIG_DEFAULT_TARGET_OPTIMIZATION="-Os -pipe" +CONFIG_CPU_TYPE="cortex-a7+neon-vfpv4" +CONFIG_LINUX_5_4=y +CONFIG_DEFAULT_base-files=y +CONFIG_DEFAULT_busybox=y +CONFIG_DEFAULT_ca-bundle=y +CONFIG_DEFAULT_dnsmasq=y +CONFIG_DEFAULT_dropbear=y +CONFIG_DEFAULT_e2fsprogs=y +CONFIG_DEFAULT_firewall=y +CONFIG_DEFAULT_fstools=y +CONFIG_DEFAULT_ip6tables=y +CONFIG_DEFAULT_iptables=y +CONFIG_DEFAULT_kmod-ipt-offload=y +CONFIG_DEFAULT_libc=y +CONFIG_DEFAULT_libgcc=y +CONFIG_DEFAULT_libustream-wolfssl=y +CONFIG_DEFAULT_logd=y +CONFIG_DEFAULT_mkf2fs=y +CONFIG_DEFAULT_mtd=y +CONFIG_DEFAULT_netifd=y +CONFIG_DEFAULT_odhcp6c=y +CONFIG_DEFAULT_odhcpd-ipv6only=y +CONFIG_DEFAULT_opkg=y +CONFIG_DEFAULT_partx-utils=y +CONFIG_DEFAULT_ppp=y +CONFIG_DEFAULT_ppp-mod-pppoe=y +CONFIG_DEFAULT_uboot-envtools=y +CONFIG_DEFAULT_uci=y +CONFIG_DEFAULT_uclient-fetch=y +CONFIG_DEFAULT_urandom-seed=y +CONFIG_DEFAULT_urngd=y +CONFIG_HAS_FPU=y +CONFIG_AUDIO_SUPPORT=y +CONFIG_GPIO_SUPPORT=y +CONFIG_USB_SUPPORT=y +CONFIG_RTC_SUPPORT=y +CONFIG_USES_DEVICETREE=y +CONFIG_USES_SQUASHFS=y +CONFIG_USES_EXT4=y +CONFIG_arm=y +CONFIG_arm_v7=y +CONFIG_ARCH="arm" +CONFIG_KERNEL_ARM_MODULE_PLTS=y +# CONFIG_PACKAGE_libustream-wolfssl is not set +CONFIG_KERNEL_DEVMEM=y +CONFIG_KERNEL_DEVKMEM=y +# CONFIG_PACKAGE_luci-theme-argon=y +CONFIG_PACKAGE_luci-theme-bootstrap=y +CONFIG_PACKAGE_luci-theme-openwrt-2020=y +# CONFIG_PACKAGE_luci-theme-argon is not set +CONFIG_PACKAGE_luci-app-status=m +CONFIG_PACKAGE_luci-mod-status=y +CONFIG_PACKAGE_frpc=y +CONFIG_PACKAGE_rtty-nossl=y +CONFIG_PACKAGE_minicom=y +CONFIG_PACKAGE_irqbalance=y +CONFIG_PACKAGE_mtr=y +CONFIG_KERNEL_ARM_MODULE_PLTS=y \ No newline at end of file diff --git a/config-p2w_r619ac b/config-p2w_r619ac new file mode 100644 index 00000000..3ce74bfc --- /dev/null +++ b/config-p2w_r619ac @@ -0,0 +1,13 @@ +CONFIG_TARGET_ipq40xx=y +CONFIG_TARGET_ipq40xx_generic=y +CONFIG_TARGET_ipq40xx_generic_DEVICE_p2w_r619ac-128m=y +CONFIG_PACKAGE_kmod-6lowpan=y +# CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set +CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_PACKAGE_ipq-wifi-p2w_r619ac=y +CONFIG_DEFAULT_ath10k-firmware-qca4019-ct=y +CONFIG_DEFAULT_kmod-ath10k-ct=y +CONFIG_PACKAGE_kmod-ath10k-ct=y +CONFIG_ATH10K-CT_LEDS=y +CONFIG_PACKAGE_ath10k-firmware-qca4019-ct=y +CONFIG_KERNEL_ARM_MODULE_PLTS=y diff --git a/config-r2s b/config-r2s new file mode 100644 index 00000000..292f4db5 --- /dev/null +++ b/config-r2s @@ -0,0 +1,13 @@ +CONFIG_TARGET_rockchip=y +CONFIG_TARGET_rockchip_armv8=y +CONFIG_TARGET_rockchip_armv8_DEVICE_friendlyarm_nanopi-r2s=y +CONFIG_PACKAGE_kmod-6lowpan=y +CONFIG_KERNEL_ARM_MODULE_PLTS=y +CONFIG_KERNEL_TCP_CONG_BBR2=y +CONFIG_CRYPTO_HW=y +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_SHA1_ARM_CE=y +CONFIG_CRYPTO_SHA2_ARM_CE=y +CONFIG_CRYPTO_GHASH_ARM_CE=y +CONFIG_CRYPTO_AES_ARM=y +CONFIG_CRYPTO_AES_ARM_CE=y diff --git a/config-r4s b/config-r4s new file mode 100644 index 00000000..5d235497 --- /dev/null +++ b/config-r4s @@ -0,0 +1,13 @@ +CONFIG_TARGET_rockchip=y +CONFIG_TARGET_rockchip_armv8=y +CONFIG_TARGET_rockchip_armv8_DEVICE_friendlyarm_nanopi-r4s=y +CONFIG_PACKAGE_kmod-6lowpan=y +CONFIG_KERNEL_ARM_MODULE_PLTS=y +CONFIG_KERNEL_TCP_CONG_BBR2=y +CONFIG_CRYPTO_HW=y +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_SHA1_ARM_CE=y +CONFIG_CRYPTO_SHA2_ARM_CE=y +CONFIG_CRYPTO_GHASH_ARM_CE=y +CONFIG_CRYPTO_AES_ARM=y +CONFIG_CRYPTO_AES_ARM_CE=y diff --git a/config-r7800 b/config-r7800 new file mode 100644 index 00000000..bfb3ca43 --- /dev/null +++ b/config-r7800 @@ -0,0 +1,12 @@ +CONFIG_TARGET_ipq806x=y +CONFIG_TARGET_ipq806x_generic=y +CONFIG_PACKAGE_kmod-6lowpan=y +CONFIG_KERNEL_ARM_MODULE_PLTS=y +CONFIG_KERNEL_TCP_CONG_BBR2=y +CONFIG_CRYPTO_HW=y +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_SHA1_ARM_CE=y +CONFIG_CRYPTO_SHA2_ARM_CE=y +CONFIG_CRYPTO_GHASH_ARM_CE=y +CONFIG_CRYPTO_AES_ARM=y +CONFIG_CRYPTO_AES_ARM_CE=y diff --git a/config-rpi2 b/config-rpi2 new file mode 100644 index 00000000..aa976b33 --- /dev/null +++ b/config-rpi2 @@ -0,0 +1,8 @@ +CONFIG_TARGET_bcm27xx=y +CONFIG_TARGET_bcm27xx_bcm2709=y +CONFIG_TARGET_bcm27xx_bcm2709_DEVICE_rpi-2=y +CONFIG_PACKAGE_kmod-ath10k-ct=n +CONFIG_PACKAGE_kmod-ath9k=y +CONFIG_PACKAGE_bcm27xx-eeprom=y +CONFIG_PACKAGE_bcm27xx-userland=y +CONFIG_KERNEL_ARM_MODULE_PLTS=y diff --git a/config-rpi3 b/config-rpi3 new file mode 100644 index 00000000..70db978f --- /dev/null +++ b/config-rpi3 @@ -0,0 +1,7 @@ +CONFIG_TARGET_bcm27xx=y +CONFIG_TARGET_bcm27xx_bcm2710=y +CONFIG_TARGET_bcm27xx_bcm2710_DEVICE_rpi-3=y +CONFIG_PACKAGE_kmod-ath10k-ct=n +CONFIG_PACKAGE_kmod-ath9k=y +CONFIG_KERNEL_ARM_MODULE_PLTS=y +CONFIG_KERNEL_TCP_CONG_BBR2=y diff --git a/config-rpi4 b/config-rpi4 new file mode 100644 index 00000000..c2840279 --- /dev/null +++ b/config-rpi4 @@ -0,0 +1,9 @@ +CONFIG_TARGET_bcm27xx=y +CONFIG_TARGET_bcm27xx_bcm2711=y +CONFIG_TARGET_bcm27xx_bcm2711_DEVICE_rpi-4=y +CONFIG_PACKAGE_kmod-ath10k-ct=n +CONFIG_PACKAGE_kmod-ath9k=y +CONFIG_PACKAGE_bcm27xx-eeprom=y +CONFIG_PACKAGE_bcm27xx-userland=y +CONFIG_KERNEL_ARM64_MODULE_PLTS=y +CONFIG_KERNEL_TCP_CONG_BBR2=y diff --git a/config-ubnt-erx b/config-ubnt-erx new file mode 100644 index 00000000..1ef587df --- /dev/null +++ b/config-ubnt-erx @@ -0,0 +1,7 @@ +CONFIG_TARGET_ramips=y +CONFIG_TARGET_ramips_mt7621=y +CONFIG_TARGET_ramips_mt7621_DEVICE_ubnt_edgerouter-x=y +CONFIG_PACKAGE_kmod-6lowpan=y +# CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set +CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_KERNEL_GPIO_SYSFS=y diff --git a/config-wrt3200acm b/config-wrt3200acm new file mode 100644 index 00000000..1b146609 --- /dev/null +++ b/config-wrt3200acm @@ -0,0 +1,8 @@ +CONFIG_TARGET_mvebu=y +CONFIG_TARGET_mvebu_cortexa9=y +CONFIG_TARGET_mvebu_cortexa9_DEVICE_linksys_wrt3200acm=y +CONFIG_PACKAGE_kmod-6lowpan=y +CONFIG_PACKAGE_luci-app-advanced-reboot=y +# CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set +CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_KERNEL_ARM_MODULE_PLTS=y diff --git a/config-wrt32x b/config-wrt32x new file mode 100644 index 00000000..f362f397 --- /dev/null +++ b/config-wrt32x @@ -0,0 +1,8 @@ +CONFIG_TARGET_mvebu=y +CONFIG_TARGET_mvebu_cortexa9=y +CONFIG_TARGET_mvebu_cortexa9_DEVICE_linksys_wrt32x=y +CONFIG_PACKAGE_kmod-6lowpan=y +CONFIG_PACKAGE_luci-app-advanced-reboot=y +# CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set +CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_KERNEL_ARM_MODULE_PLTS=y diff --git a/config-x86 b/config-x86 new file mode 100644 index 00000000..fe6382d3 --- /dev/null +++ b/config-x86 @@ -0,0 +1,7 @@ +CONFIG_TARGET_x86=y +CONFIG_TARGET_x86_generic=y +CONFIG_TARGET_x86_generic_Generic=y +CONFIG_TARGET_EXT4_JOURNAL=y +# CONFIG_TARGET_ROOTFS_TARGZ is not set +CONFIG_PACKAGE_open-vm-tools=m +CONFIG_PACKAGE_kmod-ath9k=y diff --git a/config-x86_64 b/config-x86_64 new file mode 100644 index 00000000..cfaf96de --- /dev/null +++ b/config-x86_64 @@ -0,0 +1,14 @@ +CONFIG_TARGET_x86=y +CONFIG_TARGET_x86_64=y +CONFIG_TARGET_x86_64_Generic=y +CONFIG_TARGET_EXT4_JOURNAL=y +CONFIG_TARGET_ROOTFS_TARGZ=y +CONFIG_KERNEL_PAGE_TABLE_ISOLATION=y +CONFIG_PACKAGE_open-vm-tools=m +CONFIG_PACKAGE_kmod-ath9k=y +CONFIG_GRUB_IMAGES=y +CONFIG_GRUB_SERIAL="ttyS0" +CONFIG_EFI_IMAGES=y +# CONFIG_VMDK_IMAGES is not set +CONFIG_KERNEL_TCP_CONG_BBR2=y +CONFIG_CRYPTO_AES_NI_INTEL=y diff --git a/contributors/example.md b/contributors/example.md new file mode 100644 index 00000000..654879dc --- /dev/null +++ b/contributors/example.md @@ -0,0 +1,9 @@ +2018-05-19 + +I hereby agree to the terms of the "OpenMPTCProuter Individual Contributor License Agreement", with MD5 checksum bc827a07eb93611d793ddb7c75083c00. + +I furthermore declare that I am authorized and able to make this agreement and sign this declaration. + +Signed, + +John Doe https://github.com/johndoe diff --git a/deploy_rsa.enc b/deploy_rsa.enc new file mode 100644 index 00000000..313c0992 Binary files /dev/null and b/deploy_rsa.enc differ diff --git a/patches/bbr2.patch b/patches/bbr2.patch new file mode 100644 index 00000000..b1d89c96 --- /dev/null +++ b/patches/bbr2.patch @@ -0,0 +1,27 @@ +--- a/package/kernel/linux/modules/netsupport.mk 2020-11-22 17:39:14.462349527 +0100 ++++ b/package/kernel/linux/modules/netsupport.mk 2020-11-22 17:41:37.719620332 +0100 +@@ -948,6 +948,24 @@ + + $(eval $(call KernelPackage,tcp-bbr)) + ++define KernelPackage/tcp-bbr2 ++ SUBMENU:=$(NETWORK_SUPPORT_MENU) ++ TITLE:=BBRv2 TCP congestion control ++ KCONFIG:= \ ++ CONFIG_TCP_CONG_ADVANCED=y \ ++ CONFIG_TCP_CONG_BBR2 ++ FILES:=$(LINUX_DIR)/net/ipv4/tcp_bbr2.ko ++ AUTOLOAD:=$(call AutoLoad,74,tcp_bbr2) ++endef ++ ++define KernelPackage/tcp-bbr2/description ++ Kernel module for BBRv2 (Bottleneck Bandwidth and RTT) TCP congestion ++ control. It requires the fq ("Fair Queue") pacing packet scheduler. ++ For kernel 4.13+, TCP internal pacing is implemented as fallback. ++endef ++ ++$(eval $(call KernelPackage,tcp-bbr2)) ++ + define KernelPackage/tcp-nanqinlang + SUBMENU:=$(NETWORK_SUPPORT_MENU) + TITLE:=BBR NANQINLANG TCP congestion control diff --git a/patches/check-rsync.patch b/patches/check-rsync.patch new file mode 100644 index 00000000..d74a4b6a --- /dev/null +++ b/patches/check-rsync.patch @@ -0,0 +1,14 @@ +diff --git a/include/prereq-build.mk b/include/prereq-build.mk +index e7314b253b58..5045fabdfbde 100644 +--- a/include/prereq-build.mk ++++ b/include/prereq-build.mk +@@ -170,9 +170,6 @@ $(eval $(call SetupHostCommand,git,Please install Git (git-core) >= 1.7.12.2, \ + $(eval $(call SetupHostCommand,file,Please install the 'file' package, \ + file --version 2>&1 | grep file)) + +-$(eval $(call SetupHostCommand,rsync,Please install 'rsync', \ +- rsync --version &1 | tee $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2).txt) + diff --git a/patches/images.patch b/patches/images.patch new file mode 100644 index 00000000..392145d8 --- /dev/null +++ b/patches/images.patch @@ -0,0 +1,42 @@ +--- a/config/Config-images.in.orig 2019-05-28 14:40:45.246749741 +0200 ++++ b/config/Config-images.in 2019-05-28 14:41:14.866378695 +0200 +@@ -251,6 +251,13 @@ + select TARGET_IMAGES_PAD + select PACKAGE_kmod-e1000 + ++ config VHDX_IMAGES ++ bool "Build Hyper-V image files (VHDX)" ++ depends on TARGET_x86 ++ select GRUB_IMAGES ++ select TARGET_IMAGES_PAD ++ select PACKAGE_kmod-e1000 ++ + config TARGET_IMAGES_PAD + bool "Pad images to filesystem size (for JFFS2)" + depends on GRUB_IMAGES +--- a/target/linux/x86/image/Makefile.orig 2019-06-03 14:32:39.094356089 +0200 ++++ b/target/linux/x86/image/Makefile 2019-06-03 19:04:23.875965073 +0200 +@@ -143,6 +143,15 @@ + endef + endif + ++ifneq ($(CONFIG_VHDX_IMAGES),) ++ define Image/Build/vhdx ++ rm $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).vhdx || true ++ qemu-img convert -f raw -O vhdx \ ++ $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).img \ ++ $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).vhdx ++ endef ++endif ++ + define Image/Build/gzip + gzip -f9n $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).img + gzip -f9n $(BIN_DIR)/$(IMG_PREFIX)-rootfs-$(1).img +@@ -175,6 +184,7 @@ + $(call Image/Build/grub2,$(1)) + $(call Image/Build/vdi,$(1)) + $(call Image/Build/vmdk,$(1)) ++ $(call Image/Build/vhdx,$(1)) + $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-rootfs-$(1).img + else + $(CP) $(KDIR)/root.iso $(BIN_DIR)/$(IMG_PREFIX).iso diff --git a/patches/ipt-nat6.patch b/patches/ipt-nat6.patch new file mode 100644 index 00000000..f3006a91 --- /dev/null +++ b/patches/ipt-nat6.patch @@ -0,0 +1,14 @@ +--- a/package/kernel/linux/modules/netfilter.mk 2020-03-20 15:41:58.620893747 +0100 ++++ b/package/kernel/linux/modules/netfilter.mk 2020-03-20 15:45:34.389015301 +0100 +@@ -483,8 +483,10 @@ + define KernelPackage/ipt-nat6 + TITLE:=IPv6 NAT targets + DEPENDS:=@IPV6 + KCONFIG:=$(KCONFIG_IPT_NAT6) +- FILES:=$(foreach mod,$(IPT_NAT6-m),$(LINUX_DIR)/net/$(mod).ko) ++ FILES:= \ ++ $(LINUX_DIR)/net/ipv6/netfilter/ip6t_NPT.ko \ ++ $(LINUX_DIR)/net/ipv6/netfilter/ip6table_nat.ko + AUTOLOAD:=$(call AutoLoad,43,$(notdir $(IPT_NAT6-m))) + $(call AddDepends/ipt,+kmod-nf-nat6) + $(call AddDepends/ipt,+kmod-ipt-conntrack) diff --git a/patches/luci-occitan.patch b/patches/luci-occitan.patch new file mode 100644 index 00000000..8d3355e2 --- /dev/null +++ b/patches/luci-occitan.patch @@ -0,0 +1,10 @@ +--- a/feeds/luci/luci.mk 2020-10-13 09:58:19.887513368 +0200 ++++ b/feeds/luci/luci.mk 2020-10-13 09:04:51.724277184 +0200 +@@ -34,6 +34,7 @@ + LUCI_LANG.ms=Bahasa Melayu (Malay) + LUCI_LANG.nb_NO=Norsk (Norwegian) + LUCI_LANG.nl=Nederlands (Dutch) ++LUCI_LANG.oc=Occitan + LUCI_LANG.pl=Polski (Polish) + LUCI_LANG.pt_BR=Português do Brasil (Brazilian Portuguese) + LUCI_LANG.pt=Português (Portuguese) diff --git a/patches/nanqinlang.patch b/patches/nanqinlang.patch new file mode 100644 index 00000000..9cc3fc3d --- /dev/null +++ b/patches/nanqinlang.patch @@ -0,0 +1,28 @@ +--- a/package/kernel/linux/modules/netsupport.mk 2019-12-18 18:31:28.865626571 +0100 ++++ b/package/kernel/linux/modules/netsupport.mk 2019-12-18 18:33:31.175524777 +0100 +@@ -962,6 +962,25 @@ + + $(eval $(call KernelPackage,tcp-bbr)) + ++define KernelPackage/tcp-nanqinlang ++ SUBMENU:=$(NETWORK_SUPPORT_MENU) ++ TITLE:=BBR NANQINLANG TCP congestion control ++ DEPENDS:=+LINUX_4_9:kmod-sched ++ KCONFIG:= \ ++ CONFIG_TCP_CONG_ADVANCED=y \ ++ CONFIG_TCP_CONG_NANQINLANG ++ FILES:=$(LINUX_DIR)/net/ipv4/tcp_nanqinlang.ko ++ AUTOLOAD:=$(call AutoLoad,74,tcp_nanqinlang) ++endef ++ ++define KernelPackage/tcp-nanqinlang/description ++ Kernel module for BBR (Bottleneck Bandwidth and RTT) TCP congestion ++ control. It requires the fq ("Fair Queue") pacing packet scheduler. ++ For kernel 4.13+, TCP internal pacing is implemented as fallback. ++endef ++ ++$(eval $(call KernelPackage,tcp-nanqinlang)) ++ + + define KernelPackage/ax25 + SUBMENU:=$(NETWORK_SUPPORT_MENU) diff --git a/patches/nocheck.patch b/patches/nocheck.patch new file mode 100644 index 00000000..e4290aab --- /dev/null +++ b/patches/nocheck.patch @@ -0,0 +1,10 @@ +--- a/include/package-ipkg.mk.1 2019-06-02 10:10:48.814882668 +0200 ++++ b/include/package-ipkg.mk 2019-06-02 10:08:20.372736726 +0200 +@@ -79,7 +79,6 @@ + if [ -f "$(PKG_INFO_DIR)/$(1).missing" ]; then \ + echo "Package $(1) is missing dependencies for the following libraries:" >&2; \ + cat "$(PKG_INFO_DIR)/$(1).missing" >&2; \ +- false; \ + fi; \ + ) + endef diff --git a/patches/package-too-long.patch b/patches/package-too-long.patch new file mode 100644 index 00000000..00d7afce --- /dev/null +++ b/patches/package-too-long.patch @@ -0,0 +1,11 @@ +--- a/package/Makefile 2020-04-04 15:52:15.706831084 +0200 ++++ b/package/Makefile 2020-04-04 15:53:54.645052663 +0200 +@@ -66,7 +66,7 @@ + rm -rf $(TARGET_DIR) $(TARGET_DIR_ORIG) + mkdir -p $(TARGET_DIR)/tmp + $(call opkg,$(TARGET_DIR)) install \ +- $(call opkg_package_files,$(foreach pkg,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null),$(pkg)$(call GetABISuffix,$(pkg)))) ++ $(subst $(TOPDIR)/,,$(call opkg_package_files,$(foreach pkg,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null),$(pkg)$(call GetABISuffix,$(pkg))))) + @for file in $(PACKAGE_INSTALL_FILES); do \ + [ -s $$file.flags ] || continue; \ + for flag in `cat $$file.flags`; do \ diff --git a/patches/remove_abi.patch b/patches/remove_abi.patch new file mode 100644 index 00000000..c97a9066 --- /dev/null +++ b/patches/remove_abi.patch @@ -0,0 +1,37 @@ +--- a/package/libs/libubox/Makefile 2021-02-17 14:45:19.981073050 +0100 ++++ b/package/libs/libubox/Makefile 2021-02-17 14:45:57.232466168 +0100 +@@ -73,12 +73,12 @@ + + define Package/libubox/install + $(INSTALL_DIR) $(1)/lib/ +- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libubox.so.* $(1)/lib/ ++ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libubox.so $(1)/lib/ + endef + + define Package/libblobmsg-json/install + $(INSTALL_DIR) $(1)/lib/ +- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libblobmsg_json.so.* $(1)/lib/ ++ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libblobmsg_json.so $(1)/lib/ + endef + + define Package/jshn/install +@@ -89,7 +89,7 @@ + + define Package/libjson-script/install + $(INSTALL_DIR) $(1)/lib/ +- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libjson_script.so.* $(1)/lib/ ++ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libjson_script.so $(1)/lib/ + endef + + define Package/libubox-lua/install +--- a/package/system/ubus/Makefile 2021-02-17 15:16:34.450301703 +0100 ++++ b/package/system/ubus/Makefile 2021-02-17 15:16:55.289957767 +0100 +@@ -69,7 +69,7 @@ + + define Package/libubus/install + $(INSTALL_DIR) $(1)/lib +- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libubus.so.* $(1)/lib/ ++ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libubus.so $(1)/lib/ + endef + + define Package/libubus-lua/install diff --git a/patches/smsc75xx.patch b/patches/smsc75xx.patch new file mode 100644 index 00000000..e08dab97 --- /dev/null +++ b/patches/smsc75xx.patch @@ -0,0 +1,26 @@ +Index: package/kernel/linux/modules/usb.mk +=================================================================== +--- a/package/kernel/linux/modules/usb.mk (revisione 42462) ++++ b/package/kernel/linux/modules/usb.mk (copia locale) +@@ -1091,8 +1091,21 @@ + endef + + $(eval $(call KernelPackage,usb-net-smsc95xx)) ++ ++define KernelPackage/usb-net-smsc75xx ++ TITLE:=SMSC LAN75XX based USB 2.0 Gigabit ethernet devices ++ KCONFIG:=CONFIG_USB_NET_SMSC75XX ++ FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/smsc75xx.ko ++ AUTOLOAD:=$(call AutoProbe,smsc75xx) ++ $(call AddDepends/usb-net, +kmod-lib-crc16) ++endef + ++define KernelPackage/usb-net-smsc75xx/description ++ Kernel module for SMSC LAN75XX based devices ++endef + ++$(eval $(call KernelPackage,usb-net-smsc75xx)) ++ + define KernelPackage/usb-net-dm9601-ether + TITLE:=Support for DM9601 ethernet connections + KCONFIG:=CONFIG_USB_NET_DM9601 diff --git a/patches/uefi.patch b/patches/uefi.patch new file mode 100644 index 00000000..794d6578 --- /dev/null +++ b/patches/uefi.patch @@ -0,0 +1,1323 @@ +From 964f624954b5e4ea83a4f05a57d79a6af6836d13 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=E6=9D=8E=E5=9B=BD?= +Date: Thu, 4 Apr 2019 02:40:15 +0000 +Subject: [PATCH 1/8] firmware-utils: ptgen: add GPT support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Add GPT support to ptgen, so we can generate EFI bootable images. + +Introduced two options: + -g generate GPT partition table + -G GUID use GUID for disk and increase last bit for all partitions + +We drop The alternate partition table to reduce size, This may cause +problems when generate vmdk images or vdi images. We must pad enough +sectors when generate these images. + +Signed-off-by: 李国 +--- + tools/firmware-utils/Makefile | 2 +- + tools/firmware-utils/src/ptgen.c | 337 ++++++++++++++++++++++++++++--- + 2 files changed, 314 insertions(+), 25 deletions(-) + +diff --git a/tools/firmware-utils/Makefile b/tools/firmware-utils/Makefile +index 97c89eec279..561d6d868fe 100644 +--- a/tools/firmware-utils/Makefile ++++ b/tools/firmware-utils/Makefile +@@ -32,7 +32,7 @@ define Host/Compile + $(call cc,dgfirmware) + $(call cc,mksenaofw md5, -Wall --std=gnu99) + $(call cc,trx2usr) +- $(call cc,ptgen) ++ $(call cc,ptgen cyg_crc32) + $(call cc,srec2bin) + $(call cc,mkmylofw) + $(call cc,mkcsysimg) +diff --git a/tools/firmware-utils/src/ptgen.c b/tools/firmware-utils/src/ptgen.c +index 0192bb65e51..caee0f94190 100644 +--- a/tools/firmware-utils/src/ptgen.c ++++ b/tools/firmware-utils/src/ptgen.c +@@ -31,15 +31,62 @@ + #include + #include + #include ++#include ++#include "cyg_crc.h" + + #if __BYTE_ORDER == __BIG_ENDIAN ++#define cpu_to_le16(x) bswap_16(x) + #define cpu_to_le32(x) bswap_32(x) ++#define cpu_to_le64(x) bswap_64(x) + #elif __BYTE_ORDER == __LITTLE_ENDIAN ++#define cpu_to_le16(x) (x) + #define cpu_to_le32(x) (x) ++#define cpu_to_le64(x) (x) + #else + #error unknown endianness! + #endif + ++#define swap(a, b) \ ++ do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0) ++ ++#ifndef GUID_INIT ++typedef uuid_le guid_t; ++#define GUID_INIT(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7) \ ++ UUID_LE(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7) ++#endif ++ ++#define GUID_STRING_LENGTH 36 ++ ++#define GPT_SIGNATURE 0x5452415020494645ULL ++#define GPT_REVISION 0x00010000 ++ ++#define GUID_PARTITION_SYSTEM \ ++ GUID_INIT( 0xC12A7328, 0xF81F, 0x11d2, \ ++ 0xBA, 0x4B, 0x00, 0xA0, 0xC9, 0x3E, 0xC9, 0x3B) ++ ++#define GUID_PARTITION_BASIC_DATA \ ++ GUID_INIT( 0xEBD0A0A2, 0xB9E5, 0x4433, \ ++ 0x87, 0xC0, 0x68, 0xB6, 0xB7, 0x26, 0x99, 0xC7) ++ ++#define GUID_PARTITION_BIOS_BOOT \ ++ GUID_INIT( 0x21686148, 0x6449, 0x6E6F, \ ++ 0x74, 0x4E, 0x65, 0x65, 0x64, 0x45, 0x46, 0x49) ++ ++#define GPT_HEADER_SIZE 92 ++#define GPT_ENTRY_SIZE 128 ++#define GPT_ENTRY_MAX 128 ++#define GPT_ENTRY_NAME_SIZE 72 ++ ++#define GPT_HEADER_SECTOR 1 ++#define GPT_FIRST_ENTRY_SECTOR 2 ++ ++#define MBR_ENTRY_MAX 4 ++#define MBR_DISK_SIGNATURE_OFFSET 440 ++#define MBR_PARTITION_ENTRY_OFFSET 446 ++#define MBR_BOOT_SIGNATURE_OFFSET 510 ++ ++#define DISK_SECTOR_SIZE 512 ++ + /* Partition table entry */ + struct pte { + uint8_t active; +@@ -55,13 +102,43 @@ struct partinfo { + int type; + }; + ++/* GPT Partition table header */ ++struct gpth { ++ uint64_t signature; ++ uint32_t revision; ++ uint32_t size; ++ uint32_t crc32; ++ uint32_t reserved; ++ uint64_t self; ++ uint64_t alternate; ++ uint64_t first_usable; ++ uint64_t last_usable; ++ guid_t disk_guid; ++ uint64_t first_entry; ++ uint32_t entry_num; ++ uint32_t entry_size; ++ uint32_t entry_crc32; ++} __attribute__((packed)); ++ ++/* GPT Partition table entry */ ++struct gpte { ++ guid_t type; ++ guid_t guid; ++ uint64_t start; ++ uint64_t end; ++ uint64_t attr; ++ uint16_t name[GPT_ENTRY_NAME_SIZE / sizeof(uint16_t)]; ++} __attribute__((packed)); ++ ++ + int verbose = 0; + int active = 1; + int heads = -1; + int sectors = -1; + int kb_align = 0; + bool ignore_null_sized_partition = false; +-struct partinfo parts[4]; ++bool use_guid_partition_table = false; ++struct partinfo parts[GPT_ENTRY_MAX]; + char *filename = NULL; + + +@@ -91,7 +168,7 @@ static long to_kbytes(const char *string) + end++; + + if (*end) { +- fprintf(stderr, "garbage after end of number\n"); ++ fputs("garbage after end of number\n", stderr); + return 0; + } + +@@ -132,20 +209,73 @@ static inline unsigned long round_to_kb(long sect) { + return ((sect - 1) / kb_align + 1) * kb_align; + } + ++/* Compute a CRC for guid partition table */ ++static inline unsigned long gpt_crc32(void *buf, unsigned long len) ++{ ++ return cyg_crc32_accumulate(~0L, buf, len) ^ ~0L; ++} ++ ++/* Parse a guid string to guid_t struct */ ++static inline int guid_parse(char *buf, guid_t *guid) ++{ ++ char b[4] = {0}; ++ char *p = buf; ++ unsigned i = 0; ++ if (strnlen(buf, GUID_STRING_LENGTH) != GUID_STRING_LENGTH) ++ return -1; ++ for (i = 0; i < sizeof(guid_t); i++) { ++ if (*p == '-') ++ p++; ++ if (*p == '\0') ++ return -1; ++ memcpy(b, p, 2); ++ guid->b[i] = strtol(b, 0, 16); ++ p += 2; ++ } ++ swap(guid->b[0], guid->b[3]); ++ swap(guid->b[1], guid->b[2]); ++ swap(guid->b[4], guid->b[5]); ++ swap(guid->b[6], guid->b[7]); ++ return 0; ++} ++ ++/* init an utf-16 string from utf-8 string */ ++static inline void init_utf16(char *str, uint16_t *buf, unsigned bufsize) ++{ ++ unsigned i, n = 0; ++ for (i = 0; i < bufsize; i++) { ++ if (str[n] == 0x00) { ++ buf[i] = 0x00; ++ return ; ++ } else if ((str[n] & 0x80) == 0x00) {//0xxxxxxx ++ buf[i] = cpu_to_le16(str[n++]); ++ } else if ((str[n] & 0xE0) == 0xC0) {//110xxxxx ++ buf[i] = cpu_to_le16((str[n] & 0x1F) << 6 | str[n + 1] & 0x3F); ++ n += 2; ++ } else if ((str[n] & 0xF0) == 0xE0) {//1110xxxx ++ buf[i] = cpu_to_le16((str[n] & 0x0F) << 12 | (str[n + 1] & 0x3F) << 6 | str[n + 2] & 0x3F); ++ n += 3; ++ } else { ++ buf[i] = cpu_to_le16('?'); ++ n++; ++ } ++ } ++} ++ + /* check the partition sizes and write the partition table */ + static int gen_ptable(uint32_t signature, int nr) + { +- struct pte pte[4]; +- unsigned long sect = 0; +- int i, fd, ret = -1, start, len; ++ struct pte pte[MBR_ENTRY_MAX]; ++ unsigned long start, len, sect = 0; ++ int i, fd, ret = -1; + +- memset(pte, 0, sizeof(struct pte) * 4); ++ memset(pte, 0, sizeof(struct pte) * MBR_ENTRY_MAX); + for (i = 0; i < nr; i++) { + if (!parts[i].size) { + if (ignore_null_sized_partition) + continue; + fprintf(stderr, "Invalid size in partition %d!\n", i); +- return -1; ++ return ret; + } + + pte[i].active = ((i + 1) == active) ? 0x80 : 0; +@@ -165,30 +295,34 @@ static int gen_ptable(uint32_t signature, int nr) + to_chs(start + len - 1, pte[i].chs_end); + + if (verbose) +- fprintf(stderr, "Partition %d: start=%ld, end=%ld, size=%ld\n", i, (long)start * 512, ((long)start + (long)len) * 512, (long)len * 512); +- printf("%ld\n", (long)start * 512); +- printf("%ld\n", (long)len * 512); ++ fprintf(stderr, "Partition %d: start=%ld, end=%ld, size=%ld\n", ++ i, ++ (long)start * DISK_SECTOR_SIZE, ++ (long)(start + len) * DISK_SECTOR_SIZE, ++ (long)len * DISK_SECTOR_SIZE); ++ printf("%ld\n", (long)start * DISK_SECTOR_SIZE); ++ printf("%ld\n", (long)len * DISK_SECTOR_SIZE); + } + + if ((fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, 0644)) < 0) { + fprintf(stderr, "Can't open output file '%s'\n",filename); +- return -1; ++ return ret; + } + +- lseek(fd, 440, SEEK_SET); ++ lseek(fd, MBR_DISK_SIGNATURE_OFFSET, SEEK_SET); + if (write(fd, &signature, sizeof(signature)) != sizeof(signature)) { +- fprintf(stderr, "write failed.\n"); ++ fputs("write failed.\n", stderr); + goto fail; + } + +- lseek(fd, 446, SEEK_SET); +- if (write(fd, pte, sizeof(struct pte) * 4) != sizeof(struct pte) * 4) { +- fprintf(stderr, "write failed.\n"); ++ lseek(fd, MBR_PARTITION_ENTRY_OFFSET, SEEK_SET); ++ if (write(fd, pte, sizeof(struct pte) * MBR_ENTRY_MAX) != sizeof(struct pte) * MBR_ENTRY_MAX) { ++ fputs("write failed.\n", stderr); + goto fail; + } +- lseek(fd, 510, SEEK_SET); ++ lseek(fd, MBR_BOOT_SIGNATURE_OFFSET, SEEK_SET); + if (write(fd, "\x55\xaa", 2) != 2) { +- fprintf(stderr, "write failed.\n"); ++ fputs("write failed.\n", stderr); + goto fail; + } + +@@ -198,20 +332,162 @@ static int gen_ptable(uint32_t signature, int nr) + return ret; + } + ++/* check the partition sizes and write the guid partition table */ ++static int gen_gptable(uint32_t signature, guid_t guid, unsigned nr) ++{ ++ struct pte pte; ++ struct gpth gpth = { ++ .signature = cpu_to_le64(GPT_SIGNATURE), ++ .revision = cpu_to_le32(GPT_REVISION), ++ .size = cpu_to_le32(GPT_HEADER_SIZE), ++ .self = cpu_to_le64(GPT_HEADER_SECTOR), ++ .first_usable = cpu_to_le64(GPT_FIRST_ENTRY_SECTOR + GPT_ENTRY_SIZE * GPT_ENTRY_MAX / DISK_SECTOR_SIZE), ++ .first_entry = cpu_to_le64(GPT_FIRST_ENTRY_SECTOR), ++ .disk_guid = guid, ++ .entry_num = cpu_to_le32(GPT_ENTRY_MAX), ++ .entry_size = cpu_to_le32(GPT_ENTRY_SIZE), ++ }; ++ struct gpte gpte[GPT_ENTRY_MAX]; ++ uint64_t start, end, sect = 0; ++ int fd, ret = -1; ++ unsigned i; ++ ++ memset(gpte, 0, GPT_ENTRY_SIZE * GPT_ENTRY_MAX); ++ for (i = 0; i < nr; i++) { ++ if (!parts[i].size) { ++ if (ignore_null_sized_partition) ++ continue; ++ fprintf(stderr, "Invalid size in partition %d!\n", i); ++ return ret; ++ } ++ start = sect + sectors; ++ if (kb_align != 0) ++ start = round_to_kb(start); ++ gpte[i].start = cpu_to_le64(start); ++ ++ sect = start + parts[i].size * 2; ++ if (kb_align == 0) ++ sect = round_to_cyl(sect); ++ gpte[i].end = cpu_to_le64(sect -1); ++ gpte[i].guid = guid; ++ gpte[i].guid.b[sizeof(guid_t) -1] += i + 1; ++ if (parts[i].type == 0xEF || (i + 1) == active) { ++ gpte[i].type = GUID_PARTITION_SYSTEM; ++ init_utf16("EFI System Partition", gpte[i].name, GPT_ENTRY_NAME_SIZE / sizeof(uint16_t)); ++ } else { ++ gpte[i].type = GUID_PARTITION_BASIC_DATA; ++ } ++ ++ if (verbose) ++ fprintf(stderr, "Partition %d: start=%lld, end=%lld, size=%lld\n", ++ i, ++ start * DISK_SECTOR_SIZE, sect * DISK_SECTOR_SIZE, ++ (sect - start) * DISK_SECTOR_SIZE); ++ printf("%lld\n", start * DISK_SECTOR_SIZE); ++ printf("%lld\n", (sect - start) * DISK_SECTOR_SIZE); ++ } ++ ++ gpte[GPT_ENTRY_MAX - 1].start = cpu_to_le64(GPT_FIRST_ENTRY_SECTOR + GPT_ENTRY_SIZE * GPT_ENTRY_MAX / DISK_SECTOR_SIZE); ++ gpte[GPT_ENTRY_MAX - 1].end = cpu_to_le64((kb_align ? round_to_kb(sectors) : sectors) - 1); ++ gpte[GPT_ENTRY_MAX - 1].type = GUID_PARTITION_BIOS_BOOT; ++ gpte[GPT_ENTRY_MAX - 1].guid = guid; ++ gpte[GPT_ENTRY_MAX - 1].guid.b[sizeof(guid_t) -1] += GPT_ENTRY_MAX; ++ ++ end = sect + sectors - 1; ++ ++ pte.type = 0xEE; ++ pte.start = cpu_to_le32(GPT_HEADER_SECTOR); ++ pte.length = cpu_to_le32(end); ++ to_chs(GPT_HEADER_SECTOR, pte.chs_start); ++ to_chs(end, pte.chs_end); ++ ++ gpth.last_usable = cpu_to_le64(end - GPT_ENTRY_SIZE * GPT_ENTRY_MAX / DISK_SECTOR_SIZE - 1); ++ gpth.alternate = cpu_to_le64(end); ++ gpth.entry_crc32 = cpu_to_le32(gpt_crc32(gpte, GPT_ENTRY_SIZE * GPT_ENTRY_MAX)); ++ gpth.crc32 = cpu_to_le32(gpt_crc32((char *)&gpth, GPT_HEADER_SIZE)); ++ ++ if ((fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, 0644)) < 0) { ++ fprintf(stderr, "Can't open output file '%s'\n",filename); ++ return ret; ++ } ++ ++ lseek(fd, MBR_DISK_SIGNATURE_OFFSET, SEEK_SET); ++ if (write(fd, &signature, sizeof(signature)) != sizeof(signature)) { ++ fputs("write failed.\n", stderr); ++ goto fail; ++ } ++ ++ lseek(fd, MBR_PARTITION_ENTRY_OFFSET, SEEK_SET); ++ if (write(fd, &pte, sizeof(struct pte)) != sizeof(struct pte)) { ++ fputs("write failed.\n", stderr); ++ goto fail; ++ } ++ ++ lseek(fd, MBR_BOOT_SIGNATURE_OFFSET, SEEK_SET); ++ if (write(fd, "\x55\xaa", 2) != 2) { ++ fputs("write failed.\n", stderr); ++ goto fail; ++ } ++ ++ //lseek(fd, GPT_HEADER_SECTOR * DISK_SECTOR_SIZE, SEEK_SET); ++ if (write(fd, &gpth, GPT_HEADER_SIZE) != GPT_HEADER_SIZE) { ++ fputs("write failed.\n", stderr); ++ goto fail; ++ } ++ ++ lseek(fd, GPT_FIRST_ENTRY_SECTOR * DISK_SECTOR_SIZE, SEEK_SET); ++ if (write(fd, &gpte, GPT_ENTRY_SIZE * GPT_ENTRY_MAX) != GPT_ENTRY_SIZE * GPT_ENTRY_MAX) { ++ fputs("write failed.\n", stderr); ++ goto fail; ++ } ++ ++#if 0 ++ /* The alternate partition table (We omit it) */ ++ swap(gpth.self, gpth.alternate); ++ gpth.first_entry = cpu_to_le64(end - GPT_ENTRY_SIZE * GPT_ENTRY_MAX / DISK_SECTOR_SIZE), ++ gpth.crc32 = 0; ++ gpth.crc32 = cpu_to_le32(gpt_crc32(&gpth, GPT_HEADER_SIZE)); ++ ++ lseek(fd, end * DISK_SECTOR_SIZE - GPT_ENTRY_SIZE * GPT_ENTRY_MAX, SEEK_SET); ++ if (write(fd, &gpte, GPT_ENTRY_SIZE * GPT_ENTRY_MAX) != GPT_ENTRY_SIZE * GPT_ENTRY_MAX) { ++ fputs("write failed.\n", stderr); ++ goto fail; ++ } ++ ++ lseek(fd, end * DISK_SECTOR_SIZE, SEEK_SET); ++ if (write(fd, &gpth, GPT_HEADER_SIZE) != GPT_HEADER_SIZE) { ++ fputs("write failed.\n", stderr); ++ goto fail; ++ } ++ lseek(fd, (end + 1) * DISK_SECTOR_SIZE -1, SEEK_SET); ++ if (write(fd, "\x00", 1) != 1) { ++ fputs("write failed.\n", stderr); ++ goto fail; ++ } ++#endif ++ ++ ret = 0; ++fail: ++ close(fd); ++ return ret; ++} ++ + static void usage(char *prog) + { +- fprintf(stderr, "Usage: %s [-v] [-n] -h -s -o [-a 0..4] [-l ] [[-t ] -p ...] \n", prog); ++ fprintf(stderr, "Usage: %s [-v] [-n] [-g] -h -s -o [-a 0..4] [-l ] [-G ] [[-t ] -p ...] \n", prog); + exit(EXIT_FAILURE); + } + + int main (int argc, char **argv) + { +- char type = 0x83; ++ unsigned char type = 0x83; + int ch; + int part = 0; + uint32_t signature = 0x5452574F; /* 'OWRT' */ ++ guid_t guid = GUID_INIT( signature, 0x2211, 0x4433, \ ++ 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0x00); + +- while ((ch = getopt(argc, argv, "h:s:p:a:t:o:vnl:S:")) != -1) { ++ while ((ch = getopt(argc, argv, "h:s:p:a:t:o:vngl:S:G:")) != -1) { + switch (ch) { + case 'o': + filename = optarg; +@@ -222,6 +498,9 @@ int main (int argc, char **argv) + case 'n': + ignore_null_sized_partition = true; + break; ++ case 'g': ++ use_guid_partition_table = 1; ++ break; + case 'h': + heads = (int)strtoul(optarg, NULL, 0); + break; +@@ -229,8 +508,8 @@ int main (int argc, char **argv) + sectors = (int)strtoul(optarg, NULL, 0); + break; + case 'p': +- if (part > 3) { +- fprintf(stderr, "Too many partitions\n"); ++ if (part > GPT_ENTRY_MAX - 1 || (!use_guid_partition_table && part > 3)) { ++ fputs("Too many partitions\n", stderr); + exit(EXIT_FAILURE); + } + parts[part].size = to_kbytes(optarg); +@@ -250,6 +529,12 @@ int main (int argc, char **argv) + case 'S': + signature = strtoul(optarg, NULL, 0); + break; ++ case 'G': ++ if (guid_parse(optarg, &guid)) { ++ fputs("Invalid guid string\n", stderr); ++ exit(EXIT_FAILURE); ++ } ++ break; + case '?': + default: + usage(argv[0]); +@@ -259,5 +544,9 @@ int main (int argc, char **argv) + if (argc || (heads <= 0) || (sectors <= 0) || !filename) + usage(argv[0]); + +- return gen_ptable(signature, part) ? EXIT_FAILURE : EXIT_SUCCESS; ++ if (use_guid_partition_table) { ++ return gen_gptable(signature, guid, part) ? EXIT_FAILURE : EXIT_SUCCESS; ++ } else { ++ return gen_ptable(signature, part) ? EXIT_FAILURE : EXIT_SUCCESS; ++ } + } + +From c634da575c221e6a340884219d78978f56f23976 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=E6=9D=8E=E5=9B=BD?= +Date: Thu, 4 Apr 2019 03:17:01 +0000 +Subject: [PATCH 2/8] grub2: split to grub2 and grub2-efi packages +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +EFI bootable images need grub2 host packages with efi platform, +but grub2 can not build efi platform and pc platform together, +so we split it to grub2 and grub2-efi packages. + +Signed-off-by: 李国 +--- + package/boot/grub2/common.mk | 54 +++++++++++++++++++++++++ + package/boot/grub2/grub2-efi/Makefile | 19 +++++++++ + package/boot/grub2/{ => grub2}/Makefile | 50 +---------------------- + 3 files changed, 75 insertions(+), 48 deletions(-) + create mode 100644 package/boot/grub2/common.mk + create mode 100644 package/boot/grub2/grub2-efi/Makefile + rename package/boot/grub2/{ => grub2}/Makefile (66%) + +diff --git a/package/boot/grub2/common.mk b/package/boot/grub2/common.mk +new file mode 100644 +index 00000000000..53ee26552f8 +--- /dev/null ++++ b/package/boot/grub2/common.mk +@@ -0,0 +1,54 @@ ++# ++# Copyright (C) 2006-2015 OpenWrt.org ++# ++# This is free software, licensed under the GNU General Public License v2. ++# See /LICENSE for more information. ++# ++ ++include $(TOPDIR)/rules.mk ++include $(INCLUDE_DIR)/kernel.mk ++ ++PKG_NAME:=grub ++PKG_CPE_ID:=cpe:/a:gnu:grub2 ++PKG_VERSION:=2.04 ++PKG_RELEASE:=2 ++ ++PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz ++PKG_SOURCE_URL:=@GNU/grub ++PKG_HASH:=e5292496995ad42dabe843a0192cf2a2c502e7ffcc7479398232b10a472df77d ++ ++HOST_BUILD_PARALLEL:=1 ++ ++PKG_SSP:=0 ++ ++PKG_FLAGS:=nonshared ++ ++PATCH_DIR:=../patches ++ ++HOST_BUILD_DIR ?= $(BUILD_DIR_HOST)/$(PKG_NAME)-$(GRUB_PLATFORM)/$(PKG_NAME)$(if $(PKG_VERSION),-$(PKG_VERSION)) ++HOST_BUILD_PREFIX := $(STAGING_DIR_HOST) ++ ++include $(INCLUDE_DIR)/host-build.mk ++include $(INCLUDE_DIR)/package.mk ++ ++ ++HOST_CONFIGURE_VARS += \ ++ grub_build_mkfont_excuse="don't want fonts" ++ ++HOST_CONFIGURE_ARGS += \ ++ --disable-grub-mkfont \ ++ --target=$(REAL_GNU_TARGET_NAME) \ ++ --sbindir="$(STAGING_DIR_HOST)/bin" \ ++ --disable-werror \ ++ --disable-libzfs \ ++ --disable-nls \ ++ --with-platform=$(GRUB_PLATFORM) ++ ++HOST_MAKE_FLAGS += \ ++ TARGET_RANLIB=$(TARGET_RANLIB) \ ++ LIBLZMA=$(STAGING_DIR_HOST)/lib/liblzma.a ++ ++define Host/Configure ++ $(SED) 's,(RANLIB),(TARGET_RANLIB),' $(HOST_BUILD_DIR)/grub-core/Makefile.in ++ $(Host/Configure/Default) ++endef +diff --git a/package/boot/grub2/grub2-efi/Makefile b/package/boot/grub2/grub2-efi/Makefile +new file mode 100644 +index 00000000000..2fc21fdb890 +--- /dev/null ++++ b/package/boot/grub2/grub2-efi/Makefile +@@ -0,0 +1,19 @@ ++GRUB_PLATFORM:=efi ++ ++PKG_BUILD_DEPENDS:=grub2-efi/host ++include ../common.mk ++ ++define Package/grub2-efi ++ CATEGORY:=Boot Loaders ++ SECTION:=boot ++ TITLE:=GRand Unified Bootloader(EFI) ++ URL:=http://www.gnu.org/software/grub/ ++ DEPENDS:=@TARGET_x86 ++endef ++ ++define Host/Install ++ $(call Host/Compile/Default,install-data) ++endef ++ ++$(eval $(call HostBuild)) ++$(eval $(call BuildPackage,grub2-efi)) +diff --git a/package/boot/grub2/Makefile b/package/boot/grub2/grub2/Makefile +similarity index 66% +rename from package/boot/grub2/Makefile +rename to package/boot/grub2/grub2/Makefile +index 980a6e372a3..7126beab4cf 100644 +--- a/package/boot/grub2/Makefile ++++ b/package/boot/grub2/grub2/Makefile +@@ -1,31 +1,7 @@ +-# +-# Copyright (C) 2006-2015 OpenWrt.org +-# +-# This is free software, licensed under the GNU General Public License v2. +-# See /LICENSE for more information. +-# ++GRUB_PLATFORM:=pc + +-include $(TOPDIR)/rules.mk +-include $(INCLUDE_DIR)/kernel.mk +- +-PKG_NAME:=grub +-PKG_CPE_ID:=cpe:/a:gnu:grub2 +-PKG_VERSION:=2.04 +-PKG_RELEASE:=1 +- +-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +-PKG_SOURCE_URL:=@GNU/grub +-PKG_HASH:=e5292496995ad42dabe843a0192cf2a2c502e7ffcc7479398232b10a472df77d +- +-HOST_BUILD_PARALLEL:=1 + PKG_BUILD_DEPENDS:=grub2/host +- +-PKG_SSP:=0 +- +-PKG_FLAGS:=nonshared +- +-include $(INCLUDE_DIR)/host-build.mk +-include $(INCLUDE_DIR)/package.mk ++include ../common.mk + + define Package/grub2 + CATEGORY:=Boot Loaders +@@ -48,8 +24,6 @@ define Package/grub2-editenv/description + Edit grub2 environment files. + endef + +-HOST_BUILD_PREFIX := $(STAGING_DIR_HOST) +- + CONFIGURE_VARS += \ + grub_build_mkfont_excuse="don't want fonts" + +@@ -62,26 +36,6 @@ CONFIGURE_ARGS += \ + --disable-grub-mkfont \ + --with-platform=none + +-HOST_CONFIGURE_VARS += \ +- grub_build_mkfont_excuse="don't want fonts" +- +-HOST_CONFIGURE_ARGS += \ +- --disable-grub-mkfont \ +- --target=$(REAL_GNU_TARGET_NAME) \ +- --sbindir="$(STAGING_DIR_HOST)/bin" \ +- --disable-werror \ +- --disable-libzfs \ +- --disable-nls +- +-HOST_MAKE_FLAGS += \ +- TARGET_RANLIB=$(TARGET_RANLIB) \ +- LIBLZMA=$(STAGING_DIR_HOST)/lib/liblzma.a +- +-define Host/Configure +- $(SED) 's,(RANLIB),(TARGET_RANLIB),' $(HOST_BUILD_DIR)/grub-core/Makefile.in +- $(Host/Configure/Default) +-endef +- + define Host/Install + $(call Host/Install/Default) + + +From 15212ac11ac95a57f75317fff83bb7d53b581a93 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=E6=9D=8E=E5=9B=BD?= +Date: Thu, 4 Apr 2019 03:42:16 +0000 +Subject: [PATCH 3/8] x86: add EFI images and make iso images EFI bootable +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Add EFI bootable images for x86 platforms. These images can also +boot from legacy BIOS. And iso images can boot from EFI now. + +EFI System Partition need to be fat12/fat16/fat32 (not need to load +filesystem drivers), so the first partition of EFI images are not ext4 +filesystem any more. + +GPT partition table has an alternate partition table, we did not +generate it. This may cause problems when use these images as qemu disk, +kernel can not find rootfs, we pad enough sectors will be ok. + +Signed-off-by: 李国 +--- + config/Config-images.in | 23 +++++++++++++------ + .../base-files/files/lib/upgrade/common.sh | 11 +++++++++ + scripts/gen_image_generic.sh | 10 ++++++-- + .../x86/base-files/lib/preinit/79_move_config | 6 +++-- + .../x86/base-files/lib/upgrade/platform.sh | 6 +++-- + target/linux/x86/generic/config-4.19 | 1 + + target/linux/x86/generic/config-5.4 | 1 + + target/linux/x86/image/Makefile | 3 +++ + target/linux/x86/image/grub-iso.cfg | 7 +++++- + 9 files changed, 54 insertions(+), 14 deletions(-) + +diff --git a/config/Config-images.in b/config/Config-images.in +index e4db0482ce2..16b575247ea 100644 +--- a/config/Config-images.in ++++ b/config/Config-images.in +@@ -188,19 +188,28 @@ menu "Target Images" + select PACKAGE_grub2 + default y + ++ config EFI_IMAGES ++ bool "Build EFI images (Linux x86 or x86_64 host only)" ++ depends on TARGET_x86 ++ depends on TARGET_ROOTFS_EXT4FS || TARGET_ROOTFS_ISO || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS ++ select PACKAGE_grub2 ++ select PACKAGE_grub2-efi ++ select PACKAGE_kmod-fs-vfat ++ default n ++ + config GRUB_CONSOLE + bool "Use Console Terminal (in addition to Serial)" +- depends on GRUB_IMAGES ++ depends on GRUB_IMAGES || EFI_IMAGES + default y + + config GRUB_SERIAL + string "Serial port device" +- depends on GRUB_IMAGES ++ depends on GRUB_IMAGES || EFI_IMAGES + default "ttyS0" + + config GRUB_BAUDRATE + int "Serial port baud rate" +- depends on GRUB_IMAGES ++ depends on GRUB_IMAGES || EFI_IMAGES + default 38400 if TARGET_x86_generic + default 115200 + +@@ -211,20 +220,20 @@ menu "Target Images" + + config GRUB_BOOTOPTS + string "Extra kernel boot options" +- depends on GRUB_IMAGES ++ depends on GRUB_IMAGES || EFI_IMAGES + help + If you don't know, just leave it blank. + + config GRUB_TIMEOUT + string "Seconds to wait before booting the default entry" +- depends on GRUB_IMAGES ++ depends on GRUB_IMAGES || EFI_IMAGES + default "5" + help + If you don't know, 5 seconds is a reasonable default. + + config GRUB_TITLE + string "Title for the menu entry in GRUB" +- depends on GRUB_IMAGES ++ depends on GRUB_IMAGES || EFI_IMAGES + default "OpenWrt" + help + This is the title of the GRUB menu entry. +@@ -272,7 +281,7 @@ menu "Target Images" + + config TARGET_ROOTFS_PARTNAME + string "Root partition on target device" +- depends on GRUB_IMAGES ++ depends on GRUB_IMAGES || EFI_IMAGES + help + Override the root partition on the final device. If left empty, + it will be mounted by PARTUUID which makes the kernel find the +diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh +index a986cc0b5c7..6e967aeffe8 100644 +--- a/package/base-files/files/lib/upgrade/common.sh ++++ b/package/base-files/files/lib/upgrade/common.sh +@@ -136,6 +136,17 @@ export_bootdevice() { + fi + done + ;; ++ PARTUUID=????????-????-????-????-??????????02) ++ uuid="${rootpart#PARTUUID=}" ++ uuid="${uuid%02}00" ++ for disk in $(find /dev -type b); do ++ set -- $(dd if=$disk bs=1 skip=568 count=16 2>/dev/null | hexdump -v -e '8/1 "%02x "" "2/1 "%02x""-"6/1 "%02x"') ++ if [ "$4$3$2$1-$6$5-$8$7-$9" = "$uuid" ]; then ++ uevent="/sys/class/block/${disk##*/}/uevent" ++ break ++ fi ++ done ++ ;; + /dev/*) + uevent="/sys/class/block/${rootpart##*/}/../uevent" + ;; +diff --git a/scripts/gen_image_generic.sh b/scripts/gen_image_generic.sh +index 2c57d56f073..1df4d0673b3 100755 +--- a/scripts/gen_image_generic.sh ++++ b/scripts/gen_image_generic.sh +@@ -20,7 +20,7 @@ sect=63 + cyl=$(( (KERNELSIZE + ROOTFSSIZE) * 1024 * 1024 / (head * sect * 512))) + + # create partition table +-set $(ptgen -o "$OUTPUT" -h $head -s $sect -p ${KERNELSIZE}m -p ${ROOTFSSIZE}m ${ALIGN:+-l $ALIGN} ${SIGNATURE:+-S 0x$SIGNATURE}) ++set $(ptgen -o "$OUTPUT" -h $head -s $sect ${EFI_SIGNATURE:+-g} -p ${KERNELSIZE}m -p ${ROOTFSSIZE}m ${ALIGN:+-l $ALIGN} ${SIGNATURE:+-S 0x$SIGNATURE} ${EFI_SIGNATURE:+-G $EFI_SIGNATURE}) + + KERNELOFFSET="$(($1 / 512))" + KERNELSIZE="$2" +@@ -30,6 +30,12 @@ ROOTFSSIZE="$(($4 / 512))" + [ -n "$PADDING" ] && dd if=/dev/zero of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc count="$ROOTFSSIZE" + dd if="$ROOTFSIMAGE" of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc + +-make_ext4fs -J -L kernel -l "$KERNELSIZE" "$OUTPUT.kernel" "$KERNELDIR" ++if [ -n "$EFI_SIGNATURE" ]; then ++ [ -n "$PADDING" ] && dd if=/dev/zero of="$OUTPUT" bs=512 seek="$(($ROOTFSOFFSET + $ROOTFSSIZE))" conv=notrunc count="$sect" ++ mkfs.fat -n kernel -C "$OUTPUT.kernel" -S 512 "$(($KERNELSIZE / 1024))" ++ mcopy -s -i "$OUTPUT.kernel" "$KERNELDIR"/* ::/ ++else ++ make_ext4fs -J -L kernel -l "$KERNELSIZE" "$OUTPUT.kernel" "$KERNELDIR" ++fi + dd if="$OUTPUT.kernel" of="$OUTPUT" bs=512 seek="$KERNELOFFSET" conv=notrunc + rm -f "$OUTPUT.kernel" +diff --git a/target/linux/x86/base-files/lib/preinit/79_move_config b/target/linux/x86/base-files/lib/preinit/79_move_config +index 702da9e873d..015efcf748b 100644 +--- a/target/linux/x86/base-files/lib/preinit/79_move_config ++++ b/target/linux/x86/base-files/lib/preinit/79_move_config +@@ -2,13 +2,15 @@ + # Copyright (C) 2012-2015 OpenWrt.org + + move_config() { +- local partdev ++ local partdev magic parttype=ext4 + + . /lib/upgrade/common.sh + + if export_bootdevice && export_partdevice partdev 1; then + mkdir -p /boot +- mount -t ext4 -o rw,noatime "/dev/$partdev" /boot ++ magic=$(dd if="/dev/$partdev" bs=1 count=3 skip=54 2>/dev/null) ++ [ "$magic" = "FAT" ] && parttype=vfat ++ mount -t $parttype -o rw,noatime "/dev/$partdev" /boot + if [ -f "/boot/$BACKUP_FILE" ]; then + mv -f "/boot/$BACKUP_FILE" / + fi +diff --git a/target/linux/x86/base-files/lib/upgrade/platform.sh b/target/linux/x86/base-files/lib/upgrade/platform.sh +index 53c751861cc..1c93f5bd9b9 100644 +--- a/target/linux/x86/base-files/lib/upgrade/platform.sh ++++ b/target/linux/x86/base-files/lib/upgrade/platform.sh +@@ -37,10 +37,12 @@ platform_check_image() { + } + + platform_copy_config() { +- local partdev ++ local partdev magic parttype=ext4 + + if export_partdevice partdev 1; then +- mount -t ext4 -o rw,noatime "/dev/$partdev" /mnt ++ magic=$(dd if="/dev/$partdev" bs=1 count=3 skip=54 2>/dev/null) ++ [ "$magic" = "FAT" ] && parttype=vfat ++ mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt + cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE" + umount /mnt + fi +diff --git a/target/linux/x86/generic/config-4.19 b/target/linux/x86/generic/config-4.19 +index 4a689ca026c..ada81ce04ea 100644 +--- a/target/linux/x86/generic/config-4.19 ++++ b/target/linux/x86/generic/config-4.19 +@@ -139,6 +139,7 @@ CONFIG_FB_DEFERRED_IO=y + CONFIG_FB_EFI=y + CONFIG_FB_HYPERV=y + # CONFIG_FB_I810 is not set ++CONFIG_FB_SIMPLE=y + CONFIG_FB_SYS_COPYAREA=y + CONFIG_FB_SYS_FILLRECT=y + CONFIG_FB_SYS_FOPS=y +diff --git a/target/linux/x86/generic/config-5.4 b/target/linux/x86/generic/config-5.4 +index 4a689ca026c..ada81ce04ea 100644 +--- a/target/linux/x86/generic/config-5.4 ++++ b/target/linux/x86/generic/config-5.4 +@@ -139,6 +139,7 @@ CONFIG_FB_DEFERRED_IO=y + CONFIG_FB_EFI=y + CONFIG_FB_HYPERV=y + # CONFIG_FB_I810 is not set ++CONFIG_FB_SIMPLE=y + CONFIG_FB_SYS_COPYAREA=y + CONFIG_FB_SYS_FILLRECT=y + CONFIG_FB_SYS_FOPS=y +diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile +index c2961e5b9c9..aa80d77b978 100644 +--- a/target/linux/x86/image/Makefile ++++ b/target/linux/x86/image/Makefile +@@ -38,6 +38,9 @@ endif + + ROOTPART:=$(call qstrip,$(CONFIG_TARGET_ROOTFS_PARTNAME)) + ROOTPART:=$(if $(ROOTPART),$(ROOTPART),PARTUUID=$(IMG_PART_SIGNATURE)-02) ++EFI_SIGNATURE:=$(strip $(shell uuidgen | sed -r 's/[a-zA-Z0-9]{2}$$/00/')) ++EFI_ROOTPART:=$(call qstrip,$(CONFIG_TARGET_ROOTFS_PARTNAME)) ++EFI_ROOTPART:=$(if $(EFI_ROOTPART),$(EFI_ROOTPART),PARTUUID=$(shell echo $(EFI_SIGNATURE) | sed 's/00$$/02/')) + + GRUB_TIMEOUT:=$(call qstrip,$(CONFIG_GRUB_TIMEOUT)) + GRUB_TITLE:=$(call qstrip,$(CONFIG_GRUB_TITLE)) +diff --git a/target/linux/x86/image/grub-iso.cfg b/target/linux/x86/image/grub-iso.cfg +index f5848b38534..4bef492a414 100644 +--- a/target/linux/x86/image/grub-iso.cfg ++++ b/target/linux/x86/image/grub-iso.cfg +@@ -3,7 +3,12 @@ + + set default="0" + set timeout="@TIMEOUT@" +-set root='(cd)' ++ ++if [ "${grub_platform}" = "efi" ]; then ++ set root='(cd0)' ++else ++ set root='(cd)' ++fi + + menuentry "@TITLE@" { + linux /boot/vmlinuz root=/dev/sr0 rootfstype=iso9660 rootwait @CMDLINE@ noinitrd + +From c24086b352f6f773c07f15f85b0e5ffe26e206af Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=E6=9D=8E=E5=9B=BD?= +Date: Sat, 31 Aug 2019 13:28:05 +0000 +Subject: [PATCH 4/8] x86: fix sysupgrade for EFI images +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +1. make function get_partitions support GPT disks +2. get more bytes from image to get GPT partition table +3. update the original PARTUUID to new grub.cfg + +Signed-off-by: 李国 +--- + .../base-files/files/lib/upgrade/common.sh | 40 ++++++++++++++----- + .../x86/base-files/lib/upgrade/platform.sh | 20 ++++++++-- + 2 files changed, 45 insertions(+), 15 deletions(-) + +diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh +index 6e967aeffe8..1324b98ed2f 100644 +--- a/package/base-files/files/lib/upgrade/common.sh ++++ b/package/base-files/files/lib/upgrade/common.sh +@@ -218,17 +218,35 @@ get_partitions() { # + rm -f "/tmp/partmap.$filename" + + local part +- for part in 1 2 3 4; do +- set -- $(hexdump -v -n 12 -s "$((0x1B2 + $part * 16))" -e '3/4 "0x%08X "' "$disk") +- +- local type="$(( $(hex_le32_to_cpu $1) % 256))" +- local lba="$(( $(hex_le32_to_cpu $2) ))" +- local num="$(( $(hex_le32_to_cpu $3) ))" +- +- [ $type -gt 0 ] || continue +- +- printf "%2d %5d %7d\n" $part $lba $num >> "/tmp/partmap.$filename" +- done ++ local magic=$(dd if="$disk" bs=8 count=1 skip=64 2>/dev/null) ++ if [ "$magic" = "EFI PART" ]; then ++ #export_partdevice will fail when partition number is greater than 15, as ++ #the partition major device number is not equal to the disk major device number ++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do ++ set -- $(hexdump -v -n 48 -s "$((0x380 + $part * 0x80))" -e '4/4 "%08x"" "4/4 "%08x"" "4/4 "0x%08X "' "$disk") ++ ++ local type="$1" ++ local lba="$(( $(hex_le32_to_cpu $4) * 0x100000000 + $(hex_le32_to_cpu $3) ))" ++ local end="$(( $(hex_le32_to_cpu $6) * 0x100000000 + $(hex_le32_to_cpu $5) ))" ++ local num="$(( $end - $lba ))" ++ ++ [ "$type" = "00000000000000000000000000000000" ] && continue ++ ++ printf "%2d %5d %7d\n" $part $lba $num >> "/tmp/partmap.$filename" ++ done ++ else ++ for part in 1 2 3 4; do ++ set -- $(hexdump -v -n 12 -s "$((0x1B2 + $part * 16))" -e '3/4 "0x%08X "' "$disk") ++ ++ local type="$(( $(hex_le32_to_cpu $1) % 256))" ++ local lba="$(( $(hex_le32_to_cpu $2) ))" ++ local num="$(( $(hex_le32_to_cpu $3) ))" ++ ++ [ $type -gt 0 ] || continue ++ ++ printf "%2d %5d %7d\n" $part $lba $num >> "/tmp/partmap.$filename" ++ done ++ fi + fi + } + +diff --git a/target/linux/x86/base-files/lib/upgrade/platform.sh b/target/linux/x86/base-files/lib/upgrade/platform.sh +index 1c93f5bd9b9..3acee2c7a9c 100644 +--- a/target/linux/x86/base-files/lib/upgrade/platform.sh ++++ b/target/linux/x86/base-files/lib/upgrade/platform.sh +@@ -20,7 +20,7 @@ platform_check_image() { + get_partitions "/dev/$diskdev" bootdisk + + #extract the boot sector from the image +- get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b 2>/dev/null ++ get_image "$@" | dd of=/tmp/image.bs count=63 bs=512b 2>/dev/null + + get_partitions /tmp/image.bs image + +@@ -40,7 +40,7 @@ platform_copy_config() { + local partdev magic parttype=ext4 + + if export_partdevice partdev 1; then +- magic=$(dd if="/dev/$partdev" bs=1 count=3 skip=54 2>/dev/null) ++ magic="$(dd if="/dev/$partdev" bs=1 count=3 skip=54 2>/dev/null)" + [ "$magic" = "FAT" ] && parttype=vfat + mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt + cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE" +@@ -83,7 +83,7 @@ platform_do_upgrade() { + get_partitions "/dev/$diskdev" bootdisk + + #extract the boot sector from the image +- get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b ++ get_image "$@" | dd of=/tmp/image.bs count=63 bs=512b >/dev/null + + get_partitions /tmp/image.bs image + +@@ -108,7 +108,7 @@ platform_do_upgrade() { + while read part start size; do + if export_partdevice partdev $part; then + echo "Writing image to /dev/$partdev..." +- get_image "$@" | dd of="/dev/$partdev" ibs="512" obs=1M skip="$start" count="$size" conv=fsync ++ get_image "$@" | dd of="/dev/$partdev" ibs=512 obs=1M skip="$start" count="$size" conv=fsync + else + echo "Unable to find partition $part device, skipped." + fi +@@ -119,4 +119,16 @@ platform_do_upgrade() { + get_image "$@" | dd of="/dev/$diskdev" bs=1 skip=440 count=4 seek=440 conv=fsync + + platform_do_bootloader_upgrade "$diskdev" ++ local magic parttype=ext4 ++ magic="$(dd if="/dev/$diskdev" bs=8 count=1 skip=64 2>/dev/null)" ++ [ "$magic" = "EFI PART" ] || return 0 ++ if export_partdevice partdev 1; then ++ magic="$(dd if="/dev/$partdev" bs=1 count=3 skip=54 2>/dev/null)" ++ [ "$magic" = "FAT" ] && parttype=vfat ++ mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt ++ set -- $(dd if="/dev/$diskdev" bs=1 skip=1168 count=16 2>/dev/null | hexdump -v -e '8/1 "%02x "" "2/1 "%02x""-"6/1 "%02x"') ++ sed -i "s/\(PARTUUID=\)[a-f0-9-]\+/\1$4$3$2$1-$6$5-$8$7-$9/ig" /mnt/boot/grub/grub.cfg ++ umount /mnt ++ fi ++ + } + +From b915dff5280cc48a2331f01961f2504b9b12f245 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=E6=9D=8E=E5=9B=BD?= +Date: Tue, 24 Mar 2020 17:12:22 +0800 +Subject: [PATCH 5/8] grub2: grub-early.cfg auto detect efi platform +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: 李国 +--- + package/boot/grub2/files/grub-early.cfg | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/package/boot/grub2/files/grub-early.cfg b/package/boot/grub2/files/grub-early.cfg +index 4a5b5a60927..9e7cad47607 100644 +--- a/package/boot/grub2/files/grub-early.cfg ++++ b/package/boot/grub2/files/grub-early.cfg +@@ -1 +1,5 @@ +-configfile (hd0,msdos1)/boot/grub/grub.cfg ++if [ "${grub_platform}" = "efi" ]; then ++ configfile (hd0,gpt1)/boot/grub/grub.cfg ++else ++ configfile (hd0,msdos1)/boot/grub/grub.cfg ++fi + +From dce4fc3201395f886e496c3bb5f6ffd979558aa3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=E6=9D=8E=E5=9B=BD?= +Date: Tue, 24 Mar 2020 17:13:27 +0800 +Subject: [PATCH 6/8] x86: add efi images + +--- + include/image.mk | 1 + + scripts/gen_image_generic.sh | 4 ++-- + target/linux/x86/image/Makefile | 34 +++++++++++++++++++++++++---- + target/linux/x86/image/grub-efi.cfg | 13 +++++++++++ + 4 files changed, 46 insertions(+), 6 deletions(-) + create mode 100644 target/linux/x86/image/grub-efi.cfg + +diff --git a/include/image.mk b/include/image.mk +index 8af5905c600..051a6206cef 100644 +--- a/include/image.mk ++++ b/include/image.mk +@@ -45,6 +45,7 @@ IMG_PREFIX:=$(VERSION_DIST_SANITIZED)-$(IMG_PREFIX_VERNUM)$(IMG_PREFIX_VERCODE)$ + IMG_ROOTFS:=$(IMG_PREFIX)-rootfs + IMG_COMBINED:=$(IMG_PREFIX)-combined + IMG_PART_SIGNATURE:=$(shell echo $(SOURCE_DATE_EPOCH)$(LINUX_VERMAGIC) | mkhash md5 | cut -b1-8) ++IMG_PART_UUID:=$(shell echo $(SOURCE_DATE_EPOCH)$(LINUX_VERMAGIC) | mkhash md5 | sed -r 's/(.{8})(.{4})(.{4})(.{4})(.{10})../\1-\2-\3-\4-\500/') + + MKFS_DEVTABLE_OPT := -D $(INCLUDE_DIR)/device_table.txt + +diff --git a/scripts/gen_image_generic.sh b/scripts/gen_image_generic.sh +index 1df4d0673b3..e45a8dd417e 100755 +--- a/scripts/gen_image_generic.sh ++++ b/scripts/gen_image_generic.sh +@@ -20,7 +20,7 @@ sect=63 + cyl=$(( (KERNELSIZE + ROOTFSSIZE) * 1024 * 1024 / (head * sect * 512))) + + # create partition table +-set $(ptgen -o "$OUTPUT" -h $head -s $sect ${EFI_SIGNATURE:+-g} -p ${KERNELSIZE}m -p ${ROOTFSSIZE}m ${ALIGN:+-l $ALIGN} ${SIGNATURE:+-S 0x$SIGNATURE} ${EFI_SIGNATURE:+-G $EFI_SIGNATURE}) ++set $(ptgen -o "$OUTPUT" -h $head -s $sect ${UUID:+-g} -p ${KERNELSIZE}m -p ${ROOTFSSIZE}m ${ALIGN:+-l $ALIGN} ${SIGNATURE:+-S 0x$SIGNATURE} ${UUID:+-G $UUID}) + + KERNELOFFSET="$(($1 / 512))" + KERNELSIZE="$2" +@@ -30,7 +30,7 @@ ROOTFSSIZE="$(($4 / 512))" + [ -n "$PADDING" ] && dd if=/dev/zero of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc count="$ROOTFSSIZE" + dd if="$ROOTFSIMAGE" of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc + +-if [ -n "$EFI_SIGNATURE" ]; then ++if [ -n "$UUID" ]; then + [ -n "$PADDING" ] && dd if=/dev/zero of="$OUTPUT" bs=512 seek="$(($ROOTFSOFFSET + $ROOTFSSIZE))" conv=notrunc count="$sect" + mkfs.fat -n kernel -C "$OUTPUT.kernel" -S 512 "$(($KERNELSIZE / 1024))" + mcopy -s -i "$OUTPUT.kernel" "$KERNELDIR"/* ::/ +diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile +index aa80d77b978..efb0b1cff99 100644 +--- a/target/linux/x86/image/Makefile ++++ b/target/linux/x86/image/Makefile +@@ -38,9 +38,8 @@ endif + + ROOTPART:=$(call qstrip,$(CONFIG_TARGET_ROOTFS_PARTNAME)) + ROOTPART:=$(if $(ROOTPART),$(ROOTPART),PARTUUID=$(IMG_PART_SIGNATURE)-02) +-EFI_SIGNATURE:=$(strip $(shell uuidgen | sed -r 's/[a-zA-Z0-9]{2}$$/00/')) + EFI_ROOTPART:=$(call qstrip,$(CONFIG_TARGET_ROOTFS_PARTNAME)) +-EFI_ROOTPART:=$(if $(EFI_ROOTPART),$(EFI_ROOTPART),PARTUUID=$(shell echo $(EFI_SIGNATURE) | sed 's/00$$/02/')) ++EFI_ROOTPART:=$(if $(EFI_ROOTPART),$(EFI_ROOTPART),PARTUUID=$(shell echo $(IMG_PART_UUID) | sed 's/00$$/02/')) + + GRUB_TIMEOUT:=$(call qstrip,$(CONFIG_GRUB_TIMEOUT)) + GRUB_TITLE:=$(call qstrip,$(CONFIG_GRUB_TITLE)) +@@ -50,7 +49,8 @@ BOOTOPTS:=$(call qstrip,$(CONFIG_GRUB_BOOTOPTS)) + define Build/combined + $(CP) $(KDIR)/$(KERNEL_NAME) $@.boot/boot/vmlinuz + -$(CP) $(STAGING_DIR_ROOT)/boot/. $@.boot/boot/ +- PADDING="1" SIGNATURE="$(IMG_PART_SIGNATURE)" $(SCRIPT_DIR)/gen_image_generic.sh \ ++ PADDING="1" SIGNATURE="$(IMG_PART_SIGNATURE)" \ ++ $(if $(filter $(1),efi),UUID="$(IMG_PART_UUID)") $(SCRIPT_DIR)/gen_image_generic.sh \ + $@ \ + $(CONFIG_TARGET_KERNEL_PARTSIZE) $@.boot \ + $(CONFIG_TARGET_ROOTFS_PARTSIZE) $(IMAGE_ROOTFS) \ +@@ -64,6 +64,7 @@ define Build/grub-config + -e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \ + -e 's#@TERMINAL_CONFIG@#$(strip $(GRUB_TERMINAL_CONFIG))#g' \ + -e 's#@ROOTPART@#root=$(ROOTPART) rootwait#g' \ ++ -e 's#@EFI_ROOTPART@#root=$(EFI_ROOTPART) rootwait#g' \ + -e 's#@CMDLINE@#$(BOOTOPTS) $(GRUB_CONSOLE_CMDLINE)#g' \ + -e 's#@TIMEOUT@#$(GRUB_TIMEOUT)#g' \ + -e 's#@TITLE@#$(GRUB_TITLE)#g' \ +@@ -80,7 +81,7 @@ define Build/grub-install + $(STAGING_DIR_HOST)/bin/grub-bios-setup \ + -m "$@.grub2/device.map" \ + -d "$@.grub2" \ +- -r "hd0,msdos1" \ ++ -r "hd0,$(if $(filter $(1),efi),gpt1,msdos1)" \ + $@ + endef + +@@ -91,7 +92,9 @@ define Build/iso + $(STAGING_DIR_HOST)/lib/grub/grub2-iso/eltorito.img \ + > $@.boot/boot/grub/eltorito.img + -$(CP) $(STAGING_DIR_ROOT)/boot/. $@.boot/boot/ ++ $(if $(filter $(1),efi),$(CP) $(STAGING_DIR_HOST)/lib/grub/grub2-iso/efiboot.img $@.boot/boot/grub/) + mkisofs -R -b boot/grub/eltorito.img -no-emul-boot -boot-info-table \ ++ $(if $(filter $(1),efi),-boot-load-size 4 -c boot.cat -eltorito-alt-boot -e boot/grub/efiboot.img -no-emul-boot) \ + -o $@ $@.boot $(TARGET_DIR) + endef + +@@ -102,13 +105,25 @@ define Device/Default + IMAGE/combined.img.gz := grub-config pc | combined | grub-install | gzip + IMAGE/combined.vdi := grub-config pc | combined | grub-install | qemu-image vdi + IMAGE/combined.vmdk := grub-config pc | combined | grub-install | qemu-image vmdk + IMAGE/rootfs.img := append-rootfs + IMAGE/rootfs.img.gz := append-rootfs | gzip ++ ARTIFACT/image-efi.iso := grub-config iso | iso efi ++ IMAGE/combined-efi.img := grub-config efi | combined efi | grub-install efi ++ IMAGE/combined-efi.img.gz := grub-config efi | combined efi | grub-install efi | gzip ++ IMAGE/combined-efi.vdi := grub-config efi | combined efi | grub-install efi | qemu-image vdi ++ IMAGE/combined-efi.vmdk := grub-config efi | combined efi | grub-install efi | qemu-image vmdk + ifeq ($(CONFIG_TARGET_IMAGES_GZIP),y) + IMAGES := combined.img.gz rootfs.img.gz + else + IMAGES := combined.img rootfs.img + endif ++ ifeq $(CONFIG_EFI_IMAGES) ++ ifeq ($(CONFIG_TARGET_IMAGES_GZIP),y) ++ IMAGES += combined-efi.img.gz ++ else ++ IMAGES += combined-efi.img ++ endif ++ endif + KERNEL := kernel-bin + KERNEL_INSTALL := 1 + KERNEL_NAME := bzImage +@@ -119,6 +134,17 @@ define Device/Default + ifeq ($(CONFIG_VMDK_IMAGES),y) + IMAGES += combined.vmdk + endif ++ ifeq $(CONFIG_EFI_IMAGES) ++ ifeq ($(CONFIG_ISO_IMAGES),y) ++ ARTIFACTS += image-efi.iso ++ endif ++ ifeq ($(CONFIG_VDI_IMAGES),y) ++ IMAGES += combined-efi.vdi ++ endif ++ ifeq ($(CONFIG_VMDK_IMAGES),y) ++ IMAGES += combined-efi.vmdk ++ endif ++ endif + endef + + $(eval $(call Image/gzip-ext4-padded-squashfs)) +diff --git a/target/linux/x86/image/grub-efi.cfg b/target/linux/x86/image/grub-efi.cfg +new file mode 100644 +index 00000000000..f3f6a02c021 +--- /dev/null ++++ b/target/linux/x86/image/grub-efi.cfg +@@ -0,0 +1,13 @@ ++@SERIAL_CONFIG@ ++@TERMINAL_CONFIG@ ++ ++set default="0" ++set timeout="@TIMEOUT@" ++set root='(hd0,gpt1)' ++ ++menuentry "@TITLE@" { ++ linux /boot/vmlinuz @EFI_ROOTPART@ @CMDLINE@ noinitrd ++} ++menuentry "@TITLE@ (failsafe)" { ++ linux /boot/vmlinuz failsafe=true @EFI_ROOTPART@ @CMDLINE@ noinitrd ++} + +From 317bb3e99c4ad67e6e5680d0fbf03d65294aac2f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=E6=9D=8E=E5=9B=BD?= +Date: Tue, 24 Mar 2020 18:01:39 +0800 +Subject: [PATCH 7/8] grub2: fix path +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: 李国 +--- + package/boot/grub2/grub2/Makefile | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/package/boot/grub2/grub2/Makefile b/package/boot/grub2/grub2/Makefile +index 7126beab4cf..3302838d719 100644 +--- a/package/boot/grub2/grub2/Makefile ++++ b/package/boot/grub2/grub2/Makefile +@@ -44,7 +44,7 @@ define Host/Install + -d $(STAGING_DIR_HOST)/lib/grub/i386-pc \ + -p /boot/grub \ + -O i386-pc \ +- -c ./files/grub-early.cfg \ ++ -c ../files/grub-early.cfg \ + -o $(STAGING_DIR_HOST)/lib/grub/grub2-generic/core.img \ + at_keyboard biosdisk boot chain configfile ext2 linux ls part_msdos reboot serial vga + +@@ -53,7 +53,7 @@ define Host/Install + -d $(STAGING_DIR_HOST)/lib/grub/i386-pc \ + -p /boot/grub \ + -O i386-pc \ +- -c ./files/grub-early.cfg \ ++ -c ../files/grub-early.cfg \ + -o $(STAGING_DIR_HOST)/lib/grub/grub2-iso/eltorito.img \ + at_keyboard biosdisk boot chain configfile iso9660 linux ls part_msdos reboot serial vga + +@@ -62,7 +62,7 @@ define Host/Install + -d $(STAGING_DIR_HOST)/lib/grub/i386-pc \ + -p /boot/grub \ + -O i386-pc \ +- -c ./files/grub-early.cfg \ ++ -c ../files/grub-early.cfg \ + -o $(STAGING_DIR_HOST)/lib/grub/grub2-legacy/core.img \ + biosdisk boot chain configfile ext2 linux ls part_msdos reboot serial vga + endef + +From 784fcc94242d146f2ef2c31e292ace8816985d62 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=E6=9D=8E=E5=9B=BD?= +Date: Tue, 24 Mar 2020 18:02:57 +0800 +Subject: [PATCH 8/8] x86: fix +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: 李国 +--- + target/linux/x86/image/Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile +index efb0b1cff99..ff964cde8ab 100644 +--- a/target/linux/x86/image/Makefile ++++ b/target/linux/x86/image/Makefile +@@ -115,7 +115,7 @@ define Device/Default + else + IMAGES := combined.img + endif +- ifeq $(CONFIG_EFI_IMAGES) ++ ifeq ($(CONFIG_EFI_IMAGES),y) + ifeq ($(CONFIG_TARGET_IMAGES_GZIP),y) + IMAGES += combined-efi.img.gz + else +@@ -134,7 +134,7 @@ define Device/Default + ifeq ($(CONFIG_VMDK_IMAGES),y) + IMAGES += combined.vmdk + endif +- ifeq $(CONFIG_EFI_IMAGES) ++ ifeq ($(CONFIG_EFI_IMAGES),y) + ifeq ($(CONFIG_ISO_IMAGES),y) + ARTIFACTS += image-efi.iso + endif diff --git a/root/package/base-files/Makefile b/root/package/base-files/Makefile deleted file mode 100644 index 209be346..00000000 --- a/root/package/base-files/Makefile +++ /dev/null @@ -1,114 +0,0 @@ -# -# Copyright (C) 2006-2010 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -curdir:=package - -include $(INCLUDE_DIR)/feeds.mk -include $(INCLUDE_DIR)/rootfs.mk - --include $(TMP_DIR)/.packagedeps -package-y += kernel/linux -$(curdir)/autoremove:=1 -$(curdir)/builddirs:=$(sort $(package-) $(package-y) $(package-m)) -$(curdir)/builddirs-default:=. $(sort $(package-y) $(package-m)) -$(curdir)/builddirs-prereq:=. $(sort $(prereq-y) $(prereq-m)) -ifdef CHECK_ALL -$(curdir)/builddirs-check:=$($(curdir)/builddirs) -$(curdir)/builddirs-download:=$($(curdir)/builddirs) -endif -ifneq ($(IGNORE_ERRORS),) - package-y-filter := $(package-y) - package-m-filter := $(filter-out $(package-y),$(package-m)) - package-n-filter := $(filter-out $(package-y) $(package-m),$(package-)) - package-ignore-errors := $(filter n m y,$(IGNORE_ERRORS)) - package-ignore-errors := $(if $(package-ignore-errors),$(package-ignore-errors),n m) - package-ignore-subdirs := $(sort $(foreach m,$(package-ignore-errors),$(package-$(m)-filter))) - $(curdir)/builddirs-ignore-download := $(package-ignore-subdirs) - $(curdir)/builddirs-ignore-compile := $(package-ignore-subdirs) - $(curdir)/builddirs-ignore-host-download := $(package-ignore-subdirs) - $(curdir)/builddirs-ignore-host-compile := $(package-ignore-subdirs) -endif - -PACKAGE_INSTALL_FILES:= \ - $(foreach pkg,$(sort $(package-y)), \ - $(foreach variant, \ - $(if $(strip $(package/$(pkg)/variants)), \ - $(package/$(pkg)/variants), \ - $(if $(package/$(pkg)/default-variant), \ - $(package/$(pkg)/default-variant), \ - default \ - ) \ - ), \ - $(PKG_INFO_DIR)/$(lastword $(subst /,$(space),$(pkg))).$(variant).install \ - ) \ - ) - -$(curdir)/cleanup: $(TMP_DIR)/.build - rm -rf $(STAGING_DIR_ROOT) - -$(curdir)/merge: - rm -rf $(PACKAGE_DIR_ALL) - mkdir -p $(PACKAGE_DIR_ALL) - -$(foreach pdir,$(PACKAGE_SUBDIRS),$(if $(wildcard $(pdir)/*.ipk),ln -s $(pdir)/*.ipk $(PACKAGE_DIR_ALL);)) - -$(curdir)/merge-index: $(curdir)/merge - (cd $(PACKAGE_DIR_ALL) && $(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages; ) - -ifndef SDK - $(curdir)/compile: $(curdir)/system/opkg/host/compile -endif - -$(curdir)/install: $(TMP_DIR)/.build $(curdir)/merge $(if $(CONFIG_TARGET_PER_DEVICE_ROOTFS),$(curdir)/merge-index) - - find $(STAGING_DIR_ROOT) -type d | $(XARGS) chmod 0755 - rm -rf $(TARGET_DIR) $(TARGET_DIR_ORIG) - mkdir -p $(TARGET_DIR)/tmp - $(file >$(TMP_DIR)/opkg_install_list,\ - $(call opkg_package_files,\ - $(foreach pkg,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null),$(pkg)$(call GetABISuffix,$(pkg))))) - $(call opkg,$(TARGET_DIR)) install $$(cat $(TMP_DIR)/opkg_install_list) - @for file in $(PACKAGE_INSTALL_FILES); do \ - [ -s $$file.flags ] || continue; \ - for flag in `cat $$file.flags`; do \ - $(call opkg,$(TARGET_DIR)) flag $$flag `cat $$file`; \ - done; \ - done || true - - $(CP) $(TARGET_DIR) $(TARGET_DIR_ORIG) - - $(call prepare_rootfs,$(TARGET_DIR),$(TOPDIR)/files) - -$(curdir)/index: FORCE - @echo Generating package index... - @for d in $(PACKAGE_SUBDIRS); do ( \ - mkdir -p $$d; \ - cd $$d || continue; \ - $(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages.manifest; \ - grep -vE '^(Maintainer|LicenseFiles|Source|SourceName|Require|SourceDateEpoch)' Packages.manifest > Packages; \ - case "$$(((64 + $$(stat -L -c%s Packages)) % 128))" in 110|111) \ - $(call ERROR_MESSAGE,WARNING: Applying padding in $$d/Packages to workaround usign SHA-512 bug!); \ - { echo ""; echo ""; } >> Packages;; \ - esac; \ - gzip -9nc Packages > Packages.gz; \ - ); done -ifdef CONFIG_SIGNED_PACKAGES - @echo Signing package index... - @for d in $(PACKAGE_SUBDIRS); do ( \ - [ -d $$d ] && \ - cd $$d || continue; \ - $(STAGING_DIR_HOST)/bin/usign -S -m Packages -s $(BUILD_KEY); \ - ); done -endif - -$(curdir)/flags-install:= -j1 - -$(eval $(call stampfile,$(curdir),package,prereq,.config)) -$(eval $(call stampfile,$(curdir),package,cleanup,$(TMP_DIR)/.build)) -$(eval $(call stampfile,$(curdir),package,compile,$(TMP_DIR)/.build)) -$(eval $(call stampfile,$(curdir),package,install,$(TMP_DIR)/.build)) -$(eval $(call stampfile,$(curdir),package,check,$(TMP_DIR)/.build)) - -$(eval $(call subdir,$(curdir))) diff --git a/root/package/base-files/base-files/files/bin/config_generate b/root/package/base-files/base-files/files/bin/config_generate deleted file mode 100644 index ae7f2de7..00000000 --- a/root/package/base-files/base-files/files/bin/config_generate +++ /dev/null @@ -1,532 +0,0 @@ -#!/bin/sh - -CFG=/etc/board.json - -. /usr/share/libubox/jshn.sh - -[ -s $CFG ] || /bin/board_detect || exit 1 -[ -s /etc/config/network -a -s /etc/config/system ] && exit 0 - -generate_bridge() { - local name=$1 - local macaddr=$2 - uci -q batch <<-EOF - set network.$name=device - set network.$name.name=$name - set network.$name.type=bridge - EOF - if [ -n "$macaddr" ]; then - uci -q batch <<-EOF - set network.$name.macaddr=$macaddr - EOF - fi -} - -bridge_vlan_id=0 -generate_bridge_vlan() { - local name=$1_vlan - local device=$2 - local ports="$3" - local vlan="$4" - uci -q batch <<-EOF - set network.$name=bridge-vlan - set network.$name.device='$device' - set network.$name.vlan='$vlan' - set network.$name.ports='$ports' - EOF -} - -generate_static_network() { - uci -q batch <<-EOF - delete network.loopback - set network.loopback='interface' - set network.loopback.device='lo' - set network.loopback.proto='static' - set network.loopback.ipaddr='127.0.0.1' - set network.loopback.netmask='255.0.0.0' - EOF - [ -e /proc/sys/net/ipv6 ] && { - uci -q batch <<-EOF - delete network.globals - set network.globals='globals' - set network.globals.ula_prefix='auto' - EOF - } - - if json_is_a dsl object; then - json_select dsl - if json_is_a atmbridge object; then - json_select atmbridge - local vpi vci encaps payload nameprefix - json_get_vars vpi vci encaps payload nameprefix - uci -q batch <<-EOF - delete network.atm - set network.atm='atm-bridge' - set network.atm.vpi='$vpi' - set network.atm.vci='$vci' - set network.atm.encaps='$encaps' - set network.atm.payload='$payload' - set network.atm.nameprefix='$nameprefix' - EOF - json_select .. - fi - - if json_is_a modem object; then - json_select modem - local type annex firmware tone xfer_mode - json_get_vars type annex firmware tone xfer_mode - uci -q batch <<-EOF - delete network.dsl - set network.dsl='dsl' - set network.dsl.annex='$annex' - set network.dsl.firmware='$firmware' - set network.dsl.tone='$tone' - set network.dsl.xfer_mode='$xfer_mode' - EOF - json_select .. - fi - json_select .. - fi -} - -addr_offset=2 -generate_network() { - local ports device macaddr protocol type ipaddr netmask vlan - local bridge=$2 - - json_select network - json_select "$1" - json_get_vars device macaddr protocol ipaddr netmask vlan - json_get_values ports ports - json_select .. - json_select .. - - [ -n "$device" -o -n "$ports" ] || return - - # Force bridge for "lan" as it may have other devices (e.g. wireless) - # bridged - [ "$1" = "lan" -a -z "$ports" ] && { - ports="$device" - } - - [ -n "$ports" -a -z "$bridge" ] && { - uci -q batch <<-EOF - add network device - set network.@device[-1].name='br-$1' - set network.@device[-1].type='bridge' - EOF - for port in $ports; do uci add_list network.@device[-1].ports="$port"; done - [ -n "$macaddr" ] && { - for port in $ports; do - uci -q batch <<-EOF - add network device - set network.@device[-1].name='$port' - set network.@device[-1].macaddr='$macaddr' - EOF - done - } - device=br-$1 - type= - macaddr="" - } - - [ -n "$bridge" ] && { - [ -z "$ports" ] && ports="$device" - if [ -z "$vlan" ]; then - bridge_vlan_id=$((bridge_vlan_id + 1)) - vlan=$bridge_vlan_id - fi - generate_bridge_vlan $1 $bridge "$ports" $vlan - device=$bridge.$vlan - type="" - } - - if [ -n "$macaddr" ]; then - uci -q batch <<-EOF - add network device - set network.@device[-1].name='$device' - set network.@device[-1].macaddr='$macaddr' - EOF - fi - - uci -q batch <<-EOF - delete network.$1 - set network.$1='interface' - set network.$1.type='$type' - set network.$1.device='$device' - set network.$1.proto='none' - EOF - - case "$protocol" in - static) - local ipad - case "$1" in - lan) ipad=${ipaddr:-"192.168.100.1"} ;; - *) ipad=${ipaddr:-"192.168.$((addr_offset++)).1"} ;; - esac - - netm=${netmask:-"255.255.255.0"} - - uci -q batch <<-EOF - set network.$1.proto='static' - set network.$1.ipaddr='$ipad' - set network.$1.netmask='$netm' - EOF - [ -e /proc/sys/net/ipv6 ] && uci set network.$1.ip6assign='60' - ;; - - dhcp) - # fixup IPv6 slave interface if parent is a bridge - [ "$type" = "bridge" ] && device="br-$1" - - uci set network.$1.proto='dhcp' - [ -e /proc/sys/net/ipv6 ] && { - uci -q batch <<-EOF - delete network.${1}6 - set network.${1}6='interface' - set network.${1}6.device='$device' - set network.${1}6.proto='dhcpv6' - EOF - } - ;; - - pppoe) - uci -q batch <<-EOF - set network.$1.proto='pppoe' - set network.$1.username='username' - set network.$1.password='password' - EOF - [ -e /proc/sys/net/ipv6 ] && { - uci -q batch <<-EOF - set network.$1.ipv6='1' - delete network.${1}6 - set network.${1}6='interface' - set network.${1}6.device='@${1}' - set network.${1}6.proto='dhcpv6' - EOF - } - ;; - esac -} - -generate_switch_vlans_ports() { - local switch="$1" - local port ports role roles num attr val - - # - # autogenerate vlans - # - - if json_is_a roles array; then - json_get_keys roles roles - json_select roles - - for role in $roles; do - json_select "$role" - json_get_vars ports - json_select .. - - uci -q batch <<-EOF - add network switch_vlan - set network.@switch_vlan[-1].device='$switch' - set network.@switch_vlan[-1].vlan='$role' - set network.@switch_vlan[-1].ports='$ports' - EOF - done - - json_select .. - fi - - - # - # write port specific settings - # - - if json_is_a ports array; then - json_get_keys ports ports - json_select ports - - for port in $ports; do - json_select "$port" - json_get_vars num - - if json_is_a attr object; then - json_get_keys attr attr - json_select attr - uci -q batch <<-EOF - add network switch_port - set network.@switch_port[-1].device='$switch' - set network.@switch_port[-1].port=$num - EOF - - for attr in $attr; do - json_get_var val "$attr" - uci -q set network.@switch_port[-1].$attr="$val" - done - json_select .. - fi - json_select .. - done - - json_select .. - fi -} - -generate_switch() { - local key="$1" - local vlans - - json_select switch - json_select "$key" - json_get_vars enable reset blinkrate cpu_port \ - ar8xxx_mib_type ar8xxx_mib_poll_interval - - uci -q batch <<-EOF - add network switch - set network.@switch[-1].name='$key' - set network.@switch[-1].reset='$reset' - set network.@switch[-1].enable_vlan='$enable' - set network.@switch[-1].blinkrate='$blinkrate' - set network.@switch[-1].ar8xxx_mib_type='$ar8xxx_mib_type' - set network.@switch[-1].ar8xxx_mib_poll_interval='$ar8xxx_mib_poll_interval' - EOF - - generate_switch_vlans_ports "$1" - - json_select .. - json_select .. -} - -generate_static_system() { - uci -q batch <<-EOF - delete system.@system[0] - add system system - set system.@system[-1].hostname='antrouter' - set system.@system[-1].timezone='UTC' - set system.@system[-1].ttylogin='0' - set system.@system[-1].log_size='64' - set system.@system[-1].urandom_seed='0' - - delete system.ntp - set system.ntp='timeserver' - set system.ntp.enabled='1' - set system.ntp.enable_server='0' - add_list system.ntp.server='ntp.aliyun.com' - add_list system.ntp.server='time1.cloud.tencent.com' - add_list system.ntp.server='time.ustc.edu.cn' - add_list system.ntp.server='cn.pool.ntp.org' - EOF - - if json_is_a system object; then - json_select system - local hostname - if json_get_var hostname hostname; then - uci -q set "system.@system[-1].hostname=$hostname" - fi - - local compat_version - if json_get_var compat_version compat_version; then - uci -q set "system.@system[-1].compat_version=$compat_version" - else - uci -q set "system.@system[-1].compat_version=1.0" - fi - - if json_is_a ntpserver array; then - local keys key - json_get_keys keys ntpserver - json_select ntpserver - uci -q delete "system.ntp.server" - - for key in $keys; do - local server - if json_get_var server "$key"; then - uci -q add_list "system.ntp.server=$server" - fi - done - json_select .. - fi - json_select .. - fi -} - -generate_rssimon() { - local key="$1" - local cfg="rssid_$key" - local refresh threshold - - json_select rssimon - json_select "$key" - json_get_vars refresh threshold - json_select .. - json_select .. - - uci -q batch <<-EOF - delete system.$cfg - set system.$cfg='rssid' - set system.$cfg.dev='$key' - set system.$cfg.refresh='$refresh' - set system.$cfg.threshold='$threshold' - EOF -} - -generate_led() { - local key="$1" - local cfg="led_$key" - - json_select led - json_select "$key" - json_get_vars name sysfs type trigger default - - uci -q batch <<-EOF - delete system.$cfg - set system.$cfg='led' - set system.$cfg.name='$name' - set system.$cfg.sysfs='$sysfs' - set system.$cfg.trigger='$trigger' - set system.$cfg.default='$default' - EOF - - case "$type" in - gpio) - local gpio inverted - json_get_vars gpio inverted - uci -q batch <<-EOF - set system.$cfg.trigger='gpio' - set system.$cfg.gpio='$gpio' - set system.$cfg.inverted='$inverted' - EOF - ;; - - netdev) - local device mode - json_get_vars device mode - uci -q batch <<-EOF - set system.$cfg.trigger='netdev' - set system.$cfg.mode='$mode' - set system.$cfg.dev='$device' - EOF - ;; - - usb) - local device - json_get_vars device - uci -q batch <<-EOF - set system.$cfg.trigger='usbdev' - set system.$cfg.interval='50' - set system.$cfg.dev='$device' - EOF - ;; - - usbport) - local ports port - json_get_values ports ports - uci set system.$cfg.trigger='usbport' - for port in $ports; do - uci add_list system.$cfg.port=$port - done - ;; - - rssi) - local iface minq maxq offset factor - json_get_vars iface minq maxq offset factor - uci -q batch <<-EOF - set system.$cfg.trigger='rssi' - set system.$cfg.iface='rssid_$iface' - set system.$cfg.minq='$minq' - set system.$cfg.maxq='$maxq' - set system.$cfg.offset='$offset' - set system.$cfg.factor='$factor' - EOF - ;; - - switch) - local port_mask speed_mask mode - json_get_vars port_mask speed_mask mode - uci -q batch <<-EOF - set system.$cfg.port_mask='$port_mask' - set system.$cfg.speed_mask='$speed_mask' - set system.$cfg.mode='$mode' - EOF - ;; - - portstate) - local port_state - json_get_vars port_state - uci -q batch <<-EOF - set system.$cfg.port_state='$port_state' - EOF - ;; - - timer|oneshot) - local delayon delayoff - json_get_vars delayon delayoff - uci -q batch <<-EOF - set system.$cfg.trigger='$type' - set system.$cfg.delayon='$delayon' - set system.$cfg.delayoff='$delayoff' - EOF - ;; - esac - - json_select .. - json_select .. -} - -generate_gpioswitch() { - local cfg="$1" - - json_select gpioswitch - json_select "$cfg" - local name pin default - json_get_vars name pin default - uci -q batch <<-EOF - delete system.$cfg - set system.$cfg='gpio_switch' - set system.$cfg.name='$name' - set system.$cfg.gpio_pin='$pin' - set system.$cfg.value='$default' - EOF - json_select .. - json_select .. -} - -json_init -json_load "$(cat ${CFG})" - -umask 077 - -if [ ! -s /etc/config/network ]; then - bridge_name="" - touch /etc/config/network - generate_static_network - - json_get_vars bridge - [ -n "$bridge" ] && { - json_select bridge - json_get_vars name macaddr - generate_bridge "$name" "$macaddr" - json_select .. - bridge_name=$name - } - - json_get_keys keys network - for key in $keys; do generate_network $key $bridge_name; done - - json_get_keys keys switch - for key in $keys; do generate_switch $key; done -fi - -if [ ! -s /etc/config/system ]; then - touch /etc/config/system - generate_static_system - - json_get_keys keys rssimon - for key in $keys; do generate_rssimon $key; done - - json_get_keys keys gpioswitch - for key in $keys; do generate_gpioswitch $key; done - - json_get_keys keys led - for key in $keys; do generate_led $key; done -fi -uci commit diff --git a/root/package/base-files/base-files/files/etc/board.d/99-default_network b/root/package/base-files/base-files/files/etc/board.d/99-default_network deleted file mode 100644 index 55d5d79a..00000000 --- a/root/package/base-files/base-files/files/etc/board.d/99-default_network +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2013-2015 OpenWrt.org -# - -. /lib/functions/uci-defaults.sh - -board_config_update - -json_is_a network object && exit 0 - -ucidef_set_interface_lan 'eth0' - -board_config_flush - -exit 0 diff --git a/root/package/base-files/base-files/files/sbin/sysupgrade b/root/package/base-files/base-files/files/sbin/sysupgrade deleted file mode 100644 index 5cf0b2bf..00000000 --- a/root/package/base-files/base-files/files/sbin/sysupgrade +++ /dev/null @@ -1,397 +0,0 @@ -#!/bin/sh - -. /lib/functions.sh -. /lib/functions/system.sh -. /usr/share/libubox/jshn.sh - -# initialize defaults -export MTD_ARGS="" -export MTD_CONFIG_ARGS="" -export INTERACTIVE=0 -export VERBOSE=1 -export SAVE_CONFIG=1 -export SAVE_OVERLAY=0 -export SAVE_OVERLAY_PATH= -export SAVE_PARTITIONS=1 -export SAVE_INSTALLED_PKGS=1 -export SKIP_UNCHANGED=0 -export CONF_IMAGE= -export CONF_BACKUP_LIST=0 -export CONF_BACKUP= -export CONF_RESTORE= -export NEED_IMAGE= -export HELP=0 -export FORCE=0 -export TEST=0 -export UMOUNT_ETCBACKUP_DIR=0 - -# parse options -while [ -n "$1" ]; do - case "$1" in - -i) export INTERACTIVE=1;; - -v) export VERBOSE="$(($VERBOSE + 1))";; - -q) export VERBOSE="$(($VERBOSE - 1))";; - -n) export SAVE_CONFIG=0;; - -c) export SAVE_OVERLAY=1 SAVE_OVERLAY_PATH=/etc;; - -o) export SAVE_OVERLAY=1 SAVE_OVERLAY_PATH=/;; - -p) export SAVE_PARTITIONS=0;; - -k) export SAVE_INSTALLED_PKGS=1;; - -u) export SKIP_UNCHANGED=1;; - -b|--create-backup) export CONF_BACKUP="$2" NEED_IMAGE=1; shift;; - -r|--restore-backup) export CONF_RESTORE="$2" NEED_IMAGE=1; shift;; - -l|--list-backup) export CONF_BACKUP_LIST=1;; - -f) export CONF_IMAGE="$2"; shift;; - -F|--force) export FORCE=1;; - -T|--test) export TEST=1;; - -h|--help) export HELP=1; break;; - -*) - echo "Invalid option: $1" >&2 - exit 1 - ;; - *) break;; - esac - shift; -done - -export CONFFILES=/tmp/sysupgrade.conffiles -export CONF_TAR=/tmp/sysupgrade.tgz -export ETCBACKUP_DIR=/etc/backup -export INSTALLED_PACKAGES=${ETCBACKUP_DIR}/installed_packages.txt - -IMAGE="$1" - -[ -z "$IMAGE" -a -z "$NEED_IMAGE" -a $CONF_BACKUP_LIST -eq 0 -o $HELP -gt 0 ] && { - cat <...] - $0 [-q] [-i] [-c] [-u] [-o] [-k] - -upgrade-option: - -f restore configuration from .tar.gz (file or url) - -i interactive mode - -c attempt to preserve all changed files in /etc/ - -o attempt to preserve all changed files in /, except those - from packages but including changed confs. - -u skip from backup files that are equal to those in /rom - -n do not save configuration over reflash - -p do not attempt to restore the partition table after flash. - -k include in backup a list of current installed packages at - $INSTALLED_PACKAGES - -T | --test - Verify image and config .tar.gz but do not actually flash. - -F | --force - Flash image even if image checks fail, this is dangerous! - -q less verbose - -v more verbose - -h | --help display this help - -backup-command: - -b | --create-backup - create .tar.gz of files specified in sysupgrade.conf - then exit. Does not flash an image. If file is '-', - i.e. stdout, verbosity is set to 0 (i.e. quiet). - -r | --restore-backup - restore a .tar.gz created with sysupgrade -b - then exit. Does not flash an image. If file is '-', - the archive is read from stdin. - -l | --list-backup - list the files that would be backed up when calling - sysupgrade -b. Does not create a backup file. - -EOF - exit 1 -} - -[ -n "$IMAGE" -a -n "$NEED_IMAGE" ] && { - cat <<-EOF - -b|--create-backup and -r|--restore-backup do not perform a firmware upgrade. - Do not specify both -b|-r and a firmware image. - EOF - exit 1 -} - -# prevent messages from clobbering the tarball when using stdout -[ "$CONF_BACKUP" = "-" ] && export VERBOSE=0 - -missing_lines() { - local file1 file2 line - file1="$1" - file2="$2" - oIFS="$IFS" - IFS=":" - while read line; do - set -- $line - grep -q "^$1:" "$file2" || echo "$*" - done < "$file1" - IFS="$oIFS" -} - -list_conffiles() { - awk ' - BEGIN { conffiles = 0 } - /^Conffiles:/ { conffiles = 1; next } - !/^ / { conffiles = 0; next } - conffiles == 1 { print } - ' /usr/lib/opkg/status -} - -list_changed_conffiles() { - # Cannot handle spaces in filenames - but opkg cannot either... - list_conffiles | while read file csum; do - [ -r "$file" ] || continue - - echo "${csum} ${file}" | busybox sha256sum -sc - || echo "$file" - done -} - -list_static_conffiles() { - local filter=$1 - - find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \ - /etc/sysupgrade.conf /lib/upgrade/keep.d/* 2>/dev/null) \ - \( -type f -o -type l \) $filter 2>/dev/null -} - -add_conffiles() { - local file="$1" - - ( list_static_conffiles "$find_filter"; list_changed_conffiles ) | - sort -u > "$file" - return 0 -} - -add_overlayfiles() { - local file="$1" - - local packagesfiles=$1.packagesfiles - touch "$packagesfiles" - - if [ "$SAVE_OVERLAY_PATH" = / ]; then - local conffiles=$1.conffiles - local keepfiles=$1.keepfiles - - list_conffiles | cut -f2 -d ' ' | sort -u > "$conffiles" - - # backup files from /etc/sysupgrade.conf and /lib/upgrade/keep.d, but - # ignore those aready controlled by opkg conffiles - list_static_conffiles | sort -u | - grep -h -v -x -F -f $conffiles > "$keepfiles" - - # backup conffiles, but only those changed if '-u' - [ $SKIP_UNCHANGED = 1 ] && - list_changed_conffiles | sort -u > "$conffiles" - - # do not backup files from packages, except those listed - # in conffiles and keep.d - { - find /usr/lib/opkg/info -type f -name "*.list" -exec cat {} \; - find /usr/lib/opkg/info -type f -name "*.control" -exec sed \ - -ne '/^Alternatives/{s/^Alternatives: //;s/, /\n/g;p}' {} \; | - cut -f2 -d: - } | grep -v -x -F -f $conffiles | - grep -v -x -F -f $keepfiles | sort -u > "$packagesfiles" - rm -f "$keepfiles" "$conffiles" - fi - - # busybox grep bug when file is empty - [ -s "$packagesfiles" ] || echo > $packagesfiles - - ( cd /overlay/upper/; find .$SAVE_OVERLAY_PATH \( -type f -o -type l \) $find_filter | sed \ - -e 's,^\.,,' \ - -e '\,^/etc/board.json$,d' \ - -e '\,/[^/]*-opkg$,d' \ - -e '\,^/etc/urandom.seed$,d' \ - -e "\,^$INSTALLED_PACKAGES$,d" \ - -e '\,^/usr/lib/opkg/.*,d' \ - ) | grep -v -x -F -f $packagesfiles > "$file" - - rm -f "$packagesfiles" - - return 0 -} - -if [ $SAVE_OVERLAY = 1 ]; then - [ ! -d /overlay/upper/etc ] && { - echo "Cannot find '/overlay/upper/etc', required for '-c'" >&2 - exit 1 - } - sysupgrade_init_conffiles="add_overlayfiles" -else - sysupgrade_init_conffiles="add_conffiles" -fi - -find_filter="" -if [ $SKIP_UNCHANGED = 1 ]; then - [ ! -d /rom/ ] && { - echo "'/rom/' is required by '-u'" - exit 1 - } - find_filter='( ( -exec test -e /rom/{} ; -exec cmp -s /{} /rom/{} ; ) -o -print )' -fi - -include /lib/upgrade - -do_save_conffiles() { - local conf_tar="$1" - - [ "$(rootfs_type)" = "tmpfs" ] && { - echo "Cannot save config while running from ramdisk." >&2 - ask_bool 0 "Abort" && exit - rm -f "$conf_tar" - return 0 - } - run_hooks "$CONFFILES" $sysupgrade_init_conffiles - ask_bool 0 "Edit config file list" && vi "$CONFFILES" - - if [ "$SAVE_INSTALLED_PKGS" -eq 1 ]; then - echo "${INSTALLED_PACKAGES}" >> "$CONFFILES" - mkdir -p "$ETCBACKUP_DIR" - # Avoid touching filesystem on each backup - RAMFS="$(mktemp -d -t sysupgrade.XXXXXX)" - mkdir -p "$RAMFS/upper" "$RAMFS/work" - mount -t overlay overlay -o lowerdir=$ETCBACKUP_DIR,upperdir=$RAMFS/upper,workdir=$RAMFS/work $ETCBACKUP_DIR && - UMOUNT_ETCBACKUP_DIR=1 || { - echo "Cannot mount '$ETCBACKUP_DIR' as tmpfs to avoid touching disk while saving the list of installed packages." >&2 - ask_bool 0 "Abort" && exit - } - - # Format: pkg-name{rom,overlay,unkown} - # rom is used for pkgs in /rom, even if updated later - find /usr/lib/opkg/info -name "*.control" \( \ - \( -exec test -f /rom/{} \; -exec echo {} rom \; \) -o \ - \( -exec test -f /overlay/upper/{} \; -exec echo {} overlay \; \) -o \ - \( -exec echo {} unknown \; \) \ - \) | sed -e 's,.*/,,;s/\.control /\t/' > ${INSTALLED_PACKAGES} - fi - - v "Saving config files..." - [ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V="" - tar c${TAR_V}zf "$conf_tar" -T "$CONFFILES" 2>/dev/null - if [ "$?" -ne 0 ]; then - echo "Failed to create the configuration backup." - rm -f "$conf_tar" - exit 1 - fi - - [ "$UMOUNT_ETCBACKUP_DIR" -eq 1 ] && { - umount "$ETCBACKUP_DIR" - rm -rf "$RAMFS" - } - rm -f "$CONFFILES" -} - -if [ $CONF_BACKUP_LIST -eq 1 ]; then - run_hooks "$CONFFILES" $sysupgrade_init_conffiles - [ "$SAVE_INSTALLED_PKGS" -eq 1 ] && echo ${INSTALLED_PACKAGES} >> "$CONFFILES" - cat "$CONFFILES" - rm -f "$CONFFILES" - exit 0 -fi - -if [ -n "$CONF_BACKUP" ]; then - do_save_conffiles "$CONF_BACKUP" - exit $? -fi - -if [ -n "$CONF_RESTORE" ]; then - if [ "$CONF_RESTORE" != "-" ] && [ ! -f "$CONF_RESTORE" ]; then - echo "Backup archive '$CONF_RESTORE' not found." >&2 - exit 1 - fi - - [ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V="" - cp /etc/passwd /etc/group /etc/shadow /tmp - tar -C / -x${TAR_V}zf "$CONF_RESTORE" - missing_lines /tmp/passwd /etc/passwd >> /etc/passwd - missing_lines /tmp/group /etc/group >> /etc/group - missing_lines /tmp/shadow /etc/shadow >> /etc/shadow - rm /tmp/passwd /tmp/group /tmp/shadow - - exit $? -fi - -type platform_check_image >/dev/null 2>/dev/null || { - echo "Firmware upgrade is not implemented for this platform." >&2 - exit 1 -} - -case "$IMAGE" in - http://*|\ - https://*) - wget -O/tmp/sysupgrade.img "$IMAGE" || exit 1 - IMAGE=/tmp/sysupgrade.img - ;; -esac - -IMAGE="$(readlink -f "$IMAGE")" - -case "$IMAGE" in - '') - echo "Image file not found." >&2 - exit 1 - ;; - /tmp/*) ;; - *) - v "Image not in /tmp, copying..." - cp -f "$IMAGE" /tmp/sysupgrade.img - IMAGE=/tmp/sysupgrade.img - ;; -esac - -json_load "$(/usr/libexec/validate_firmware_image "$IMAGE")" || { - echo "Failed to check image" - exit 1 -} -json_get_var valid "valid" -[ "$valid" -eq 0 ] && { - if [ $FORCE -eq 1 ]; then - echo "Image check failed but --force given - will update anyway!" >&2 - else - echo "Image check failed." >&2 - exit 1 - fi -} - -if [ -n "$CONF_IMAGE" ]; then - case "$(get_magic_word $CONF_IMAGE cat)" in - # .gz files - 1f8b) ;; - *) - echo "Invalid config file. Please use only .tar.gz files" >&2 - exit 1 - ;; - esac - get_image "$CONF_IMAGE" "cat" > "$CONF_TAR" - export SAVE_CONFIG=1 -elif ask_bool $SAVE_CONFIG "Keep config files over reflash"; then - [ $TEST -eq 1 ] || do_save_conffiles "$CONF_TAR" - export SAVE_CONFIG=1 -else - [ $TEST -eq 1 ] || rm -f "$CONF_TAR" - export SAVE_CONFIG=0 -fi - -if [ $TEST -eq 1 ]; then - exit 0 -fi - -install_bin /sbin/upgraded -v "Commencing upgrade. Closing all shell sessions." - -COMMAND='/lib/upgrade/do_stage2' - -if [ -n "$FAILSAFE" ]; then - printf '%s\x00%s\x00%s' "$RAM_ROOT" "$IMAGE" "$COMMAND" >/tmp/sysupgrade - lock -u /tmp/.failsafe -else - json_init - json_add_string prefix "$RAM_ROOT" - json_add_string path "$IMAGE" - [ $FORCE -eq 1 ] && json_add_boolean force 1 - [ $SAVE_CONFIG -eq 1 ] && json_add_string backup "$CONF_TAR" - json_add_string command "$COMMAND" - json_add_object options - json_add_int save_partitions "$SAVE_PARTITIONS" - json_close_object - - ubus call system sysupgrade "$(json_dump)" -fi diff --git a/root/package/base-files/boot/uboot-envtools/Makefile b/root/package/base-files/boot/uboot-envtools/Makefile deleted file mode 100644 index 5ea32d88..00000000 --- a/root/package/base-files/boot/uboot-envtools/Makefile +++ /dev/null @@ -1,78 +0,0 @@ -# -# Copyright (C) 2006-2014 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=uboot-envtools -PKG_DISTNAME:=u-boot -PKG_VERSION:=2020.04 -PKG_RELEASE:=1 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE:=$(PKG_DISTNAME)-$(PKG_VERSION).tar.bz2 -PKG_SOURCE_SUBDIR:=$(PKG_DISTNAME)-$(PKG_VERSION) -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_DISTNAME)-$(PKG_VERSION) -PKG_SOURCE_URL:=https://git.denx.de/u-boot.git -PKG_SOURCE_VERSION:=36fec02b1f90b92cf51ec531564f9284eae27ab4 -PKG_MIRROR_HASH:=fe732aaf037d9cc3c0909bad8362af366ae964bbdac6913a34081ff4ad565372 - -PKG_BUILD_DEPENDS:=fstools - -PKG_LICENSE:=GPL-2.0 GPL-2.0+ -PKG_LICENSE_FILES:=Licenses/README - -PKG_FLAGS:=nonshared - -PKG_BUILD_PARALLEL:=1 - -include $(INCLUDE_DIR)/package.mk - -define Package/uboot-envtools - SECTION:=utils - CATEGORY:=Utilities - SUBMENU:=Boot Loaders - TITLE:=read/modify U-Boot bootloader environment - URL:=http://www.denx.de/wiki/U-Boot -endef - -define Package/uboot-envtools/description - This package includes tools to read and modify U-Boot bootloader environment. -endef - -define Build/Configure - touch $(PKG_BUILD_DIR)/include/config.h - mkdir -p $(PKG_BUILD_DIR)/include/config - touch $(PKG_BUILD_DIR)/include/config/auto.conf - mkdir -p $(PKG_BUILD_DIR)/include/generated - touch $(PKG_BUILD_DIR)/include/generated/autoconf.h -endef - -MAKE_FLAGS += \ - TARGET_CFLAGS="$(TARGET_CFLAGS)" \ - TARGET_LDFLAGS="$(TARGET_LDFLAGS)" \ - no-dot-config-targets=envtools \ - envtools - -define Package/uboot-envtools/conffiles -/etc/config/ubootenv -/etc/fw_env.config -endef - -define Package/uboot-envtools/install - $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/env/fw_printenv $(1)/usr/sbin - $(LN) fw_printenv $(1)/usr/sbin/fw_setenv - $(INSTALL_DIR) $(1)/lib - $(INSTALL_DATA) ./files/uboot-envtools.sh $(1)/lib - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(if $(wildcard ./files/$(BOARD)), \ - $(INSTALL_DATA) ./files/$(BOARD) \ - $(1)/etc/uci-defaults/30_uboot-envtools \ - ) -endef - -$(eval $(call BuildPackage,uboot-envtools)) diff --git a/root/package/base-files/boot/uboot-rockchip/Makefile b/root/package/base-files/boot/uboot-rockchip/Makefile deleted file mode 100644 index 75825ce6..00000000 --- a/root/package/base-files/boot/uboot-rockchip/Makefile +++ /dev/null @@ -1,106 +0,0 @@ -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# -include $(TOPDIR)/rules.mk -include $(INCLUDE_DIR)/kernel.mk - -PKG_VERSION:=2021.04 -PKG_RELEASE:=1 - -PKG_HASH:=0d438b1bb5cceb57a18ea2de4a0d51f7be5b05b98717df05938636e0aadfe11a - -PKG_MAINTAINER:=Tobias Maedel - -include $(INCLUDE_DIR)/u-boot.mk -include $(INCLUDE_DIR)/package.mk - -define U-Boot/Default - BUILD_TARGET:=rockchip - UENV:=default - HIDDEN:=1 -endef - - -# RK3328 boards - -define U-Boot/nanopi-r2s-rk3328 - BUILD_SUBTARGET:=armv8 - NAME:=NanoPi R2S - BUILD_DEVICES:= \ - friendlyarm_nanopi-r2s - DEPENDS:=+PACKAGE_u-boot-nanopi-r2s-rk3328:arm-trusted-firmware-rockchip - PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip - ATF:=rk3328_bl31.elf - OF_PLATDATA:=$(1) -endef - - -# RK3399 boards - -define U-Boot/nanopi-r4s-rk3399 - BUILD_SUBTARGET:=armv8 - NAME:=NanoPi R4S - BUILD_DEVICES:= \ - friendlyarm_nanopi-r4s - DEPENDS:=+PACKAGE_u-boot-nanopi-r4s-rk3399:arm-trusted-firmware-rockchip - PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip - ATF:=rk3399_bl31.elf -endef - -define U-Boot/rock-pi-4-rk3399 - BUILD_SUBTARGET:=armv8 - NAME:=Rock Pi 4 - BUILD_DEVICES:= \ - radxa_rock-pi-4 - DEPENDS:=+PACKAGE_u-boot-rock-pi-4-rk3399:arm-trusted-firmware-rockchip - PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip - ATF:=rk3399_bl31.elf -endef - -define U-Boot/rockpro64-rk3399 - BUILD_SUBTARGET:=armv8 - NAME:=RockPro64 - BUILD_DEVICES:= \ - pine64_rockpro64 - DEPENDS:=+PACKAGE_u-boot-rockpro64-rk3399:arm-trusted-firmware-rockchip - PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip - ATF:=rk3399_bl31.elf -endef - -UBOOT_TARGETS := \ - nanopi-r4s-rk3399 \ - rock-pi-4-rk3399 \ - rockpro64-rk3399 \ - nanopi-r2s-rk3328 - -UBOOT_CONFIGURE_VARS += USE_PRIVATE_LIBGCC=yes - -UBOOT_MAKE_FLAGS += \ - BL31=$(STAGING_DIR_IMAGE)/$(ATF) - -define Build/Configure - $(call Build/Configure/U-Boot) - -ifneq ($(OF_PLATDATA),) - mkdir -p $(PKG_BUILD_DIR)/tpl/dts - mkdir -p $(PKG_BUILD_DIR)/include/generated - - $(CP) $(PKG_BUILD_DIR)/of-platdata/$(OF_PLATDATA)/dt-plat.c $(PKG_BUILD_DIR)/tpl/dts/dt-plat.c - $(CP) $(PKG_BUILD_DIR)/of-platdata/$(OF_PLATDATA)/dt-structs-gen.h $(PKG_BUILD_DIR)/include/generated/dt-structs-gen.h -endif - - $(SED) 's#CONFIG_MKIMAGE_DTC_PATH=.*#CONFIG_MKIMAGE_DTC_PATH="$(PKG_BUILD_DIR)/scripts/dtc/dtc"#g' $(PKG_BUILD_DIR)/.config - echo 'CONFIG_IDENT_STRING=" OpenWrt"' >> $(PKG_BUILD_DIR)/.config -endef - -define Build/InstallDev - $(INSTALL_DIR) $(STAGING_DIR_IMAGE) - $(CP) $(PKG_BUILD_DIR)/idbloader.img $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-idbloader.img - $(CP) $(PKG_BUILD_DIR)/u-boot.itb $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-u-boot.itb -endef - -define Package/u-boot/install/default -endef - -$(eval $(call BuildPackage/U-Boot)) diff --git a/root/package/base-files/boot/uboot-rockchip/patches/002-spl-remove-dtoc-of-pdata-generation.patch b/root/package/base-files/boot/uboot-rockchip/patches/002-spl-remove-dtoc-of-pdata-generation.patch deleted file mode 100644 index 61a56c2a..00000000 --- a/root/package/base-files/boot/uboot-rockchip/patches/002-spl-remove-dtoc-of-pdata-generation.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 55273cf6079ddd3b006da69f0113c2c66c03f17e Mon Sep 17 00:00:00 2001 -From: David Bauer -Date: Tue, 14 Jul 2020 22:44:22 +0200 -Subject: [PATCH] spl: remove dtoc of-pdata generation - -Remove the dtoc of-pdata generation. This generation is dependant on -libpython-dev. As OpenWrt does not ship with this dependency, use -pre-generated pdata files and remove the generation from the -build-process. - -This only affects RK3328 boards. - -Signed-off-by: David Bauer ---- - scripts/Makefile.spl | 6 ------ - 1 file changed, 6 deletions(-) - ---- a/scripts/Makefile.spl -+++ b/scripts/Makefile.spl -@@ -329,10 +329,6 @@ PHONY += dts_dir - dts_dir: - $(shell [ -d $(obj)/dts ] || mkdir -p $(obj)/dts) - --include/generated/dt-structs-gen.h $(u-boot-spl-platdata_c) &: \ -- $(obj)/$(SPL_BIN).dtb dts_dir FORCE -- $(call if_changed,dtoc) -- - ifdef CONFIG_SAMSUNG - ifdef CONFIG_VAR_SIZE_SPL - VAR_SIZE_PARAM = --vs diff --git a/root/package/base-files/boot/uboot-rockchip/patches/102-arm64-rk3399-Add-support-NanoPi-R4s.patch b/root/package/base-files/boot/uboot-rockchip/patches/102-arm64-rk3399-Add-support-NanoPi-R4s.patch deleted file mode 100644 index f926f52e..00000000 --- a/root/package/base-files/boot/uboot-rockchip/patches/102-arm64-rk3399-Add-support-NanoPi-R4s.patch +++ /dev/null @@ -1,290 +0,0 @@ -From b69b9f3f54732c303939eb748aad97cd4cf60168 Mon Sep 17 00:00:00 2001 -From: Xiaobo Tian -Date: Sat, 27 Feb 2021 22:39:11 +0800 -Subject: [PATCH] arm64: rk3399: Add support NanoPi R4s - -NanoPi R4s is SBC base on Rockchip RK3399 hexa-core processor with -dual-Core Cortex-A72 and Mali-T864 GPU with 4GiB(LPDDR4) of RAM, SD card support, -including 2 gigabit ethernet(RTL8211E 1Gbps - RTL8111H 1Gbps) and 2 USB 3.0 port. -port.It also has two GPIO headers which allows further peripherals to be used. - -The devicetree file is taken of the rk3399 nanopi4 Linux kernel [1]. - -[1] https://github.com/torvalds/linux/commit/e7a095908227fb3ccc86d001d9e13c9ae2bef8e6 - -Signed-off-by: xiaobo -Reviewed-by: Kever Yang ---- - arch/arm/dts/Makefile | 1 + - arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi | 16 +++ - arch/arm/dts/rk3399-nanopi-r4s.dts | 138 +++++++++++++++++++++ - board/rockchip/evb_rk3399/MAINTAINERS | 6 + - configs/nanopi-r4s-rk3399_defconfig | 62 +++++++++ - 5 files changed, 223 insertions(+) - create mode 100644 arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi - create mode 100644 arch/arm/dts/rk3399-nanopi-r4s.dts - create mode 100644 configs/nanopi-r4s-rk3399_defconfig - -diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index dd4d4efed31..0a139473811 100644 ---- a/arch/arm/dts/Makefile -+++ b/arch/arm/dts/Makefile -@@ -132,6 +132,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \ - rk3399-nanopi-m4.dtb \ - rk3399-nanopi-m4-2gb.dtb \ - rk3399-nanopi-neo4.dtb \ -+ rk3399-nanopi-r4s.dtb \ - rk3399-orangepi.dtb \ - rk3399-pinebook-pro.dtb \ - rk3399-puma-haikou.dtb \ -diff --git a/arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi b/arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi -new file mode 100644 -index 00000000000..cd1642527ba ---- /dev/null -+++ b/arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi -@@ -0,0 +1,16 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * RK3399-based FriendlyElec boards device tree source -+ * -+ * Copyright (c) 2016 Fuzhou Rockchip Electronics Co., Ltd -+ * -+ * Copyright (c) 2018 FriendlyElec Computer Tech. Co., Ltd. -+ * (http://www.friendlyarm.com) -+ * -+ * Copyright (c) 2018 Collabora Ltd. -+ * Copyright (c) 2019 Arm Ltd. -+ * Copyright (C) 2020 Xiaobo -+ */ -+ -+#include "rk3399-nanopi4-u-boot.dtsi" -+#include "rk3399-sdram-lpddr4-100.dtsi" -diff --git a/arch/arm/dts/rk3399-nanopi-r4s.dts b/arch/arm/dts/rk3399-nanopi-r4s.dts -new file mode 100644 -index 00000000000..6f2cf17bf1b ---- /dev/null -+++ b/arch/arm/dts/rk3399-nanopi-r4s.dts -@@ -0,0 +1,138 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+/* -+ * Copyright (c) 2016 Fuzhou Rockchip Electronics Co., Ltd -+ * -+ * Copyright (c) 2018 FriendlyElec Computer Tech. Co., Ltd. -+ * (http://www.friendlyarm.com) -+ * -+ * Copyright (c) 2018 Collabora Ltd. -+ * Copyright (c) 2019 Arm Ltd. -+ * Copyright (C) 2020 Xiaobo -+ */ -+ -+/dts-v1/; -+#include "rk3399-nanopi4.dtsi" -+ -+/ { -+ model = "FriendlyElec NanoPi R4S"; -+ compatible = "friendlyarm,nanopi-r4s", "rockchip,rk3399"; -+ -+ aliases { -+ ethernet1 = &r8169; -+ }; -+ -+ vdd_5v: vdd-5v { -+ compatible = "regulator-fixed"; -+ regulator-name = "vdd_5v"; -+ regulator-always-on; -+ regulator-boot-on; -+ }; -+ -+ fan: pwm-fan { -+ compatible = "pwm-fan"; -+ cooling-levels = <0 12 18 255>; -+ #cooling-cells = <2>; -+ fan-supply = <&vdd_5v>; -+ pwms = <&pwm1 0 50000 0>; -+ }; -+}; -+ -+&cpu_thermal { -+ trips { -+ cpu_warm: cpu_warm { -+ temperature = <55000>; -+ hysteresis = <2000>; -+ type = "active"; -+ }; -+ -+ cpu_hot: cpu_hot { -+ temperature = <65000>; -+ hysteresis = <2000>; -+ type = "active"; -+ }; -+ }; -+ -+ cooling-maps { -+ map2 { -+ trip = <&cpu_warm>; -+ cooling-device = <&fan THERMAL_NO_LIMIT 1>; -+ }; -+ -+ map3 { -+ trip = <&cpu_hot>; -+ cooling-device = <&fan 2 THERMAL_NO_LIMIT>; -+ }; -+ }; -+}; -+ -+&emmc_phy { -+ status = "disabled"; -+}; -+ -+&fusb0 { -+ status = "disabled"; -+}; -+ -+&leds { -+ lan_led: led-1 { -+ gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>; -+ label = "nanopi-r4s:green:lan"; -+ }; -+ -+ wan_led: led-2 { -+ gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>; -+ label = "nanopi-r4s:green:wan"; -+ }; -+}; -+ -+&leds_gpio { -+ rockchip,pins = -+ <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>, -+ <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>, -+ <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>; -+}; -+ -+&pcie0 { -+ max-link-speed = <1>; -+ num-lanes = <1>; -+ vpcie3v3-supply = <&vcc3v3_sys>; -+ -+ pcie@0 { -+ reg = <0x00000000 0 0 0 0>; -+ #address-cells = <3>; -+ #size-cells = <2>; -+ -+ r8169: pcie@0,0 { -+ reg = <0x000000 0 0 0 0>; -+ local-mac-address = [ 00 00 00 00 00 00 ]; -+ }; -+ }; -+}; -+ -+&sdhci { -+ status = "disabled"; -+}; -+ -+&sdio0 { -+ status = "disabled"; -+}; -+ -+&sdmmc { -+ host-index-min = <1>; -+}; -+ -+&u2phy0_host { -+ phy-supply = <&vdd_5v>; -+}; -+ -+&u2phy1_host { -+ status = "disabled"; -+}; -+ -+&usbdrd_dwc3_0 { -+ dr_mode = "host"; -+}; -+ -+&vcc3v3_sys { -+ vin-supply = <&vcc5v0_sys>; -+}; -diff --git a/board/rockchip/evb_rk3399/MAINTAINERS b/board/rockchip/evb_rk3399/MAINTAINERS -index 4c889e06a63..3b9d60eccd4 100644 ---- a/board/rockchip/evb_rk3399/MAINTAINERS -+++ b/board/rockchip/evb_rk3399/MAINTAINERS -@@ -55,6 +55,12 @@ S: Maintained - F: configs/nanopi-neo4-rk3399_defconfig - F: arch/arm/dts/rk3399-nanopi-neo4-u-boot.dtsi - -+NANOPI-R4S -+M: Xiaobo Tian -+S: Maintained -+F: configs/nanopi-r4s-rk3399_defconfig -+F: arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi -+ - ORANGEPI-RK3399 - M: Jagan Teki - S: Maintained -diff --git a/configs/nanopi-r4s-rk3399_defconfig b/configs/nanopi-r4s-rk3399_defconfig -new file mode 100644 -index 00000000000..0a3c28b0126 ---- /dev/null -+++ b/configs/nanopi-r4s-rk3399_defconfig -@@ -0,0 +1,62 @@ -+CONFIG_ARM=y -+CONFIG_ARCH_ROCKCHIP=y -+CONFIG_SYS_TEXT_BASE=0x00200000 -+CONFIG_ENV_OFFSET=0x3F8000 -+CONFIG_ROCKCHIP_RK3399=y -+CONFIG_TARGET_EVB_RK3399=y -+CONFIG_NR_DRAM_BANKS=1 -+CONFIG_DEBUG_UART_BASE=0xFF1A0000 -+CONFIG_DEBUG_UART_CLOCK=24000000 -+CONFIG_DEBUG_UART=y -+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-nanopi-r4s.dtb" -+CONFIG_DISPLAY_BOARDINFO_LATE=y -+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set -+CONFIG_SPL_STACK_R=y -+CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 -+CONFIG_TPL=y -+CONFIG_CMD_BOOTZ=y -+CONFIG_CMD_GPT=y -+CONFIG_CMD_MMC=y -+CONFIG_CMD_USB=y -+# CONFIG_CMD_SETEXPR is not set -+CONFIG_CMD_TIME=y -+CONFIG_SPL_OF_CONTROL=y -+CONFIG_DEFAULT_DEVICE_TREE="rk3399-nanopi-r4s" -+CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" -+CONFIG_ENV_IS_IN_MMC=y -+CONFIG_SYS_RELOC_GD_ENV_ADDR=y -+CONFIG_ROCKCHIP_GPIO=y -+CONFIG_SYS_I2C_ROCKCHIP=y -+CONFIG_MMC_DW=y -+CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_DM_ETH=y -+CONFIG_ETH_DESIGNWARE=y -+CONFIG_GMAC_ROCKCHIP=y -+CONFIG_PMIC_RK8XX=y -+CONFIG_REGULATOR_PWM=y -+CONFIG_REGULATOR_RK8XX=y -+CONFIG_PWM_ROCKCHIP=y -+CONFIG_RAM_RK3399_LPDDR4=y -+CONFIG_BAUDRATE=1500000 -+CONFIG_DEBUG_UART_SHIFT=2 -+CONFIG_SYSRESET=y -+CONFIG_USB=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_DWC3=y -+CONFIG_USB_EHCI_HCD=y -+CONFIG_USB_EHCI_GENERIC=y -+CONFIG_USB_KEYBOARD=y -+CONFIG_USB_HOST_ETHER=y -+CONFIG_USB_ETHER_ASIX=y -+CONFIG_USB_ETHER_ASIX88179=y -+CONFIG_USB_ETHER_MCS7830=y -+CONFIG_USB_ETHER_RTL8152=y -+CONFIG_USB_ETHER_SMSC95XX=y -+CONFIG_DM_VIDEO=y -+CONFIG_DISPLAY=y -+CONFIG_VIDEO_ROCKCHIP=y -+CONFIG_DISPLAY_ROCKCHIP_HDMI=y -+CONFIG_SPL_TINY_MEMSET=y -+CONFIG_ERRNO_STR=y diff --git a/root/package/base-files/boot/uboot-rockchip/src/of-platdata/nanopi-r2s-rk3328/dt-plat.c b/root/package/base-files/boot/uboot-rockchip/src/of-platdata/nanopi-r2s-rk3328/dt-plat.c deleted file mode 100644 index 1818461e..00000000 --- a/root/package/base-files/boot/uboot-rockchip/src/of-platdata/nanopi-r2s-rk3328/dt-plat.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * DO NOT MODIFY - * - * Declares the U_BOOT_DRIVER() records and platform data. - * This was generated by dtoc from a .dtb (device tree binary) file. - */ - -/* Allow use of U_BOOT_DRVINFO() in this file */ -#define DT_PLAT_C - -#include -#include -#include - -/* Node /clock-controller@ff440000 index 0 */ -static struct dtd_rockchip_rk3328_cru dtv_clock_controller_at_ff440000 = { - .reg = {0xff440000, 0x1000}, - .rockchip_grf = 0x3a, -}; -U_BOOT_DRVINFO(clock_controller_at_ff440000) = { - .name = "rockchip_rk3328_cru", - .plat = &dtv_clock_controller_at_ff440000, - .plat_size = sizeof(dtv_clock_controller_at_ff440000), - .parent_idx = -1, -}; - -/* Node /dmc index 1 */ -static struct dtd_rockchip_rk3328_dmc dtv_dmc = { - .reg = {0xff400000, 0x1000, 0xff780000, 0x3000, 0xff100000, 0x1000, 0xff440000, 0x1000, - 0xff720000, 0x1000, 0xff798000, 0x1000}, - .rockchip_sdram_params = {0x1, 0xa, 0x2, 0x1, 0x0, 0x0, 0x11, 0x0, - 0x11, 0x0, 0x0, 0x94291288, 0x0, 0x27, 0x462, 0x15, - 0x242, 0xff, 0x14d, 0x0, 0x1, 0x0, 0x0, 0x0, - 0x43049010, 0x64, 0x28003b, 0xd0, 0x20053, 0xd4, 0x220000, 0xd8, - 0x100, 0xdc, 0x40000, 0xe0, 0x0, 0xe4, 0x110000, 0xe8, - 0x420, 0xec, 0x400, 0xf4, 0xf011f, 0x100, 0x9060b06, 0x104, - 0x20209, 0x108, 0x505040a, 0x10c, 0x40400c, 0x110, 0x5030206, 0x114, - 0x3030202, 0x120, 0x3030b03, 0x124, 0x20208, 0x180, 0x1000040, 0x184, - 0x0, 0x190, 0x7030003, 0x198, 0x5001100, 0x1a0, 0xc0400003, 0x240, - 0x6000604, 0x244, 0x201, 0x250, 0xf00, 0x490, 0x1, 0xffffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0x4, 0xc, 0x28, 0xa, 0x2c, - 0x0, 0x30, 0x9, 0xffffffff, 0xffffffff, 0x77, 0x88, 0x79, - 0x79, 0x87, 0x97, 0x87, 0x78, 0x77, 0x78, 0x87, - 0x88, 0x87, 0x87, 0x77, 0x78, 0x78, 0x78, 0x78, - 0x78, 0x78, 0x78, 0x78, 0x78, 0x69, 0x9, 0x77, - 0x78, 0x77, 0x78, 0x77, 0x78, 0x77, 0x78, 0x77, - 0x79, 0x9, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0x78, 0x78, 0x78, 0x69, 0x9, 0x77, 0x78, 0x77, - 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x79, 0x9, - 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0x78, 0x69, 0x9, 0x77, 0x78, 0x77, 0x78, 0x77, - 0x78, 0x77, 0x78, 0x77, 0x79, 0x9, 0x78, 0x78, - 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x69, - 0x9, 0x77, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, - 0x77, 0x77, 0x79, 0x9}, -}; -U_BOOT_DRVINFO(dmc) = { - .name = "rockchip_rk3328_dmc", - .plat = &dtv_dmc, - .plat_size = sizeof(dtv_dmc), - .parent_idx = -1, -}; - -/* Node /mmc@ff500000 index 2 */ -static struct dtd_rockchip_rk3288_dw_mshc dtv_mmc_at_ff500000 = { - .bus_width = 0x4, - .cap_sd_highspeed = true, - .clocks = { - {0, {317}}, - {0, {33}}, - {0, {74}}, - {0, {78}},}, - .disable_wp = true, - .fifo_depth = 0x100, - .interrupts = {0x0, 0xc, 0x4}, - .max_frequency = 0x8f0d180, - .pinctrl_0 = {0x47, 0x48, 0x49, 0x4a}, - .pinctrl_names = "default", - .reg = {0xff500000, 0x4000}, - .sd_uhs_sdr104 = true, - .sd_uhs_sdr12 = true, - .sd_uhs_sdr25 = true, - .sd_uhs_sdr50 = true, - .u_boot_spl_fifo_mode = true, - .vmmc_supply = 0x4b, - .vqmmc_supply = 0x1e, -}; -U_BOOT_DRVINFO(mmc_at_ff500000) = { - .name = "rockchip_rk3288_dw_mshc", - .plat = &dtv_mmc_at_ff500000, - .plat_size = sizeof(dtv_mmc_at_ff500000), - .parent_idx = -1, -}; - -/* Node /serial@ff130000 index 3 */ -static struct dtd_ns16550_serial dtv_serial_at_ff130000 = { - .clock_frequency = 0x16e3600, - .clocks = { - {0, {40}}, - {0, {212}},}, - .dma_names = {"tx", "rx"}, - .dmas = {0x10, 0x6, 0x10, 0x7}, - .interrupts = {0x0, 0x39, 0x4}, - .pinctrl_0 = 0x26, - .pinctrl_names = "default", - .reg = {0xff130000, 0x100}, - .reg_io_width = 0x4, - .reg_shift = 0x2, -}; -U_BOOT_DRVINFO(serial_at_ff130000) = { - .name = "ns16550_serial", - .plat = &dtv_serial_at_ff130000, - .plat_size = sizeof(dtv_serial_at_ff130000), - .parent_idx = -1, -}; - -/* Node /syscon@ff100000 index 4 */ -static struct dtd_rockchip_rk3328_grf dtv_syscon_at_ff100000 = { - .reg = {0xff100000, 0x1000}, -}; -U_BOOT_DRVINFO(syscon_at_ff100000) = { - .name = "rockchip_rk3328_grf", - .plat = &dtv_syscon_at_ff100000, - .plat_size = sizeof(dtv_syscon_at_ff100000), - .parent_idx = -1, -}; - diff --git a/root/package/base-files/boot/uboot-rockchip/src/of-platdata/nanopi-r2s-rk3328/dt-structs-gen.h b/root/package/base-files/boot/uboot-rockchip/src/of-platdata/nanopi-r2s-rk3328/dt-structs-gen.h deleted file mode 100644 index b1ff08a9..00000000 --- a/root/package/base-files/boot/uboot-rockchip/src/of-platdata/nanopi-r2s-rk3328/dt-structs-gen.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * DO NOT MODIFY - * - * Defines the structs used to hold devicetree data. - * This was generated by dtoc from a .dtb (device tree binary) file. - */ - -#include -#include -struct dtd_ns16550_serial { - fdt32_t clock_frequency; - struct phandle_1_arg clocks[2]; - const char * dma_names[2]; - fdt32_t dmas[4]; - fdt32_t interrupts[3]; - fdt32_t pinctrl_0; - const char * pinctrl_names; - fdt64_t reg[2]; - fdt32_t reg_io_width; - fdt32_t reg_shift; -}; -struct dtd_rockchip_rk3288_dw_mshc { - fdt32_t bus_width; - bool cap_sd_highspeed; - struct phandle_1_arg clocks[4]; - bool disable_wp; - fdt32_t fifo_depth; - fdt32_t interrupts[3]; - fdt32_t max_frequency; - fdt32_t pinctrl_0[4]; - const char * pinctrl_names; - fdt64_t reg[2]; - bool sd_uhs_sdr104; - bool sd_uhs_sdr12; - bool sd_uhs_sdr25; - bool sd_uhs_sdr50; - bool u_boot_spl_fifo_mode; - fdt32_t vmmc_supply; - fdt32_t vqmmc_supply; -}; -struct dtd_rockchip_rk3328_cru { - fdt64_t reg[2]; - fdt32_t rockchip_grf; -}; -struct dtd_rockchip_rk3328_dmc { - fdt64_t reg[12]; - fdt32_t rockchip_sdram_params[196]; -}; -struct dtd_rockchip_rk3328_grf { - fdt64_t reg[2]; -}; diff --git a/root/package/base-files/files/bin/config_generate b/root/package/base-files/files/bin/config_generate index 1deda8e2..ae7f2de7 100755 --- a/root/package/base-files/files/bin/config_generate +++ b/root/package/base-files/files/bin/config_generate @@ -7,25 +7,58 @@ CFG=/etc/board.json [ -s $CFG ] || /bin/board_detect || exit 1 [ -s /etc/config/network -a -s /etc/config/system ] && exit 0 +generate_bridge() { + local name=$1 + local macaddr=$2 + uci -q batch <<-EOF + set network.$name=device + set network.$name.name=$name + set network.$name.type=bridge + EOF + if [ -n "$macaddr" ]; then + uci -q batch <<-EOF + set network.$name.macaddr=$macaddr + EOF + fi +} + +bridge_vlan_id=0 +generate_bridge_vlan() { + local name=$1_vlan + local device=$2 + local ports="$3" + local vlan="$4" + uci -q batch <<-EOF + set network.$name=bridge-vlan + set network.$name.device='$device' + set network.$name.vlan='$vlan' + set network.$name.ports='$ports' + EOF +} + generate_static_network() { uci -q batch <<-EOF delete network.loopback set network.loopback='interface' - set network.loopback.ifname='lo' + set network.loopback.device='lo' set network.loopback.proto='static' set network.loopback.ipaddr='127.0.0.1' set network.loopback.netmask='255.0.0.0' - delete network.globals - set network.globals='globals' - set network.globals.ula_prefix='auto' EOF + [ -e /proc/sys/net/ipv6 ] && { + uci -q batch <<-EOF + delete network.globals + set network.globals='globals' + set network.globals.ula_prefix='auto' + EOF + } if json_is_a dsl object; then json_select dsl if json_is_a atmbridge object; then json_select atmbridge - local vpi vci encaps payload - json_get_vars vpi vci encaps payload + local vpi vci encaps payload nameprefix + json_get_vars vpi vci encaps payload nameprefix uci -q batch <<-EOF delete network.atm set network.atm='atm-bridge' @@ -33,6 +66,7 @@ generate_static_network() { set network.atm.vci='$vci' set network.atm.encaps='$encaps' set network.atm.payload='$payload' + set network.atm.nameprefix='$nameprefix' EOF json_select .. fi @@ -57,41 +91,69 @@ generate_static_network() { addr_offset=2 generate_network() { - local ifname macaddr protocol type ipaddr netmask + local ports device macaddr protocol type ipaddr netmask vlan + local bridge=$2 json_select network json_select "$1" - json_get_vars ifname macaddr protocol ipaddr netmask + json_get_vars device macaddr protocol ipaddr netmask vlan + json_get_values ports ports json_select .. json_select .. - [ -n "$ifname" ] || return + [ -n "$device" -o -n "$ports" ] || return - case "$1" in - # hack (see /etc/board.d/02_network) - none) return ;; - lan*) proto=${proto:-static} ;; - wan*) proto=${proto:-dhcp} ;; - esac + # Force bridge for "lan" as it may have other devices (e.g. wireless) + # bridged + [ "$1" = "lan" -a -z "$ports" ] && { + ports="$device" + } + + [ -n "$ports" -a -z "$bridge" ] && { + uci -q batch <<-EOF + add network device + set network.@device[-1].name='br-$1' + set network.@device[-1].type='bridge' + EOF + for port in $ports; do uci add_list network.@device[-1].ports="$port"; done + [ -n "$macaddr" ] && { + for port in $ports; do + uci -q batch <<-EOF + add network device + set network.@device[-1].name='$port' + set network.@device[-1].macaddr='$macaddr' + EOF + done + } + device=br-$1 + type= + macaddr="" + } + + [ -n "$bridge" ] && { + [ -z "$ports" ] && ports="$device" + if [ -z "$vlan" ]; then + bridge_vlan_id=$((bridge_vlan_id + 1)) + vlan=$bridge_vlan_id + fi + generate_bridge_vlan $1 $bridge "$ports" $vlan + device=$bridge.$vlan + type="" + } if [ -n "$macaddr" ]; then - type=macvlan # useless, only for legacy uci -q batch <<-EOF - delete network.${1}_dev - set network.${1}_dev='device' - set network.${1}_dev.name='$1' - set network.${1}_dev.type='$type' - set network.${1}_dev.ifname='$ifname' - set network.${1}_dev.macaddr='$macaddr' + add network device + set network.@device[-1].name='$device' + set network.@device[-1].macaddr='$macaddr' EOF - ifname=$1 fi uci -q batch <<-EOF delete network.$1 set network.$1='interface' set network.$1.type='$type' - set network.$1.ifname='$ifname' + set network.$1.device='$device' set network.$1.proto='none' EOF @@ -109,17 +171,23 @@ generate_network() { set network.$1.proto='static' set network.$1.ipaddr='$ipad' set network.$1.netmask='$netm' - set network.$1.ip6assign='60' EOF + [ -e /proc/sys/net/ipv6 ] && uci set network.$1.ip6assign='60' ;; dhcp) # fixup IPv6 slave interface if parent is a bridge - [ "$type" = "bridge" ] && ifname="br-$1" + [ "$type" = "bridge" ] && device="br-$1" - uci -q batch <<-EOF - set network.$1.proto='dhcp' - EOF + uci set network.$1.proto='dhcp' + [ -e /proc/sys/net/ipv6 ] && { + uci -q batch <<-EOF + delete network.${1}6 + set network.${1}6='interface' + set network.${1}6.device='$device' + set network.${1}6.proto='dhcpv6' + EOF + } ;; pppoe) @@ -127,12 +195,16 @@ generate_network() { set network.$1.proto='pppoe' set network.$1.username='username' set network.$1.password='password' - set network.$1.ipv6='1' - delete network.${1}6 - set network.${1}6='interface' - set network.${1}6.ifname='@${1}' - set network.${1}6.proto='dhcpv6' EOF + [ -e /proc/sys/net/ipv6 ] && { + uci -q batch <<-EOF + set network.$1.ipv6='1' + delete network.${1}6 + set network.${1}6='interface' + set network.${1}6.device='@${1}' + set network.${1}6.proto='dhcpv6' + EOF + } ;; esac } @@ -206,7 +278,8 @@ generate_switch() { json_select switch json_select "$key" - json_get_vars enable reset blinkrate cpu_port + json_get_vars enable reset blinkrate cpu_port \ + ar8xxx_mib_type ar8xxx_mib_poll_interval uci -q batch <<-EOF add network switch @@ -214,6 +287,8 @@ generate_switch() { set network.@switch[-1].reset='$reset' set network.@switch[-1].enable_vlan='$enable' set network.@switch[-1].blinkrate='$blinkrate' + set network.@switch[-1].ar8xxx_mib_type='$ar8xxx_mib_type' + set network.@switch[-1].ar8xxx_mib_poll_interval='$ar8xxx_mib_poll_interval' EOF generate_switch_vlans_ports "$1" @@ -222,12 +297,11 @@ generate_switch() { json_select .. } - generate_static_system() { uci -q batch <<-EOF delete system.@system[0] add system system - set system.@system[-1].hostname='OpenMPTCProuter' + set system.@system[-1].hostname='antrouter' set system.@system[-1].timezone='UTC' set system.@system[-1].ttylogin='0' set system.@system[-1].log_size='64' @@ -237,10 +311,10 @@ generate_static_system() { set system.ntp='timeserver' set system.ntp.enabled='1' set system.ntp.enable_server='0' - add_list system.ntp.server='0.openwrt.pool.ntp.org' - add_list system.ntp.server='1.openwrt.pool.ntp.org' - add_list system.ntp.server='2.openwrt.pool.ntp.org' - add_list system.ntp.server='3.openwrt.pool.ntp.org' + add_list system.ntp.server='ntp.aliyun.com' + add_list system.ntp.server='time1.cloud.tencent.com' + add_list system.ntp.server='time.ustc.edu.cn' + add_list system.ntp.server='cn.pool.ntp.org' EOF if json_is_a system object; then @@ -250,6 +324,13 @@ generate_static_system() { uci -q set "system.@system[-1].hostname=$hostname" fi + local compat_version + if json_get_var compat_version compat_version; then + uci -q set "system.@system[-1].compat_version=$compat_version" + else + uci -q set "system.@system[-1].compat_version=1.0" + fi + if json_is_a ntpserver array; then local keys key json_get_keys keys ntpserver @@ -359,11 +440,12 @@ generate_led() { ;; switch) - local port_mask speed_mask - json_get_vars port_mask speed_mask + local port_mask speed_mask mode + json_get_vars port_mask speed_mask mode uci -q batch <<-EOF set system.$cfg.port_mask='$port_mask' set system.$cfg.speed_mask='$speed_mask' + set system.$cfg.mode='$mode' EOF ;; @@ -411,12 +493,24 @@ generate_gpioswitch() { json_init json_load "$(cat ${CFG})" +umask 077 + if [ ! -s /etc/config/network ]; then + bridge_name="" touch /etc/config/network generate_static_network + json_get_vars bridge + [ -n "$bridge" ] && { + json_select bridge + json_get_vars name macaddr + generate_bridge "$name" "$macaddr" + json_select .. + bridge_name=$name + } + json_get_keys keys network - for key in $keys; do generate_network $key; done + for key in $keys; do generate_network $key $bridge_name; done json_get_keys keys switch for key in $keys; do generate_switch $key; done diff --git a/root/package/base-files/files/etc/board.d/99-default_network b/root/package/base-files/files/etc/board.d/99-default_network deleted file mode 100644 index 55d5d79a..00000000 --- a/root/package/base-files/files/etc/board.d/99-default_network +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2013-2015 OpenWrt.org -# - -. /lib/functions/uci-defaults.sh - -board_config_update - -json_is_a network object && exit 0 - -ucidef_set_interface_lan 'eth0' - -board_config_flush - -exit 0 diff --git a/root/package/base-files/kernel/linux/modules/crypto.mk b/root/package/base-files/kernel/linux/modules/crypto.mk deleted file mode 100644 index 7ee603d5..00000000 --- a/root/package/base-files/kernel/linux/modules/crypto.mk +++ /dev/null @@ -1,987 +0,0 @@ -# -# Copyright (C) 2006-2011 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -CRYPTO_MENU:=Cryptographic API modules - -CRYPTO_MODULES = \ - ALGAPI2=crypto_algapi \ - BLKCIPHER2=crypto_blkcipher - -CRYPTO_TARGET = $(BOARD)/$(if $(SUBTARGET),$(SUBTARGET),generic) - -crypto_confvar=CONFIG_CRYPTO_$(word 1,$(subst =,$(space),$(1))) -crypto_file=$(LINUX_DIR)/crypto/$(word 2,$(subst =,$(space),$(1))).ko -crypto_name=$(if $(findstring y,$($(call crypto_confvar,$(1)))),,$(word 2,$(subst =,$(space),$(1)))) - -define AddDepends/crypto - SUBMENU:=$(CRYPTO_MENU) - DEPENDS+= $(1) -endef - - -define KernelPackage/crypto-acompress - TITLE:=Asynchronous Compression operations - HIDDEN:=1 - KCONFIG:=CONFIG_CRYPTO_ACOMP2 - FILES:=$(LINUX_DIR)/crypto/crypto_acompress.ko - AUTOLOAD:=$(call AutoLoad,09,crypto_acompress) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-acompress)) - - -define KernelPackage/crypto-aead - TITLE:=CryptoAPI AEAD support - KCONFIG:= \ - CONFIG_CRYPTO_AEAD \ - CONFIG_CRYPTO_AEAD2 - FILES:= \ - $(LINUX_DIR)/crypto/aead.ko \ - $(LINUX_DIR)/crypto/geniv.ko@ge5.10 - AUTOLOAD:=$(call AutoLoad,09,aead,1) - $(call AddDepends/crypto, +kmod-crypto-null) -endef - -$(eval $(call KernelPackage,crypto-aead)) - - -define KernelPackage/crypto-arc4 - TITLE:=ARC4 cipher CryptoAPI module - KCONFIG:= \ - CONFIG_CRYPTO_ARC4 \ - CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y - FILES:= \ - $(LINUX_DIR)/crypto/arc4.ko \ - $(LINUX_DIR)/lib/crypto/libarc4.ko - AUTOLOAD:=$(call AutoLoad,09,arc4) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-arc4)) - - -define KernelPackage/crypto-authenc - TITLE:=Combined mode wrapper for IPsec - DEPENDS:=+kmod-crypto-manager +kmod-crypto-null - KCONFIG:=CONFIG_CRYPTO_AUTHENC - FILES:=$(LINUX_DIR)/crypto/authenc.ko - AUTOLOAD:=$(call AutoLoad,09,authenc) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-authenc)) - - -define KernelPackage/crypto-cbc - TITLE:=Cipher Block Chaining CryptoAPI module - DEPENDS:=+kmod-crypto-manager - KCONFIG:=CONFIG_CRYPTO_CBC - FILES:=$(LINUX_DIR)/crypto/cbc.ko - AUTOLOAD:=$(call AutoLoad,09,cbc) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-cbc)) - - -define KernelPackage/crypto-ccm - TITLE:=Support for Counter with CBC MAC (CCM) - DEPENDS:=+kmod-crypto-ctr +kmod-crypto-aead - KCONFIG:=CONFIG_CRYPTO_CCM - FILES:=$(LINUX_DIR)/crypto/ccm.ko - AUTOLOAD:=$(call AutoLoad,09,ccm) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-ccm)) - - -define KernelPackage/crypto-cmac - TITLE:=Support for Cipher-based Message Authentication Code (CMAC) - DEPENDS:=+kmod-crypto-hash - KCONFIG:=CONFIG_CRYPTO_CMAC - FILES:=$(LINUX_DIR)/crypto/cmac.ko - AUTOLOAD:=$(call AutoLoad,09,cmac) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-cmac)) - - -define KernelPackage/crypto-crc32 - TITLE:=CRC32 CRC module - DEPENDS:=+kmod-crypto-hash - KCONFIG:=CONFIG_CRYPTO_CRC32 - HIDDEN:=1 - FILES:=$(LINUX_DIR)/crypto/crc32_generic.ko - AUTOLOAD:=$(call AutoLoad,04,crc32_generic,1) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-crc32)) - - -define KernelPackage/crypto-crc32c - TITLE:=CRC32c CRC module - DEPENDS:=+kmod-crypto-hash - KCONFIG:=CONFIG_CRYPTO_CRC32C - FILES:=$(LINUX_DIR)/crypto/crc32c_generic.ko - AUTOLOAD:=$(call AutoLoad,04,crc32c_generic,1) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-crc32c)) - - -define KernelPackage/crypto-ctr - TITLE:=Counter Mode CryptoAPI module - DEPENDS:=+kmod-crypto-manager +kmod-crypto-seqiv - KCONFIG:=CONFIG_CRYPTO_CTR - FILES:=$(LINUX_DIR)/crypto/ctr.ko - AUTOLOAD:=$(call AutoLoad,09,ctr) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-ctr)) - - -define KernelPackage/crypto-cts - TITLE:=Cipher Text Stealing CryptoAPI module - DEPENDS:=+kmod-crypto-manager - KCONFIG:=CONFIG_CRYPTO_CTS - FILES:=$(LINUX_DIR)/crypto/cts.ko - AUTOLOAD:=$(call AutoLoad,09,cts) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-cts)) - - -define KernelPackage/crypto-deflate - TITLE:=Deflate compression CryptoAPI module - DEPENDS:=+kmod-lib-zlib-inflate +kmod-lib-zlib-deflate +kmod-crypto-acompress - KCONFIG:=CONFIG_CRYPTO_DEFLATE - FILES:=$(LINUX_DIR)/crypto/deflate.ko - AUTOLOAD:=$(call AutoLoad,09,deflate) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-deflate)) - - -define KernelPackage/crypto-des - TITLE:=DES/3DES cipher CryptoAPI module - KCONFIG:=CONFIG_CRYPTO_DES - FILES:= \ - $(LINUX_DIR)/crypto/des_generic.ko \ - $(LINUX_DIR)/lib/crypto/libdes.ko - AUTOLOAD:=$(call AutoLoad,09,des_generic) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-des)) - - -define KernelPackage/crypto-ecb - TITLE:=Electronic CodeBook CryptoAPI module - DEPENDS:=+kmod-crypto-manager - KCONFIG:=CONFIG_CRYPTO_ECB - FILES:=$(LINUX_DIR)/crypto/ecb.ko - AUTOLOAD:=$(call AutoLoad,09,ecb) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-ecb)) - - -define KernelPackage/crypto-ecdh - TITLE:=ECDH algorithm - DEPENDS:=+kmod-crypto-kpp - KCONFIG:= CONFIG_CRYPTO_ECDH - FILES:= \ - $(LINUX_DIR)/crypto/ecdh_generic.ko \ - $(LINUX_DIR)/crypto/ecc.ko - AUTOLOAD:=$(call AutoLoad,10,ecdh_generic) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-ecdh)) - - -define KernelPackage/crypto-echainiv - TITLE:=Encrypted Chain IV Generator - DEPENDS:=+kmod-crypto-aead - KCONFIG:=CONFIG_CRYPTO_ECHAINIV - FILES:=$(LINUX_DIR)/crypto/echainiv.ko - AUTOLOAD:=$(call AutoLoad,09,echainiv) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-echainiv)) - - -define KernelPackage/crypto-fcrypt - TITLE:=FCRYPT cipher CryptoAPI module - KCONFIG:=CONFIG_CRYPTO_FCRYPT - FILES:=$(LINUX_DIR)/crypto/fcrypt.ko - AUTOLOAD:=$(call AutoLoad,09,fcrypt) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-fcrypt)) - - -define KernelPackage/crypto-gcm - TITLE:=GCM/GMAC CryptoAPI module - DEPENDS:=+kmod-crypto-ctr +kmod-crypto-ghash +kmod-crypto-null - KCONFIG:=CONFIG_CRYPTO_GCM - FILES:=$(LINUX_DIR)/crypto/gcm.ko - AUTOLOAD:=$(call AutoLoad,09,gcm) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-gcm)) - - -define KernelPackage/crypto-xcbc - TITLE:=XCBC CryptoAPI module - DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager - KCONFIG:=CONFIG_CRYPTO_XCBC - FILES:=$(LINUX_DIR)/crypto/xcbc.ko - AUTOLOAD:=$(call AutoLoad,09,xcbc) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-xcbc)) - - -define KernelPackage/crypto-gf128 - TITLE:=GF(2^128) multiplication functions CryptoAPI module - KCONFIG:=CONFIG_CRYPTO_GF128MUL - FILES:=$(LINUX_DIR)/crypto/gf128mul.ko - AUTOLOAD:=$(call AutoLoad,09,gf128mul) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-gf128)) - - -define KernelPackage/crypto-ghash - TITLE:=GHASH digest CryptoAPI module - DEPENDS:=+kmod-crypto-gf128 +kmod-crypto-hash - KCONFIG:= \ - CONFIG_CRYPTO_GHASH \ - CONFIG_CRYPTO_GHASH_ARM_CE - FILES:=$(LINUX_DIR)/crypto/ghash-generic.ko - AUTOLOAD:=$(call AutoLoad,09,ghash-generic) - $(call AddDepends/crypto) -endef - -define KernelPackage/crypto-ghash/arm-ce - FILES+= $(LINUX_DIR)/arch/arm/crypto/ghash-arm-ce.ko - AUTOLOAD+=$(call AutoLoad,09,ghash-arm-ce) -endef - -KernelPackage/crypto-ghash/imx6=$(KernelPackage/crypto-ghash/arm-ce) -KernelPackage/crypto-ghash/ipq40xx=$(KernelPackage/crypto-ghash/arm-ce) -KernelPackage/crypto-ghash/mvebu/cortexa9=$(KernelPackage/crypto-ghash/arm-ce) - -$(eval $(call KernelPackage,crypto-ghash)) - - -define KernelPackage/crypto-hash - TITLE:=CryptoAPI hash support - KCONFIG:=CONFIG_CRYPTO_HASH - FILES:=$(LINUX_DIR)/crypto/crypto_hash.ko - AUTOLOAD:=$(call AutoLoad,02,crypto_hash,1) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-hash)) - - -define KernelPackage/crypto-hmac - TITLE:=HMAC digest CryptoAPI module - DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager - KCONFIG:=CONFIG_CRYPTO_HMAC - FILES:=$(LINUX_DIR)/crypto/hmac.ko - AUTOLOAD:=$(call AutoLoad,09,hmac) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-hmac)) - - -define KernelPackage/crypto-hw-ccp - TITLE:=AMD Cryptographic Coprocessor - DEPENDS:= \ - @TARGET_x86 \ - +kmod-crypto-authenc \ - +kmod-crypto-hash \ - +kmod-crypto-manager \ - +kmod-crypto-rsa \ - +kmod-crypto-sha1 \ - +kmod-crypto-sha256 \ - +kmod-random-core - KCONFIG:= \ - CONFIG_CRYPTO_HW=y \ - CONFIG_CRYPTO_DEV_CCP=y \ - CONFIG_CRYPTO_DEV_CCP_CRYPTO \ - CONFIG_CRYPTO_DEV_CCP_DD \ - CONFIG_CRYPTO_DEV_SP_CCP=y - FILES:= \ - $(LINUX_DIR)/drivers/crypto/ccp/ccp.ko \ - $(LINUX_DIR)/drivers/crypto/ccp/ccp-crypto.ko - AUTOLOAD:=$(call AutoLoad,09,ccp ccp-crypto) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-hw-ccp)) - - -define KernelPackage/crypto-hw-geode - TITLE:=AMD Geode hardware crypto module - DEPENDS:=@TARGET_x86_geode +kmod-crypto-manager - KCONFIG:= \ - CONFIG_CRYPTO_HW=y \ - CONFIG_CRYPTO_DEV_GEODE - FILES:=$(LINUX_DIR)/drivers/crypto/geode-aes.ko - AUTOLOAD:=$(call AutoLoad,09,geode-aes) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-hw-geode)) - - -define KernelPackage/crypto-hw-hifn-795x - TITLE:=HIFN 795x crypto accelerator - DEPENDS:=@PCI_SUPPORT +kmod-random-core +kmod-crypto-manager - KCONFIG:= \ - CONFIG_CRYPTO_HW=y \ - CONFIG_CRYPTO_DEV_HIFN_795X \ - CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y - FILES:=$(LINUX_DIR)/drivers/crypto/hifn_795x.ko - AUTOLOAD:=$(call AutoLoad,09,hifn_795x) - $(call AddDepends/crypto,+kmod-crypto-des) -endef - -$(eval $(call KernelPackage,crypto-hw-hifn-795x)) - - -define KernelPackage/crypto-hw-padlock - TITLE:=VIA PadLock ACE with AES/SHA hw crypto module - DEPENDS:=+kmod-crypto-manager - KCONFIG:= \ - CONFIG_CRYPTO_HW=y \ - CONFIG_CRYPTO_DEV_PADLOCK \ - CONFIG_CRYPTO_DEV_PADLOCK_AES \ - CONFIG_CRYPTO_DEV_PADLOCK_SHA - FILES:= \ - $(LINUX_DIR)/drivers/crypto/padlock-aes.ko \ - $(LINUX_DIR)/drivers/crypto/padlock-sha.ko - AUTOLOAD:=$(call AutoLoad,09,padlock-aes padlock-sha) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-hw-padlock)) - - -define KernelPackage/crypto-hw-safexcel - TITLE:= MVEBU SafeXcel Crypto Engine module - DEPENDS:=@(TARGET_mvebu_cortexa53||TARGET_mvebu_cortexa72) +eip197-mini-firmware \ - +kmod-crypto-authenc +kmod-crypto-md5 +kmod-crypto-hmac +kmod-crypto-sha256 +kmod-crypto-sha512 - KCONFIG:= \ - CONFIG_CRYPTO_HW=y \ - CONFIG_CRYPTO_DEV_SAFEXCEL - FILES:=$(LINUX_DIR)/drivers/crypto/inside-secure/crypto_safexcel.ko - AUTOLOAD:=$(call AutoLoad,90,crypto_safexcel) - $(call AddDepends/crypto) -endef - -define KernelPackage/crypto-hw-safexcel/description -MVEBU's EIP97 and EIP197 Cryptographic Engine driver designed by -Inside Secure. This is found on Marvell Armada 37xx/7k/8k SoCs. - -Particular version of these IP (EIP197B and EIP197D) require firmware. -The mini firmware package provides limited functionality, for most operations -a full-featured firmware is required. Unfortunately the "full" firmware is not -freely available and needs signed Non-Disclosure Agreement (NDA) with Marvell. -For those who have signed NDA the firmware can be obtained at -https://extranet.marvell.com. -endef - -$(eval $(call KernelPackage,crypto-hw-safexcel)) - - -define KernelPackage/crypto-hw-talitos - TITLE:=Freescale integrated security engine (SEC) driver - DEPENDS:=@(TARGET_mpc85xx||TARGET_layerscape) +kmod-crypto-manager \ - +kmod-crypto-hash +kmod-random-core +kmod-crypto-authenc +kmod-crypto-des - KCONFIG:= \ - CONFIG_CRYPTO_HW=y \ - CONFIG_CRYPTO_DEV_TALITOS \ - CONFIG_CRYPTO_DEV_TALITOS1=y \ - CONFIG_CRYPTO_DEV_TALITOS2=y - FILES:= \ - $(LINUX_DIR)/drivers/crypto/talitos.ko - AUTOLOAD:=$(call AutoLoad,09,talitos) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-hw-talitos)) - - -define KernelPackage/crypto-kpp - TITLE:=Key-agreement Protocol Primitives - KCONFIG:=CONFIG_CRYPTO_KPP - FILES:=$(LINUX_DIR)/crypto/kpp.ko - AUTOLOAD:=$(call AutoLoad,09,kpp) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-kpp)) - - -define KernelPackage/crypto-lib-blake2s - TITLE:=BLAKE2s hash function library - KCONFIG:=CONFIG_CRYPTO_LIB_BLAKE2S - HIDDEN:=1 - FILES:= \ - $(LINUX_DIR)/lib/crypto/libblake2s.ko@lt5.14 \ - $(LINUX_DIR)/lib/crypto/libblake2s-generic.ko@lt5.14 - $(call AddDepends/crypto,+PACKAGE_kmod-crypto-hash:kmod-crypto-hash) -endef - -define KernelPackage/crypto-lib-blake2s/config - imply PACKAGE_kmod-crypto-hash -endef - -define KernelPackage/crypto-lib-blake2s/x86/64 - KCONFIG+=CONFIG_CRYPTO_BLAKE2S_X86 - FILES+=$(LINUX_DIR)/arch/x86/crypto/blake2s-x86_64.ko -endef - -$(eval $(call KernelPackage,crypto-lib-blake2s)) - - -define KernelPackage/crypto-lib-chacha20 - TITLE:=ChaCha library interface - KCONFIG:=CONFIG_CRYPTO_LIB_CHACHA - HIDDEN:=1 - FILES:=$(LINUX_DIR)/lib/crypto/libchacha.ko - $(call AddDepends/crypto) -endef - -define KernelPackage/crypto-lib-chacha20/x86_64 - KCONFIG+=CONFIG_CRYPTO_CHACHA20_X86_64 - FILES+=$(LINUX_DIR)/arch/x86/crypto/chacha-x86_64.ko -endef - -# Note that a non-neon fallback implementation is available on arm32 when -# NEON is not supported, hence all arm targets can utilize lib-chacha20/arm -define KernelPackage/crypto-lib-chacha20/arm - KCONFIG+=CONFIG_CRYPTO_CHACHA20_NEON - FILES:=$(LINUX_DIR)/arch/arm/crypto/chacha-neon.ko -endef - -define KernelPackage/crypto-lib-chacha20/aarch64 - KCONFIG+=CONFIG_CRYPTO_CHACHA20_NEON - FILES+=$(LINUX_DIR)/arch/arm64/crypto/chacha-neon.ko -endef - -define KernelPackage/crypto-lib-chacha20/mips32r2 - KCONFIG+=CONFIG_CRYPTO_CHACHA_MIPS - FILES:=$(LINUX_DIR)/arch/mips/crypto/chacha-mips.ko -endef - -ifeq ($(CONFIG_CPU_MIPS32_R2),y) - KernelPackage/crypto-lib-chacha20/$(ARCH)=\ - $(KernelPackage/crypto-lib-chacha20/mips32r2) -endif - -ifdef KernelPackage/crypto-lib-chacha20/$(ARCH) - KernelPackage/crypto-lib-chacha20/$(CRYPTO_TARGET)=\ - $(KernelPackage/crypto-lib-chacha20/$(ARCH)) -endif - -$(eval $(call KernelPackage,crypto-lib-chacha20)) - - -define KernelPackage/crypto-lib-chacha20poly1305 - TITLE:=ChaCha20-Poly1305 AEAD support (8-byte nonce library version) - KCONFIG:=CONFIG_CRYPTO_LIB_CHACHA20POLY1305 - HIDDEN:=1 - FILES:=$(LINUX_DIR)/lib/crypto/libchacha20poly1305.ko - $(call AddDepends/crypto, +kmod-crypto-lib-chacha20 +kmod-crypto-lib-poly1305) -endef - -$(eval $(call KernelPackage,crypto-lib-chacha20poly1305)) - - -define KernelPackage/crypto-lib-curve25519 - TITLE:=Curve25519 scalar multiplication library - KCONFIG:=CONFIG_CRYPTO_LIB_CURVE25519 - HIDDEN:=1 - FILES:= \ - $(LINUX_DIR)/lib/crypto/libcurve25519.ko \ - $(LINUX_DIR)/lib/crypto/libcurve25519-generic.ko - $(call AddDepends/crypto,+PACKAGE_kmod-crypto-kpp:kmod-crypto-kpp) -endef - -define KernelPackage/crypto-lib-curve25519/config - imply PACKAGE_kmod-crypto-kpp -endef - -define KernelPackage/crypto-lib-curve25519/x86/64 - KCONFIG+=CONFIG_CRYPTO_CURVE25519_X86 - FILES+=$(LINUX_DIR)/arch/x86/crypto/curve25519-x86_64.ko -endef - -define KernelPackage/crypto-lib-curve25519/arm-neon - KCONFIG+=CONFIG_CRYPTO_CURVE25519_NEON - FILES+=$(LINUX_DIR)/arch/arm/crypto/curve25519-neon.ko -endef - -ifeq ($(ARCH)-$(CONFIG_KERNEL_MODE_NEON),arm-y) - KernelPackage/crypto-lib-curve25519/$(CRYPTO_TARGET)=\ - $(KernelPackage/crypto-lib-curve25519/arm-neon) -endif - -$(eval $(call KernelPackage,crypto-lib-curve25519)) - - -define KernelPackage/crypto-lib-poly1305 - TITLE:=Poly1305 library interface - KCONFIG:=CONFIG_CRYPTO_LIB_POLY1305 - HIDDEN:=1 - FILES:=$(LINUX_DIR)/lib/crypto/libpoly1305.ko - $(call AddDepends/crypto,+PACKAGE_kmod-crypto-hash:kmod-crypto-hash) -endef - -define KernelPackage/crypto-lib-poly1305/config - imply PACKAGE_kmod-crypto-hash -endef - -define KernelPackage/crypto-lib-poly1305/x86_64 - KCONFIG+=CONFIG_CRYPTO_POLY1305_X86_64 - FILES+=$(LINUX_DIR)/arch/x86/crypto/poly1305-x86_64.ko -endef - -define KernelPackage/crypto-lib-poly1305/arm - KCONFIG+=CONFIG_CRYPTO_POLY1305_ARM - FILES:=$(LINUX_DIR)/arch/arm/crypto/poly1305-arm.ko -endef - -define KernelPackage/crypto-lib-poly1305/aarch64 - KCONFIG+=CONFIG_CRYPTO_POLY1305_NEON - FILES:=$(LINUX_DIR)/arch/arm64/crypto/poly1305-neon.ko -endef - -define KernelPackage/crypto-lib-poly1305/mips - KCONFIG+=CONFIG_CRYPTO_POLY1305_MIPS - FILES:=$(LINUX_DIR)/arch/mips/crypto/poly1305-mips.ko -endef - -KernelPackage/crypto-lib-poly1305/mipsel=$(KernelPackage/crypto-lib-poly1305/mips) -KernelPackage/crypto-lib-poly1305/mips64=$(KernelPackage/crypto-lib-poly1305/mips) -KernelPackage/crypto-lib-poly1305/mips64el=$(KernelPackage/crypto-lib-poly1305/mips) - -ifdef KernelPackage/crypto-lib-poly1305/$(ARCH) - KernelPackage/crypto-lib-poly1305/$(CRYPTO_TARGET)=\ - $(KernelPackage/crypto-lib-poly1305/$(ARCH)) -endif - -$(eval $(call KernelPackage,crypto-lib-poly1305)) - - -define KernelPackage/crypto-manager - TITLE:=CryptoAPI algorithm manager - DEPENDS:=+kmod-crypto-aead +kmod-crypto-hash - KCONFIG:= \ - CONFIG_CRYPTO_MANAGER \ - CONFIG_CRYPTO_MANAGER2 - FILES:=$(LINUX_DIR)/crypto/cryptomgr.ko - AUTOLOAD:=$(call AutoLoad,09,cryptomgr,1) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-manager)) - - -define KernelPackage/crypto-md4 - TITLE:=MD4 digest CryptoAPI module - DEPENDS:=+kmod-crypto-hash - KCONFIG:=CONFIG_CRYPTO_MD4 - FILES:=$(LINUX_DIR)/crypto/md4.ko - AUTOLOAD:=$(call AutoLoad,09,md4) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-md4)) - - -define KernelPackage/crypto-md5 - TITLE:=MD5 digest CryptoAPI module - DEPENDS:=+kmod-crypto-hash - KCONFIG:= \ - CONFIG_CRYPTO_MD5 \ - CONFIG_CRYPTO_MD5_OCTEON - FILES:=$(LINUX_DIR)/crypto/md5.ko - AUTOLOAD:=$(call AutoLoad,09,md5) - $(call AddDepends/crypto) -endef - -define KernelPackage/crypto-md5/octeon - FILES+=$(LINUX_DIR)/arch/mips/cavium-octeon/crypto/octeon-md5.ko - AUTOLOAD+=$(call AutoLoad,09,octeon-md5) -endef - -$(eval $(call KernelPackage,crypto-md5)) - - -define KernelPackage/crypto-michael-mic - TITLE:=Michael MIC keyed digest CryptoAPI module - DEPENDS:=+kmod-crypto-hash - KCONFIG:=CONFIG_CRYPTO_MICHAEL_MIC - FILES:=$(LINUX_DIR)/crypto/michael_mic.ko - AUTOLOAD:=$(call AutoLoad,09,michael_mic) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-michael-mic)) - - -define KernelPackage/crypto-misc - TITLE:=Other CryptoAPI modules - DEPENDS:=+kmod-crypto-xts - KCONFIG:= \ - CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y \ - CONFIG_CRYPTO_CAMELLIA_X86_64 \ - CONFIG_CRYPTO_BLOWFISH_X86_64 \ - CONFIG_CRYPTO_TWOFISH_X86_64 \ - CONFIG_CRYPTO_TWOFISH_X86_64_3WAY \ - CONFIG_CRYPTO_SERPENT_SSE2_X86_64 \ - CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 \ - CONFIG_CRYPTO_CAST5_AVX_X86_64 \ - CONFIG_CRYPTO_CAST6_AVX_X86_64 \ - CONFIG_CRYPTO_TWOFISH_AVX_X86_64 \ - CONFIG_CRYPTO_SERPENT_AVX_X86_64 \ - CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 \ - CONFIG_CRYPTO_SERPENT_AVX2_X86_64 \ - CONFIG_CRYPTO_SERPENT_SSE2_586 \ - CONFIG_CRYPTO_ANUBIS \ - CONFIG_CRYPTO_BLOWFISH \ - CONFIG_CRYPTO_CAMELLIA \ - CONFIG_CRYPTO_CAST5 \ - CONFIG_CRYPTO_CAST6 \ - CONFIG_CRYPTO_FCRYPT \ - CONFIG_CRYPTO_KHAZAD \ - CONFIG_CRYPTO_SERPENT \ - CONFIG_CRYPTO_TEA \ - CONFIG_CRYPTO_TGR192 \ - CONFIG_CRYPTO_TWOFISH \ - CONFIG_CRYPTO_TWOFISH_COMMON \ - CONFIG_CRYPTO_TWOFISH_586 \ - CONFIG_CRYPTO_WP512 - FILES:= \ - $(LINUX_DIR)/crypto/anubis.ko \ - $(LINUX_DIR)/crypto/camellia_generic.ko \ - $(LINUX_DIR)/crypto/cast_common.ko \ - $(LINUX_DIR)/crypto/cast5_generic.ko \ - $(LINUX_DIR)/crypto/cast6_generic.ko \ - $(LINUX_DIR)/crypto/khazad.ko \ - $(LINUX_DIR)/crypto/tea.ko \ - $(LINUX_DIR)/crypto/tgr192.ko@lt5.14 \ - $(LINUX_DIR)/crypto/twofish_common.ko \ - $(LINUX_DIR)/crypto/wp512.ko \ - $(LINUX_DIR)/crypto/twofish_generic.ko \ - $(LINUX_DIR)/crypto/blowfish_common.ko \ - $(LINUX_DIR)/crypto/blowfish_generic.ko \ - $(LINUX_DIR)/crypto/serpent_generic.ko - AUTOLOAD:=$(call AutoLoad,10,anubis camellia_generic cast_common \ - cast5_generic cast6_generic khazad tea tgr192 twofish_common \ - wp512 blowfish_common serpent_generic) - ifndef CONFIG_TARGET_x86 - AUTOLOAD+= $(call AutoLoad,10,twofish_generic blowfish_generic) - endif - $(call AddDepends/crypto) -endef - -ifndef CONFIG_TARGET_x86_64 - define KernelPackage/crypto-misc/x86 - FILES+= \ - $(LINUX_DIR)/arch/x86/crypto/twofish-i586.ko \ - $(LINUX_DIR)/arch/x86/crypto/serpent-sse2-i586.ko \ - $(LINUX_DIR)/arch/x86/crypto/glue_helper.ko@lt5.14 \ - $(LINUX_DIR)/crypto/cryptd.ko \ - $(LINUX_DIR)/crypto/crypto_simd.ko - AUTOLOAD+= $(call AutoLoad,10,cryptd glue_helper \ - serpent-sse2-i586 twofish-i586 blowfish_generic) - endef -endif - -define KernelPackage/crypto-misc/x86/64 - FILES+= \ - $(LINUX_DIR)/arch/x86/crypto/camellia-x86_64.ko \ - $(LINUX_DIR)/arch/x86/crypto/blowfish-x86_64.ko \ - $(LINUX_DIR)/arch/x86/crypto/twofish-x86_64.ko \ - $(LINUX_DIR)/arch/x86/crypto/twofish-x86_64-3way.ko \ - $(LINUX_DIR)/arch/x86/crypto/serpent-sse2-x86_64.ko \ - $(LINUX_DIR)/arch/x86/crypto/camellia-aesni-avx-x86_64.ko \ - $(LINUX_DIR)/arch/x86/crypto/cast5-avx-x86_64.ko \ - $(LINUX_DIR)/arch/x86/crypto/cast6-avx-x86_64.ko \ - $(LINUX_DIR)/arch/x86/crypto/twofish-avx-x86_64.ko \ - $(LINUX_DIR)/arch/x86/crypto/serpent-avx-x86_64.ko \ - $(LINUX_DIR)/arch/x86/crypto/camellia-aesni-avx2.ko \ - $(LINUX_DIR)/arch/x86/crypto/serpent-avx2.ko - AUTOLOAD+= $(call AutoLoad,10,camellia-x86_64 \ - camellia-aesni-avx-x86_64 camellia-aesni-avx2 cast5-avx-x86_64 \ - cast6-avx-x86_64 twofish-x86_64 twofish-x86_64-3way \ - twofish-avx-x86_64 blowfish-x86_64 serpent-avx-x86_64 serpent-avx2) -endef - -$(eval $(call KernelPackage,crypto-misc)) - - -define KernelPackage/crypto-null - TITLE:=Null CryptoAPI module - KCONFIG:=CONFIG_CRYPTO_NULL - FILES:=$(LINUX_DIR)/crypto/crypto_null.ko - AUTOLOAD:=$(call AutoLoad,09,crypto_null) - $(call AddDepends/crypto, +kmod-crypto-hash) -endef - -$(eval $(call KernelPackage,crypto-null)) - - -define KernelPackage/crypto-pcbc - TITLE:=Propagating Cipher Block Chaining CryptoAPI module - DEPENDS:=+kmod-crypto-manager - KCONFIG:=CONFIG_CRYPTO_PCBC - FILES:=$(LINUX_DIR)/crypto/pcbc.ko - AUTOLOAD:=$(call AutoLoad,09,pcbc) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-pcbc)) - - -define KernelPackage/crypto-rsa - TITLE:=RSA algorithm - DEPENDS:=+kmod-crypto-manager +kmod-asn1-decoder - KCONFIG:= CONFIG_CRYPTO_RSA - HIDDEN:=1 - FILES:= \ - $(LINUX_DIR)/lib/mpi/mpi.ko \ - $(LINUX_DIR)/crypto/akcipher.ko \ - $(LINUX_DIR)/crypto/rsa_generic.ko - AUTOLOAD:=$(call AutoLoad,10,rsa_generic) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-rsa)) - - -define KernelPackage/crypto-rmd160 - TITLE:=RIPEMD160 digest CryptoAPI module - DEPENDS:=+kmod-crypto-hash - KCONFIG:=CONFIG_CRYPTO_RMD160 - FILES:=$(LINUX_DIR)/crypto/rmd160.ko - AUTOLOAD:=$(call AutoLoad,09,rmd160) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-rmd160)) - - -define KernelPackage/crypto-rng - TITLE:=CryptoAPI random number generation - DEPENDS:=+kmod-crypto-hash +kmod-crypto-hmac +kmod-crypto-sha256 - KCONFIG:= \ - CONFIG_CRYPTO_DRBG \ - CONFIG_CRYPTO_DRBG_HMAC=y \ - CONFIG_CRYPTO_DRBG_HASH=n \ - CONFIG_CRYPTO_DRBG_MENU \ - CONFIG_CRYPTO_JITTERENTROPY \ - CONFIG_CRYPTO_RNG2 - FILES:= \ - $(LINUX_DIR)/crypto/drbg.ko \ - $(LINUX_DIR)/crypto/jitterentropy_rng.ko \ - $(LINUX_DIR)/crypto/rng.ko - AUTOLOAD:=$(call AutoLoad,09,drbg jitterentropy_rng rng) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-rng)) - - -define KernelPackage/crypto-seqiv - TITLE:=CryptoAPI Sequence Number IV Generator - DEPENDS:=+kmod-crypto-aead +kmod-crypto-rng - KCONFIG:=CONFIG_CRYPTO_SEQIV - FILES:=$(LINUX_DIR)/crypto/seqiv.ko - AUTOLOAD:=$(call AutoLoad,09,seqiv) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-seqiv)) - - -define KernelPackage/crypto-sha1 - TITLE:=SHA1 digest CryptoAPI module - DEPENDS:=+kmod-crypto-hash - KCONFIG:= \ - CONFIG_CRYPTO_SHA1 \ - CONFIG_CRYPTO_SHA1_ARM \ - CONFIG_CRYPTO_SHA1_ARM_NEON \ - CONFIG_CRYPTO_SHA1_OCTEON \ - CONFIG_CRYPTO_SHA1_SSSE3 - FILES:=$(LINUX_DIR)/crypto/sha1_generic.ko - AUTOLOAD:=$(call AutoLoad,09,sha1_generic) - $(call AddDepends/crypto) -endef - -define KernelPackage/crypto-sha1/arm - FILES+=$(LINUX_DIR)/arch/arm/crypto/sha1-arm.ko - AUTOLOAD+=$(call AutoLoad,09,sha1-arm) -endef - -define KernelPackage/crypto-sha1/arm-neon - $(call KernelPackage/crypto-sha1/arm) - FILES+=$(LINUX_DIR)/arch/arm/crypto/sha1-arm-neon.ko - AUTOLOAD+=$(call AutoLoad,09,sha1-arm-neon) -endef - -KernelPackage/crypto-sha1/imx6=$(KernelPackage/crypto-sha1/arm-neon) -KernelPackage/crypto-sha1/ipq40xx=$(KernelPackage/crypto-sha1/arm-neon) -KernelPackage/crypto-sha1/mvebu/cortexa9=$(KernelPackage/crypto-sha1/arm-neon) - -define KernelPackage/crypto-sha1/octeon - FILES+=$(LINUX_DIR)/arch/mips/cavium-octeon/crypto/octeon-sha1.ko - AUTOLOAD+=$(call AutoLoad,09,octeon-sha1) -endef - -KernelPackage/crypto-sha1/tegra=$(KernelPakcage/crypto-sha1/arm) - -define KernelPackage/crypto-sha1/x86/64 - FILES+=$(LINUX_DIR)/arch/x86/crypto/sha1-ssse3.ko - AUTOLOAD+=$(call AutoLoad,09,sha1-ssse3) -endef - -$(eval $(call KernelPackage,crypto-sha1)) - - -define KernelPackage/crypto-sha256 - TITLE:=SHA224 SHA256 digest CryptoAPI module - DEPENDS:=+kmod-crypto-hash - KCONFIG:= \ - CONFIG_CRYPTO_SHA256 \ - CONFIG_CRYPTO_SHA256_OCTEON \ - CONFIG_CRYPTO_SHA256_SSSE3 - FILES:= \ - $(LINUX_DIR)/crypto/sha256_generic.ko \ - $(LINUX_DIR)/lib/crypto/libsha256.ko - AUTOLOAD:=$(call AutoLoad,09,sha256_generic) - $(call AddDepends/crypto) -endef - -define KernelPackage/crypto-sha256/octeon - FILES+=$(LINUX_DIR)/arch/mips/cavium-octeon/crypto/octeon-sha256.ko - AUTOLOAD+=$(call AutoLoad,09,octeon-sha256) -endef - -define KernelPackage/crypto-sha256/x86/64 - FILES+=$(LINUX_DIR)/arch/x86/crypto/sha256-ssse3.ko - AUTOLOAD+=$(call AutoLoad,09,sha256-ssse3) -endef - -$(eval $(call KernelPackage,crypto-sha256)) - - -define KernelPackage/crypto-sha512 - TITLE:=SHA512 digest CryptoAPI module - DEPENDS:=+kmod-crypto-hash - KCONFIG:= \ - CONFIG_CRYPTO_SHA512 \ - CONFIG_CRYPTO_SHA512_ARM \ - CONFIG_CRYPTO_SHA512_OCTEON \ - CONFIG_CRYPTO_SHA512_SSSE3 - FILES:=$(LINUX_DIR)/crypto/sha512_generic.ko - AUTOLOAD:=$(call AutoLoad,09,sha512_generic) - $(call AddDepends/crypto) -endef - -define KernelPackage/crypto-sha512/arm - FILES+=$(LINUX_DIR)/arch/arm/crypto/sha512-arm.ko - AUTOLOAD+=$(call AutoLoad,09,sha512-arm) -endef - -KernelPackage/crypto-sha512/imx6=$(KernelPackage/crypto-sha512/arm) -KernelPackage/crypto-sha512/ipq40xx=$(KernelPackage/crypto-sha512/arm) -KernelPackage/crypto-sha512/mvebu/cortexa9=$(KernelPackage/crypto-sha512/arm) - -define KernelPackage/crypto-sha512/octeon - FILES+=$(LINUX_DIR)/arch/mips/cavium-octeon/crypto/octeon-sha512.ko - AUTOLOAD+=$(call AutoLoad,09,octeon-sha512) -endef - -KernelPackage/crypto-sha512/tegra=$(KernelPackage/crypto-sha512/arm) - -define KernelPackage/crypto-sha512/x86/64 - FILES+=$(LINUX_DIR)/arch/x86/crypto/sha512-ssse3.ko - AUTOLOAD+=$(call AutoLoad,09,sha512-ssse3) -endef - -$(eval $(call KernelPackage,crypto-sha512)) - - -define KernelPackage/crypto-test - TITLE:=Test CryptoAPI module - KCONFIG:=CONFIG_CRYPTO_TEST - FILES:=$(LINUX_DIR)/crypto/tcrypt.ko - $(call AddDepends/crypto,+kmod-crypto-manager) -endef - -$(eval $(call KernelPackage,crypto-test)) - - -define KernelPackage/crypto-user - TITLE:=CryptoAPI userspace interface - DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager - KCONFIG:= \ - CONFIG_CRYPTO_USER \ - CONFIG_CRYPTO_USER_API \ - CONFIG_CRYPTO_USER_API_AEAD \ - CONFIG_CRYPTO_USER_API_HASH \ - CONFIG_CRYPTO_USER_API_RNG \ - CONFIG_CRYPTO_USER_API_SKCIPHER - FILES:= \ - $(LINUX_DIR)/crypto/af_alg.ko \ - $(LINUX_DIR)/crypto/algif_aead.ko \ - $(LINUX_DIR)/crypto/algif_hash.ko \ - $(LINUX_DIR)/crypto/algif_rng.ko \ - $(LINUX_DIR)/crypto/algif_skcipher.ko \ - $(LINUX_DIR)/crypto/crypto_user.ko - AUTOLOAD:=$(call AutoLoad,09,af_alg algif_aead algif_hash algif_rng algif_skcipher crypto_user) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-user)) - - -define KernelPackage/crypto-xts - TITLE:=XTS cipher CryptoAPI module - DEPENDS:=+kmod-crypto-gf128 +kmod-crypto-manager - KCONFIG:=CONFIG_CRYPTO_XTS - FILES:=$(LINUX_DIR)/crypto/xts.ko - AUTOLOAD:=$(call AutoLoad,09,xts) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-xts)) - diff --git a/root/package/base-files/kernel/linux/modules/fs.mk b/root/package/base-files/kernel/linux/modules/fs.mk deleted file mode 100644 index 8c5c787d..00000000 --- a/root/package/base-files/kernel/linux/modules/fs.mk +++ /dev/null @@ -1,598 +0,0 @@ -# -# Copyright (C) 2006-2011 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -FS_MENU:=Filesystems - -define KernelPackage/fs-9p - SUBMENU:=$(FS_MENU) - TITLE:=Plan 9 Resource Sharing Support - DEPENDS:=+kmod-9pnet - KCONFIG:=\ - CONFIG_9P_FS \ - CONFIG_9P_FS_POSIX_ACL=n \ - CONFIG_9P_FS_SECURITY=n \ - CONFIG_9P_FSCACHE=n - FILES:=$(LINUX_DIR)/fs/9p/9p.ko - AUTOLOAD:=$(call AutoLoad,30,9p) -endef - -define KernelPackage/fs-9p/description - Kernel module for Plan 9 Resource Sharing Support support -endef - -$(eval $(call KernelPackage,fs-9p)) - - -define KernelPackage/fs-afs - SUBMENU:=$(FS_MENU) - TITLE:=Andrew FileSystem client - DEFAULT:=n - DEPENDS:=+kmod-rxrpc +kmod-dnsresolver +kmod-fs-fscache - KCONFIG:=\ - CONFIG_AFS_FS=m \ - CONFIG_AFS_DEBUG=n \ - CONFIG_AFS_FSCACHE=y - FILES:=$(LINUX_DIR)/fs/afs/kafs.ko - AUTOLOAD:=$(call AutoLoad,30,kafs) -endef - -define KernelPackage/fs-afs/description - Kernel module for Andrew FileSystem client support -endef - -$(eval $(call KernelPackage,fs-afs)) - -define KernelPackage/fs-autofs4 - SUBMENU:=$(FS_MENU) - TITLE:=AUTOFS4 filesystem support - KCONFIG:= \ - CONFIG_AUTOFS4_FS \ - CONFIG_AUTOFS_FS - FILES:= \ - $(LINUX_DIR)/fs/autofs/autofs4.ko - AUTOLOAD:=$(call AutoLoad,30,autofs4) -endef - -define KernelPackage/fs-autofs4/description - Kernel module for AutoFS4 support -endef - -$(eval $(call KernelPackage,fs-autofs4)) - - -define KernelPackage/fs-btrfs - SUBMENU:=$(FS_MENU) - TITLE:=BTRFS filesystem support - DEPENDS:=+kmod-lib-crc32c +kmod-lib-lzo +kmod-lib-zlib-inflate +kmod-lib-zlib-deflate +kmod-lib-raid6 +kmod-lib-xor +kmod-lib-zstd - KCONFIG:=\ - CONFIG_BTRFS_FS \ - CONFIG_BTRFS_FS_POSIX_ACL=n \ - CONFIG_BTRFS_FS_CHECK_INTEGRITY=n - FILES:=\ - $(LINUX_DIR)/fs/btrfs/btrfs.ko - AUTOLOAD:=$(call AutoLoad,30,btrfs,1) -endef - -define KernelPackage/fs-btrfs/description - Kernel module for BTRFS support -endef - -$(eval $(call KernelPackage,fs-btrfs)) - - -define KernelPackage/fs-cifs - SUBMENU:=$(FS_MENU) - TITLE:=CIFS support - KCONFIG:= \ - CONFIG_CIFS \ - CONFIG_CIFS_DFS_UPCALL=n \ - CONFIG_CIFS_UPCALL=n - FILES:=$(LINUX_DIR)/fs/cifs/cifs.ko - AUTOLOAD:=$(call AutoLoad,30,cifs) - $(call AddDepends/nls) - DEPENDS+= \ - +kmod-crypto-md4 \ - +kmod-crypto-md5 \ - +kmod-crypto-sha256 \ - +kmod-crypto-sha512 \ - +kmod-crypto-cmac \ - +kmod-crypto-hmac \ - +kmod-crypto-arc4 \ - +kmod-crypto-aead \ - +kmod-crypto-ccm \ - +kmod-crypto-ecb \ - +kmod-crypto-des -endef - -define KernelPackage/fs-cifs/description - Kernel module for CIFS support -endef - -$(eval $(call KernelPackage,fs-cifs)) - - -define KernelPackage/fs-configfs - SUBMENU:=$(FS_MENU) - TITLE:=Configuration filesystem support - KCONFIG:= \ - CONFIG_CONFIGFS_FS - FILES:=$(LINUX_DIR)/fs/configfs/configfs.ko - AUTOLOAD:=$(call AutoLoad,30,configfs) -endef - -define KernelPackage/fs-configfs/description - Kernel module for configfs support -endef - -$(eval $(call KernelPackage,fs-configfs)) - - -define KernelPackage/fs-cramfs - SUBMENU:=$(FS_MENU) - TITLE:=Compressed RAM/ROM filesystem support - DEPENDS:=+kmod-lib-zlib-inflate - KCONFIG:= \ - CONFIG_CRAMFS - FILES:=$(LINUX_DIR)/fs/cramfs/cramfs.ko - AUTOLOAD:=$(call AutoLoad,30,cramfs) -endef - -define KernelPackage/fs-cramfs/description - Kernel module for cramfs support -endef - -$(eval $(call KernelPackage,fs-cramfs)) - - -define KernelPackage/fs-efivarfs - SUBMENU:=$(FS_MENU) - TITLE:=efivar filesystem support - KCONFIG:=CONFIG_EFIVAR_FS - FILES:=$(LINUX_DIR)/fs/efivarfs/efivarfs.ko - DEPENDS:=@(x86_64||x86) - AUTOLOAD:=$(call Autoload,90,efivarfs) -endef - -define KernelPackage/fs-efivarfs/description - Kernel module to support efivarfs file system mountpoint. -endef - -$(eval $(call KernelPackage,fs-efivarfs)) - - -define KernelPackage/fs-exfat - SUBMENU:=$(FS_MENU) - TITLE:=exFAT filesystem support - KCONFIG:= \ - CONFIG_EXFAT_FS \ - CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" - FILES:= \ - $(LINUX_DIR)/drivers/staging/exfat/exfat.ko@lt5.7 \ - $(LINUX_DIR)/fs/exfat/exfat.ko@ge5.7 - AUTOLOAD:=$(call AutoLoad,30,exfat,1) - DEPENDS:=+kmod-nls-base -endef - -define KernelPackage/fs-exfat/description - Kernel module for exFAT filesystem support -endef - -$(eval $(call KernelPackage,fs-exfat)) - - -define KernelPackage/fs-exportfs - SUBMENU:=$(FS_MENU) - TITLE:=exportfs kernel server support - KCONFIG:=CONFIG_EXPORTFS - FILES=$(LINUX_DIR)/fs/exportfs/exportfs.ko - AUTOLOAD:=$(call AutoLoad,20,exportfs,1) -endef - -define KernelPackage/fs-exportfs/description - Kernel module for exportfs. Needed for some other modules. -endef - -$(eval $(call KernelPackage,fs-exportfs)) - - -define KernelPackage/fs-ext4 - SUBMENU:=$(FS_MENU) - TITLE:=EXT4 filesystem support - DEPENDS := \ - +kmod-lib-crc16 \ - +kmod-crypto-hash \ - +kmod-crypto-crc32c - KCONFIG:= \ - CONFIG_EXT4_FS \ - CONFIG_EXT4_ENCRYPTION=n \ - CONFIG_JBD2 - FILES:= \ - $(LINUX_DIR)/fs/ext4/ext4.ko \ - $(LINUX_DIR)/fs/jbd2/jbd2.ko \ - $(LINUX_DIR)/fs/mbcache.ko - AUTOLOAD:=$(call AutoLoad,30,mbcache jbd2 ext4,1) -endef - -define KernelPackage/fs-ext4/description - Kernel module for EXT4 filesystem support -endef - -$(eval $(call KernelPackage,fs-ext4)) - - -define KernelPackage/fs-f2fs - SUBMENU:=$(FS_MENU) - TITLE:=F2FS filesystem support - DEPENDS:= +kmod-crypto-hash +kmod-crypto-crc32 +kmod-nls-base - KCONFIG:=CONFIG_F2FS_FS - FILES:=$(LINUX_DIR)/fs/f2fs/f2fs.ko - AUTOLOAD:=$(call AutoLoad,30,f2fs,1) -endef - -define KernelPackage/fs-f2fs/description - Kernel module for F2FS filesystem support -endef - -$(eval $(call KernelPackage,fs-f2fs)) - - -define KernelPackage/fs-fscache - SUBMENU:=$(FS_MENU) - TITLE:=General filesystem local cache manager - DEPENDS:= - KCONFIG:=\ - CONFIG_FSCACHE=m \ - CONFIG_FSCACHE_STATS=y \ - CONFIG_FSCACHE_HISTOGRAM=n \ - CONFIG_FSCACHE_DEBUG=n \ - CONFIG_FSCACHE_OBJECT_LIST=n \ - CONFIG_CACHEFILES=y \ - CONFIG_CACHEFILES_DEBUG=n \ - CONFIG_CACHEFILES_HISTOGRAM=n - FILES:=$(LINUX_DIR)/fs/fscache/fscache.ko - AUTOLOAD:=$(call AutoLoad,29,fscache) -endef - -$(eval $(call KernelPackage,fs-fscache)) - - -define KernelPackage/fs-hfs - SUBMENU:=$(FS_MENU) - TITLE:=HFS filesystem support - DEPENDS:=+kmod-cdrom - KCONFIG:=CONFIG_HFS_FS - FILES:=$(LINUX_DIR)/fs/hfs/hfs.ko - AUTOLOAD:=$(call AutoLoad,30,hfs) - $(call AddDepends/nls) -endef - -define KernelPackage/fs-hfs/description - Kernel module for HFS filesystem support -endef - -$(eval $(call KernelPackage,fs-hfs)) - - -define KernelPackage/fs-hfsplus - SUBMENU:=$(FS_MENU) - TITLE:=HFS+ filesystem support - DEPENDS:=+kmod-cdrom - KCONFIG:=CONFIG_HFSPLUS_FS - FILES:=$(LINUX_DIR)/fs/hfsplus/hfsplus.ko - AUTOLOAD:=$(call AutoLoad,30,hfsplus) - $(call AddDepends/nls,utf8) -endef - -define KernelPackage/fs-hfsplus/description - Kernel module for HFS+ filesystem support -endef - -$(eval $(call KernelPackage,fs-hfsplus)) - - -define KernelPackage/fs-isofs - SUBMENU:=$(FS_MENU) - TITLE:=ISO9660 filesystem support - DEPENDS:=+kmod-lib-zlib-inflate +kmod-cdrom - KCONFIG:=CONFIG_ISO9660_FS CONFIG_JOLIET=y CONFIG_ZISOFS=n - FILES:=$(LINUX_DIR)/fs/isofs/isofs.ko - AUTOLOAD:=$(call AutoLoad,30,isofs) - $(call AddDepends/nls) -endef - -define KernelPackage/fs-isofs/description - Kernel module for ISO9660 filesystem support -endef - -$(eval $(call KernelPackage,fs-isofs)) - - -define KernelPackage/fs-jfs - SUBMENU:=$(FS_MENU) - TITLE:=JFS filesystem support - KCONFIG:=CONFIG_JFS_FS - FILES:=$(LINUX_DIR)/fs/jfs/jfs.ko - AUTOLOAD:=$(call AutoLoad,30,jfs,1) - $(call AddDepends/nls) -endef - -define KernelPackage/fs-jfs/description - Kernel module for JFS support -endef - -$(eval $(call KernelPackage,fs-jfs)) - -define KernelPackage/fs-minix - SUBMENU:=$(FS_MENU) - TITLE:=Minix filesystem support - KCONFIG:=CONFIG_MINIX_FS - FILES:=$(LINUX_DIR)/fs/minix/minix.ko - AUTOLOAD:=$(call AutoLoad,30,minix) -endef - -define KernelPackage/fs-minix/description - Kernel module for Minix filesystem support -endef - -$(eval $(call KernelPackage,fs-minix)) - - -define KernelPackage/fs-msdos - SUBMENU:=$(FS_MENU) - TITLE:=MSDOS filesystem support - DEPENDS:=+kmod-fs-vfat - KCONFIG:=CONFIG_MSDOS_FS - FILES:=$(LINUX_DIR)/fs/fat/msdos.ko - AUTOLOAD:=$(call AutoLoad,40,msdos) - $(call AddDepends/nls) -endef - -define KernelPackage/fs-msdos/description - Kernel module for MSDOS filesystem support -endef - -$(eval $(call KernelPackage,fs-msdos)) - - -define KernelPackage/fs-nfs - SUBMENU:=$(FS_MENU) - TITLE:=NFS filesystem client support - DEPENDS:=+kmod-fs-nfs-common +kmod-dnsresolver - KCONFIG:= \ - CONFIG_NFS_FS \ - CONFIG_NFS_USE_LEGACY_DNS=n \ - CONFIG_NFS_USE_NEW_IDMAPPER=n - FILES:= \ - $(LINUX_DIR)/fs/nfs/nfs.ko - AUTOLOAD:=$(call AutoLoad,40,nfs) -endef - -define KernelPackage/fs-nfs/description - Kernel module for NFS client support -endef - -$(eval $(call KernelPackage,fs-nfs)) - - -define KernelPackage/fs-nfs-common - SUBMENU:=$(FS_MENU) - TITLE:=Common NFS filesystem modules - KCONFIG:= \ - CONFIG_LOCKD \ - CONFIG_SUNRPC \ - CONFIG_GRACE_PERIOD - FILES:= \ - $(LINUX_DIR)/fs/lockd/lockd.ko \ - $(LINUX_DIR)/net/sunrpc/sunrpc.ko \ - $(LINUX_DIR)/fs/nfs_common/grace.ko \ - $(LINUX_DIR)/fs/nfs_common/nfs_ssc.ko@eq5.10 - AUTOLOAD:=$(call AutoLoad,30,grace sunrpc lockd) -endef - -$(eval $(call KernelPackage,fs-nfs-common)) - - -define KernelPackage/fs-nfs-common-rpcsec - SUBMENU:=$(FS_MENU) - TITLE:=NFS Secure RPC - DEPENDS:= \ - +kmod-fs-nfs-common \ - +kmod-crypto-des \ - +kmod-crypto-cbc \ - +kmod-crypto-cts \ - +kmod-crypto-md5 \ - +kmod-crypto-sha1 \ - +kmod-crypto-hmac \ - +kmod-crypto-ecb \ - +kmod-crypto-arc4 - KCONFIG:= \ - CONFIG_SUNRPC_GSS \ - CONFIG_RPCSEC_GSS_KRB5 - FILES:= \ - $(LINUX_DIR)/lib/oid_registry.ko \ - $(LINUX_DIR)/net/sunrpc/auth_gss/auth_rpcgss.ko \ - $(LINUX_DIR)/net/sunrpc/auth_gss/rpcsec_gss_krb5.ko - AUTOLOAD:=$(call AutoLoad,31,oid_registry auth_rpcgss rpcsec_gss_krb5) -endef - -define KernelPackage/fs-nfs-common-rpcsec/description - Kernel modules for NFS Secure RPC -endef - -$(eval $(call KernelPackage,fs-nfs-common-rpcsec)) - - -define KernelPackage/fs-nfs-v3 - SUBMENU:=$(FS_MENU) - TITLE:=NFS3 filesystem client support - DEPENDS:=+kmod-fs-nfs - FILES:= \ - $(LINUX_DIR)/fs/nfs/nfsv3.ko - AUTOLOAD:=$(call AutoLoad,41,nfsv3) -endef - -define KernelPackage/fs-nfs-v3/description - Kernel module for NFS v3 client support -endef - -$(eval $(call KernelPackage,fs-nfs-v3)) - - -define KernelPackage/fs-nfs-v4 - SUBMENU:=$(FS_MENU) - TITLE:=NFS4 filesystem client support - DEPENDS:=+kmod-fs-nfs - KCONFIG:= \ - CONFIG_NFS_V4=y - FILES:= \ - $(LINUX_DIR)/fs/nfs/nfsv4.ko - AUTOLOAD:=$(call AutoLoad,41,nfsv4) -endef - -define KernelPackage/fs-nfs-v4/description - Kernel module for NFS v4 client support -endef - -$(eval $(call KernelPackage,fs-nfs-v4)) - - -define KernelPackage/fs-nfsd - SUBMENU:=$(FS_MENU) - TITLE:=NFS kernel server support - DEPENDS:=+kmod-fs-nfs-common +kmod-fs-exportfs +kmod-fs-nfs-common-rpcsec - KCONFIG:= \ - CONFIG_NFSD \ - CONFIG_NFSD_V4=y \ - CONFIG_NFSD_V4_SECURITY_LABEL=n \ - CONFIG_NFSD_BLOCKLAYOUT=n \ - CONFIG_NFSD_SCSILAYOUT=n \ - CONFIG_NFSD_FLEXFILELAYOUT=n \ - CONFIG_NFSD_FAULT_INJECTION=n - FILES:=$(LINUX_DIR)/fs/nfsd/nfsd.ko - AUTOLOAD:=$(call AutoLoad,40,nfsd) -endef - -define KernelPackage/fs-nfsd/description - Kernel module for NFS kernel server support -endef - -$(eval $(call KernelPackage,fs-nfsd)) - - -define KernelPackage/fs-ntfs - SUBMENU:=$(FS_MENU) - TITLE:=NTFS filesystem support - KCONFIG:=CONFIG_NTFS_FS - FILES:=$(LINUX_DIR)/fs/ntfs/ntfs.ko - AUTOLOAD:=$(call AutoLoad,30,ntfs) - $(call AddDepends/nls) -endef - -define KernelPackage/fs-ntfs/description - Kernel module for NTFS filesystem support -endef - -$(eval $(call KernelPackage,fs-ntfs)) - - -define KernelPackage/fs-reiserfs - SUBMENU:=$(FS_MENU) - TITLE:=ReiserFS filesystem support - KCONFIG:=CONFIG_REISERFS_FS - FILES:=$(LINUX_DIR)/fs/reiserfs/reiserfs.ko - AUTOLOAD:=$(call AutoLoad,30,reiserfs,1) -endef - -define KernelPackage/fs-reiserfs/description - Kernel module for ReiserFS support -endef - -$(eval $(call KernelPackage,fs-reiserfs)) - - -define KernelPackage/fs-squashfs - SUBMENU:=$(FS_MENU) - TITLE:=SquashFS 4.0 filesystem support - KCONFIG:=CONFIG_SQUASHFS \ - CONFIG_SQUASHFS_XZ=y - FILES:=$(LINUX_DIR)/fs/squashfs/squashfs.ko - AUTOLOAD:=$(call AutoLoad,30,squashfs,1) -endef - -define KernelPackage/fs-squashfs/description - Kernel module for SquashFS 4.0 support -endef - -$(eval $(call KernelPackage,fs-squashfs)) - - -define KernelPackage/fs-udf - SUBMENU:=$(FS_MENU) - TITLE:=UDF filesystem support - KCONFIG:=CONFIG_UDF_FS - FILES:=$(LINUX_DIR)/fs/udf/udf.ko - AUTOLOAD:=$(call AutoLoad,30,udf) - DEPENDS:=+kmod-lib-crc-itu-t +kmod-cdrom - $(call AddDepends/nls) -endef - -define KernelPackage/fs-udf/description - Kernel module for UDF filesystem support -endef - -$(eval $(call KernelPackage,fs-udf)) - - -define KernelPackage/fs-vfat - SUBMENU:=$(FS_MENU) - TITLE:=VFAT filesystem support - KCONFIG:= \ - CONFIG_FAT_FS \ - CONFIG_VFAT_FS - FILES:= \ - $(LINUX_DIR)/fs/fat/fat.ko \ - $(LINUX_DIR)/fs/fat/vfat.ko - AUTOLOAD:=$(call AutoLoad,30,fat vfat) - $(call AddDepends/nls,cp437 iso8859-1 utf8) -endef - -define KernelPackage/fs-vfat/description - Kernel module for VFAT filesystem support -endef - -$(eval $(call KernelPackage,fs-vfat)) - - -define KernelPackage/fs-xfs - SUBMENU:=$(FS_MENU) - TITLE:=XFS filesystem support - KCONFIG:=CONFIG_XFS_FS - DEPENDS:= +kmod-fs-exportfs +kmod-lib-crc32c - FILES:=$(LINUX_DIR)/fs/xfs/xfs.ko - AUTOLOAD:=$(call AutoLoad,30,xfs,1) -endef - -define KernelPackage/fs-xfs/description - Kernel module for XFS support -endef - -$(eval $(call KernelPackage,fs-xfs)) - - -define KernelPackage/fuse - SUBMENU:=$(FS_MENU) - TITLE:=FUSE (Filesystem in Userspace) support - KCONFIG:= CONFIG_FUSE_FS - FILES:=$(LINUX_DIR)/fs/fuse/fuse.ko - AUTOLOAD:=$(call AutoLoad,80,fuse) -endef - -define KernelPackage/fuse/description - Kernel module for userspace filesystem support -endef - -$(eval $(call KernelPackage,fuse)) diff --git a/root/package/base-files/kernel/linux/modules/input.mk b/root/package/base-files/kernel/linux/modules/input.mk deleted file mode 100644 index 6f9500d4..00000000 --- a/root/package/base-files/kernel/linux/modules/input.mk +++ /dev/null @@ -1,229 +0,0 @@ -# -# Copyright (C) 2006-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -INPUT_MODULES_MENU:=Input modules - -define KernelPackage/hid - SUBMENU:=$(INPUT_MODULES_MENU) - TITLE:=HID Devices - DEPENDS:=+kmod-input-core +kmod-input-evdev - KCONFIG:=CONFIG_HID CONFIG_HIDRAW=y CONFIG_HID_BATTERY_STRENGTH=y - FILES:=$(LINUX_DIR)/drivers/hid/hid.ko - AUTOLOAD:=$(call AutoLoad,61,hid) -endef - -define KernelPackage/hid/description - Kernel modules for HID devices -endef - -$(eval $(call KernelPackage,hid)) - -define KernelPackage/hid-generic - SUBMENU:=$(INPUT_MODULES_MENU) - TITLE:=Generic HID device support - DEPENDS:=+kmod-hid - KCONFIG:=CONFIG_HID_GENERIC - FILES:=$(LINUX_DIR)/drivers/hid/hid-generic.ko - AUTOLOAD:=$(call AutoProbe,hid-generic) -endef - -define KernelPackage/hid/description - Kernel modules for generic HID device (e.g. keyboards and mice) support -endef - -$(eval $(call KernelPackage,hid-generic)) - -define KernelPackage/input-core - SUBMENU:=$(INPUT_MODULES_MENU) - TITLE:=Input device core - KCONFIG:=CONFIG_INPUT - FILES:=$(LINUX_DIR)/drivers/input/input-core.ko -endef - -define KernelPackage/input-core/description - Kernel modules for support of input device -endef - -$(eval $(call KernelPackage,input-core)) - - -define KernelPackage/input-evdev - SUBMENU:=$(INPUT_MODULES_MENU) - TITLE:=Input event device - DEPENDS:=+kmod-input-core - KCONFIG:=CONFIG_INPUT_EVDEV - FILES:=$(LINUX_DIR)/drivers/input/evdev.ko - AUTOLOAD:=$(call AutoLoad,60,evdev) -endef - -define KernelPackage/input-evdev/description - Kernel modules for support of input device events -endef - -$(eval $(call KernelPackage,input-evdev)) - - -define KernelPackage/input-gpio-keys - SUBMENU:=$(INPUT_MODULES_MENU) - TITLE:=GPIO key support - DEPENDS:= @GPIO_SUPPORT +kmod-input-core - KCONFIG:= \ - CONFIG_KEYBOARD_GPIO \ - CONFIG_INPUT_KEYBOARD=y - FILES:=$(LINUX_DIR)/drivers/input/keyboard/gpio_keys.ko - AUTOLOAD:=$(call AutoProbe,gpio_keys,1) -endef - -define KernelPackage/input-gpio-keys/description - This driver implements support for buttons connected - to GPIO pins of various CPUs (and some other chips). - - See also gpio-button-hotplug which is an alternative, lower overhead - implementation that generates uevents instead of kernel input events. -endef - -$(eval $(call KernelPackage,input-gpio-keys)) - - -define KernelPackage/input-gpio-keys-polled - SUBMENU:=$(INPUT_MODULES_MENU) - TITLE:=Polled GPIO key support - DEPENDS:=@GPIO_SUPPORT +kmod-input-polldev - KCONFIG:= \ - CONFIG_KEYBOARD_GPIO_POLLED \ - CONFIG_INPUT_KEYBOARD=y - FILES:=$(LINUX_DIR)/drivers/input/keyboard/gpio_keys_polled.ko - AUTOLOAD:=$(call AutoProbe,gpio_keys_polled,1) -endef - -define KernelPackage/input-gpio-keys-polled/description - Kernel module for support polled GPIO keys input device - - See also gpio-button-hotplug which is an alternative, lower overhead - implementation that generates uevents instead of kernel input events. -endef - -$(eval $(call KernelPackage,input-gpio-keys-polled)) - - -define KernelPackage/input-gpio-encoder - SUBMENU:=$(INPUT_MODULES_MENU) - TITLE:=GPIO rotary encoder - DEPENDS:=@GPIO_SUPPORT +kmod-input-core - KCONFIG:=CONFIG_INPUT_GPIO_ROTARY_ENCODER - FILES:=$(LINUX_DIR)/drivers/input/misc/rotary_encoder.ko - AUTOLOAD:=$(call AutoProbe,rotary_encoder) -endef - -define KernelPackage/input-gpio-encoder/description - Kernel module to use rotary encoders connected to GPIO pins -endef - -$(eval $(call KernelPackage,input-gpio-encoder)) - - -define KernelPackage/input-joydev - SUBMENU:=$(INPUT_MODULES_MENU) - TITLE:=Joystick device support - DEPENDS:=+kmod-input-core - KCONFIG:=CONFIG_INPUT_JOYDEV - FILES:=$(LINUX_DIR)/drivers/input/joydev.ko - AUTOLOAD:=$(call AutoProbe,joydev) -endef - -define KernelPackage/input-joydev/description - Kernel module for joystick support -endef - -$(eval $(call KernelPackage,input-joydev)) - - -define KernelPackage/input-polldev - SUBMENU:=$(INPUT_MODULES_MENU) - TITLE:=Polled Input device support - DEPENDS:=+kmod-input-core - KCONFIG:=CONFIG_INPUT_POLLDEV - FILES:=$(LINUX_DIR)/drivers/input/input-polldev.ko -endef - -define KernelPackage/input-polldev/description - Kernel module for support of polled input devices -endef - -$(eval $(call KernelPackage,input-polldev)) - - -define KernelPackage/input-matrixkmap - SUBMENU:=$(INPUT_MODULES_MENU) - TITLE:=Input matrix devices support - DEPENDS:=+kmod-input-core - KCONFIG:=CONFIG_INPUT_MATRIXKMAP - FILES:=$(LINUX_DIR)/drivers/input/matrix-keymap.ko - AUTOLOAD:=$(call AutoProbe,matrix-keymap) -endef - -define KernelPackage/input-matrixkmap/description - Kernel module support for input matrix devices -endef - -$(eval $(call KernelPackage,input-matrixkmap)) - - -define KernelPackage/input-touchscreen-ads7846 - SUBMENU:=$(INPUT_MODULES_MENU) - TITLE:=ADS7846/TSC2046/AD7873 and AD(S)7843 based touchscreens - DEPENDS:=+kmod-hwmon-core +kmod-input-core +kmod-spi-bitbang - KCONFIG:= \ - CONFIG_INPUT_TOUCHSCREEN=y \ - CONFIG_TOUCHSCREEN_PROPERTIES=y \ - CONFIG_TOUCHSCREEN_ADS7846 - FILES:=$(LINUX_DIR)/drivers/input/touchscreen/ads7846.ko \ - $(LINUX_DIR)/drivers/input/touchscreen/of_touchscreen.ko@lt5.14 - AUTOLOAD:=$(call AutoProbe,ads7846) -endef - -define KernelPackage/input-touchscreen-ads7846/description - Kernel module for ADS7846/TSC2046/AD7873 and AD(S)7843 based touchscreens -endef - -$(eval $(call KernelPackage,input-touchscreen-ads7846)) - - -define KernelPackage/keyboard-imx - SUBMENU:=$(INPUT_MODULES_MENU) - TITLE:=IMX keypad support - DEPENDS:=@(TARGET_mxs||TARGET_imx6) +kmod-input-matrixkmap - KCONFIG:= \ - CONFIG_KEYBOARD_IMX \ - CONFIG_INPUT_KEYBOARD=y - FILES:=$(LINUX_DIR)/drivers/input/keyboard/imx_keypad.ko - AUTOLOAD:=$(call AutoProbe,imx_keypad) -endef - -define KernelPackage/keyboard-imx/description - Enable support for IMX keypad port. -endef - -$(eval $(call KernelPackage,keyboard-imx)) - - -define KernelPackage/input-uinput - SUBMENU:=$(INPUT_MODULES_MENU) - TITLE:=user input module - DEPENDS:=+kmod-input-core - KCONFIG:= \ - CONFIG_INPUT_MISC=y \ - CONFIG_INPUT_UINPUT - FILES:=$(LINUX_DIR)/drivers/input/misc/uinput.ko - AUTOLOAD:=$(call AutoProbe,uinput) -endef - -define KernelPackage/input-uinput/description - user input modules needed for bluez -endef - -$(eval $(call KernelPackage,input-uinput)) diff --git a/root/package/base-files/kernel/linux/modules/netfilter.mk b/root/package/base-files/kernel/linux/modules/netfilter.mk deleted file mode 100644 index 7d185802..00000000 --- a/root/package/base-files/kernel/linux/modules/netfilter.mk +++ /dev/null @@ -1,1179 +0,0 @@ - -# -# Copyright (C) 2006-2010 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -NF_MENU:=Netfilter Extensions -NF_KMOD:=1 -include $(INCLUDE_DIR)/netfilter.mk - - -define KernelPackage/nf-reject - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter IPv4 reject support - KCONFIG:= \ - CONFIG_NETFILTER=y \ - CONFIG_NETFILTER_ADVANCED=y \ - $(KCONFIG_NF_REJECT) - FILES:=$(foreach mod,$(NF_REJECT-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_REJECT-m))) -endef - -$(eval $(call KernelPackage,nf-reject)) - - -define KernelPackage/nf-reject6 - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter IPv6 reject support - KCONFIG:= \ - CONFIG_NETFILTER=y \ - CONFIG_NETFILTER_ADVANCED=y \ - $(KCONFIG_NF_REJECT6) - DEPENDS:=@IPV6 - FILES:=$(foreach mod,$(NF_REJECT6-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_REJECT6-m))) -endef - -$(eval $(call KernelPackage,nf-reject6)) - - -define KernelPackage/nf-ipt - SUBMENU:=$(NF_MENU) - TITLE:=Iptables core - KCONFIG:=$(KCONFIG_NF_IPT) - FILES:=$(foreach mod,$(NF_IPT-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_IPT-m))) -endef - -$(eval $(call KernelPackage,nf-ipt)) - - -define KernelPackage/nf-ipt6 - SUBMENU:=$(NF_MENU) - TITLE:=Ip6tables core - KCONFIG:=$(KCONFIG_NF_IPT6) - FILES:=$(foreach mod,$(NF_IPT6-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_IPT6-m))) - DEPENDS:=+kmod-nf-ipt -endef - -$(eval $(call KernelPackage,nf-ipt6)) - - - -define KernelPackage/ipt-core - SUBMENU:=$(NF_MENU) - TITLE:=Iptables core - KCONFIG:=$(KCONFIG_IPT_CORE) - FILES:=$(foreach mod,$(IPT_CORE-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CORE-m))) - DEPENDS:=+kmod-nf-reject +kmod-nf-ipt -endef - -define KernelPackage/ipt-core/description - Netfilter core kernel modules - Includes: - - comment - - limit - - LOG - - mac - - multiport - - REJECT - - TCPMSS -endef - -$(eval $(call KernelPackage,ipt-core)) - - -define KernelPackage/nf-conntrack - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter connection tracking - KCONFIG:= \ - CONFIG_NETFILTER=y \ - CONFIG_NETFILTER_ADVANCED=y \ - CONFIG_NF_CONNTRACK_MARK=y \ - CONFIG_NF_CONNTRACK_ZONES=y \ - $(KCONFIG_NF_CONNTRACK) - FILES:=$(foreach mod,$(NF_CONNTRACK-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_CONNTRACK-m))) -endef - -define KernelPackage/nf-conntrack/install - $(INSTALL_DIR) $(1)/etc/sysctl.d - $(INSTALL_DATA) ./files/sysctl-nf-conntrack.conf $(1)/etc/sysctl.d/11-nf-conntrack.conf -endef - -$(eval $(call KernelPackage,nf-conntrack)) - - -define KernelPackage/nf-conntrack6 - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter IPv6 connection tracking - KCONFIG:=$(KCONFIG_NF_CONNTRACK6) - DEPENDS:=@IPV6 +kmod-nf-conntrack - FILES:=$(foreach mod,$(NF_CONNTRACK6-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_CONNTRACK6-m))) -endef - -$(eval $(call KernelPackage,nf-conntrack6)) - - -define KernelPackage/nf-nat - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter NAT - KCONFIG:=$(KCONFIG_NF_NAT) - DEPENDS:=+kmod-nf-conntrack - FILES:=$(foreach mod,$(NF_NAT-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_NAT-m))) -endef - -$(eval $(call KernelPackage,nf-nat)) - - -define KernelPackage/nf-nat6 - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter IPV6-NAT - KCONFIG:=$(KCONFIG_NF_NAT6) - DEPENDS:=@IPV6 +kmod-nf-conntrack6 +kmod-nf-nat - FILES:=$(foreach mod,$(NF_NAT6-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_NAT6-m))) -endef - -$(eval $(call KernelPackage,nf-nat6)) - - -define KernelPackage/nf-flow - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter flowtable support - KCONFIG:= \ - CONFIG_NETFILTER_INGRESS=y \ - CONFIG_NF_FLOW_TABLE - DEPENDS:=+kmod-nf-conntrack - FILES:= \ - $(LINUX_DIR)/net/netfilter/nf_flow_table.ko - AUTOLOAD:=$(call AutoProbe,nf_flow_table) -endef - -$(eval $(call KernelPackage,nf-flow)) - - -define AddDepends/ipt - SUBMENU:=$(NF_MENU) - DEPENDS+= +kmod-ipt-core $(1) -endef - - -define KernelPackage/ipt-conntrack - TITLE:=Basic connection tracking modules - KCONFIG:=$(KCONFIG_IPT_CONNTRACK) - FILES:=$(foreach mod,$(IPT_CONNTRACK-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CONNTRACK-m))) - $(call AddDepends/ipt,+kmod-nf-conntrack) -endef - -define KernelPackage/ipt-conntrack/description - Netfilter (IPv4) kernel modules for connection tracking - Includes: - - conntrack - - defrag - - iptables_raw - - NOTRACK - - state -endef - -$(eval $(call KernelPackage,ipt-conntrack)) - - -define KernelPackage/ipt-conntrack-extra - TITLE:=Extra connection tracking modules - KCONFIG:=$(KCONFIG_IPT_CONNTRACK_EXTRA) - FILES:=$(foreach mod,$(IPT_CONNTRACK_EXTRA-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CONNTRACK_EXTRA-m))) - $(call AddDepends/ipt,+kmod-ipt-conntrack) -endef - -define KernelPackage/ipt-conntrack-extra/description - Netfilter (IPv4) extra kernel modules for connection tracking - Includes: - - connbytes - - connmark/CONNMARK - - conntrack - - helper - - recent -endef - -$(eval $(call KernelPackage,ipt-conntrack-extra)) - -define KernelPackage/ipt-conntrack-label - TITLE:=Module for handling connection tracking labels - KCONFIG:=$(KCONFIG_IPT_CONNTRACK_LABEL) - FILES:=$(foreach mod,$(IPT_CONNTRACK_LABEL-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CONNTRACK_LABEL-m))) - $(call AddDepends/ipt,+kmod-ipt-conntrack) -endef - -define KernelPackage/ipt-conntrack-label/description - Netfilter (IPv4) module for handling connection tracking labels - Includes: - - connlabel -endef - -$(eval $(call KernelPackage,ipt-conntrack-label)) - -define KernelPackage/ipt-filter - TITLE:=Modules for packet content inspection - KCONFIG:=$(KCONFIG_IPT_FILTER) - FILES:=$(foreach mod,$(IPT_FILTER-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_FILTER-m))) - $(call AddDepends/ipt,+kmod-lib-textsearch +kmod-ipt-conntrack) -endef - -define KernelPackage/ipt-filter/description - Netfilter (IPv4) kernel modules for packet content inspection - Includes: - - string - - bpf -endef - -$(eval $(call KernelPackage,ipt-filter)) - - -define KernelPackage/ipt-offload - TITLE:=Netfilter routing/NAT offload support - KCONFIG:=$(KCONFIG_IPT_FLOW) - FILES:=$(foreach mod,$(IPT_FLOW-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_FLOW-m))) - $(call AddDepends/ipt,+kmod-nf-flow) -endef - -$(eval $(call KernelPackage,ipt-offload)) - - -define KernelPackage/ipt-ipopt - TITLE:=Modules for matching/changing IP packet options - KCONFIG:=$(KCONFIG_IPT_IPOPT) - FILES:=$(foreach mod,$(IPT_IPOPT-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_IPOPT-m))) - $(call AddDepends/ipt) -endef - -define KernelPackage/ipt-ipopt/description - Netfilter (IPv4) modules for matching/changing IP packet options - Includes: - - CLASSIFY - - dscp/DSCP - - ecn/ECN - - hl/HL - - length - - mark/MARK - - statistic - - tcpmss - - time - - ttl/TTL - - unclean -endef - -$(eval $(call KernelPackage,ipt-ipopt)) - - -define KernelPackage/ipt-ipsec - TITLE:=Modules for matching IPSec packets - KCONFIG:=$(KCONFIG_IPT_IPSEC) - FILES:=$(foreach mod,$(IPT_IPSEC-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_IPSEC-m))) - $(call AddDepends/ipt) -endef - -define KernelPackage/ipt-ipsec/description - Netfilter (IPv4) modules for matching IPSec packets - Includes: - - ah - - esp - - policy -endef - -$(eval $(call KernelPackage,ipt-ipsec)) - -IPSET_MODULES:= \ - ipset/ip_set \ - ipset/ip_set_bitmap_ip \ - ipset/ip_set_bitmap_ipmac \ - ipset/ip_set_bitmap_port \ - ipset/ip_set_hash_ip \ - ipset/ip_set_hash_ipmark \ - ipset/ip_set_hash_ipport \ - ipset/ip_set_hash_ipportip \ - ipset/ip_set_hash_ipportnet \ - ipset/ip_set_hash_mac \ - ipset/ip_set_hash_netportnet \ - ipset/ip_set_hash_net \ - ipset/ip_set_hash_netnet \ - ipset/ip_set_hash_netport \ - ipset/ip_set_hash_netiface \ - ipset/ip_set_list_set \ - xt_set - -define KernelPackage/ipt-ipset - SUBMENU:=Netfilter Extensions - TITLE:=IPset netfilter modules - DEPENDS+= +kmod-ipt-core +kmod-nfnetlink - KCONFIG:= \ - CONFIG_IP_SET \ - CONFIG_IP_SET_MAX=256 \ - CONFIG_NETFILTER_XT_SET \ - CONFIG_IP_SET_BITMAP_IP \ - CONFIG_IP_SET_BITMAP_IPMAC \ - CONFIG_IP_SET_BITMAP_PORT \ - CONFIG_IP_SET_HASH_IP \ - CONFIG_IP_SET_HASH_IPMAC \ - CONFIG_IP_SET_HASH_IPMARK \ - CONFIG_IP_SET_HASH_IPPORT \ - CONFIG_IP_SET_HASH_IPPORTIP \ - CONFIG_IP_SET_HASH_IPPORTNET \ - CONFIG_IP_SET_HASH_MAC \ - CONFIG_IP_SET_HASH_NET \ - CONFIG_IP_SET_HASH_NETNET \ - CONFIG_IP_SET_HASH_NETIFACE \ - CONFIG_IP_SET_HASH_NETPORT \ - CONFIG_IP_SET_HASH_NETPORTNET \ - CONFIG_IP_SET_LIST_SET \ - CONFIG_NET_EMATCH_IPSET=n - FILES:=$(foreach mod,$(IPSET_MODULES),$(LINUX_DIR)/net/netfilter/$(mod).ko) - AUTOLOAD:=$(call AutoLoad,49,$(notdir $(IPSET_MODULES))) -endef -$(eval $(call KernelPackage,ipt-ipset)) - - -IPVS_MODULES:= \ - ipvs/ip_vs \ - ipvs/ip_vs_lc \ - ipvs/ip_vs_wlc \ - ipvs/ip_vs_rr \ - ipvs/ip_vs_wrr \ - ipvs/ip_vs_lblc \ - ipvs/ip_vs_lblcr \ - ipvs/ip_vs_dh \ - ipvs/ip_vs_sh \ - ipvs/ip_vs_fo \ - ipvs/ip_vs_ovf \ - ipvs/ip_vs_nq \ - ipvs/ip_vs_sed \ - xt_ipvs - -define KernelPackage/nf-ipvs - SUBMENU:=Netfilter Extensions - TITLE:=IP Virtual Server modules - DEPENDS:=@IPV6 +kmod-lib-crc32c +kmod-ipt-conntrack +kmod-nf-conntrack - KCONFIG:= \ - CONFIG_IP_VS \ - CONFIG_IP_VS_IPV6=y \ - CONFIG_IP_VS_DEBUG=n \ - CONFIG_IP_VS_PROTO_TCP=y \ - CONFIG_IP_VS_PROTO_UDP=y \ - CONFIG_IP_VS_PROTO_AH_ESP=y \ - CONFIG_IP_VS_PROTO_ESP=y \ - CONFIG_IP_VS_PROTO_AH=y \ - CONFIG_IP_VS_PROTO_SCTP=y \ - CONFIG_IP_VS_TAB_BITS=12 \ - CONFIG_IP_VS_RR \ - CONFIG_IP_VS_WRR \ - CONFIG_IP_VS_LC \ - CONFIG_IP_VS_WLC \ - CONFIG_IP_VS_FO \ - CONFIG_IP_VS_OVF \ - CONFIG_IP_VS_LBLC \ - CONFIG_IP_VS_LBLCR \ - CONFIG_IP_VS_DH \ - CONFIG_IP_VS_SH \ - CONFIG_IP_VS_SED \ - CONFIG_IP_VS_NQ \ - CONFIG_IP_VS_SH_TAB_BITS=8 \ - CONFIG_IP_VS_NFCT=y \ - CONFIG_NETFILTER_XT_MATCH_IPVS - FILES:=$(foreach mod,$(IPVS_MODULES),$(LINUX_DIR)/net/netfilter/$(mod).ko) - $(call AddDepends/ipt,+kmod-ipt-conntrack,+kmod-nf-conntrack) -endef - -define KernelPackage/nf-ipvs/description - IPVS (IP Virtual Server) implements transport-layer load balancing inside - the Linux kernel so called Layer-4 switching. -endef - -$(eval $(call KernelPackage,nf-ipvs)) - - -define KernelPackage/nf-ipvs-ftp - SUBMENU:=$(NF_MENU) - TITLE:=Virtual Server FTP protocol support - KCONFIG:=CONFIG_IP_VS_FTP - DEPENDS:=kmod-nf-ipvs +kmod-nf-nat +kmod-nf-nathelper - FILES:=$(LINUX_DIR)/net/netfilter/ipvs/ip_vs_ftp.ko -endef - -define KernelPackage/nf-ipvs-ftp/description - In the virtual server via Network Address Translation, - the IP address and port number of real servers cannot be sent to - clients in ftp connections directly, so FTP protocol helper is - required for tracking the connection and mangling it back to that of - virtual service. -endef - -$(eval $(call KernelPackage,nf-ipvs-ftp)) - - -define KernelPackage/nf-ipvs-sip - SUBMENU:=$(NF_MENU) - TITLE:=Virtual Server SIP protocol support - KCONFIG:=CONFIG_IP_VS_PE_SIP - DEPENDS:=kmod-nf-ipvs +kmod-nf-nathelper-extra - FILES:=$(LINUX_DIR)/net/netfilter/ipvs/ip_vs_pe_sip.ko -endef - -define KernelPackage/nf-ipvs-sip/description - Allow persistence based on the SIP Call-ID -endef - -$(eval $(call KernelPackage,nf-ipvs-sip)) - - -define KernelPackage/ipt-nat - TITLE:=Basic NAT targets - KCONFIG:=$(KCONFIG_IPT_NAT) - FILES:=$(foreach mod,$(IPT_NAT-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_NAT-m))) - $(call AddDepends/ipt,+kmod-nf-nat) -endef - -define KernelPackage/ipt-nat/description - Netfilter (IPv4) kernel modules for basic NAT targets - Includes: - - MASQUERADE -endef - -$(eval $(call KernelPackage,ipt-nat)) - - -define KernelPackage/ipt-raw - TITLE:=Netfilter IPv4 raw table support - KCONFIG:=CONFIG_IP_NF_RAW - FILES:=$(LINUX_DIR)/net/ipv4/netfilter/iptable_raw.ko - AUTOLOAD:=$(call AutoProbe,iptable_raw) - $(call AddDepends/ipt) -endef - -$(eval $(call KernelPackage,ipt-raw)) - - -define KernelPackage/ipt-raw6 - TITLE:=Netfilter IPv6 raw table support - DEPENDS:=@IPV6 - KCONFIG:=CONFIG_IP6_NF_RAW - FILES:=$(LINUX_DIR)/net/ipv6/netfilter/ip6table_raw.ko - AUTOLOAD:=$(call AutoProbe,ip6table_raw) - $(call AddDepends/ipt,+kmod-ip6tables) -endef - -$(eval $(call KernelPackage,ipt-raw6)) - - -define KernelPackage/ipt-nat6 - TITLE:=IPv6 NAT targets - DEPENDS:=@IPV6 - KCONFIG:=$(KCONFIG_IPT_NAT6) - FILES:=$(foreach mod,$(IPT_NAT6-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoLoad,43,$(notdir $(IPT_NAT6-m))) - $(call AddDepends/ipt,+kmod-nf-nat6) - $(call AddDepends/ipt,+kmod-ipt-conntrack) - $(call AddDepends/ipt,+kmod-ipt-nat) - $(call AddDepends/ipt,+kmod-ip6tables) -endef - -define KernelPackage/ipt-nat6/description - Netfilter (IPv6) kernel modules for NAT targets -endef - -$(eval $(call KernelPackage,ipt-nat6)) - - -define KernelPackage/ipt-nat-extra - TITLE:=Extra NAT targets - KCONFIG:=$(KCONFIG_IPT_NAT_EXTRA) - FILES:=$(foreach mod,$(IPT_NAT_EXTRA-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_NAT_EXTRA-m))) - $(call AddDepends/ipt,+kmod-ipt-nat) -endef - -define KernelPackage/ipt-nat-extra/description - Netfilter (IPv4) kernel modules for extra NAT targets - Includes: - - NETMAP - - REDIRECT -endef - -$(eval $(call KernelPackage,ipt-nat-extra)) - - -define KernelPackage/nf-nathelper - SUBMENU:=$(NF_MENU) - TITLE:=Basic Conntrack and NAT helpers - KCONFIG:=$(KCONFIG_NF_NATHELPER) - FILES:=$(foreach mod,$(NF_NATHELPER-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_NATHELPER-m))) - DEPENDS:=+kmod-nf-nat -endef - -define KernelPackage/nf-nathelper/description - Default Netfilter (IPv4) Conntrack and NAT helpers - Includes: - - ftp -endef - -$(eval $(call KernelPackage,nf-nathelper)) - - -define KernelPackage/nf-nathelper-extra - SUBMENU:=$(NF_MENU) - TITLE:=Extra Conntrack and NAT helpers - KCONFIG:=$(KCONFIG_NF_NATHELPER_EXTRA) - FILES:=$(foreach mod,$(NF_NATHELPER_EXTRA-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_NATHELPER_EXTRA-m))) - DEPENDS:=+kmod-nf-nat +kmod-lib-textsearch +kmod-ipt-raw +kmod-asn1-decoder -endef - -define KernelPackage/nf-nathelper-extra/description - Extra Netfilter (IPv4) Conntrack and NAT helpers - Includes: - - amanda - - h323 - - irc - - mms - - pptp - - proto_gre - - sip - - snmp_basic - - tftp - - broadcast -endef - -$(eval $(call KernelPackage,nf-nathelper-extra)) - - -define KernelPackage/ipt-ulog - TITLE:=Module for user-space packet logging - KCONFIG:=$(KCONFIG_IPT_ULOG) - FILES:=$(foreach mod,$(IPT_ULOG-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_ULOG-m))) - $(call AddDepends/ipt) -endef - -define KernelPackage/ipt-ulog/description - Netfilter (IPv4) module for user-space packet logging - Includes: - - ULOG -endef - -$(eval $(call KernelPackage,ipt-ulog)) - - -define KernelPackage/ipt-nflog - TITLE:=Module for user-space packet logging - KCONFIG:=$(KCONFIG_IPT_NFLOG) - FILES:=$(foreach mod,$(IPT_NFLOG-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_NFLOG-m))) - $(call AddDepends/ipt,+kmod-nfnetlink-log) -endef - -define KernelPackage/ipt-nflog/description - Netfilter module for user-space packet logging - Includes: - - NFLOG -endef - -$(eval $(call KernelPackage,ipt-nflog)) - - -define KernelPackage/ipt-nfqueue - TITLE:=Module for user-space packet queuing - KCONFIG:=$(KCONFIG_IPT_NFQUEUE) - FILES:=$(foreach mod,$(IPT_NFQUEUE-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_NFQUEUE-m))) - $(call AddDepends/ipt,+kmod-nfnetlink-queue) -endef - -define KernelPackage/ipt-nfqueue/description - Netfilter module for user-space packet queuing - Includes: - - NFQUEUE -endef - -$(eval $(call KernelPackage,ipt-nfqueue)) - - -define KernelPackage/ipt-debug - TITLE:=Module for debugging/development - KCONFIG:=$(KCONFIG_IPT_DEBUG) - FILES:=$(foreach mod,$(IPT_DEBUG-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_DEBUG-m))) - $(call AddDepends/ipt,+kmod-ipt-raw +IPV6:kmod-ipt-raw6) -endef - -define KernelPackage/ipt-debug/description - Netfilter modules for debugging/development of the firewall - Includes: - - TRACE -endef - -$(eval $(call KernelPackage,ipt-debug)) - - -define KernelPackage/ipt-led - TITLE:=Module to trigger a LED with a Netfilter rule - KCONFIG:=$(KCONFIG_IPT_LED) - FILES:=$(foreach mod,$(IPT_LED-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_LED-m))) - $(call AddDepends/ipt) -endef - -define KernelPackage/ipt-led/description - Netfilter target to trigger a LED when a network packet is matched. -endef - -$(eval $(call KernelPackage,ipt-led)) - -define KernelPackage/ipt-tproxy - TITLE:=Transparent proxying support - DEPENDS+=+kmod-ipt-conntrack +IPV6:kmod-nf-conntrack6 +IPV6:kmod-ip6tables - KCONFIG:=$(KCONFIG_IPT_TPROXY) - FILES:=$(foreach mod,$(IPT_TPROXY-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_TPROXY-m))) - $(call AddDepends/ipt) -endef - -define KernelPackage/ipt-tproxy/description - Kernel modules for Transparent Proxying -endef - -$(eval $(call KernelPackage,ipt-tproxy)) - -define KernelPackage/ipt-tee - TITLE:=TEE support - DEPENDS:=+kmod-ipt-conntrack - KCONFIG:=$(KCONFIG_IPT_TEE) - FILES:=$(foreach mod,$(IPT_TEE-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir nf_tee $(IPT_TEE-m))) - $(call AddDepends/ipt) -endef - -define KernelPackage/ipt-tee/description - Kernel modules for TEE -endef - -$(eval $(call KernelPackage,ipt-tee)) - - -define KernelPackage/ipt-u32 - TITLE:=U32 support - KCONFIG:=$(KCONFIG_IPT_U32) - FILES:=$(foreach mod,$(IPT_U32-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir nf_tee $(IPT_U32-m))) - $(call AddDepends/ipt) -endef - -define KernelPackage/ipt-u32/description - Kernel modules for U32 -endef - -$(eval $(call KernelPackage,ipt-u32)) - -define KernelPackage/ipt-checksum - TITLE:=CHECKSUM support - KCONFIG:=$(KCONFIG_IPT_CHECKSUM) - FILES:=$(foreach mod,$(IPT_CHECKSUM-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CHECKSUM-m))) - $(call AddDepends/ipt) -endef - -define KernelPackage/ipt-checksum/description - Kernel modules for CHECKSUM fillin target -endef - -$(eval $(call KernelPackage,ipt-checksum)) - - -define KernelPackage/ipt-iprange - TITLE:=Module for matching ip ranges - KCONFIG:=$(KCONFIG_IPT_IPRANGE) - FILES:=$(foreach mod,$(IPT_IPRANGE-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_IPRANGE-m))) - $(call AddDepends/ipt) -endef - -define KernelPackage/ipt-iprange/description - Netfilter (IPv4) module for matching ip ranges - Includes: - - iprange -endef - -$(eval $(call KernelPackage,ipt-iprange)) - -define KernelPackage/ipt-cluster - TITLE:=Module for matching cluster - KCONFIG:=$(KCONFIG_IPT_CLUSTER) - FILES:=$(foreach mod,$(IPT_CLUSTER-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CLUSTER-m))) - $(call AddDepends/ipt,+kmod-nf-conntrack) -endef - -define KernelPackage/ipt-cluster/description - Netfilter (IPv4/IPv6) module for matching cluster - This option allows you to build work-load-sharing clusters of - network servers/stateful firewalls without having a dedicated - load-balancing router/server/switch. Basically, this match returns - true when the packet must be handled by this cluster node. Thus, - all nodes see all packets and this match decides which node handles - what packets. The work-load sharing algorithm is based on source - address hashing. - - This module is usable for ipv4 and ipv6. - - To use it also enable iptables-mod-cluster - - see `iptables -m cluster --help` for more information. -endef - -$(eval $(call KernelPackage,ipt-cluster)) - -define KernelPackage/ipt-clusterip - TITLE:=Module for CLUSTERIP - KCONFIG:=$(KCONFIG_IPT_CLUSTERIP) - FILES:=$(foreach mod,$(IPT_CLUSTERIP-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CLUSTERIP-m))) - $(call AddDepends/ipt,+kmod-nf-conntrack) -endef - -define KernelPackage/ipt-clusterip/description - Netfilter (IPv4-only) module for CLUSTERIP - The CLUSTERIP target allows you to build load-balancing clusters of - network servers without having a dedicated load-balancing - router/server/switch. - - To use it also enable iptables-mod-clusterip - - see `iptables -j CLUSTERIP --help` for more information. -endef - -$(eval $(call KernelPackage,ipt-clusterip)) - - -define KernelPackage/ipt-extra - TITLE:=Extra modules - KCONFIG:=$(KCONFIG_IPT_EXTRA) - FILES:=$(foreach mod,$(IPT_EXTRA-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_EXTRA-m))) - $(call AddDepends/ipt) -endef - -define KernelPackage/ipt-extra/description - Other Netfilter (IPv4) kernel modules - Includes: - - addrtype - - owner - - pkttype - - quota -endef - -$(eval $(call KernelPackage,ipt-extra)) - - -define KernelPackage/ipt-physdev - TITLE:=physdev module - KCONFIG:=$(KCONFIG_IPT_PHYSDEV) - FILES:=$(foreach mod,$(IPT_PHYSDEV-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_PHYSDEV-m))) - $(call AddDepends/ipt,+kmod-br-netfilter) -endef - -define KernelPackage/ipt-physdev/description - The iptables physdev kernel module -endef - -$(eval $(call KernelPackage,ipt-physdev)) - - -define KernelPackage/ip6tables - SUBMENU:=$(NF_MENU) - TITLE:=IPv6 modules - DEPENDS:=@IPV6 +kmod-nf-reject6 +kmod-nf-ipt6 +kmod-ipt-core - KCONFIG:=$(KCONFIG_IPT_IPV6) - FILES:=$(foreach mod,$(IPT_IPV6-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoLoad,42,$(notdir $(IPT_IPV6-m))) -endef - -define KernelPackage/ip6tables/description - Netfilter IPv6 firewalling support -endef - -$(eval $(call KernelPackage,ip6tables)) - -define KernelPackage/ip6tables-extra - SUBMENU:=$(NF_MENU) - TITLE:=Extra IPv6 modules - DEPENDS:=@IPV6 +kmod-ip6tables - KCONFIG:=$(KCONFIG_IPT_IPV6_EXTRA) - FILES:=$(foreach mod,$(IPT_IPV6_EXTRA-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoLoad,43,$(notdir $(IPT_IPV6_EXTRA-m))) -endef - -define KernelPackage/ip6tables-extra/description - Netfilter IPv6 extra header matching modules -endef - -$(eval $(call KernelPackage,ip6tables-extra)) - -ARP_MODULES = arp_tables arpt_mangle arptable_filter -define KernelPackage/arptables - SUBMENU:=$(NF_MENU) - TITLE:=ARP firewalling modules - DEPENDS:=+kmod-ipt-core - FILES:=$(LINUX_DIR)/net/ipv4/netfilter/arp*.ko - KCONFIG:=CONFIG_IP_NF_ARPTABLES \ - CONFIG_IP_NF_ARPFILTER \ - CONFIG_IP_NF_ARP_MANGLE - AUTOLOAD:=$(call AutoProbe,$(ARP_MODULES)) -endef - -define KernelPackage/arptables/description - Kernel modules for ARP firewalling -endef - -$(eval $(call KernelPackage,arptables)) - - -define KernelPackage/br-netfilter - SUBMENU:=$(NF_MENU) - TITLE:=Bridge netfilter support modules - DEPENDS:=+kmod-ipt-core - FILES:=$(LINUX_DIR)/net/bridge/br_netfilter.ko - KCONFIG:=CONFIG_BRIDGE_NETFILTER - AUTOLOAD:=$(call AutoProbe,br_netfilter) -endef - -define KernelPackage/br-netfilter/install - $(INSTALL_DIR) $(1)/etc/sysctl.d - $(INSTALL_DATA) ./files/sysctl-br-netfilter.conf $(1)/etc/sysctl.d/11-br-netfilter.conf -endef - -$(eval $(call KernelPackage,br-netfilter)) - - -define KernelPackage/ebtables - SUBMENU:=$(NF_MENU) - TITLE:=Bridge firewalling modules - DEPENDS:=+kmod-ipt-core - FILES:=$(foreach mod,$(EBTABLES-m),$(LINUX_DIR)/net/$(mod).ko) - KCONFIG:=$(KCONFIG_EBTABLES) - AUTOLOAD:=$(call AutoProbe,$(notdir $(EBTABLES-m))) -endef - -define KernelPackage/ebtables/description - ebtables is a general, extensible frame/packet identification - framework. It provides you to do Ethernet - filtering/NAT/brouting on the Ethernet bridge. -endef - -$(eval $(call KernelPackage,ebtables)) - - -define AddDepends/ebtables - SUBMENU:=$(NF_MENU) - DEPENDS+= +kmod-ebtables $(1) -endef - - -define KernelPackage/ebtables-ipv4 - TITLE:=ebtables: IPv4 support - FILES:=$(foreach mod,$(EBTABLES_IP4-m),$(LINUX_DIR)/net/$(mod).ko) - KCONFIG:=$(KCONFIG_EBTABLES_IP4) - AUTOLOAD:=$(call AutoProbe,$(notdir $(EBTABLES_IP4-m))) - $(call AddDepends/ebtables) -endef - -define KernelPackage/ebtables-ipv4/description - This option adds the IPv4 support to ebtables, which allows basic - IPv4 header field filtering, ARP filtering as well as SNAT, DNAT targets. -endef - -$(eval $(call KernelPackage,ebtables-ipv4)) - - -define KernelPackage/ebtables-ipv6 - TITLE:=ebtables: IPv6 support - DEPENDS:=@IPV6 - FILES:=$(foreach mod,$(EBTABLES_IP6-m),$(LINUX_DIR)/net/$(mod).ko) - KCONFIG:=$(KCONFIG_EBTABLES_IP6) - AUTOLOAD:=$(call AutoProbe,$(notdir $(EBTABLES_IP6-m))) - $(call AddDepends/ebtables) -endef - -define KernelPackage/ebtables-ipv6/description - This option adds the IPv6 support to ebtables, which allows basic - IPv6 header field filtering and target support. -endef - -$(eval $(call KernelPackage,ebtables-ipv6)) - - -define KernelPackage/ebtables-watchers - TITLE:=ebtables: watchers support - FILES:=$(foreach mod,$(EBTABLES_WATCHERS-m),$(LINUX_DIR)/net/$(mod).ko) - KCONFIG:=$(KCONFIG_EBTABLES_WATCHERS) - AUTOLOAD:=$(call AutoProbe,$(notdir $(EBTABLES_WATCHERS-m))) - $(call AddDepends/ebtables) -endef - -define KernelPackage/ebtables-watchers/description - This option adds the log watchers, that you can use in any rule - in any ebtables table. -endef - -$(eval $(call KernelPackage,ebtables-watchers)) - - -define KernelPackage/nfnetlink - SUBMENU:=$(NF_MENU) - TITLE:=Netlink-based userspace interface - FILES:=$(foreach mod,$(NFNETLINK-m),$(LINUX_DIR)/net/$(mod).ko) - KCONFIG:=$(KCONFIG_NFNETLINK) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NFNETLINK-m))) -endef - -define KernelPackage/nfnetlink/description - Kernel modules support for a netlink-based userspace interface -endef - -$(eval $(call KernelPackage,nfnetlink)) - - -define AddDepends/nfnetlink - SUBMENU:=$(NF_MENU) - DEPENDS+=+kmod-nfnetlink $(1) -endef - - -define KernelPackage/nfnetlink-log - TITLE:=Netfilter LOG over NFNETLINK interface - FILES:=$(foreach mod,$(NFNETLINK_LOG-m),$(LINUX_DIR)/net/$(mod).ko) - KCONFIG:=$(KCONFIG_NFNETLINK_LOG) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NFNETLINK_LOG-m))) - $(call AddDepends/nfnetlink) -endef - -define KernelPackage/nfnetlink-log/description - Kernel modules support for logging packets via NFNETLINK - Includes: - - NFLOG -endef - -$(eval $(call KernelPackage,nfnetlink-log)) - - -define KernelPackage/nfnetlink-queue - TITLE:=Netfilter QUEUE over NFNETLINK interface - FILES:=$(foreach mod,$(NFNETLINK_QUEUE-m),$(LINUX_DIR)/net/$(mod).ko) - KCONFIG:=$(KCONFIG_NFNETLINK_QUEUE) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NFNETLINK_QUEUE-m))) - $(call AddDepends/nfnetlink) -endef - -define KernelPackage/nfnetlink-queue/description - Kernel modules support for queueing packets via NFNETLINK - Includes: - - NFQUEUE -endef - -$(eval $(call KernelPackage,nfnetlink-queue)) - - -define KernelPackage/nf-conntrack-netlink - TITLE:=Connection tracking netlink interface - FILES:=$(LINUX_DIR)/net/netfilter/nf_conntrack_netlink.ko - KCONFIG:=CONFIG_NF_CT_NETLINK CONFIG_NF_CONNTRACK_EVENTS=y CONFIG_NETFILTER_NETLINK_GLUE_CT=y - AUTOLOAD:=$(call AutoProbe,nf_conntrack_netlink) - $(call AddDepends/nfnetlink,+kmod-ipt-conntrack) -endef - -define KernelPackage/nf-conntrack-netlink/description - Kernel modules support for a netlink-based connection tracking - userspace interface -endef - -$(eval $(call KernelPackage,nf-conntrack-netlink)) - -define KernelPackage/ipt-hashlimit - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter hashlimit match - DEPENDS:=+kmod-ipt-core - KCONFIG:=$(KCONFIG_IPT_HASHLIMIT) - FILES:=$(LINUX_DIR)/net/netfilter/xt_hashlimit.ko - AUTOLOAD:=$(call AutoProbe,xt_hashlimit) - $(call KernelPackage/ipt) -endef - -define KernelPackage/ipt-hashlimit/description - Kernel modules support for the hashlimit bucket match module -endef - -$(eval $(call KernelPackage,ipt-hashlimit)) - -define KernelPackage/ipt-rpfilter - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter rpfilter match - DEPENDS:=+kmod-ipt-core - KCONFIG:=$(KCONFIG_IPT_RPFILTER) - FILES:=$(realpath \ - $(LINUX_DIR)/net/ipv4/netfilter/ipt_rpfilter.ko \ - $(LINUX_DIR)/net/ipv6/netfilter/ip6t_rpfilter.ko) - AUTOLOAD:=$(call AutoProbe,ipt_rpfilter ip6t_rpfilter) - $(call KernelPackage/ipt) -endef - -define KernelPackage/ipt-rpfilter/description - Kernel modules support for the Netfilter rpfilter match -endef - -$(eval $(call KernelPackage,ipt-rpfilter)) - - -define KernelPackage/nft-core - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter nf_tables support - DEPENDS:=+kmod-nfnetlink +kmod-nf-reject +IPV6:kmod-nf-reject6 +IPV6:kmod-nf-conntrack6 +kmod-nf-nat +kmod-lib-crc32c - FILES:=$(foreach mod,$(NFT_CORE-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_CORE-m))) - KCONFIG:= \ - CONFIG_NFT_COMPAT=n \ - CONFIG_NFT_QUEUE=n \ - $(KCONFIG_NFT_CORE) -endef - -define KernelPackage/nft-core/description - Kernel module support for nftables -endef - -$(eval $(call KernelPackage,nft-core)) - - -define KernelPackage/nft-arp - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter nf_tables ARP table support - DEPENDS:=+kmod-nft-core - FILES:=$(foreach mod,$(NFT_ARP-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_ARP-m))) - KCONFIG:=$(KCONFIG_NFT_ARP) -endef - -$(eval $(call KernelPackage,nft-arp)) - - -define KernelPackage/nft-bridge - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter nf_tables bridge table support - DEPENDS:=+kmod-nft-core - FILES:=$(foreach mod,$(NFT_BRIDGE-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_BRIDGE-m))) - KCONFIG:= \ - CONFIG_NF_LOG_BRIDGE=n \ - $(KCONFIG_NFT_BRIDGE) -endef - -$(eval $(call KernelPackage,nft-bridge)) - - -define KernelPackage/nft-nat - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter nf_tables NAT support - DEPENDS:=+kmod-nft-core +kmod-nf-nat - FILES:=$(foreach mod,$(NFT_NAT-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_NAT-m))) - KCONFIG:=$(KCONFIG_NFT_NAT) -endef - -$(eval $(call KernelPackage,nft-nat)) - - -define KernelPackage/nft-offload - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter nf_tables routing/NAT offload support - DEPENDS:=@IPV6 +kmod-nf-flow +kmod-nft-nat - KCONFIG:= \ - CONFIG_NF_FLOW_TABLE_INET \ - CONFIG_NF_FLOW_TABLE_IPV4 \ - CONFIG_NF_FLOW_TABLE_IPV6 \ - CONFIG_NFT_FLOW_OFFLOAD - FILES:= \ - $(LINUX_DIR)/net/netfilter/nf_flow_table_inet.ko \ - $(LINUX_DIR)/net/ipv4/netfilter/nf_flow_table_ipv4.ko \ - $(LINUX_DIR)/net/ipv6/netfilter/nf_flow_table_ipv6.ko \ - $(LINUX_DIR)/net/netfilter/nft_flow_offload.ko - AUTOLOAD:=$(call AutoProbe,nf_flow_table_inet nf_flow_table_ipv4 nf_flow_table_ipv6 nft_flow_offload) -endef - -$(eval $(call KernelPackage,nft-offload)) - - -define KernelPackage/nft-nat6 - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter nf_tables IPv6-NAT support - DEPENDS:=+kmod-nft-nat +kmod-nf-nat6 - FILES:=$(foreach mod,$(NFT_NAT6-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_NAT6-m))) - KCONFIG:=$(KCONFIG_NFT_NAT6) -endef - -$(eval $(call KernelPackage,nft-nat6)) - -define KernelPackage/nft-netdev - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter nf_tables netdev support - DEPENDS:=+kmod-nft-core - KCONFIG:= \ - CONFIG_NETFILTER_INGRESS=y \ - CONFIG_NF_TABLES_NETDEV \ - CONFIG_NF_DUP_NETDEV \ - CONFIG_NFT_DUP_NETDEV \ - CONFIG_NFT_FWD_NETDEV - FILES:= \ - $(LINUX_DIR)/net/netfilter/nf_dup_netdev.ko \ - $(LINUX_DIR)/net/netfilter/nft_dup_netdev.ko \ - $(LINUX_DIR)/net/netfilter/nft_fwd_netdev.ko - AUTOLOAD:=$(call AutoProbe,nf_tables_netdev nf_dup_netdev nft_dup_netdev nft_fwd_netdev) -endef - -$(eval $(call KernelPackage,nft-netdev)) - - -define KernelPackage/nft-fib - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter nf_tables fib support - DEPENDS:=+kmod-nft-core - FILES:=$(foreach mod,$(NFT_FIB-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_FIB-m))) - KCONFIG:=$(KCONFIG_NFT_FIB) -endef - -$(eval $(call KernelPackage,nft-fib)) - - -define KernelPackage/nft-queue - SUBMENU:=$(NF_MENU) - TITLE:=Netfilter nf_tables queue support - DEPENDS:=+kmod-nft-core +kmod-nfnetlink-queue - FILES:=$(foreach mod,$(NFT_QUEUE-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_QUEUE-m))) - KCONFIG:=$(KCONFIG_NFT_QUEUE) -endef - -$(eval $(call KernelPackage,nft-queue)) diff --git a/root/package/base-files/kernel/linux/modules/other.mk b/root/package/base-files/kernel/linux/modules/other.mk deleted file mode 100644 index 99512363..00000000 --- a/root/package/base-files/kernel/linux/modules/other.mk +++ /dev/null @@ -1,1272 +0,0 @@ -# -# Copyright (C) 2006-2015 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -OTHER_MENU:=Other modules - -WATCHDOG_DIR:=watchdog - - -define KernelPackage/6lowpan - SUBMENU:=$(OTHER_MENU) - TITLE:=6LoWPAN shared code - KCONFIG:= \ - CONFIG_6LOWPAN \ - CONFIG_6LOWPAN_NHC=n - FILES:=$(LINUX_DIR)/net/6lowpan/6lowpan.ko - AUTOLOAD:=$(call AutoProbe,6lowpan) -endef - -define KernelPackage/6lowpan/description - Shared 6lowpan code for IEEE 802.15.4 and Bluetooth. -endef - -$(eval $(call KernelPackage,6lowpan)) - - -define KernelPackage/bluetooth - SUBMENU:=$(OTHER_MENU) - TITLE:=Bluetooth support - DEPENDS:=@USB_SUPPORT +kmod-usb-core +kmod-crypto-hash +kmod-crypto-ecb +kmod-lib-crc16 +kmod-hid +kmod-crypto-cmac +kmod-regmap-core +kmod-crypto-ecdh - KCONFIG:= \ - CONFIG_BT \ - CONFIG_BT_BREDR=y \ - CONFIG_BT_DEBUGFS=n \ - CONFIG_BT_LE=y \ - CONFIG_BT_RFCOMM \ - CONFIG_BT_BNEP \ - CONFIG_BT_HCIBTUSB \ - CONFIG_BT_HCIBTUSB_BCM=n \ - CONFIG_BT_HCIUART \ - CONFIG_BT_HCIUART_BCM=n \ - CONFIG_BT_HCIUART_INTEL=n \ - CONFIG_BT_HCIUART_H4 \ - CONFIG_BT_HCIUART_NOKIA=n \ - CONFIG_BT_HIDP - $(call AddDepends/rfkill) - FILES:= \ - $(LINUX_DIR)/net/bluetooth/bluetooth.ko \ - $(LINUX_DIR)/net/bluetooth/rfcomm/rfcomm.ko \ - $(LINUX_DIR)/net/bluetooth/bnep/bnep.ko \ - $(LINUX_DIR)/net/bluetooth/hidp/hidp.ko \ - $(LINUX_DIR)/drivers/bluetooth/hci_uart.ko - AUTOLOAD:=$(call AutoProbe,bluetooth rfcomm bnep hidp hci_uart) -endef - -define KernelPackage/bluetooth/description - Kernel support for Bluetooth devices -endef - -$(eval $(call KernelPackage,bluetooth)) - -define KernelPackage/ath3k - SUBMENU:=$(OTHER_MENU) - TITLE:=ATH3K Kernel Module support - DEPENDS:=+kmod-bluetooth +ar3k-firmware - KCONFIG:= \ - CONFIG_BT_ATH3K \ - CONFIG_BT_HCIUART_ATH3K=y - $(call AddDepends/bluetooth) - FILES:= \ - $(LINUX_DIR)/drivers/bluetooth/ath3k.ko - AUTOLOAD:=$(call AutoProbe,ath3k) -endef - -define KernelPackage/ath3k/description - Kernel support for ATH3K Module -endef - -$(eval $(call KernelPackage,ath3k)) - - -define KernelPackage/bluetooth-6lowpan - SUBMENU:=$(OTHER_MENU) - TITLE:=Bluetooth 6LoWPAN support - DEPENDS:=+kmod-6lowpan +kmod-bluetooth - KCONFIG:=CONFIG_BT_6LOWPAN - FILES:=$(LINUX_DIR)/net/bluetooth/bluetooth_6lowpan.ko - AUTOLOAD:=$(call AutoProbe,bluetooth_6lowpan) -endef - -define KernelPackage/bluetooth-6lowpan/description - Kernel support for 6LoWPAN over Bluetooth Low Energy devices -endef - -$(eval $(call KernelPackage,bluetooth-6lowpan)) - - -define KernelPackage/btmrvl - SUBMENU:=$(OTHER_MENU) - TITLE:=Marvell Bluetooth Kernel Module support - DEPENDS:=+kmod-mmc +kmod-bluetooth +mwifiex-sdio-firmware - KCONFIG:= \ - CONFIG_BT_MRVL \ - CONFIG_BT_MRVL_SDIO - $(call AddDepends/bluetooth) - FILES:= \ - $(LINUX_DIR)/drivers/bluetooth/btmrvl.ko \ - $(LINUX_DIR)/drivers/bluetooth/btmrvl_sdio.ko - AUTOLOAD:=$(call AutoProbe,btmrvl btmrvl_sdio) -endef - -define KernelPackage/btmrvl/description - Kernel support for Marvell SDIO Bluetooth Module -endef - -$(eval $(call KernelPackage,btmrvl)) - - -define KernelPackage/dma-buf - SUBMENU:=$(OTHER_MENU) - TITLE:=DMA shared buffer support - HIDDEN:=1 - KCONFIG:=CONFIG_DMA_SHARED_BUFFER - ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"") - ifeq ($(strip $(CONFIG_KERNEL_GIT_CLONE_URI)),"") - FILES:=$(LINUX_DIR)/drivers/dma-buf/dma-shared-buffer.ko@gt5.14 - endif - endif - AUTOLOAD:=$(call AutoLoad,20,dma-shared-buffer) -endef -$(eval $(call KernelPackage,dma-buf)) - - -define KernelPackage/eeprom-93cx6 - SUBMENU:=$(OTHER_MENU) - TITLE:=EEPROM 93CX6 support - KCONFIG:=CONFIG_EEPROM_93CX6 - FILES:=$(LINUX_DIR)/drivers/misc/eeprom/eeprom_93cx6.ko - AUTOLOAD:=$(call AutoLoad,20,eeprom_93cx6) -endef - -define KernelPackage/eeprom-93cx6/description - Kernel module for EEPROM 93CX6 support -endef - -$(eval $(call KernelPackage,eeprom-93cx6)) - - -define KernelPackage/eeprom-at24 - SUBMENU:=$(OTHER_MENU) - TITLE:=EEPROM AT24 support - KCONFIG:=CONFIG_EEPROM_AT24 - DEPENDS:=+kmod-i2c-core +kmod-regmap-i2c - FILES:=$(LINUX_DIR)/drivers/misc/eeprom/at24.ko - AUTOLOAD:=$(call AutoProbe,at24) -endef - -define KernelPackage/eeprom-at24/description - Kernel module for most I2C EEPROMs -endef - -$(eval $(call KernelPackage,eeprom-at24)) - - -define KernelPackage/eeprom-at25 - SUBMENU:=$(OTHER_MENU) - TITLE:=EEPROM AT25 support - KCONFIG:=CONFIG_EEPROM_AT25 - FILES:=$(LINUX_DIR)/drivers/misc/eeprom/at25.ko - AUTOLOAD:=$(call AutoProbe,at25) -endef - -define KernelPackage/eeprom-at25/description - Kernel module for most SPI EEPROMs -endef - -$(eval $(call KernelPackage,eeprom-at25)) - - -define KernelPackage/gpio-dev - SUBMENU:=$(OTHER_MENU) - TITLE:=Generic GPIO char device support - DEPENDS:=@GPIO_SUPPORT - KCONFIG:=CONFIG_GPIO_DEVICE - FILES:=$(LINUX_DIR)/drivers/char/gpio_dev.ko - AUTOLOAD:=$(call AutoLoad,40,gpio_dev) -endef - -define KernelPackage/gpio-dev/description - Kernel module to allows control of GPIO pins using a character device. -endef - -$(eval $(call KernelPackage,gpio-dev)) - - -define KernelPackage/gpio-f7188x - SUBMENU:=$(OTHER_MENU) - TITLE:=Fintek F718xx/F818xx GPIO Support - DEPENDS:=@GPIO_SUPPORT @TARGET_x86 - KCONFIG:=CONFIG_GPIO_F7188X - FILES:=$(LINUX_DIR)/drivers/gpio/gpio-f7188x.ko - AUTOLOAD:=$(call AutoProbe,gpio-f7188x) -endef - -define KernelPackage/gpio-f7188x/description - Kernel module for the GPIOs found on many Fintek Super-IO chips. -endef - -$(eval $(call KernelPackage,gpio-f7188x)) - - -define KernelPackage/gpio-mcp23s08 - SUBMENU:=$(OTHER_MENU) - TITLE:=Microchip MCP23xxx I/O expander - DEPENDS:=@GPIO_SUPPORT +kmod-i2c-core +kmod-regmap-i2c - KCONFIG:= \ - CONFIG_GPIO_MCP23S08 \ - CONFIG_PINCTRL_MCP23S08 - FILES:= \ - $(LINUX_DIR)/drivers/pinctrl/pinctrl-mcp23s08.ko - AUTOLOAD:=$(call AutoLoad,40,pinctrl-mcp23s08) -endef - -define KernelPackage/gpio-mcp23s08/description - Kernel module for Microchip MCP23xxx SPI/I2C I/O expander -endef - -$(eval $(call KernelPackage,gpio-mcp23s08)) - - -define KernelPackage/gpio-nxp-74hc164 - SUBMENU:=$(OTHER_MENU) - TITLE:=NXP 74HC164 GPIO expander support - KCONFIG:=CONFIG_GPIO_74X164 - FILES:=$(LINUX_DIR)/drivers/gpio/gpio-74x164.ko - AUTOLOAD:=$(call AutoProbe,gpio-74x164) -endef - -define KernelPackage/gpio-nxp-74hc164/description - Kernel module for NXP 74HC164 GPIO expander -endef - -$(eval $(call KernelPackage,gpio-nxp-74hc164)) - -define KernelPackage/gpio-pca953x - SUBMENU:=$(OTHER_MENU) - DEPENDS:=@GPIO_SUPPORT +kmod-i2c-core +kmod-regmap-i2c - TITLE:=PCA95xx, TCA64xx, and MAX7310 I/O ports - KCONFIG:=CONFIG_GPIO_PCA953X - FILES:=$(LINUX_DIR)/drivers/gpio/gpio-pca953x.ko - AUTOLOAD:=$(call AutoLoad,55,gpio-pca953x) -endef - -define KernelPackage/gpio-pca953x/description - Kernel module for MAX731{0,2,3,5}, PCA6107, PCA953{4-9}, PCA955{4-7}, - PCA957{4,5} and TCA64{08,16} I2C GPIO expanders -endef - -$(eval $(call KernelPackage,gpio-pca953x)) - -define KernelPackage/gpio-pcf857x - SUBMENU:=$(OTHER_MENU) - DEPENDS:=@GPIO_SUPPORT +kmod-i2c-core - TITLE:=PCX857x, PCA967x and MAX732X I2C GPIO expanders - KCONFIG:=CONFIG_GPIO_PCF857X - FILES:=$(LINUX_DIR)/drivers/gpio/gpio-pcf857x.ko - AUTOLOAD:=$(call AutoLoad,55,gpio-pcf857x) -endef - -define KernelPackage/gpio-pcf857x/description - Kernel module for PCF857x, PCA{85,96}7x, and MAX732[89] I2C GPIO expanders -endef - -$(eval $(call KernelPackage,gpio-pcf857x)) - - -define KernelPackage/gpio-it87 - SUBMENU:=$(OTHER_MENU) - DEPENDS:=@GPIO_SUPPORT @TARGET_x86 - TITLE:=GPIO support for IT87xx Super I/O chips - KCONFIG:=CONFIG_GPIO_IT87 - FILES:=$(LINUX_DIR)/drivers/gpio/gpio-it87.ko - AUTOLOAD:=$(call AutoLoad,25,gpio-it87,1) -endef - -define KernelPackage/gpio-it87/description - This driver is tested with ITE IT8728 and IT8732 Super I/O chips, and - supports the IT8761E, IT8613, IT8620E, and IT8628E Super I/O chips as - well. -endef - -$(eval $(call KernelPackage,gpio-it87)) - - -define KernelPackage/gpio-amd-fch - SUBMENU:=$(OTHER_MENU) - DEPENDS:=@GPIO_SUPPORT @TARGET_x86 - TITLE:=GPIO support for AMD Fusion Controller Hub (G-series SOCs) - KCONFIG:=CONFIG_GPIO_AMD_FCH - FILES:=$(LINUX_DIR)/drivers/gpio/gpio-amd-fch.ko - AUTOLOAD:=$(call AutoLoad,25,gpio-amd-fch,1) -endef - -define KernelPackage/gpio-amd-fch/description - This option enables driver for GPIO on AMDs Fusion Controller Hub, - as found on G-series SOCs (eg. GX-412TC) -endef - -$(eval $(call KernelPackage,gpio-amd-fch)) - - -define KernelPackage/ppdev - SUBMENU:=$(OTHER_MENU) - TITLE:=Parallel port support - KCONFIG:= \ - CONFIG_PARPORT \ - CONFIG_PPDEV - FILES:= \ - $(LINUX_DIR)/drivers/parport/parport.ko \ - $(LINUX_DIR)/drivers/char/ppdev.ko - AUTOLOAD:=$(call AutoLoad,50,parport ppdev) -endef - -$(eval $(call KernelPackage,ppdev)) - - -define KernelPackage/parport-pc - SUBMENU:=$(OTHER_MENU) - TITLE:=Parallel port interface (PC-style) support - DEPENDS:=+kmod-ppdev - KCONFIG:= \ - CONFIG_KS0108=n \ - CONFIG_PARPORT_PC \ - CONFIG_PARPORT_1284=y \ - CONFIG_PARPORT_PC_FIFO=y \ - CONFIG_PARPORT_PC_PCMCIA=n \ - CONFIG_PARPORT_PC_SUPERIO=y \ - CONFIG_PARPORT_SERIAL=n \ - CONFIG_PARIDE=n \ - CONFIG_SCSI_IMM=n \ - CONFIG_SCSI_PPA=n - FILES:= \ - $(LINUX_DIR)/drivers/parport/parport_pc.ko - AUTOLOAD:=$(call AutoLoad,51,parport_pc) -endef - -$(eval $(call KernelPackage,parport-pc)) - - -define KernelPackage/lp - SUBMENU:=$(OTHER_MENU) - TITLE:=Parallel port line printer device support - DEPENDS:=+kmod-ppdev - KCONFIG:= \ - CONFIG_PRINTER - FILES:= \ - $(LINUX_DIR)/drivers/char/lp.ko - AUTOLOAD:=$(call AutoLoad,52,lp) -endef - -$(eval $(call KernelPackage,lp)) - - -define KernelPackage/mmc - SUBMENU:=$(OTHER_MENU) - TITLE:=MMC/SD Card Support - DEPENDS:=@!TARGET_uml - KCONFIG:= \ - CONFIG_MMC \ - CONFIG_MMC_BLOCK \ - CONFIG_MMC_DEBUG=n \ - CONFIG_MMC_UNSAFE_RESUME=n \ - CONFIG_MMC_BLOCK_BOUNCE=y \ - CONFIG_MMC_TIFM_SD=n \ - CONFIG_MMC_WBSD=n \ - CONFIG_SDIO_UART=n - FILES:= \ - $(LINUX_DIR)/drivers/mmc/core/mmc_core.ko \ - $(LINUX_DIR)/drivers/mmc/core/mmc_block.ko - AUTOLOAD:=$(call AutoProbe,mmc_core mmc_block,1) -endef - -define KernelPackage/mmc/description - Kernel support for MMC/SD cards -endef - -$(eval $(call KernelPackage,mmc)) - - -define KernelPackage/mvsdio - SUBMENU:=$(OTHER_MENU) - TITLE:=Marvell MMC/SD/SDIO host driver - DEPENDS:=+kmod-mmc @TARGET_kirkwood - KCONFIG:= CONFIG_MMC_MVSDIO - FILES:= \ - $(LINUX_DIR)/drivers/mmc/host/mvsdio.ko - AUTOLOAD:=$(call AutoProbe,mvsdio,1) -endef - -define KernelPackage/mvsdio/description - Kernel support for the Marvell SDIO host driver. -endef - -$(eval $(call KernelPackage,mvsdio)) - - -define KernelPackage/sdhci - SUBMENU:=$(OTHER_MENU) - TITLE:=Secure Digital Host Controller Interface support - DEPENDS:=+kmod-mmc - KCONFIG:= \ - CONFIG_MMC_SDHCI \ - CONFIG_MMC_SDHCI_PLTFM \ - CONFIG_MMC_SDHCI_PCI=n - FILES:= \ - $(LINUX_DIR)/drivers/mmc/host/sdhci.ko \ - $(LINUX_DIR)/drivers/mmc/host/sdhci-pltfm.ko - - AUTOLOAD:=$(call AutoProbe,sdhci-pltfm,1) -endef - -define KernelPackage/sdhci/description - Kernel support for SDHCI Hosts -endef - -$(eval $(call KernelPackage,sdhci)) - - -define KernelPackage/rfkill - SUBMENU:=$(OTHER_MENU) - TITLE:=RF switch subsystem support - DEPENDS:=@USE_RFKILL +kmod-input-core - KCONFIG:= \ - CONFIG_RFKILL_FULL \ - CONFIG_RFKILL_INPUT=y \ - CONFIG_RFKILL_LEDS=y - FILES:= \ - $(LINUX_DIR)/net/rfkill/rfkill.ko - AUTOLOAD:=$(call AutoLoad,20,rfkill) -endef - -define KernelPackage/rfkill/description - Say Y here if you want to have control over RF switches - found on many WiFi and Bluetooth cards -endef - -$(eval $(call KernelPackage,rfkill)) - - -define KernelPackage/softdog - SUBMENU:=$(OTHER_MENU) - TITLE:=Software watchdog driver - KCONFIG:=CONFIG_SOFT_WATCHDOG \ - CONFIG_SOFT_WATCHDOG_PRETIMEOUT=n - FILES:=$(LINUX_DIR)/drivers/$(WATCHDOG_DIR)/softdog.ko - AUTOLOAD:=$(call AutoLoad,50,softdog,1) -endef - -define KernelPackage/softdog/description - Software watchdog driver -endef - -$(eval $(call KernelPackage,softdog)) - - -define KernelPackage/ssb - SUBMENU:=$(OTHER_MENU) - TITLE:=Silicon Sonics Backplane glue code - DEPENDS:=@PCI_SUPPORT @!TARGET_bcm47xx @!TARGET_bcm63xx - KCONFIG:=\ - CONFIG_SSB \ - CONFIG_SSB_B43_PCI_BRIDGE=y \ - CONFIG_SSB_DRIVER_MIPS=n \ - CONFIG_SSB_DRIVER_PCICORE=y \ - CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y \ - CONFIG_SSB_PCIHOST=y \ - CONFIG_SSB_PCIHOST_POSSIBLE=y \ - CONFIG_SSB_POSSIBLE=y \ - CONFIG_SSB_SPROM=y \ - CONFIG_SSB_SILENT=y - FILES:=$(LINUX_DIR)/drivers/ssb/ssb.ko - AUTOLOAD:=$(call AutoLoad,18,ssb,1) -endef - -define KernelPackage/ssb/description - Silicon Sonics Backplane glue code. -endef - -$(eval $(call KernelPackage,ssb)) - - -define KernelPackage/bcma - SUBMENU:=$(OTHER_MENU) - TITLE:=BCMA support - DEPENDS:=@PCI_SUPPORT @!TARGET_bcm47xx @!TARGET_bcm53xx - KCONFIG:=\ - CONFIG_BCMA \ - CONFIG_BCMA_POSSIBLE=y \ - CONFIG_BCMA_BLOCKIO=y \ - CONFIG_BCMA_HOST_PCI_POSSIBLE=y \ - CONFIG_BCMA_HOST_PCI=y \ - CONFIG_BCMA_HOST_SOC=n \ - CONFIG_BCMA_DRIVER_MIPS=n \ - CONFIG_BCMA_DRIVER_PCI_HOSTMODE=n \ - CONFIG_BCMA_DRIVER_GMAC_CMN=n \ - CONFIG_BCMA_DEBUG=n - FILES:=$(LINUX_DIR)/drivers/bcma/bcma.ko - AUTOLOAD:=$(call AutoLoad,29,bcma) -endef - -define KernelPackage/bcma/description - Bus driver for Broadcom specific Advanced Microcontroller Bus Architecture -endef - -$(eval $(call KernelPackage,bcma)) - - -define KernelPackage/rtc-ds1307 - SUBMENU:=$(OTHER_MENU) - TITLE:=Dallas/Maxim DS1307 (and compatible) RTC support - DEFAULT:=m if ALL_KMODS && RTC_SUPPORT - DEPENDS:=+kmod-i2c-core +kmod-regmap-i2c +kmod-hwmon-core - KCONFIG:=CONFIG_RTC_DRV_DS1307 \ - CONFIG_RTC_CLASS=y - FILES:=$(LINUX_DIR)/drivers/rtc/rtc-ds1307.ko - AUTOLOAD:=$(call AutoProbe,rtc-ds1307) -endef - -define KernelPackage/rtc-ds1307/description - Kernel module for Dallas/Maxim DS1307/DS1337/DS1338/DS1340/DS1388/DS3231, - Epson RX-8025 and various other compatible RTC chips connected via I2C. -endef - -$(eval $(call KernelPackage,rtc-ds1307)) - - -define KernelPackage/rtc-ds1374 - SUBMENU:=$(OTHER_MENU) - TITLE:=Dallas/Maxim DS1374 RTC support - DEFAULT:=m if ALL_KMODS && RTC_SUPPORT - DEPENDS:=+kmod-i2c-core - KCONFIG:=CONFIG_RTC_DRV_DS1374 \ - CONFIG_RTC_DRV_DS1374_WDT=n \ - CONFIG_RTC_CLASS=y - FILES:=$(LINUX_DIR)/drivers/rtc/rtc-ds1374.ko - AUTOLOAD:=$(call AutoProbe,rtc-ds1374) -endef - -define KernelPackage/rtc-ds1374/description - Kernel module for Dallas/Maxim DS1374. -endef - -$(eval $(call KernelPackage,rtc-ds1374)) - - -define KernelPackage/rtc-ds1672 - SUBMENU:=$(OTHER_MENU) - TITLE:=Dallas/Maxim DS1672 RTC support - DEFAULT:=m if ALL_KMODS && RTC_SUPPORT - DEPENDS:=+kmod-i2c-core - KCONFIG:=CONFIG_RTC_DRV_DS1672 \ - CONFIG_RTC_CLASS=y - FILES:=$(LINUX_DIR)/drivers/rtc/rtc-ds1672.ko - AUTOLOAD:=$(call AutoProbe,rtc-ds1672) -endef - -define KernelPackage/rtc-ds1672/description - Kernel module for Dallas/Maxim DS1672 RTC. -endef - -$(eval $(call KernelPackage,rtc-ds1672)) - - -define KernelPackage/rtc-em3027 - SUBMENU:=$(OTHER_MENU) - TITLE:=Microelectronic EM3027 RTC support - DEFAULT:=m if ALL_KMODS && RTC_SUPPORT - DEPENDS:=+kmod-i2c-core - KCONFIG:=CONFIG_RTC_DRV_EM3027 \ - CONFIG_RTC_CLASS=y - FILES:=$(LINUX_DIR)/drivers/rtc/rtc-em3027.ko - AUTOLOAD:=$(call AutoProbe,rtc-em3027) -endef - -define KernelPackage/rtc-em3027/description - Kernel module for Microelectronic EM3027 RTC. -endef - -$(eval $(call KernelPackage,rtc-em3027)) - - -define KernelPackage/rtc-isl1208 - SUBMENU:=$(OTHER_MENU) - TITLE:=Intersil ISL1208 RTC support - DEFAULT:=m if ALL_KMODS && RTC_SUPPORT - DEPENDS:=+kmod-i2c-core - KCONFIG:=CONFIG_RTC_DRV_ISL1208 \ - CONFIG_RTC_CLASS=y - FILES:=$(LINUX_DIR)/drivers/rtc/rtc-isl1208.ko - AUTOLOAD:=$(call AutoProbe,rtc-isl1208) -endef - -define KernelPackage/rtc-isl1208/description - Kernel module for Intersil ISL1208 RTC. -endef - -$(eval $(call KernelPackage,rtc-isl1208)) - - -define KernelPackage/rtc-pcf8563 - SUBMENU:=$(OTHER_MENU) - TITLE:=Philips PCF8563/Epson RTC8564 RTC support - DEFAULT:=m if ALL_KMODS && RTC_SUPPORT - DEPENDS:=+kmod-i2c-core - KCONFIG:=CONFIG_RTC_DRV_PCF8563 \ - CONFIG_RTC_CLASS=y - FILES:=$(LINUX_DIR)/drivers/rtc/rtc-pcf8563.ko - AUTOLOAD:=$(call AutoProbe,rtc-pcf8563) -endef - -define KernelPackage/rtc-pcf8563/description - Kernel module for Philips PCF8563 RTC chip. - The Epson RTC8564 should work as well. -endef - -$(eval $(call KernelPackage,rtc-pcf8563)) - - -define KernelPackage/rtc-pcf2123 - SUBMENU:=$(OTHER_MENU) - TITLE:=Philips PCF2123 RTC support - DEFAULT:=m if ALL_KMODS && RTC_SUPPORT - DEPENDS:=+kmod-regmap-spi - KCONFIG:=CONFIG_RTC_DRV_PCF2123 \ - CONFIG_RTC_CLASS=y - FILES:=$(LINUX_DIR)/drivers/rtc/rtc-pcf2123.ko - AUTOLOAD:=$(call AutoProbe,rtc-pcf2123) -endef - -define KernelPackage/rtc-pcf2123/description - Kernel module for Philips PCF2123 RTC chip -endef - -$(eval $(call KernelPackage,rtc-pcf2123)) - -define KernelPackage/rtc-pcf2127 - SUBMENU:=$(OTHER_MENU) - TITLE:=NXP PCF2127 and PCF2129 RTC support - DEFAULT:=m if ALL_KMODS && RTC_SUPPORT - DEPENDS:=+kmod-i2c-core +kmod-regmap-spi - KCONFIG:=CONFIG_RTC_DRV_PCF2127 \ - CONFIG_RTC_CLASS=y - FILES:=$(LINUX_DIR)/drivers/rtc/rtc-pcf2127.ko - AUTOLOAD:=$(call AutoProbe,rtc-pcf2127) -endef - -define KernelPackage/rtc-pcf2127/description - Kernel module for NXP PCF2127 and PCF2129 RTC chip -endef - -$(eval $(call KernelPackage,rtc-pcf2127)) - -define KernelPackage/rtc-pt7c4338 - SUBMENU:=$(OTHER_MENU) - TITLE:=Pericom PT7C4338 RTC support - DEFAULT:=m if ALL_KMODS && RTC_SUPPORT - DEPENDS:=+kmod-i2c-core - KCONFIG:=CONFIG_RTC_DRV_PT7C4338 \ - CONFIG_RTC_CLASS=y - FILES:=$(LINUX_DIR)/drivers/rtc/rtc-pt7c4338.ko - AUTOLOAD:=$(call AutoProbe,rtc-pt7c4338) -endef - -define KernelPackage/rtc-pt7c4338/description - Kernel module for Pericom PT7C4338 i2c RTC chip -endef - -$(eval $(call KernelPackage,rtc-pt7c4338)) - -define KernelPackage/rtc-rs5c372a - SUBMENU:=$(OTHER_MENU) - TITLE:=Ricoh R2025S/D, RS5C372A/B, RV5C386, RV5C387A - DEFAULT:=m if ALL_KMODS && RTC_SUPPORT - DEPENDS:=+kmod-i2c-core - KCONFIG:=CONFIG_RTC_DRV_RS5C372 \ - CONFIG_RTC_CLASS=y - FILES:=$(LINUX_DIR)/drivers/rtc/rtc-rs5c372.ko - AUTOLOAD:=$(call AutoLoad,50,rtc-rs5c372,1) -endef - -define KernelPackage/rtc-rs5c372a/description - Kernel module for Ricoh R2025S/D, RS5C372A/B, RV5C386, RV5C387A RTC on chip module -endef - -$(eval $(call KernelPackage,rtc-rs5c372a)) - -define KernelPackage/rtc-rx8025 - SUBMENU:=$(OTHER_MENU) - TITLE:=Epson RX-8025 / RX-8035 - DEFAULT:=m if ALL_KMODS && RTC_SUPPORT - DEPENDS:=+kmod-i2c-core - KCONFIG:=CONFIG_RTC_DRV_RX8025 \ - CONFIG_RTC_CLASS=y - FILES:=$(LINUX_DIR)/drivers/rtc/rtc-rx8025.ko - AUTOLOAD:=$(call AutoLoad,50,rtc-rx8025,1) -endef - -define KernelPackage/rtc-rx8025/description - Kernel module for Epson RX-8025 and RX-8035 I2C RTC chip -endef - -$(eval $(call KernelPackage,rtc-rx8025)) - -define KernelPackage/rtc-s35390a - SUBMENU:=$(OTHER_MENU) - TITLE:=Seico S-35390A - DEFAULT:=m if ALL_KMODS && RTC_SUPPORT - DEPENDS:=+kmod-i2c-core - KCONFIG:=CONFIG_RTC_DRV_S35390A \ - CONFIG_RTC_CLASS=y - FILES:=$(LINUX_DIR)/drivers/rtc/rtc-s35390a.ko - AUTOLOAD:=$(call AutoLoad,50,rtc-s35390a,1) -endef - -define KernelPackage/rtc-s35390a/description - Kernel module for Seiko Instruments S-35390A I2C RTC chip -endef - -$(eval $(call KernelPackage,rtc-s35390a)) - - -define KernelPackage/mtdtests - SUBMENU:=$(OTHER_MENU) - TITLE:=MTD subsystem tests - KCONFIG:=CONFIG_MTD_TESTS - FILES:=\ - $(LINUX_DIR)/drivers/mtd/tests/mtd_nandecctest.ko \ - $(LINUX_DIR)/drivers/mtd/tests/mtd_oobtest.ko \ - $(LINUX_DIR)/drivers/mtd/tests/mtd_pagetest.ko \ - $(LINUX_DIR)/drivers/mtd/tests/mtd_readtest.ko \ - $(LINUX_DIR)/drivers/mtd/tests/mtd_speedtest.ko \ - $(LINUX_DIR)/drivers/mtd/tests/mtd_stresstest.ko \ - $(LINUX_DIR)/drivers/mtd/tests/mtd_subpagetest.ko \ - $(LINUX_DIR)/drivers/mtd/tests/mtd_torturetest.ko -endef - -define KernelPackage/mtdtests/description - Kernel modules for MTD subsystem/driver testing -endef - -$(eval $(call KernelPackage,mtdtests)) - - -define KernelPackage/mtdoops - SUBMENU:=$(OTHER_MENU) - TITLE:=Log panic/oops to an MTD buffer - KCONFIG:=CONFIG_MTD_OOPS - FILES:=$(LINUX_DIR)/drivers/mtd/mtdoops.ko -endef - -define KernelPackage/mtdoops/description - Kernel modules for Log panic/oops to an MTD buffer -endef - -$(eval $(call KernelPackage,mtdoops)) - - -define KernelPackage/mtdram - SUBMENU:=$(OTHER_MENU) - TITLE:=Test MTD driver using RAM - KCONFIG:=CONFIG_MTD_MTDRAM \ - CONFIG_MTDRAM_TOTAL_SIZE=4096 \ - CONFIG_MTDRAM_ERASE_SIZE=128 - FILES:=$(LINUX_DIR)/drivers/mtd/devices/mtdram.ko -endef - -define KernelPackage/mtdram/description - Test MTD driver using RAM -endef - -$(eval $(call KernelPackage,mtdram)) - - -define KernelPackage/serial-8250 - SUBMENU:=$(OTHER_MENU) - TITLE:=8250 UARTs - KCONFIG:= CONFIG_SERIAL_8250 \ - CONFIG_SERIAL_8250_PCI \ - CONFIG_SERIAL_8250_NR_UARTS=16 \ - CONFIG_SERIAL_8250_RUNTIME_UARTS=16 \ - CONFIG_SERIAL_8250_EXTENDED=y \ - CONFIG_SERIAL_8250_MANY_PORTS=y \ - CONFIG_SERIAL_8250_SHARE_IRQ=y \ - CONFIG_SERIAL_8250_DETECT_IRQ=n \ - CONFIG_SERIAL_8250_RSA=n - FILES:= \ - $(LINUX_DIR)/drivers/tty/serial/8250/8250.ko \ - $(LINUX_DIR)/drivers/tty/serial/8250/8250_base.ko \ - $(if $(CONFIG_PCI),$(LINUX_DIR)/drivers/tty/serial/8250/8250_pci.ko) \ - $(if $(CONFIG_GPIOLIB),$(LINUX_DIR)/drivers/tty/serial/serial_mctrl_gpio.ko) - AUTOLOAD:=$(call AutoProbe,8250 8250_base 8250_pci) -endef - -define KernelPackage/serial-8250/description - Kernel module for 8250 UART based serial ports -endef - -$(eval $(call KernelPackage,serial-8250)) - - -define KernelPackage/serial-8250-exar - SUBMENU:=$(OTHER_MENU) - TITLE:=Exar 8250 UARTs - KCONFIG:= CONFIG_SERIAL_8250_EXAR - FILES:=$(LINUX_DIR)/drivers/tty/serial/8250/8250_exar.ko - AUTOLOAD:=$(call AutoProbe,8250 8250_base 8250_exar) - DEPENDS:=+kmod-serial-8250 -endef - -define KernelPackage/serial-8250-exar/description - Kernel module for Exar serial ports -endef - -$(eval $(call KernelPackage,serial-8250-exar)) - - -define KernelPackage/regmap-core - SUBMENU:=$(OTHER_MENU) - TITLE:=Generic register map support - HIDDEN:=1 - KCONFIG:=CONFIG_REGMAP -ifneq ($(wildcard $(LINUX_DIR)/drivers/base/regmap/regmap-core.ko),) - FILES:=$(LINUX_DIR)/drivers/base/regmap/regmap-core.ko -endif -endef - -define KernelPackage/regmap-core/description - Generic register map support -endef - -$(eval $(call KernelPackage,regmap-core)) - - -define KernelPackage/regmap-spi - SUBMENU:=$(OTHER_MENU) - TITLE:=SPI register map support - DEPENDS:=+kmod-regmap-core - HIDDEN:=1 - KCONFIG:=CONFIG_REGMAP_SPI \ - CONFIG_SPI=y - FILES:=$(LINUX_DIR)/drivers/base/regmap/regmap-spi.ko -endef - -define KernelPackage/regmap-spi/description - SPI register map support -endef - -$(eval $(call KernelPackage,regmap-spi)) - - -define KernelPackage/regmap-i2c - SUBMENU:=$(OTHER_MENU) - TITLE:=I2C register map support - DEPENDS:=+kmod-regmap-core +kmod-i2c-core - HIDDEN:=1 - KCONFIG:=CONFIG_REGMAP_I2C - FILES:=$(LINUX_DIR)/drivers/base/regmap/regmap-i2c.ko -endef - -define KernelPackage/regmap-i2c/description - I2C register map support -endef - -$(eval $(call KernelPackage,regmap-i2c)) - - -define KernelPackage/regmap-mmio - SUBMENU:=$(OTHER_MENU) - TITLE:=MMIO register map support - DEPENDS:=+kmod-regmap-core - HIDDEN:=1 - KCONFIG:=CONFIG_REGMAP_MMIO - FILES:=$(LINUX_DIR)/drivers/base/regmap/regmap-mmio.ko -endef - -define KernelPackage/regmap-mmio/description - MMIO register map support -endef - -$(eval $(call KernelPackage,regmap-mmio)) - - -define KernelPackage/ikconfig - SUBMENU:=$(OTHER_MENU) - TITLE:=Kernel configuration via /proc/config.gz - KCONFIG:=CONFIG_IKCONFIG \ - CONFIG_IKCONFIG_PROC=y - FILES:=$(LINUX_DIR)/kernel/configs.ko - AUTOLOAD:=$(call AutoLoad,70,configs) -endef - -define KernelPackage/ikconfig/description - Kernel configuration via /proc/config.gz -endef - -$(eval $(call KernelPackage,ikconfig)) - - -define KernelPackage/zram - SUBMENU:=$(OTHER_MENU) - TITLE:=ZRAM - DEPENDS:=+kmod-lib-lzo - KCONFIG:= \ - CONFIG_ZSMALLOC \ - CONFIG_ZRAM \ - CONFIG_ZRAM_DEBUG=n \ - CONFIG_ZRAM_WRITEBACK=n \ - CONFIG_ZSMALLOC_STAT=n - FILES:= \ - $(LINUX_DIR)/mm/zsmalloc.ko \ - $(LINUX_DIR)/drivers/block/zram/zram.ko - AUTOLOAD:=$(call AutoLoad,20,zsmalloc zram) -endef - -define KernelPackage/zram/description - Compressed RAM block device support -endef - -$(eval $(call KernelPackage,zram)) - - -define KernelPackage/pps - SUBMENU:=$(OTHER_MENU) - TITLE:=PPS support - KCONFIG:=CONFIG_PPS - FILES:=$(LINUX_DIR)/drivers/pps/pps_core.ko - AUTOLOAD:=$(call AutoLoad,17,pps_core,1) -endef - -define KernelPackage/pps/description - PPS (Pulse Per Second) is a special pulse provided by some GPS - antennae. Userland can use it to get a high-precision time - reference. -endef - -$(eval $(call KernelPackage,pps)) - - -define KernelPackage/pps-gpio - SUBMENU:=$(OTHER_MENU) - TITLE:=PPS client using GPIO - DEPENDS:=+kmod-pps - KCONFIG:=CONFIG_PPS_CLIENT_GPIO - FILES:=$(LINUX_DIR)/drivers/pps/clients/pps-gpio.ko - AUTOLOAD:=$(call AutoLoad,18,pps-gpio,1) -endef - -define KernelPackage/pps-gpio/description - Support for a PPS source using GPIO. To be useful you must - also register a platform device specifying the GPIO pin and - other options, usually in your board setup. -endef - -$(eval $(call KernelPackage,pps-gpio)) - - -define KernelPackage/pps-ldisc - SUBMENU:=$(OTHER_MENU) - TITLE:=PPS line discipline - DEPENDS:=+kmod-pps - KCONFIG:=CONFIG_PPS_CLIENT_LDISC - FILES:=$(LINUX_DIR)/drivers/pps/clients/pps-ldisc.ko - AUTOLOAD:=$(call AutoLoad,18,pps-ldisc,1) -endef - -define KernelPackage/pps-ldisc/description - Support for a PPS source connected with the CD (Carrier - Detect) pin of your serial port. -endef - -$(eval $(call KernelPackage,pps-ldisc)) - - -define KernelPackage/ptp - SUBMENU:=$(OTHER_MENU) - TITLE:=PTP clock support - DEPENDS:=+kmod-pps - KCONFIG:= \ - CONFIG_PTP_1588_CLOCK \ - CONFIG_NET_PTP_CLASSIFY=y - FILES:=$(LINUX_DIR)/drivers/ptp/ptp.ko - AUTOLOAD:=$(call AutoLoad,18,ptp,1) -endef - -define KernelPackage/ptp/description - The IEEE 1588 standard defines a method to precisely - synchronize distributed clocks over Ethernet networks. -endef - -$(eval $(call KernelPackage,ptp)) - - -define KernelPackage/ptp-qoriq - SUBMENU:=$(OTHER_MENU) - TITLE:=Freescale QorIQ PTP support - DEPENDS:=@TARGET_mpc85xx +kmod-ptp - KCONFIG:=CONFIG_PTP_1588_CLOCK_QORIQ - FILES:=$(LINUX_DIR)/drivers/ptp/ptp-qoriq.ko - AUTOLOAD:=$(call AutoProbe,ptp-qoriq) -endef - - -define KernelPackage/ptp-qoriq/description - Kernel module for IEEE 1588 support for Freescale - QorIQ Ethernet drivers -endef - -$(eval $(call KernelPackage,ptp-qoriq)) - -define KernelPackage/random-core - SUBMENU:=$(OTHER_MENU) - TITLE:=Hardware Random Number Generator Core support - KCONFIG:=CONFIG_HW_RANDOM - FILES:=$(LINUX_DIR)/drivers/char/hw_random/rng-core.ko -endef - -define KernelPackage/random-core/description - Kernel module for the HW random number generator core infrastructure -endef - -$(eval $(call KernelPackage,random-core)) - - -define KernelPackage/thermal - SUBMENU:=$(OTHER_MENU) - TITLE:=Thermal driver - DEPENDS:=+kmod-hwmon-core - HIDDEN:=1 - KCONFIG:= \ - CONFIG_THERMAL=y \ - CONFIG_THERMAL_OF=y \ - CONFIG_CPU_THERMAL=y \ - CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y \ - CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE=n \ - CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE=n \ - CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 \ - CONFIG_THERMAL_GOV_FAIR_SHARE=n \ - CONFIG_THERMAL_GOV_STEP_WISE=y \ - CONFIG_THERMAL_GOV_USER_SPACE=n \ - CONFIG_THERMAL_HWMON=y \ - CONFIG_THERMAL_EMULATION=n -endef - -define KernelPackage/thermal/description - Thermal driver offers a generic mechanism for thermal management. - Usually it's made up of one or more thermal zone and cooling device. -endef - -$(eval $(call KernelPackage,thermal)) - - -define KernelPackage/gpio-beeper - SUBMENU:=$(OTHER_MENU) - TITLE:=GPIO beeper support - DEPENDS:=+kmod-input-core - KCONFIG:= \ - CONFIG_INPUT_MISC=y \ - CONFIG_INPUT_GPIO_BEEPER - FILES:= \ - $(LINUX_DIR)/drivers/input/misc/gpio-beeper.ko - AUTOLOAD:=$(call AutoLoad,50,gpio-beeper) -endef - -define KernelPackage/gpio-beeper/description - This enables playing beeps through an GPIO-connected buzzer -endef - -$(eval $(call KernelPackage,gpio-beeper)) - - -define KernelPackage/echo - SUBMENU:=$(OTHER_MENU) - TITLE:=Line Echo Canceller - KCONFIG:=CONFIG_ECHO - FILES:=$(LINUX_DIR)/drivers/misc/echo/echo.ko - AUTOLOAD:=$(call AutoLoad,50,echo) -endef - -define KernelPackage/echo/description - This driver provides line echo cancelling support for mISDN and - DAHDI drivers -endef - -$(eval $(call KernelPackage,echo)) - - -define KernelPackage/keys-encrypted - SUBMENU:=$(OTHER_MENU) - TITLE:=encrypted keys on kernel keyring - DEPENDS:=@KERNEL_KEYS +kmod-crypto-cbc +kmod-crypto-hmac +kmod-crypto-rng \ - +kmod-crypto-sha256 +kmod-keys-trusted - KCONFIG:=CONFIG_ENCRYPTED_KEYS - FILES:=$(LINUX_DIR)/security/keys/encrypted-keys/encrypted-keys.ko - AUTOLOAD:=$(call AutoLoad,01,encrypted-keys,1) -endef - -define KernelPackage/keys-encrypted/description - This module provides support for create/encrypting/decrypting keys - in the kernel. Encrypted keys are kernel generated random numbers, - which are encrypted/decrypted with a 'master' symmetric key. The - 'master' key can be either a trusted-key or user-key type. - Userspace only ever sees/stores encrypted blobs. -endef - -$(eval $(call KernelPackage,keys-encrypted)) - - -define KernelPackage/keys-trusted - SUBMENU:=$(OTHER_MENU) - TITLE:=TPM trusted keys on kernel keyring - DEPENDS:=@KERNEL_KEYS +kmod-crypto-hash +kmod-crypto-hmac +kmod-crypto-sha1 +kmod-tpm - KCONFIG:=CONFIG_TRUSTED_KEYS - FILES:= \ - $(LINUX_DIR)/security/keys/trusted.ko@lt5.10 \ - $(LINUX_DIR)/security/keys/trusted-keys/trusted.ko@ge5.10 - AUTOLOAD:=$(call AutoLoad,01,trusted-keys,1) -endef - -define KernelPackage/keys-trusted/description - This module provides support for creating, sealing, and unsealing - keys in the kernel. Trusted keys are random number symmetric keys, - generated and RSA-sealed by the TPM. The TPM only unseals the keys, - if the boot PCRs and other criteria match. Userspace will only ever - see encrypted blobs. -endef - -$(eval $(call KernelPackage,keys-trusted)) - - -define KernelPackage/tpm - SUBMENU:=$(OTHER_MENU) - TITLE:=TPM Hardware Support - DEPENDS:= +kmod-random-core - KCONFIG:= CONFIG_TCG_TPM - FILES:= $(LINUX_DIR)/drivers/char/tpm/tpm.ko - AUTOLOAD:=$(call AutoLoad,10,tpm,1) -endef - -define KernelPackage/tpm/description - This enables TPM Hardware Support. -endef - -$(eval $(call KernelPackage,tpm)) - -define KernelPackage/tpm-tis - SUBMENU:=$(OTHER_MENU) - TITLE:=TPM TIS 1.2 Interface / TPM 2.0 FIFO Interface - DEPENDS:= @TARGET_x86 +kmod-tpm - KCONFIG:= CONFIG_TCG_TIS - FILES:= \ - $(LINUX_DIR)/drivers/char/tpm/tpm_tis.ko \ - $(LINUX_DIR)/drivers/char/tpm/tpm_tis_core.ko - AUTOLOAD:=$(call AutoLoad,20,tpm_tis,1) -endef - -define KernelPackage/tpm-tis/description - If you have a TPM security chip that is compliant with the - TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO - specification (TPM2.0) say Yes and it will be accessible from - within Linux. -endef - -$(eval $(call KernelPackage,tpm-tis)) - -define KernelPackage/tpm-i2c-atmel - SUBMENU:=$(OTHER_MENU) - TITLE:=TPM I2C Atmel Support - DEPENDS:= +kmod-tpm +kmod-i2c-core - KCONFIG:= CONFIG_TCG_TIS_I2C_ATMEL - FILES:= $(LINUX_DIR)/drivers/char/tpm/tpm_i2c_atmel.ko - AUTOLOAD:=$(call AutoLoad,40,tpm_i2c_atmel,1) -endef - -define KernelPackage/tpm-i2c-atmel/description - This enables the TPM Interface Specification 1.2 Interface (I2C - Atmel) -endef - -$(eval $(call KernelPackage,tpm-i2c-atmel)) - -define KernelPackage/tpm-i2c-infineon - SUBMENU:=$(OTHER_MENU) - TITLE:= TPM I2C Infineon driver - DEPENDS:= +kmod-tpm +kmod-i2c-core - KCONFIG:= CONFIG_TCG_TIS_I2C_INFINEON - FILES:= $(LINUX_DIR)/drivers/char/tpm/tpm_i2c_infineon.ko - AUTOLOAD:= $(call AutoLoad,40,tpm_i2c_infineon,1) -endef - -define KernelPackage/tpm-i2c-infineon/description - This enables the TPM Interface Specification 1.2 Interface (I2C - Infineon) -endef - -$(eval $(call KernelPackage,tpm-i2c-infineon)) - - -define KernelPackage/w83627hf-wdt - SUBMENU:=$(OTHER_MENU) - TITLE:=Winbond 83627HF Watchdog Timer - KCONFIG:=CONFIG_W83627HF_WDT - FILES:=$(LINUX_DIR)/drivers/$(WATCHDOG_DIR)/w83627hf_wdt.ko - AUTOLOAD:=$(call AutoLoad,50,w83627hf-wdt,1) -endef - -define KernelPackage/w83627hf-wdt/description - Kernel module for Winbond 83627HF Watchdog Timer -endef - -$(eval $(call KernelPackage,w83627hf-wdt)) - - -define KernelPackage/itco-wdt - SUBMENU:=$(OTHER_MENU) - TITLE:=Intel iTCO Watchdog Timer - KCONFIG:=CONFIG_ITCO_WDT \ - CONFIG_ITCO_VENDOR_SUPPORT=y - FILES:=$(LINUX_DIR)/drivers/$(WATCHDOG_DIR)/iTCO_wdt.ko \ - $(LINUX_DIR)/drivers/$(WATCHDOG_DIR)/iTCO_vendor_support.ko - AUTOLOAD:=$(call AutoLoad,50,iTCO_vendor_support iTCO_wdt,1) -endef - -define KernelPackage/itco-wdt/description - Kernel module for Intel iTCO Watchdog Timer -endef - -$(eval $(call KernelPackage,itco-wdt)) - - -define KernelPackage/it87-wdt - SUBMENU:=$(OTHER_MENU) - TITLE:=ITE IT87 Watchdog Timer - KCONFIG:=CONFIG_IT87_WDT - FILES:=$(LINUX_DIR)/drivers/$(WATCHDOG_DIR)/it87_wdt.ko - AUTOLOAD:=$(call AutoLoad,50,it87-wdt,1) - MODPARAMS.it87-wdt:= \ - nogameport=1 \ - nocir=1 -endef - -define KernelPackage/it87-wdt/description - Kernel module for ITE IT87 Watchdog Timer -endef - -$(eval $(call KernelPackage,it87-wdt)) - - -define KernelPackage/f71808e-wdt - SUBMENU:=$(OTHER_MENU) - TITLE:=Fintek F718xx/F818xx Watchdog Timer - DEPENDS:=@TARGET_x86 - KCONFIG:=CONFIG_F71808E_WDT - FILES:=$(LINUX_DIR)/drivers/$(WATCHDOG_DIR)/f71808e_wdt.ko - AUTOLOAD:=$(call AutoProbe,f71808e-wdt,1) -endef - -define KernelPackage/f71808e-wdt/description - Kernel module for the watchdog timer found on many Fintek Super-IO chips. -endef - -$(eval $(call KernelPackage,f71808e-wdt)) diff --git a/root/package/base-files/kernel/linux/modules/sound.mk b/root/package/base-files/kernel/linux/modules/sound.mk deleted file mode 100644 index 14bdf3ab..00000000 --- a/root/package/base-files/kernel/linux/modules/sound.mk +++ /dev/null @@ -1,536 +0,0 @@ -# -# Copyright (C) 2006-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -SOUND_MENU:=Sound Support - -# allow targets to override the soundcore stuff -SOUNDCORE_LOAD ?= \ - soundcore \ - snd \ - snd-hwdep \ - snd-seq-device \ - snd-rawmidi \ - snd-timer \ - snd-pcm \ - snd-mixer-oss \ - snd-pcm-oss \ - snd-compress - -SOUNDCORE_FILES ?= \ - $(LINUX_DIR)/sound/soundcore.ko \ - $(LINUX_DIR)/sound/core/snd.ko \ - $(LINUX_DIR)/sound/core/snd-hwdep.ko \ - $(LINUX_DIR)/sound/core/snd-seq-device.ko \ - $(LINUX_DIR)/sound/core/snd-rawmidi.ko \ - $(LINUX_DIR)/sound/core/snd-timer.ko \ - $(LINUX_DIR)/sound/core/snd-pcm.ko \ - $(LINUX_DIR)/sound/core/oss/snd-mixer-oss.ko \ - $(LINUX_DIR)/sound/core/oss/snd-pcm-oss.ko \ - $(LINUX_DIR)/sound/core/snd-compress.ko@lt5.14 - -SOUNDCORE_LOAD += \ - $(if $(CONFIG_SND_DMAENGINE_PCM),snd-pcm-dmaengine) - -SOUNDCORE_FILES += \ - $(if $(CONFIG_SND_DMAENGINE_PCM),$(LINUX_DIR)/sound/core/snd-pcm-dmaengine.ko) - -define KernelPackage/sound-core - SUBMENU:=$(SOUND_MENU) - TITLE:=Sound support - DEPENDS:=@AUDIO_SUPPORT +kmod-input-core - KCONFIG:= \ - CONFIG_SOUND \ - CONFIG_SND \ - CONFIG_SND_HWDEP \ - CONFIG_SND_RAWMIDI \ - CONFIG_SND_TIMER \ - CONFIG_SND_PCM \ - CONFIG_SND_PCM_TIMER=y \ - CONFIG_SND_SEQUENCER \ - CONFIG_SND_VIRMIDI \ - CONFIG_SND_SEQ_DUMMY \ - CONFIG_SND_SEQUENCER_OSS=y \ - CONFIG_HOSTAUDIO \ - CONFIG_SND_PCM_OSS \ - CONFIG_SND_MIXER_OSS \ - CONFIG_SOUND_OSS_CORE_PRECLAIM=y \ - CONFIG_SND_COMPRESS_OFFLOAD - FILES:=$(SOUNDCORE_FILES) - AUTOLOAD:=$(call AutoLoad,30,$(SOUNDCORE_LOAD)) -endef - -define KernelPackage/sound-core/uml - FILES:= \ - $(LINUX_DIR)/sound/soundcore.ko \ - $(LINUX_DIR)/arch/um/drivers/hostaudio.ko - AUTOLOAD+=$(call AutoLoad,30,soundcore hostaudio) -endef - -define KernelPackage/sound-core/description - Kernel modules for sound support -endef - -$(eval $(call KernelPackage,sound-core)) - - -define AddDepends/sound - SUBMENU:=$(SOUND_MENU) - DEPENDS+=kmod-sound-core $(1) @!TARGET_uml -endef - - -define KernelPackage/ac97 - TITLE:=ac97 controller - KCONFIG:=CONFIG_SND_AC97_CODEC - FILES:= \ - $(LINUX_DIR)/sound/ac97_bus.ko \ - $(LINUX_DIR)/sound/pci/ac97/snd-ac97-codec.ko - AUTOLOAD:=$(call AutoLoad,35,ac97_bus snd-ac97-codec) - $(call AddDepends/sound) -endef - -define KernelPackage/ac97/description - The ac97 controller -endef - -$(eval $(call KernelPackage,ac97)) - - -define KernelPackage/sound-mpu401 - TITLE:=MPU-401 uart driver - KCONFIG:=CONFIG_SND_MPU401_UART - FILES:= \ - $(LINUX_DIR)/sound/drivers/mpu401/snd-mpu401-uart.ko - AUTOLOAD:=$(call AutoLoad,35,snd-mpu401-uart) - $(call AddDepends/sound) -endef - -define KernelPackage/sound-mpu401/description - support for MIDI ports compatible with the Roland MPU-401 - interface in UART mode. -endef - -$(eval $(call KernelPackage,sound-mpu401)) - - -define KernelPackage/sound-seq - TITLE:=Sequencer support - FILES:= \ - $(LINUX_DIR)/sound/core/seq/snd-seq.ko \ - $(LINUX_DIR)/sound/core/seq/snd-seq-midi-event.ko \ - $(LINUX_DIR)/sound/core/seq/snd-seq-midi.ko - AUTOLOAD:=$(call AutoLoad,35,snd-seq snd-seq-midi-event snd-seq-midi) - $(call AddDepends/sound) -endef - -define KernelPackage/sound-seq/description - Kernel modules for sequencer support -endef - -$(eval $(call KernelPackage,sound-seq)) - - -define KernelPackage/sound-ens1371 - TITLE:=(Creative) Ensoniq AudioPCI 1371 - KCONFIG:=CONFIG_SND_ENS1371 - DEPENDS:=@PCI_SUPPORT +kmod-ac97 - FILES:=$(LINUX_DIR)/sound/pci/snd-ens1371.ko - AUTOLOAD:=$(call AutoLoad,36,snd-ens1371) - $(call AddDepends/sound) -endef - -define KernelPackage/sound-ens1371/description - support for (Creative) Ensoniq AudioPCI 1371 chips -endef - -$(eval $(call KernelPackage,sound-ens1371)) - - -define KernelPackage/sound-i8x0 - TITLE:=Intel/SiS/nVidia/AMD/ALi AC97 Controller - DEPENDS:=+kmod-ac97 - KCONFIG:=CONFIG_SND_INTEL8X0 - FILES:=$(LINUX_DIR)/sound/pci/snd-intel8x0.ko - AUTOLOAD:=$(call AutoLoad,36,snd-intel8x0) - $(call AddDepends/sound) -endef - -define KernelPackage/sound-i8x0/description - support for the integrated AC97 sound device on motherboards - with Intel/SiS/nVidia/AMD chipsets, or ALi chipsets using - the M5455 Audio Controller. -endef - -$(eval $(call KernelPackage,sound-i8x0)) - - -define KernelPackage/sound-via82xx - TITLE:=VIA 82xx AC97 Controller - DEPENDS:=+kmod-ac97 +kmod-sound-mpu401 - KCONFIG:=CONFIG_SND_VIA82XX - FILES:=$(LINUX_DIR)/sound/pci/snd-via82xx.ko - AUTOLOAD:=$(call AutoLoad,36,snd-via82xx) - $(call AddDepends/sound) -endef - -define KernelPackage/sound-via82xx/description - support for the integrated AC97 sound device on motherboards - with VIA chipsets. -endef - -$(eval $(call KernelPackage,sound-via82xx)) - - -define KernelPackage/sound-soc-core - TITLE:=SoC sound support - DEPENDS:=+kmod-regmap-core +kmod-ac97 - KCONFIG:= \ - CONFIG_SND_SOC \ - CONFIG_SND_SOC_ADI=n \ - CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y \ - CONFIG_SND_SOC_ALL_CODECS=n - FILES:=$(LINUX_DIR)/sound/soc/snd-soc-core.ko - AUTOLOAD:=$(call AutoLoad,55,snd-soc-core) - $(call AddDepends/sound) -endef - -$(eval $(call KernelPackage,sound-soc-core)) - - -define KernelPackage/sound-soc-ac97 - TITLE:=AC97 Codec support - KCONFIG:=CONFIG_SND_SOC_AC97_CODEC - FILES:=$(LINUX_DIR)/sound/soc/codecs/snd-soc-ac97.ko - AUTOLOAD:=$(call AutoLoad,57,snd-soc-ac97) - DEPENDS:=+kmod-ac97 +kmod-sound-soc-core - $(call AddDepends/sound) -endef - -$(eval $(call KernelPackage,sound-soc-ac97)) - - -define KernelPackage/sound-soc-imx - TITLE:=IMX SoC support - KCONFIG:=\ - CONFIG_SND_IMX_SOC \ - CONFIG_SND_SOC_IMX_AUDMUX \ - CONFIG_SND_SOC_FSL_SSI \ - CONFIG_SND_SOC_IMX_PCM_DMA - FILES:= \ - $(LINUX_DIR)/sound/soc/fsl/snd-soc-imx-audmux.ko \ - $(LINUX_DIR)/sound/soc/fsl/snd-soc-fsl-ssi.ko \ - $(LINUX_DIR)/sound/soc/fsl/imx-pcm-dma.ko - AUTOLOAD:=$(call AutoLoad,56,snd-soc-imx-audmux snd-soc-fsl-ssi snd-soc-imx-pcm) - DEPENDS:=@TARGET_imx6 +kmod-sound-soc-core - $(call AddDepends/sound) -endef - -define KernelPackage/sound-soc-imx/description - Support for i.MX6 Platform sound (ssi/audmux/pcm) -endef - -$(eval $(call KernelPackage,sound-soc-imx)) - - -define KernelPackage/sound-soc-imx-sgtl5000 - TITLE:=IMX SoC support for SGTL5000 - KCONFIG:=CONFIG_SND_SOC_IMX_SGTL5000 - FILES:=\ - $(LINUX_DIR)/sound/soc/codecs/snd-soc-sgtl5000.ko \ - $(LINUX_DIR)/sound/soc/fsl/snd-soc-imx-sgtl5000.ko - AUTOLOAD:=$(call AutoLoad,57,snd-soc-sgtl5000 snd-soc-imx-sgtl5000) - DEPENDS:=@TARGET_imx6 +kmod-sound-soc-imx - $(call AddDepends/sound) -endef - -define KernelPackage/sound-soc-imx-sgtl5000/description - Support for i.MX6 Platform sound SGTL5000 codec -endef - -$(eval $(call KernelPackage,sound-soc-imx-sgtl5000)) - - -define KernelPackage/sound-soc-spdif - TITLE:=SoC S/PDIF codec support - KCONFIG:=CONFIG_SND_SOC_SPDIF - FILES:= \ - $(LINUX_DIR)/sound/soc/codecs/snd-soc-spdif-tx.ko \ - $(LINUX_DIR)/sound/soc/codecs/snd-soc-spdif-rx.ko - DEPENDS:=+kmod-sound-soc-core - AUTOLOAD:=$(call AutoProbe,snd-soc-spdif-tx snd-soc-spdif-rx) - $(call AddDepends/sound) -endef - -$(eval $(call KernelPackage,sound-soc-spdif)) - - -define KernelPackage/pcspkr - DEPENDS:=@TARGET_x86 +kmod-input-core - TITLE:=PC speaker support - KCONFIG:= \ - CONFIG_SND_PCSP - FILES:= \ - $(LINUX_DIR)/sound/drivers/pcsp/snd-pcsp.ko - AUTOLOAD:=$(call AutoLoad,50,snd-pcsp) - $(call AddDepends/sound) -endef - -define KernelPackage/pcspkr/description - This enables sounds (tones) through the pc speaker -endef - -$(eval $(call KernelPackage,pcspkr)) - -define KernelPackage/sound-dummy - $(call AddDepends/sound) - TITLE:=Null sound output driver (sink) - KCONFIG:= \ - CONFIG_SND_DUMMY - FILES:= \ - $(LINUX_DIR)/sound/drivers/snd-dummy.ko - AUTOLOAD:=$(call AutoLoad,32,snd-dummy) -endef - -define KernelPackage/sound-dummy/description - Dummy sound device for Alsa when no hardware present -endef - -$(eval $(call KernelPackage,sound-dummy)) - -define KernelPackage/sound-hda-core - SUBMENU:=$(SOUND_MENU) - TITLE:=HD Audio Sound Core Support - DEPENDS:=+kmod-ledtrig-audio - KCONFIG:= \ - CONFIG_SND_HDA_CORE \ - CONFIG_SND_HDA_HWDEP=y \ - CONFIG_SND_HDA_RECONFIG=n \ - CONFIG_SND_HDA_INPUT_BEEP=n \ - CONFIG_SND_HDA_PATCH_LOADER=n \ - CONFIG_SND_HDA_GENERIC - FILES:= \ - $(LINUX_DIR)/sound/hda/snd-hda-core.ko \ - $(LINUX_DIR)/sound/pci/hda/snd-hda-codec.ko \ - $(LINUX_DIR)/sound/pci/hda/snd-hda-codec-generic.ko - AUTOLOAD:=$(call AutoProbe,snd-hda-core snd-hda-codec snd-hda-codec-generic) - $(call AddDepends/sound,+kmod-regmap-core) -endef - -define KernelPackage/sound-hda-core/description - Kernel modules for HD Audio sound support -endef - -$(eval $(call KernelPackage,sound-hda-core)) - -define KernelPackage/sound-hda-codec-realtek - SUBMENU:=$(SOUND_MENU) - TITLE:= HD Audio Realtek Codec - KCONFIG:= \ - CONFIG_SND_HDA_CODEC_REALTEK - FILES:= \ - $(LINUX_DIR)/sound/pci/hda/snd-hda-codec-realtek.ko - AUTOLOAD:=$(call AutoProbe,snd-hda-codec-realtek) - $(call AddDepends/sound,kmod-sound-hda-core) -endef - -define KernelPackage/sound-hda-codec-realtek/description - Kernel modules for Intel HDA Realtek codec support -endef - -$(eval $(call KernelPackage,sound-hda-codec-realtek)) - -define KernelPackage/sound-hda-codec-cmedia - SUBMENU:=$(SOUND_MENU) - TITLE:=HD Audio C-Media Codec - KCONFIG:= \ - CONFIG_SND_HDA_CODEC_CMEDIA - FILES:= \ - $(LINUX_DIR)/sound/pci/hda/snd-hda-codec-cmedia.ko - AUTOLOAD:=$(call AutoProbe,snd-hda-codec-cmedia) - $(call AddDepends/sound,kmod-sound-hda-core) -endef - -define KernelPackage/sound-hda-codec-cmedia/description - Kernel modules for HD Audio C-Media codec support -endef - -$(eval $(call KernelPackage,sound-hda-codec-cmedia)) - -define KernelPackage/sound-hda-codec-analog - SUBMENU:=$(SOUND_MENU) - TITLE:=HD Audio Analog Devices Codec - KCONFIG:= \ - CONFIG_SND_HDA_CODEC_ANALOG - FILES:= \ - $(LINUX_DIR)/sound/pci/hda/snd-hda-codec-analog.ko - AUTOLOAD:=$(call AutoProbe,snd-hda-codec-analog) - $(call AddDepends/sound,kmod-sound-hda-core) -endef - -define KernelPackage/sound-hda-codec-analog/description - Kernel modules for HD Audio Analog Devices codec support -endef - -$(eval $(call KernelPackage,sound-hda-codec-analog)) - -define KernelPackage/sound-hda-codec-idt - SUBMENU:=$(SOUND_MENU) - TITLE:=HD Audio Sigmatel IDT Codec - KCONFIG:= \ - CONFIG_SND_HDA_CODEC_SIGMATEL - FILES:= \ - $(LINUX_DIR)/sound/pci/hda/snd-hda-codec-idt.ko - AUTOLOAD:=$(call AutoProbe,snd-hda-codec-idt) - $(call AddDepends/sound,kmod-sound-hda-core) -endef - -define KernelPackage/sound-hda-codec-idt/description - Kernel modules for HD Audio Sigmatel IDT codec support -endef - -$(eval $(call KernelPackage,sound-hda-codec-idt)) - -define KernelPackage/sound-hda-codec-si3054 - SUBMENU:=$(SOUND_MENU) - TITLE:=HD Audio Silicon Labs 3054 Codec - KCONFIG:= \ - CONFIG_SND_HDA_CODEC_SI3054 - FILES:= \ - $(LINUX_DIR)/sound/pci/hda/snd-hda-codec-si3054.ko - AUTOLOAD:=$(call AutoProbe,snd-hda-codec-si3054) - $(call AddDepends/sound,kmod-sound-hda-core) -endef - -define KernelPackage/sound-hda-codec-si3054/description - Kernel modules for HD Audio Silicon Labs 3054 codec support -endef - -$(eval $(call KernelPackage,sound-hda-codec-si3054)) - -define KernelPackage/sound-hda-codec-cirrus - SUBMENU:=$(SOUND_MENU) - TITLE:=HD Audio Cirrus Logic Codec - KCONFIG:= \ - CONFIG_SND_HDA_CODEC_CIRRUS - FILES:= \ - $(LINUX_DIR)/sound/pci/hda/snd-hda-codec-cirrus.ko - AUTOLOAD:=$(call AutoProbe,snd-hda-codec-cirrus) - $(call AddDepends/sound,kmod-sound-hda-core) -endef - -define KernelPackage/sound-hda-codec-cirrus/description - Kernel modules for HD Audio Cirrus Logic codec support -endef - -$(eval $(call KernelPackage,sound-hda-codec-cirrus)) - -define KernelPackage/sound-hda-codec-ca0110 - SUBMENU:=$(SOUND_MENU) - TITLE:=HD Audio Creative CA0110 Codec - KCONFIG:= \ - CONFIG_SND_HDA_CODEC_CA0110 - FILES:= \ - $(LINUX_DIR)/sound/pci/hda/snd-hda-codec-ca0110.ko - AUTOLOAD:=$(call AutoProbe,snd-hda-codec-ca0110) - $(call AddDepends/sound,kmod-sound-hda-core) -endef - -define KernelPackage/sound-hda-codec-ca0110/description - Kernel modules for HD Audio Creative CA0110 codec support -endef - -$(eval $(call KernelPackage,sound-hda-codec-ca0110)) - -define KernelPackage/sound-hda-codec-ca0132 - SUBMENU:=$(SOUND_MENU) - TITLE:=HD Audio Creative CA0132 Codec - KCONFIG:= \ - CONFIG_SND_HDA_CODEC_CA0132 \ - CONFIG_SND_HDA_CODEC_CA0132_DSP=n - FILES:= \ - $(LINUX_DIR)/sound/pci/hda/snd-hda-codec-ca0132.ko - AUTOLOAD:=$(call AutoProbe,snd-hda-codec-ca0132) - $(call AddDepends/sound,kmod-sound-hda-core) -endef - -define KernelPackage/sound-hda-codec-ca0132/description - Kernel modules for HD Audio Creative CA0132 codec support -endef - -$(eval $(call KernelPackage,sound-hda-codec-ca0132)) - -define KernelPackage/sound-hda-codec-conexant - SUBMENU:=$(SOUND_MENU) - TITLE:=HD Audio Conexant Codec - KCONFIG:= \ - CONFIG_SND_HDA_CODEC_CONEXANT - FILES:= \ - $(LINUX_DIR)/sound/pci/hda/snd-hda-codec-conexant.ko - AUTOLOAD:=$(call AutoProbe,snd-hda-codec-conexant) - $(call AddDepends/sound,kmod-sound-hda-core) -endef - -define KernelPackage/sound-hda-codec-conexant/description - Kernel modules for HD Audio Conexant codec support -endef - -$(eval $(call KernelPackage,sound-hda-codec-conexant)) - -define KernelPackage/sound-hda-codec-via - SUBMENU:=$(SOUND_MENU) - TITLE:=HD Audio Via Codec - KCONFIG:= \ - CONFIG_SND_HDA_CODEC_VIA - FILES:= \ - $(LINUX_DIR)/sound/pci/hda/snd-hda-codec-via.ko - AUTOLOAD:=$(call AutoProbe,snd-hda-codec-via) - $(call AddDepends/sound,kmod-sound-hda-core) -endef - -define KernelPackage/sound-hda-codec-via/description - Kernel modules for HD Audio VIA codec support -endef - -$(eval $(call KernelPackage,sound-hda-codec-via)) - -define KernelPackage/sound-hda-codec-hdmi - SUBMENU:=$(SOUND_MENU) - TITLE:=HD Audio HDMI/DisplayPort Codec - KCONFIG:= \ - CONFIG_SND_HDA_CODEC_HDMI - FILES:= \ - $(LINUX_DIR)/sound/pci/hda/snd-hda-codec-hdmi.ko - AUTOLOAD:=$(call AutoProbe,snd-hda-codec-hdmi) - $(call AddDepends/sound,kmod-sound-hda-core) -endef - -define KernelPackage/sound-hda-codec-hdmi/description - Kernel modules for HD Audio HDMI codec support -endef - -$(eval $(call KernelPackage,sound-hda-codec-hdmi)) - -define KernelPackage/sound-hda-intel - SUBMENU:=$(SOUND_MENU) - TITLE:=HD Audio Intel Driver - DEPENDS:=@TARGET_x86 - KCONFIG:= \ - CONFIG_SOUND_PCI \ - CONFIG_SND_HDA_INTEL - FILES:= \ - $(LINUX_DIR)/sound/pci/hda/snd-hda-intel.ko \ - $(LINUX_DIR)/sound/hda/snd-intel-nhlt.ko@lt5.5 \ - $(LINUX_DIR)/sound/hda/snd-intel-dspcfg.ko@ge5.5 - AUTOLOAD:=$(call AutoProbe,snd-hda-intel) - $(call AddDepends/sound,kmod-sound-hda-core) -endef - -define KernelPackage/sound-hda-intel/description - Kernel modules for HD Audio Intel driver support -endef - -$(eval $(call KernelPackage,sound-hda-intel)) diff --git a/root/package/base-files/kernel/mac80211/patches/build/1-2-net-wireless-intel-iwlwifi-mvm-tt-Replace-thermal_notify_framework.patch b/root/package/base-files/kernel/mac80211/patches/build/1-2-net-wireless-intel-iwlwifi-mvm-tt-Replace-thermal_notify_framework.patch deleted file mode 100644 index 72a92695..00000000 --- a/root/package/base-files/kernel/mac80211/patches/build/1-2-net-wireless-intel-iwlwifi-mvm-tt-Replace-thermal_notify_framework.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c -index 507625f96dd7..a0c6be03903a 100644 ---- a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c -+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c -@@ -146,8 +146,8 @@ void iwl_mvm_temp_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb) - if (mvm->tz_device.tzone) { - struct iwl_mvm_thermal_device *tz_dev = &mvm->tz_device; - -- thermal_notify_framework(tz_dev->tzone, -- tz_dev->fw_trips_index[ths_crossed]); -+ thermal_zone_device_update(tz_dev->tzone, -+ THERMAL_TRIP_VIOLATED); - } - #endif /* CONFIG_THERMAL */ - } diff --git a/root/package/base-files/kernel/mac80211/patches/build/900-remove_module_supported_device.patch b/root/package/base-files/kernel/mac80211/patches/build/900-remove_module_supported_device.patch deleted file mode 100644 index a9ca382e..00000000 --- a/root/package/base-files/kernel/mac80211/patches/build/900-remove_module_supported_device.patch +++ /dev/null @@ -1,263 +0,0 @@ -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/admtek/adm8211.c backports-5.10.42-1/drivers/net/wireless/admtek/adm8211.c ---- backports-5.10.42-1.anc/drivers/net/wireless/admtek/adm8211.c 2021-09-23 22:26:42.899395773 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/admtek/adm8211.c 2021-09-23 22:30:53.147231692 +0200 -@@ -28,7 +28,6 @@ - MODULE_AUTHOR("Michael Wu "); - MODULE_AUTHOR("Jouni Malinen "); - MODULE_DESCRIPTION("Driver for IEEE 802.11b wireless cards based on ADMtek ADM8211"); --MODULE_SUPPORTED_DEVICE("ADM8211"); - MODULE_LICENSE("GPL"); - - static unsigned int tx_ring_size __read_mostly = 16; -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/ath/ath5k/base.c backports-5.10.42-1/drivers/net/wireless/ath/ath5k/base.c ---- backports-5.10.42-1.anc/drivers/net/wireless/ath/ath5k/base.c 2021-09-23 22:26:42.903395707 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/ath/ath5k/base.c 2021-09-23 22:30:46.011350432 +0200 -@@ -90,7 +90,6 @@ - MODULE_AUTHOR("Jiri Slaby"); - MODULE_AUTHOR("Nick Kossifidis"); - MODULE_DESCRIPTION("Support for 5xxx series of Atheros 802.11 wireless LAN cards."); --MODULE_SUPPORTED_DEVICE("Atheros 5xxx WLAN cards"); - MODULE_LICENSE("Dual BSD/GPL"); - - static int ath5k_init(struct ieee80211_hw *hw); -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/ath/ath9k/hw.c backports-5.10.42-1/drivers/net/wireless/ath/ath9k/hw.c ---- backports-5.10.42-1.anc/drivers/net/wireless/ath/ath9k/hw.c 2021-09-23 22:26:42.907395640 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/ath/ath9k/hw.c 2021-09-23 22:30:44.355377987 +0200 -@@ -34,7 +34,6 @@ - - MODULE_AUTHOR("Atheros Communications"); - MODULE_DESCRIPTION("Support for Atheros 802.11n wireless LAN cards."); --MODULE_SUPPORTED_DEVICE("Atheros 802.11n WLAN cards"); - MODULE_LICENSE("Dual BSD/GPL"); - - static void ath9k_hw_set_clockrate(struct ath_hw *ah) -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/ath/ath9k/init.c backports-5.10.42-1/drivers/net/wireless/ath/ath9k/init.c ---- backports-5.10.42-1.anc/drivers/net/wireless/ath/ath9k/init.c 2021-09-23 22:26:42.907395640 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/ath/ath9k/init.c 2021-09-23 22:30:44.355377987 +0200 -@@ -37,7 +37,6 @@ - - MODULE_AUTHOR("Atheros Communications"); - MODULE_DESCRIPTION("Support for Atheros 802.11n wireless LAN cards."); --MODULE_SUPPORTED_DEVICE("Atheros 802.11n WLAN cards"); - MODULE_LICENSE("Dual BSD/GPL"); - - static unsigned int ath9k_debug = ATH_DBG_DEFAULT; -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/atmel/atmel.c backports-5.10.42-1/drivers/net/wireless/atmel/atmel.c ---- backports-5.10.42-1.anc/drivers/net/wireless/atmel/atmel.c 2021-09-23 22:26:42.911395574 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/atmel/atmel.c 2021-09-23 22:30:46.023350232 +0200 -@@ -75,7 +75,6 @@ - MODULE_AUTHOR("Simon Kelley"); - MODULE_DESCRIPTION("Support for Atmel at76c50x 802.11 wireless ethernet cards."); - MODULE_LICENSE("GPL"); --MODULE_SUPPORTED_DEVICE("Atmel at76c50x wireless cards"); - - /* The name of the firmware file to be loaded - over-rides any automatic selection */ -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/atmel/atmel_cs.c backports-5.10.42-1/drivers/net/wireless/atmel/atmel_cs.c ---- backports-5.10.42-1.anc/drivers/net/wireless/atmel/atmel_cs.c 2021-09-23 22:26:42.911395574 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/atmel/atmel_cs.c 2021-09-23 22:30:46.023350232 +0200 -@@ -57,7 +57,6 @@ - MODULE_AUTHOR("Simon Kelley"); - MODULE_DESCRIPTION("Support for Atmel at76c50x 802.11 wireless ethernet cards."); - MODULE_LICENSE("GPL"); --MODULE_SUPPORTED_DEVICE("Atmel at76c50x PCMCIA cards"); - - /*====================================================================*/ - -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/atmel/atmel_pci.c backports-5.10.42-1/drivers/net/wireless/atmel/atmel_pci.c ---- backports-5.10.42-1.anc/drivers/net/wireless/atmel/atmel_pci.c 2021-09-23 22:26:42.911395574 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/atmel/atmel_pci.c 2021-09-23 22:30:46.023350232 +0200 -@@ -16,7 +16,6 @@ - MODULE_AUTHOR("Simon Kelley"); - MODULE_DESCRIPTION("Support for Atmel at76c50x 802.11 wireless ethernet cards."); - MODULE_LICENSE("GPL"); --MODULE_SUPPORTED_DEVICE("Atmel at76c506 PCI wireless cards"); - - static const struct pci_device_id card_ids[] = { - { 0x1114, 0x0506, PCI_ANY_ID, PCI_ANY_ID }, -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c backports-5.10.42-1/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c ---- backports-5.10.42-1.anc/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c 2021-09-23 22:26:42.915395506 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c 2021-09-23 22:30:48.843303308 +0200 -@@ -87,7 +87,6 @@ - - MODULE_AUTHOR("Broadcom Corporation"); - MODULE_DESCRIPTION("Broadcom 802.11n wireless LAN driver."); --MODULE_SUPPORTED_DEVICE("Broadcom 802.11n WLAN cards"); - MODULE_LICENSE("Dual BSD/GPL"); - /* This needs to be adjusted when brcms_firmwares changes */ - MODULE_FIRMWARE("brcm/bcm43xx-0.fw"); -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/broadcom/brcm80211/brcmutil/utils.c backports-5.10.42-1/drivers/net/wireless/broadcom/brcm80211/brcmutil/utils.c ---- backports-5.10.42-1.anc/drivers/net/wireless/broadcom/brcm80211/brcmutil/utils.c 2021-09-23 22:26:42.915395506 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/broadcom/brcm80211/brcmutil/utils.c 2021-09-23 22:30:51.611257250 +0200 -@@ -12,7 +12,6 @@ - - MODULE_AUTHOR("Broadcom Corporation"); - MODULE_DESCRIPTION("Broadcom 802.11n wireless LAN driver utilities."); --MODULE_SUPPORTED_DEVICE("Broadcom 802.11n WLAN cards"); - MODULE_LICENSE("Dual BSD/GPL"); - - struct sk_buff *brcmu_pkt_buf_get_skb(uint len) -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/cisco/airo.c backports-5.10.42-1/drivers/net/wireless/cisco/airo.c ---- backports-5.10.42-1.anc/drivers/net/wireless/cisco/airo.c 2021-09-23 22:26:42.915395506 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/cisco/airo.c 2021-09-23 22:30:53.147231692 +0200 -@@ -251,7 +251,6 @@ - MODULE_DESCRIPTION("Support for Cisco/Aironet 802.11 wireless ethernet cards. " - "Direct support for ISA/PCI/MPI cards and support for PCMCIA when used with airo_cs."); - MODULE_LICENSE("Dual BSD/GPL"); --MODULE_SUPPORTED_DEVICE("Aironet 4500, 4800 and Cisco 340/350"); - module_param_hw_array(io, int, ioport, NULL, 0); - module_param_hw_array(irq, int, irq, NULL, 0); - module_param_array(rates, int, NULL, 0); -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/cisco/airo_cs.c backports-5.10.42-1/drivers/net/wireless/cisco/airo_cs.c ---- backports-5.10.42-1.anc/drivers/net/wireless/cisco/airo_cs.c 2021-09-23 22:26:42.915395506 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/cisco/airo_cs.c 2021-09-23 22:30:53.159231492 +0200 -@@ -47,7 +47,6 @@ - "cards. This is the module that links the PCMCIA card " - "with the airo module."); - MODULE_LICENSE("Dual BSD/GPL"); --MODULE_SUPPORTED_DEVICE("Aironet 4500, 4800 and Cisco 340 PCMCIA cards"); - - /*====================================================================*/ - -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/intersil/hostap/hostap_cs.c backports-5.10.42-1/drivers/net/wireless/intersil/hostap/hostap_cs.c ---- backports-5.10.42-1.anc/drivers/net/wireless/intersil/hostap/hostap_cs.c 2021-09-23 22:26:42.919395441 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/intersil/hostap/hostap_cs.c 2021-09-23 22:30:53.027233689 +0200 -@@ -26,7 +26,6 @@ - MODULE_AUTHOR("Jouni Malinen"); - MODULE_DESCRIPTION("Support for Intersil Prism2-based 802.11 wireless LAN " - "cards (PC Card)."); --MODULE_SUPPORTED_DEVICE("Intersil Prism2-based WLAN cards (PC Card)"); - MODULE_LICENSE("GPL"); - - -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/intersil/hostap/hostap_pci.c backports-5.10.42-1/drivers/net/wireless/intersil/hostap/hostap_pci.c ---- backports-5.10.42-1.anc/drivers/net/wireless/intersil/hostap/hostap_pci.c 2021-09-23 22:26:42.919395441 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/intersil/hostap/hostap_pci.c 2021-09-23 22:30:53.027233689 +0200 -@@ -27,7 +27,6 @@ - MODULE_AUTHOR("Jouni Malinen"); - MODULE_DESCRIPTION("Support for Intersil Prism2.5-based 802.11 wireless LAN " - "PCI cards."); --MODULE_SUPPORTED_DEVICE("Intersil Prism2.5-based WLAN PCI cards"); - MODULE_LICENSE("GPL"); - - -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/intersil/hostap/hostap_plx.c backports-5.10.42-1/drivers/net/wireless/intersil/hostap/hostap_plx.c ---- backports-5.10.42-1.anc/drivers/net/wireless/intersil/hostap/hostap_plx.c 2021-09-23 22:26:42.919395441 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/intersil/hostap/hostap_plx.c 2021-09-23 22:30:53.031233622 +0200 -@@ -30,7 +30,6 @@ - MODULE_AUTHOR("Jouni Malinen"); - MODULE_DESCRIPTION("Support for Intersil Prism2-based 802.11 wireless LAN " - "cards (PLX)."); --MODULE_SUPPORTED_DEVICE("Intersil Prism2-based WLAN cards (PLX)"); - MODULE_LICENSE("GPL"); - - -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/ralink/rt2x00/rt2400pci.c backports-5.10.42-1/drivers/net/wireless/ralink/rt2x00/rt2400pci.c ---- backports-5.10.42-1.anc/drivers/net/wireless/ralink/rt2x00/rt2400pci.c 2021-09-23 22:26:42.927395307 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/ralink/rt2x00/rt2400pci.c 2021-09-23 22:30:53.039233489 +0200 -@@ -1821,7 +1821,6 @@ - MODULE_AUTHOR(DRV_PROJECT); - MODULE_VERSION(DRV_VERSION); - MODULE_DESCRIPTION("Ralink RT2400 PCI & PCMCIA Wireless LAN driver."); --MODULE_SUPPORTED_DEVICE("Ralink RT2460 PCI & PCMCIA chipset based cards"); - MODULE_DEVICE_TABLE(pci, rt2400pci_device_table); - MODULE_LICENSE("GPL"); - -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/ralink/rt2x00/rt2500pci.c backports-5.10.42-1/drivers/net/wireless/ralink/rt2x00/rt2500pci.c ---- backports-5.10.42-1.anc/drivers/net/wireless/ralink/rt2x00/rt2500pci.c 2021-09-23 22:26:42.927395307 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/ralink/rt2x00/rt2500pci.c 2021-09-23 22:30:53.039233489 +0200 -@@ -2119,7 +2119,6 @@ - MODULE_AUTHOR(DRV_PROJECT); - MODULE_VERSION(DRV_VERSION); - MODULE_DESCRIPTION("Ralink RT2500 PCI & PCMCIA Wireless LAN driver."); --MODULE_SUPPORTED_DEVICE("Ralink RT2560 PCI & PCMCIA chipset based cards"); - MODULE_DEVICE_TABLE(pci, rt2500pci_device_table); - MODULE_LICENSE("GPL"); - -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/ralink/rt2x00/rt2500usb.c backports-5.10.42-1/drivers/net/wireless/ralink/rt2x00/rt2500usb.c ---- backports-5.10.42-1.anc/drivers/net/wireless/ralink/rt2x00/rt2500usb.c 2021-09-23 22:26:42.927395307 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/ralink/rt2x00/rt2500usb.c 2021-09-23 22:30:53.039233489 +0200 -@@ -1956,7 +1956,6 @@ - MODULE_AUTHOR(DRV_PROJECT); - MODULE_VERSION(DRV_VERSION); - MODULE_DESCRIPTION("Ralink RT2500 USB Wireless LAN driver."); --MODULE_SUPPORTED_DEVICE("Ralink RT2570 USB chipset based cards"); - MODULE_DEVICE_TABLE(usb, rt2500usb_device_table); - MODULE_LICENSE("GPL"); - -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/ralink/rt2x00/rt2800pci.c backports-5.10.42-1/drivers/net/wireless/ralink/rt2x00/rt2800pci.c ---- backports-5.10.42-1.anc/drivers/net/wireless/ralink/rt2x00/rt2800pci.c 2021-09-23 22:26:42.927395307 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/ralink/rt2x00/rt2800pci.c 2021-09-23 22:30:53.039233489 +0200 -@@ -447,7 +447,6 @@ - MODULE_AUTHOR(DRV_PROJECT); - MODULE_VERSION(DRV_VERSION); - MODULE_DESCRIPTION("Ralink RT2800 PCI & PCMCIA Wireless LAN driver."); --MODULE_SUPPORTED_DEVICE("Ralink RT2860 PCI & PCMCIA chipset based cards"); - MODULE_FIRMWARE(FIRMWARE_RT2860); - MODULE_DEVICE_TABLE(pci, rt2800pci_device_table); - MODULE_LICENSE("GPL"); -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/ralink/rt2x00/rt2800usb.c backports-5.10.42-1/drivers/net/wireless/ralink/rt2x00/rt2800usb.c ---- backports-5.10.42-1.anc/drivers/net/wireless/ralink/rt2x00/rt2800usb.c 2021-09-23 22:26:42.927395307 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/ralink/rt2x00/rt2800usb.c 2021-09-23 22:30:53.039233489 +0200 -@@ -1254,7 +1254,6 @@ - MODULE_AUTHOR(DRV_PROJECT); - MODULE_VERSION(DRV_VERSION); - MODULE_DESCRIPTION("Ralink RT2800 USB Wireless LAN driver."); --MODULE_SUPPORTED_DEVICE("Ralink RT2870 USB chipset based cards"); - MODULE_DEVICE_TABLE(usb, rt2800usb_device_table); - MODULE_FIRMWARE(FIRMWARE_RT2870); - MODULE_LICENSE("GPL"); -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/ralink/rt2x00/rt61pci.c backports-5.10.42-1/drivers/net/wireless/ralink/rt2x00/rt61pci.c ---- backports-5.10.42-1.anc/drivers/net/wireless/ralink/rt2x00/rt61pci.c 2021-09-23 22:26:42.927395307 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/ralink/rt2x00/rt61pci.c 2021-09-23 22:30:53.047233356 +0200 -@@ -2993,7 +2993,5 @@ - MODULE_AUTHOR(DRV_PROJECT); - MODULE_VERSION(DRV_VERSION); - MODULE_DESCRIPTION("Ralink RT61 PCI & PCMCIA Wireless LAN driver."); --MODULE_SUPPORTED_DEVICE("Ralink RT2561, RT2561s & RT2661 " -- "PCI & PCMCIA chipset based cards"); - MODULE_DEVICE_TABLE(pci, rt61pci_device_table); - MODULE_FIRMWARE(FIRMWARE_RT2561); -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/ralink/rt2x00/rt73usb.c backports-5.10.42-1/drivers/net/wireless/ralink/rt2x00/rt73usb.c ---- backports-5.10.42-1.anc/drivers/net/wireless/ralink/rt2x00/rt73usb.c 2021-09-23 22:26:42.927395307 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/ralink/rt2x00/rt73usb.c 2021-09-23 22:30:53.043233423 +0200 -@@ -2513,7 +2513,6 @@ - MODULE_AUTHOR(DRV_PROJECT); - MODULE_VERSION(DRV_VERSION); - MODULE_DESCRIPTION("Ralink RT73 USB Wireless LAN driver."); --MODULE_SUPPORTED_DEVICE("Ralink RT2571W & RT2671 USB chipset based cards"); - MODULE_DEVICE_TABLE(usb, rt73usb_device_table); - MODULE_FIRMWARE(FIRMWARE_RT2571); - MODULE_LICENSE("GPL"); -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/rsi/rsi_91x_main.c backports-5.10.42-1/drivers/net/wireless/rsi/rsi_91x_main.c ---- backports-5.10.42-1.anc/drivers/net/wireless/rsi/rsi_91x_main.c 2021-09-23 22:26:42.935395174 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/rsi/rsi_91x_main.c 2021-09-23 22:30:53.059233156 +0200 -@@ -441,6 +441,5 @@ - module_exit(rsi_91x_hal_module_exit); - MODULE_AUTHOR("Redpine Signals Inc"); - MODULE_DESCRIPTION("Station driver for RSI 91x devices"); --MODULE_SUPPORTED_DEVICE("RSI-91x"); - MODULE_VERSION("0.1"); - MODULE_LICENSE("Dual BSD/GPL"); -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/rsi/rsi_91x_sdio.c backports-5.10.42-1/drivers/net/wireless/rsi/rsi_91x_sdio.c ---- backports-5.10.42-1.anc/drivers/net/wireless/rsi/rsi_91x_sdio.c 2021-09-23 22:26:42.935395174 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/rsi/rsi_91x_sdio.c 2021-09-23 22:30:53.063233090 +0200 -@@ -1571,7 +1571,6 @@ - - MODULE_AUTHOR("Redpine Signals Inc"); - MODULE_DESCRIPTION("Common SDIO layer for RSI drivers"); --MODULE_SUPPORTED_DEVICE("RSI-91x"); - MODULE_DEVICE_TABLE(sdio, rsi_dev_table); - MODULE_FIRMWARE(FIRMWARE_RSI9113); - MODULE_VERSION("0.1"); -diff -aurN backports-5.10.42-1.anc/drivers/net/wireless/rsi/rsi_91x_usb.c backports-5.10.42-1/drivers/net/wireless/rsi/rsi_91x_usb.c ---- backports-5.10.42-1.anc/drivers/net/wireless/rsi/rsi_91x_usb.c 2021-09-23 22:26:42.935395174 +0200 -+++ backports-5.10.42-1/drivers/net/wireless/rsi/rsi_91x_usb.c 2021-09-23 22:30:53.063233090 +0200 -@@ -926,7 +926,6 @@ - - MODULE_AUTHOR("Redpine Signals Inc"); - MODULE_DESCRIPTION("Common USB layer for RSI drivers"); --MODULE_SUPPORTED_DEVICE("RSI-91x"); - MODULE_DEVICE_TABLE(usb, rsi_dev_table); - MODULE_FIRMWARE(FIRMWARE_RSI9113); - MODULE_VERSION("0.1"); diff --git a/root/package/base-files/kernel/mac80211/patches/build/firmware-replace-HOTPLUG-with-UEVENT-in-FW_ACTION-defines.patch b/root/package/base-files/kernel/mac80211/patches/build/firmware-replace-HOTPLUG-with-UEVENT-in-FW_ACTION-defines.patch deleted file mode 100644 index f04b5a0f..00000000 --- a/root/package/base-files/kernel/mac80211/patches/build/firmware-replace-HOTPLUG-with-UEVENT-in-FW_ACTION-defines.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c -index 8509b989940c..5bf15355c2b3 100644 ---- a/drivers/net/wireless/ti/wlcore/main.c -+++ b/drivers/net/wireless/ti/wlcore/main.c -@@ -6784,7 +6784,7 @@ int wlcore_probe(struct wl1271 *wl, struct platform_device *pdev) - - if (pdev_data->family && pdev_data->family->nvs_name) { - nvs_name = pdev_data->family->nvs_name; -- ret = request_firmware_nowait(THIS_MODULE, FW_ACTION_HOTPLUG, -+ ret = request_firmware_nowait(THIS_MODULE, FW_ACTION_UEVENT, - nvs_name, &pdev->dev, GFP_KERNEL, - wl, wlcore_nvs_cb); - if (ret < 0) { diff --git a/root/package/base-files/kernel/mwlwifi/patches/002-remove-fallthrough.patch b/root/package/base-files/kernel/mwlwifi/patches/002-remove-fallthrough.patch deleted file mode 100644 index 051198a1..00000000 --- a/root/package/base-files/kernel/mwlwifi/patches/002-remove-fallthrough.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/mac80211.c 2021-10-20 15:48:58.682784216 +0200 -+++ b/mac80211.c 2021-10-20 15:50:38.921118149 +0200 -@@ -766,8 +766,8 @@ - buf_size, params->ssn, - params->amsdu); - spin_lock_bh(&priv->stream_lock); -- break; - } -+ break; - case IEEE80211_AMPDU_RX_STOP: - if (priv->chip_type == MWL8964) { - struct mwl_ampdu_stream tmp; diff --git a/root/package/base-files/kernel/mwlwifi/patches/003-remove-pcie_dev_name.patch b/root/package/base-files/kernel/mwlwifi/patches/003-remove-pcie_dev_name.patch deleted file mode 100644 index c915e096..00000000 --- a/root/package/base-files/kernel/mwlwifi/patches/003-remove-pcie_dev_name.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- a/hif/pcie/pcie.c 2021-10-20 16:25:17.694566730 +0200 -+++ b/hif/pcie/pcie.c 2021-10-20 16:25:54.349957479 +0200 -@@ -31,7 +31,6 @@ - #include "hif/pcie/rx_ndp.h" - - #define PCIE_DRV_DESC "Marvell Mac80211 Wireless PCIE Network Driver" --#define PCIE_DEV_NAME "Marvell 802.11ac PCIE Adapter" - - #define MAX_WAIT_FW_COMPLETE_ITERATIONS 10000 - #define CHECK_BA_TRAFFIC_TIME 300 /* msec */ -@@ -1641,5 +1640,4 @@ - MODULE_VERSION(PCIE_DRV_VERSION); - MODULE_AUTHOR("Marvell Semiconductor, Inc."); - MODULE_LICENSE("GPL v2"); --MODULE_SUPPORTED_DEVICE(PCIE_DEV_NAME); - MODULE_DEVICE_TABLE(pci, pcie_id_tbl); diff --git a/root/package/base-files/kernel/rtl8812au-ct/Makefile b/root/package/base-files/kernel/rtl8812au-ct/Makefile deleted file mode 100644 index 3ac2f193..00000000 --- a/root/package/base-files/kernel/rtl8812au-ct/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG_NAME:=rtl8812au-ct -PKG_RELEASE=1 - -PKG_LICENSE:=GPLv2 -PKG_LICENSE_FILES:= - -PKG_SOURCE_URL:=https://github.com/greearb/rtl8812AU_8821AU_linux.git -#PKG_MIRROR_HASH:=aee819df4ba83251b59bd1d4f412287b27105e5de9284bb09579f0e1a1538328 -PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2021-09-14 -PKG_SOURCE_VERSION:=39df55967b7de9f6c9600017b724303f95a8b9e2 - -PKG_MAINTAINER:=Ben Greear -PKG_BUILD_PARALLEL:=1 -#PKG_EXTMOD_SUBDIRS:=rtl8812au-ct - -STAMP_CONFIGURED_DEPENDS := $(STAGING_DIR)/usr/include/mac80211-backport/backport/autoconf.h - -include $(INCLUDE_DIR)/kernel.mk -include $(INCLUDE_DIR)/package.mk - -define KernelPackage/rtl8812au-ct - SUBMENU:=Wireless Drivers - TITLE:=Driver for Realtek 8812 AU devices comfast 912-ac, etc - DEPENDS:=+kmod-cfg80211 +kmod-usb-core +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT - FILES:=\ - $(PKG_BUILD_DIR)/rtl8812au.ko - AUTOLOAD:=$(call AutoProbe,rtl8812au) - PROVIDES:=kmod-rtl8812au -endef - -NOSTDINC_FLAGS := \ - $(KERNEL_NOSTDINC_FLAGS) \ - -I$(PKG_BUILD_DIR) \ - -I$(PKG_BUILD_DIR)/include \ - -I$(STAGING_DIR)/usr/include/mac80211-backport \ - -I$(STAGING_DIR)/usr/include/mac80211-backport/uapi \ - -I$(STAGING_DIR)/usr/include/mac80211 \ - -I$(STAGING_DIR)/usr/include/mac80211/uapi \ - -include backport/backport.h - -NOSTDINC_FLAGS+=-DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT -DBUILD_OPENWRT - -define Build/Compile - +$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \ - $(KERNEL_MAKE_FLAGS) \ - M="$(PKG_BUILD_DIR)" \ - NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \ - modules -endef - -$(eval $(call KernelPackage,rtl8812au-ct)) diff --git a/root/package/base-files/network/config/firewall/patches/fullconenat.patch b/root/package/base-files/network/config/firewall/patches/fullconenat.patch deleted file mode 100644 index 825e8c1d..00000000 --- a/root/package/base-files/network/config/firewall/patches/fullconenat.patch +++ /dev/null @@ -1,40 +0,0 @@ ---- a/options.h -+++ b/options.h -@@ -341,6 +341,8 @@ struct fw3_zone - struct list_head masq_src; - struct list_head masq_dest; - -+ bool fullcone; -+ - bool mtu_fix; - - struct list_head cthelpers; ---- a/zones.c -+++ b/zones.c -@@ -77,6 +77,8 @@ const struct fw3_option fw3_zone_opts[] - FW3_LIST("masq_src", network, zone, masq_src), - FW3_LIST("masq_dest", network, zone, masq_dest), - -+ FW3_OPT("fullcone", bool, zone, fullcone), -+ - FW3_OPT("extra", string, zone, extra_src), - FW3_OPT("extra_src", string, zone, extra_src), - FW3_OPT("extra_dest", string, zone, extra_dest), -@@ -709,7 +711,16 @@ print_zone_rule(struct fw3_ipt_handle *h - (mdest = next_addr(mdest, &zone->masq_dest, - handle->family, false)) || first_dest; - first_dest = false) -- { -+ if (zone->fullcone && (access("/usr/lib/iptables/libipt_FULLCONENAT.so", 0) == 0)) { -+ r = fw3_ipt_rule_new(handle); -+ fw3_ipt_rule_src_dest(r, msrc, mdest); -+ fw3_ipt_rule_target(r, "FULLCONENAT"); -+ fw3_ipt_rule_append(r, "zone_%s_postrouting", zone->name); -+ r = fw3_ipt_rule_new(handle); -+ fw3_ipt_rule_src_dest(r, msrc, mdest); -+ fw3_ipt_rule_target(r, "FULLCONENAT"); -+ fw3_ipt_rule_append(r, "zone_%s_prerouting", zone->name); -+ } else { - r = fw3_ipt_rule_new(handle); - fw3_ipt_rule_src_dest(r, msrc, mdest); - fw3_ipt_rule_target(r, "MASQUERADE"); diff --git a/root/package/base-files/network/ipv6/6in4/Makefile b/root/package/base-files/network/ipv6/6in4/Makefile deleted file mode 100644 index d0f2ad30..00000000 --- a/root/package/base-files/network/ipv6/6in4/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# -# Copyright (C) 2010-2015 OpenWrt.org -# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) -# - Added gateway setting -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=6in4 -PKG_VERSION:=270 -PKG_RELEASE:=2 -PKG_LICENSE:=GPL-2.0 - -include $(INCLUDE_DIR)/package.mk - -define Package/6in4 - SECTION:=net - CATEGORY:=Network - DEPENDS:=@IPV6 +kmod-sit +uclient-fetch - TITLE:=IPv6-in-IPv4 configuration support - MAINTAINER:=Jo-Philipp Wich - PKGARCH:=all -endef - -define Package/6in4/description -Provides support for 6in4 tunnels in /etc/config/network. -Refer to http://wiki.openwrt.org/doc/uci/network for -configuration details. -endef - -define Build/Compile -endef - -define Build/Configure -endef - -define Package/6in4/install - $(INSTALL_DIR) $(1)/lib/netifd/proto - $(INSTALL_BIN) ./files/6in4.sh $(1)/lib/netifd/proto/6in4.sh -endef - -$(eval $(call BuildPackage,6in4)) diff --git a/root/package/base-files/network/ipv6/6in4/files/6in4.sh b/root/package/base-files/network/ipv6/6in4/files/6in4.sh deleted file mode 100644 index cf17c86d..00000000 --- a/root/package/base-files/network/ipv6/6in4/files/6in4.sh +++ /dev/null @@ -1,149 +0,0 @@ -#!/bin/sh -# 6in4.sh - IPv6-in-IPv4 tunnel backend -# Copyright (c) 2010-2015 OpenWrt.org - -[ -n "$INCLUDE_ONLY" ] || { - . /lib/functions.sh - . /lib/functions/network.sh - . ../netifd-proto.sh - init_proto "$@" -} - -proto_6in4_update() { - sh -c ' - timeout=5 - - (while [ $((timeout--)) -gt 0 ]; do - sleep 1 - kill -0 $$ || exit 0 - done; kill -9 $$) 2>/dev/null & - - exec "$@" - ' "$1" "$@" -} - -proto_6in4_add_prefix() { - append "$3" "$1" -} - -proto_6in4_setup() { - local cfg="$1" - local iface="$2" - local link="6in4-$cfg" - - local mtu ttl tos ipaddr peeraddr ip6addr ip6prefix ip6prefixes tunlink tunnelid username password updatekey gateway - json_get_vars mtu ttl tos ipaddr peeraddr ip6addr tunlink tunnelid username password updatekey gateway - json_for_each_item proto_6in4_add_prefix ip6prefix ip6prefixes - - [ -z "$peeraddr" ] && { - proto_notify_error "$cfg" "MISSING_ADDRESS" - proto_block_restart "$cfg" - return - } - - [ -n "$tunlink" ] && ( proto_add_host_dependency "$cfg" "$peeraddr" "$tunlink" ) - - [ -z "$ipaddr" ] && { - local wanif="$tunlink" - if [ -z "$wanif" ] && ! network_find_wan wanif; then - proto_notify_error "$cfg" "NO_WAN_LINK" - return - fi - - if ! network_get_ipaddr ipaddr "$wanif"; then - proto_notify_error "$cfg" "NO_WAN_LINK" - return - fi - } - - proto_init_update "$link" 1 - - [ -n "$ip6addr" ] && { - local local6="${ip6addr%%/*}" - local mask6="${ip6addr##*/}" - [[ "$local6" = "$mask6" ]] && mask6= - proto_add_ipv6_address "$local6" "$mask6" - proto_add_ipv6_route "::" 0 "" "" "" "$local6/$mask6" - } - - [ -n "$gateway" ] && { - proto_add_ipv6_route "::" 0 "$gateway" - } - - for ip6prefix in $ip6prefixes; do - proto_add_ipv6_prefix "$ip6prefix" - proto_add_ipv6_route "::" 0 "" "" "" "$ip6prefix" - done - - proto_add_tunnel - json_add_string mode sit - json_add_int mtu "${mtu:-1280}" - json_add_int ttl "${ttl:-64}" - [ -n "$tos" ] && json_add_string tos "$tos" - json_add_string local "$ipaddr" - json_add_string remote "$peeraddr" - [ -n "$tunlink" ] && json_add_string link "$tunlink" - proto_close_tunnel - - proto_send_update "$cfg" - - [ -n "$tunnelid" -a -n "$username" -a \( -n "$password" -o -n "$updatekey" \) ] && { - [ -n "$updatekey" ] && password="$updatekey" - - local http="http" - local urlget="uclient-fetch" - local urlget_opts="-qO-" - local ca_path="${SSL_CERT_DIR:-/etc/ssl/certs}" - - [ -f /lib/libustream-ssl.so ] && http=https - [ "$http" = "https" -a -z "$(find $ca_path -name "*.0" 2>/dev/null)" ] && { - urlget_opts="$urlget_opts --no-check-certificate" - } - - local url="$http://ipv4.tunnelbroker.net/nic/update?hostname=$tunnelid" - local try=0 - local max=3 - - ( - set -o pipefail - while [ $((++try)) -le $max ]; do - if proto_6in4_update $urlget $urlget_opts --user="$username" --password="$password" "$url" 2>&1 | \ - sed -e 's,^Killed$,timeout,' -e "s,^,update $try/$max: ," | \ - logger -t "$link"; - then - logger -t "$link" "updated" - return 0 - fi - sleep 5 - done - logger -t "$link" "update failed" - ) - } -} - -proto_6in4_teardown() { - local cfg="$1" -} - -proto_6in4_init_config() { - no_device=1 - available=1 - - proto_config_add_string "ipaddr" - proto_config_add_string "ip6addr" - proto_config_add_array "ip6prefix" - proto_config_add_string "peeraddr" - proto_config_add_string "tunlink" - proto_config_add_string "tunnelid" - proto_config_add_string "username" - proto_config_add_string "password" - proto_config_add_string "updatekey" - proto_config_add_string "gateway" - proto_config_add_int "mtu" - proto_config_add_int "ttl" - proto_config_add_string "tos" -} - -[ -n "$INCLUDE_ONLY" ] || { - add_protocol 6in4 -} diff --git a/root/package/base-files/network/services/dnsmasq/files/dnsmasq.init b/root/package/base-files/network/services/dnsmasq/files/dnsmasq.init deleted file mode 100644 index ddd19a54..00000000 --- a/root/package/base-files/network/services/dnsmasq/files/dnsmasq.init +++ /dev/null @@ -1,1134 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2007-2012 OpenWrt.org - -START=19 - -USE_PROCD=1 -PROG=/usr/sbin/dnsmasq - -ADD_LOCAL_DOMAIN=1 -ADD_LOCAL_HOSTNAME=1 -ADD_WAN_FQDN=0 -ADD_LOCAL_FQDN="" - -BASECONFIGFILE="/var/etc/dnsmasq.conf" -BASEHOSTFILE="/tmp/hosts/dhcp" -TRUSTANCHORSFILE="/usr/share/dnsmasq/trust-anchors.conf" -TIMEVALIDFILE="/var/state/dnsmasqsec" -BASEDHCPSTAMPFILE="/var/run/dnsmasq" -RFC6761FILE="/usr/share/dnsmasq/rfc6761.conf" -DHCPSCRIPT="/usr/lib/dnsmasq/dhcp-script.sh" - -DNSMASQ_DHCP_VER=4 - -xappend() { - local value="$1" - - echo "${value#--}" >> $CONFIGFILE_TMP -} - -hex_to_hostid() { - local var="$1" - local hex="${2#0x}" # strip optional "0x" prefix - - if [ -n "${hex//[0-9a-fA-F]/}" ]; then - # is invalid hex literal - return 1 - fi - - # convert into host id - export "$var=$( - printf "%0x:%0x" \ - $(((0x$hex >> 16) % 65536)) \ - $(( 0x$hex % 65536)) - )" - - return 0 -} - -dhcp_calc() { - local ip="$1" - local res=0 - - while [ -n "$ip" ]; do - part="${ip%%.*}" - res="$(($res * 256))" - res="$(($res + $part))" - [ "${ip%.*}" != "$ip" ] && ip="${ip#*.}" || ip= - done - echo "$res" -} - -dhcp_check() { - local ifname="$1" - local stamp="${BASEDHCPSTAMPFILE_CFG}.${ifname}.dhcp" - local rv=0 - - [ -s "$stamp" ] && return $(cat "$stamp") - - # If there's no carrier yet, skip this interface. - # The init script will be called again once the link is up - case "$(devstatus "$ifname" | jsonfilter -e @.carrier)" in - false) return 1;; - esac - - udhcpc -n -q -s /bin/true -t 1 -i "$ifname" >&- && rv=1 || rv=0 - - [ $rv -eq 1 ] && \ - logger -t dnsmasq \ - "found already running DHCP-server on interface '$ifname'" \ - "refusing to start, use 'option force 1' to override" - - echo $rv > "$stamp" - return $rv -} - -log_once() { - pidof dnsmasq >/dev/null || \ - logger -t dnsmasq "$@" -} - -has_handler() { - local file - - for file in /etc/hotplug.d/dhcp/* /etc/hotplug.d/tftp/* /etc/hotplug.d/neigh/*; do - [ -f "$file" ] && return 0 - done - - return 1 -} - -append_bool() { - local section="$1" - local option="$2" - local value="$3" - local default="$4" - local _loctmp - [ -z "$default" ] && default="0" - config_get_bool _loctmp "$section" "$option" "$default" - [ $_loctmp -gt 0 ] && xappend "$value" -} - -append_parm() { - local section="$1" - local option="$2" - local switch="$3" - local default="$4" - local _loctmp - config_get _loctmp "$section" "$option" "$default" - [ -z "$_loctmp" ] && return 0 - xappend "$switch=$_loctmp" -} - -append_server() { - xappend "--server=$1" -} - -append_rev_server() { - xappend "--rev-server=$1" -} - -append_address() { - xappend "--address=$1" -} - -append_ipset() { - xappend "--ipset=$1" -} - -append_interface() { - network_get_device ifname "$1" || ifname="$1" - xappend "--interface=$ifname" -} - -append_listenaddress() { - xappend "--listen-address=$1" -} - -append_notinterface() { - network_get_device ifname "$1" || ifname="$1" - xappend "--except-interface=$ifname" -} - -append_addnhosts() { - xappend "--addn-hosts=$1" -} - -append_bogusnxdomain() { - xappend "--bogus-nxdomain=$1" -} - -append_pxe_service() { - xappend "--pxe-service=$1" -} - -append_interface_name() { - xappend "--interface-name=$1,$2" -} - -filter_dnsmasq() { - local cfg="$1" func="$2" match_cfg="$3" found_cfg - - # use entry when no instance entry set, or if it matches - config_get found_cfg "$cfg" "instance" - if [ -z "$found_cfg" -o "$found_cfg" = "$match_cfg" ]; then - $func $cfg - fi -} - -dhcp_subscrid_add() { - local cfg="$1" - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || return 0 - - config_get subscriberid "$cfg" subscriberid - [ -n "$subscriberid" ] || return 0 - - xappend "--dhcp-subscrid=$networkid,$subscriberid" - - config_get_bool force "$cfg" force 0 - - dhcp_option_add "$cfg" "$networkid" "$force" -} - -dhcp_remoteid_add() { - local cfg="$1" - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || return 0 - - config_get remoteid "$cfg" remoteid - [ -n "$remoteid" ] || return 0 - - xappend "--dhcp-remoteid=$networkid,$remoteid" - - config_get_bool force "$cfg" force 0 - - dhcp_option_add "$cfg" "$networkid" "$force" -} - -dhcp_circuitid_add() { - # TODO: DHCPV6 does not have circuitid; catch "option6:" - local cfg="$1" - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || return 0 - - config_get circuitid "$cfg" circuitid - [ -n "$circuitid" ] || return 0 - - xappend "--dhcp-circuitid=$networkid,$circuitid" - - config_get_bool force "$cfg" force 0 - - dhcp_option_add "$cfg" "$networkid" "$force" -} - -dhcp_userclass_add() { - local cfg="$1" - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || return 0 - - config_get userclass "$cfg" userclass - [ -n "$userclass" ] || return 0 - - xappend "--dhcp-userclass=$networkid,$userclass" - - config_get_bool force "$cfg" force 0 - - dhcp_option_add "$cfg" "$networkid" "$force" -} - -dhcp_vendorclass_add() { - # TODO: DHCPV6 vendor class has stricter definitions; catch? fixup? - local cfg="$1" - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || return 0 - - config_get vendorclass "$cfg" vendorclass - [ -n "$vendorclass" ] || return 0 - - xappend "--dhcp-vendorclass=$networkid,$vendorclass" - - config_get_bool force "$cfg" force 0 - - dhcp_option_add "$cfg" "$networkid" "$force" -} - -dhcp_match_add() { - local cfg="$1" - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || return 0 - - config_get match "$cfg" match - [ -n "$match" ] || return 0 - - xappend "--dhcp-match=$networkid,$match" - - config_get_bool force "$cfg" force 0 - - dhcp_option_add "$cfg" "$networkid" "$force" -} - -dhcp_host_add() { - local cfg="$1" - local hosttag nametime addrs duids macs tags - - config_get_bool force "$cfg" force 0 - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] && dhcp_option_add "$cfg" "$networkid" "$force" - - config_get_bool enable "$cfg" enable 1 - [ "$enable" = "0" ] && return 0 - - config_get name "$cfg" name - config_get ip "$cfg" ip - config_get hostid "$cfg" hostid - - [ -n "$ip" -o -n "$name" -o -n "$hostid" ] || return 0 - - config_get_bool dns "$cfg" dns 0 - [ "$dns" = "1" -a -n "$ip" -a -n "$name" ] && { - echo "$ip $name${DOMAIN:+.$DOMAIN}" >> $HOSTFILE_TMP - } - - config_get mac "$cfg" mac - config_get duid "$cfg" duid - config_get tag "$cfg" tag - config_get gw "$cfg" gw - - if [ -n "$mac" ]; then - # --dhcp-host=00:20:e0:3b:13:af,192.168.0.199,lap - # many MAC are possible to track a laptop ON/OFF dock - for m in $mac; do append macs "$m" ","; done - fi - - if [ $DNSMASQ_DHCP_VER -eq 6 -a -n "$duid" ]; then - # --dhcp-host=id:00:03:00:01:12:00:00:01:02:03,[::beef],lap - # one (virtual) machine gets one DUID per RFC3315 - duids="id:${duid// */}" - fi - - if [ -z "$macs" -a -z "$duids" ]; then - # --dhcp-host=lap,192.168.0.199,[::beef] - [ -n "$name" ] || return 0 - macs="$name" - name="" - fi - - if [ -n "$hostid" ]; then - hex_to_hostid hostid "$hostid" - fi - - if [ -n "$tag" ]; then - for t in $tag; do append tags "$t" ",set:"; done - fi - - if [ -n "$gw" ]; then - append tags "$cfg" ",set:" - fi - - config_get_bool broadcast "$cfg" broadcast 0 - config_get leasetime "$cfg" leasetime - - [ "$broadcast" = "0" ] && broadcast= || broadcast=",set:needs-broadcast" - - hosttag="${networkid:+,set:${networkid}}${tags:+,set:${tags}}$broadcast" - nametime="${name:+,$name}${leasetime:+,$leasetime}" - - if [ $DNSMASQ_DHCP_VER -eq 6 ]; then - addrs="${ip:+,$ip}${hostid:+,[::$hostid]}" - xappend "--dhcp-host=$macs${duids:+,$duids}$hosttag$addrs$nametime" - else - xappend "--dhcp-host=$macs$hosttag${ip:+,$ip}$nametime" - fi - if [ -n "$gw" ]; then - xappend "--dhcp-option=tag:$cfg,option:router,$gw" - fi -} - -dhcp_this_host_add() { - local net="$1" - local ifname="$2" - local mode="$3" - local routerstub routername ifdashname - local lanaddr lanaddr6 lanaddrs6 ulaprefix - - if [ "$mode" -gt 0 ] ; then - ifdashname="${ifname//./-}" - routerstub="$( md5sum /etc/os-release )" - routerstub="router-${routerstub// */}" - routername="$( uci_get system @system[0] hostname $routerstub )" - - if [ "$mode" -gt 1 ] ; then - if [ "$mode" -gt 2 ] ; then - if [ "$mode" -gt 3 ] ; then - append_interface_name "$ifdashname.$routername.$DOMAIN" "$ifname" - fi - - append_interface_name "$routername.$DOMAIN" "$ifname" - fi - - # All IP addresses discovered by dnsmasq will be labeled (except fe80::) - append_interface_name "$routername" "$ifname" - - else - # This uses a static host file entry for only limited addresses. - # Use dnsmasq option "--expandhosts" to enable FQDN on host files. - ulaprefix="$(uci_get network @globals[0] ula_prefix)" - network_get_ipaddr lanaddr "$net" - network_get_ipaddrs6 lanaddrs6 "$net" - - if [ -n "$lanaddr" ] ; then - dhcp_domain_add "" "$routername" "$lanaddr" - fi - - if [ -n "$ulaprefix" -a -n "$lanaddrs6" ] ; then - for lanaddr6 in $lanaddrs6 ; do - case "$lanaddr6" in - "${ulaprefix%%:/*}"*) - dhcp_domain_add "" "$routername" "$lanaddr6" - ;; - esac - done - fi - fi - fi -} - -dhcp_tag_add() { - # NOTE: dnsmasq has explicit "option6:" prefix for DHCPv6 so no collisions - local cfg="$1" - - tag="$cfg" - - [ -n "$tag" ] || return 0 - - config_get_bool force "$cfg" force 0 - [ "$force" = "0" ] && force= - - config_get option "$cfg" dhcp_option - for o in $option; do - xappend "--dhcp-option${force:+-force}=tag:$tag,$o" - done -} - -dhcp_mac_add() { - local cfg="$1" - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || return 0 - - config_get mac "$cfg" mac - [ -n "$mac" ] || return 0 - - xappend "--dhcp-mac=$networkid,$mac" - - dhcp_option_add "$cfg" "$networkid" -} - -dhcp_boot_add() { - # TODO: BOOTURL is different between DHCPv4 and DHCPv6 - local cfg="$1" - - config_get networkid "$cfg" networkid - - config_get filename "$cfg" filename - [ -n "$filename" ] || return 0 - - config_get servername "$cfg" servername - config_get serveraddress "$cfg" serveraddress - - [ -n "$serveraddress" -a ! -n "$servername" ] && return 0 - - xappend "--dhcp-boot=${networkid:+net:$networkid,}${filename}${servername:+,$servername}${serveraddress:+,$serveraddress}" - - config_get_bool force "$cfg" force 0 - - dhcp_option_add "$cfg" "$networkid" "$force" -} - - -dhcp_add() { - local cfg="$1" - local dhcp6range="::" - local nettag - local tags - - config_get net "$cfg" interface - [ -n "$net" ] || return 0 - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || networkid="$net" - - network_get_device ifname "$net" || return 0 - - [ "$cachelocal" = "0" ] && network_get_dnsserver dnsserver "$net" && { - DNS_SERVERS="$DNS_SERVERS $dnsserver" - } - - append_bool "$cfg" ignore "--no-dhcp-interface=$ifname" && { - # Many ISP do not have useful names for DHCP customers (your WAN). - dhcp_this_host_add "$net" "$ifname" "$ADD_WAN_FQDN" - return 0 - } - - network_get_subnet subnet "$net" || return 0 - network_get_protocol proto "$net" || return 0 - - # Do not support non-static interfaces for now - [ static = "$proto" ] || return 0 - - # Override interface netmask with dhcp config if applicable - config_get netmask "$cfg" netmask "${subnet##*/}" - - #check for an already active dhcp server on the interface, unless 'force' is set - config_get_bool force "$cfg" force 0 - [ $force -gt 0 ] || dhcp_check "$ifname" || return 0 - - config_get start "$cfg" start 100 - config_get limit "$cfg" limit 150 - config_get leasetime "$cfg" leasetime 12h - config_get options "$cfg" options - config_get_bool dynamicdhcp "$cfg" dynamicdhcp 1 - - config_get dhcpv4 "$cfg" dhcpv4 - config_get dhcpv6 "$cfg" dhcpv6 - - config_get ra "$cfg" ra - config_get ra_management "$cfg" ra_management - config_get ra_preference "$cfg" ra_preference - config_get dns "$cfg" dns - - config_list_foreach "$cfg" "interface_name" append_interface_name "$ifname" - - # Put the router host name on this DHCP served interface address(es) - dhcp_this_host_add "$net" "$ifname" "$ADD_LOCAL_FQDN" - - start="$( dhcp_calc "$start" )" - - add_tag() { - tags="${tags}tag:$1," - } - config_list_foreach "$cfg" tag add_tag - - nettag="${networkid:+set:${networkid},}" - - if [ "$limit" -gt 0 ] ; then - limit=$((limit-1)) - fi - - eval "$(ipcalc.sh "${subnet%%/*}" $netmask $start $limit)" - - if [ "$dynamicdhcp" = "0" ] ; then - END="static" - dhcp6range="::,static" - else - dhcp6range="::1000,::ffff" - fi - - - if [ "$dhcpv4" != "disabled" ] ; then - xappend "--dhcp-range=$tags$nettag$START,$END,$NETMASK,$leasetime${options:+ $options}" - fi - - - if [ $DNSMASQ_DHCP_VER -eq 6 -a "$ra" = "server" ] ; then - # Note: dnsmasq cannot just be a DHCPv6 server (all-in-1) - # and let some other machine(s) send RA pointing to it. - - case $ra_preference in - *high*) - xappend "--ra-param=$ifname,high,0,7200" - ;; - *low*) - xappend "--ra-param=$ifname,low,0,7200" - ;; - *) - # Send UNSOLICITED RA at default interval and live for 2 hours. - # TODO: convert flexible lease time into route life time (only seconds). - xappend "--ra-param=$ifname,0,7200" - ;; - esac - - if [ "$dhcpv6" = "disabled" ] ; then - ra_management="3" - fi - - - case $ra_management in - 0) - # SLACC with DCHP for extended options - xappend "--dhcp-range=$nettag::,constructor:$ifname,ra-stateless,ra-names" - ;; - 2) - # DHCP address and RA only for management redirection - xappend "--dhcp-range=$nettag$dhcp6range,constructor:$ifname,$leasetime" - ;; - 3) - # SLAAC only but dnsmasq attempts to link HOSTNAME, DHCPv4 MAC, and SLAAC - xappend "--dhcp-range=$nettag::,constructor:$ifname,ra-only,ra-names" - ;; - *) - # SLAAC and full DHCP - xappend "--dhcp-range=$nettag$dhcp6range,constructor:$ifname,slaac,ra-names,$leasetime" - ;; - esac - - if [ -n "$dns" ]; then - dnss="" - for d in $dns; do append dnss "[$d]" ","; done - else - dnss="[::]" - fi - - dhcp_option_append "option6:dns-server,$dnss" "$networkid" - fi - - dhcp_option_add "$cfg" "$networkid" 0 - dhcp_option_add "$cfg" "$networkid" 2 -} - -dhcp_option_append() { - local option="$1" - local networkid="$2" - local force="$3" - - xappend "--dhcp-option${force:+-force}=${networkid:+$networkid,}$option" -} - -dhcp_option_add() { - # NOTE: dnsmasq has explicit "option6:" prefix for DHCPv6 so no collisions - local cfg="$1" - local networkid="$2" - local force="$3" - local opt="dhcp_option" - - [ "$force" = "0" ] && force= - [ "$force" = "2" ] && opt="dhcp_option_force" - - local list_len - config_get list_len "$cfg" "${opt}_LENGTH" - - if [ -n "$list_len" ]; then - config_list_foreach "$cfg" "$opt" dhcp_option_append "$networkid" "$force" - else - config_get dhcp_option "$cfg" "$opt" - - [ -n "$dhcp_option" ] && echo "Warning: the 'option $opt' syntax is deprecated, use 'list $opt'" >&2 - - local option - for option in $dhcp_option; do - dhcp_option_append "$option" "$networkid" "$force" - done - fi -} - -dhcp_domain_add() { - local cfg="$1" - local ip name names record - - config_get names "$cfg" name "$2" - [ -n "$names" ] || return 0 - - config_get ip "$cfg" ip "$3" - [ -n "$ip" ] || return 0 - - for name in $names; do - record="${record:+$record }$name" - done - - echo "$ip $record" >> $HOSTFILE_TMP -} - -dhcp_srv_add() { - local cfg="$1" - - config_get srv "$cfg" srv - [ -n "$srv" ] || return 0 - - config_get target "$cfg" target - [ -n "$target" ] || return 0 - - config_get port "$cfg" port - [ -n "$port" ] || return 0 - - config_get class "$cfg" class - config_get weight "$cfg" weight - - local service="$srv,$target,$port${class:+,$class${weight:+,$weight}}" - - xappend "--srv-host=$service" -} - -dhcp_mx_add() { - local cfg="$1" - local domain relay pref - - config_get domain "$cfg" domain - [ -n "$domain" ] || return 0 - - config_get relay "$cfg" relay - [ -n "$relay" ] || return 0 - - config_get pref "$cfg" pref 0 - - local service="$domain,$relay,$pref" - - xappend "--mx-host=$service" -} - -dhcp_cname_add() { - local cfg="$1" - local cname target - - config_get cname "$cfg" cname - [ -n "$cname" ] || return 0 - - config_get target "$cfg" target - [ -n "$target" ] || return 0 - - xappend "--cname=${cname},${target}" -} - -dhcp_hostrecord_add() { - local cfg="$1" - local names addresses record val - - config_get names "$cfg" name "$2" - if [ -z "$names" ]; then - return 0 - fi - - config_get addresses "$cfg" ip "$3" - if [ -z "$addresses" ]; then - return 0 - fi - - for val in $names $addresses; do - record="${record:+$record,}$val" - done - - xappend "--host-record=$record" -} - -dhcp_relay_add() { - local cfg="$1" - local local_addr server_addr interface - - config_get local_addr "$cfg" local_addr - [ -n "$local_addr" ] || return 0 - - config_get server_addr "$cfg" server_addr - [ -n "$server_addr" ] || return 0 - - config_get interface "$cfg" interface - if [ -z "$interface" ]; then - xappend "--dhcp-relay=$local_addr,$server_addr" - else - network_get_device ifname "$interface" || return - xappend "--dhcp-relay=$local_addr,$server_addr,$ifname" - fi -} - -dnsmasq_start() -{ - local cfg="$1" disabled resolvfile user_dhcpscript - - config_get_bool disabled "$cfg" disabled 0 - [ "$disabled" -gt 0 ] && return 0 - - # reset list of DOMAINS and DNS servers (for each dnsmasq instance) - DNS_SERVERS="" - DOMAIN="" - CONFIGFILE="${BASECONFIGFILE}.${cfg}" - CONFIGFILE_TMP="${CONFIGFILE}.$$" - HOSTFILE="${BASEHOSTFILE}.${cfg}" - HOSTFILE_TMP="${HOSTFILE}.$$" - BASEDHCPSTAMPFILE_CFG="${BASEDHCPSTAMPFILE}.${cfg}" - - # before we can call xappend - mkdir -p /var/run/dnsmasq/ - mkdir -p $(dirname $CONFIGFILE) - mkdir -p $(dirname $HOSTFILE) - mkdir -p /var/lib/misc - chown dnsmasq:dnsmasq /var/run/dnsmasq - - echo "# auto-generated config file from /etc/config/dhcp" > $CONFIGFILE_TMP - echo "# auto-generated config file from /etc/config/dhcp" > $HOSTFILE_TMP - - local dnsmasqconffile="/etc/dnsmasq.${cfg}.conf" - if [ ! -r "$dnsmasqconffile" ]; then - dnsmasqconffile=/etc/dnsmasq.conf - fi - - # if we did this last, we could override auto-generated config - [ -f "${dnsmasqconffile}" ] && { - xappend "--conf-file=${dnsmasqconffile}" - } - - $PROG --version | grep -osqE "^Compile time options:.* DHCPv6( |$)" && DHCPv6CAPABLE=1 || DHCPv6CAPABLE=0 - - - if [ -x /usr/sbin/odhcpd -a -x /etc/init.d/odhcpd ] ; then - local odhcpd_is_main odhcpd_is_enabled - config_get odhcpd_is_main odhcpd maindhcp 0 - /etc/init.d/odhcpd enabled && odhcpd_is_enabled=1 || odhcpd_is_enabled=0 - - - if [ "$odhcpd_is_enabled" -eq 0 -a "$DHCPv6CAPABLE" -eq 1 ] ; then - # DHCP V4 and V6 in DNSMASQ - DNSMASQ_DHCP_VER=6 - elif [ "$odhcpd_is_main" -gt 0 ] ; then - # ODHCPD is doing it all - DNSMASQ_DHCP_VER=0 - else - # You have ODHCPD but use DNSMASQ for DHCPV4 - DNSMASQ_DHCP_VER=4 - fi - - elif [ "$DHCPv6CAPABLE" -eq 1 ] ; then - # DHCP V4 and V6 in DNSMASQ - DNSMASQ_DHCP_VER=6 - else - DNSMASQ_DHCP_VER=4 - fi - - # Allow DHCP/DHCPv6 to be handled by ISC DHCPD - if [ -x /usr/sbin/dhcpd ] ; then - if [ -x /etc/init.d/dhcpd ] ; then - /etc/init.d/dhcpd enabled && DNSMASQ_DHCP_VER=0 - fi - if [ -x /etc/init.d/dhcpd6 -a "$DNSMASQ_DHCP_VER" -gt 0 ] ; then - /etc/init.d/dhcpd6 enabled && DNSMASQ_DHCP_VER=4 - fi - fi - - append_bool "$cfg" authoritative "--dhcp-authoritative" - append_bool "$cfg" nodaemon "--no-daemon" - append_bool "$cfg" domainneeded "--domain-needed" - append_bool "$cfg" filterwin2k "--filterwin2k" - append_bool "$cfg" nohosts "--no-hosts" - append_bool "$cfg" nonegcache "--no-negcache" - append_bool "$cfg" strictorder "--strict-order" - append_bool "$cfg" logqueries "--log-queries=extra" - append_bool "$cfg" noresolv "--no-resolv" - append_bool "$cfg" localise_queries "--localise-queries" - append_bool "$cfg" readethers "--read-ethers" - append_bool "$cfg" dbus "--enable-dbus" - append_bool "$cfg" expandhosts "--expand-hosts" - config_get tftp_root "$cfg" "tftp_root" - [ -n "$tftp_root" ] && mkdir -p "$tftp_root" && append_bool "$cfg" enable_tftp "--enable-tftp" - append_bool "$cfg" tftp_no_fail "--tftp-no-fail" - append_bool "$cfg" nonwildcard "--bind-dynamic" 1 - append_bool "$cfg" fqdn "--dhcp-fqdn" - append_bool "$cfg" proxydnssec "--proxy-dnssec" - append_bool "$cfg" localservice "--local-service" - append_bool "$cfg" logdhcp "--log-dhcp" - append_bool "$cfg" quietdhcp "--quiet-dhcp" - append_bool "$cfg" sequential_ip "--dhcp-sequential-ip" - append_bool "$cfg" allservers "--all-servers" - append_bool "$cfg" noping "--no-ping" - - append_parm "$cfg" logfacility "--log-facility" - - append_parm "$cfg" cachesize "--cache-size" - append_parm "$cfg" dnsforwardmax "--dns-forward-max" - append_parm "$cfg" port "--port" - append_parm "$cfg" ednspacket_max "--edns-packet-max" - append_parm "$cfg" dhcpleasemax "--dhcp-lease-max" - append_parm "$cfg" "queryport" "--query-port" - append_parm "$cfg" "minport" "--min-port" - append_parm "$cfg" "maxport" "--max-port" - append_parm "$cfg" "domain" "--domain" - append_parm "$cfg" "local" "--server" - config_list_foreach "$cfg" "listen_address" append_listenaddress - config_list_foreach "$cfg" "server" append_server - config_list_foreach "$cfg" "rev_server" append_rev_server - config_list_foreach "$cfg" "address" append_address - config_list_foreach "$cfg" "ipset" append_ipset - [ -n "$BOOT" ] || { - config_list_foreach "$cfg" "interface" append_interface - config_list_foreach "$cfg" "notinterface" append_notinterface - } - config_list_foreach "$cfg" "addnhosts" append_addnhosts - config_list_foreach "$cfg" "bogusnxdomain" append_bogusnxdomain - append_parm "$cfg" "leasefile" "--dhcp-leasefile" "/tmp/dhcp.leases" - append_parm "$cfg" "serversfile" "--servers-file" - append_parm "$cfg" "tftp_root" "--tftp-root" - append_parm "$cfg" "dhcp_boot" "--dhcp-boot" - append_parm "$cfg" "local_ttl" "--local-ttl" - append_parm "$cfg" "pxe_prompt" "--pxe-prompt" - config_list_foreach "$cfg" "pxe_service" append_pxe_service - config_get DOMAIN "$cfg" domain - - config_get_bool ADD_LOCAL_DOMAIN "$cfg" add_local_domain 1 - config_get_bool ADD_LOCAL_HOSTNAME "$cfg" add_local_hostname 1 - config_get ADD_LOCAL_FQDN "$cfg" add_local_fqdn "" - config_get ADD_WAN_FQDN "$cfg" add_wan_fqdn 0 - - if [ -z "$ADD_LOCAL_FQDN" ] ; then - # maintain support for previous UCI - ADD_LOCAL_FQDN="$ADD_LOCAL_HOSTNAME" - fi - - config_get_bool readethers "$cfg" readethers - [ "$readethers" = "1" -a \! -e "/etc/ethers" ] && touch /etc/ethers - - config_get user_dhcpscript $cfg dhcpscript - if has_handler || [ -n "$user_dhcpscript" ]; then - xappend "--dhcp-script=$DHCPSCRIPT" - fi - - config_get leasefile $cfg leasefile "/tmp/dhcp.leases" - [ -n "$leasefile" -a \! -e "$leasefile" ] && touch "$leasefile" - config_get_bool cachelocal "$cfg" cachelocal 1 - - config_get_bool noresolv "$cfg" noresolv 0 - if [ "$noresolv" != "1" ]; then - config_get resolvfile "$cfg" resolvfile "/tmp/resolv.conf.auto" - # So jail doesn't complain if file missing - [ -n "$resolvfile" -a \! -e "$resolvfile" ] && touch "$resolvfile" - fi - - [ -n "$resolvfile" ] && xappend "--resolv-file=$resolvfile" - - config_get hostsfile "$cfg" dhcphostsfile - [ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile" - - local rebind - config_get_bool rebind "$cfg" rebind_protection 1 - [ $rebind -gt 0 ] && { - log_once \ - "DNS rebinding protection is active," \ - "will discard upstream RFC1918 responses!" - xappend "--stop-dns-rebind" - - local rebind_localhost - config_get_bool rebind_localhost "$cfg" rebind_localhost 0 - [ $rebind_localhost -gt 0 ] && { - log_once "Allowing 127.0.0.0/8 responses" - xappend "--rebind-localhost-ok" - } - - append_rebind_domain() { - log_once "Allowing RFC1918 responses for domain $1" - xappend "--rebind-domain-ok=$1" - } - - config_list_foreach "$cfg" rebind_domain append_rebind_domain - } - - config_get_bool dnssec "$cfg" dnssec 0 - [ "$dnssec" -gt 0 ] && { - xappend "--conf-file=$TRUSTANCHORSFILE" - xappend "--dnssec" - [ -x /etc/init.d/sysntpd ] && { - /etc/init.d/sysntpd enabled - [ "$?" -ne 0 -o "$(uci_get system.ntp.enabled)" = "1" ] && { - [ -f "$TIMEVALIDFILE" ] || xappend "--dnssec-no-timecheck" - } - } - append_bool "$cfg" dnsseccheckunsigned "--dnssec-check-unsigned" - } - - config_get addmac "$cfg" addmac 0 - [ "$addmac" != "0" ] && { - [ "$addmac" = "1" ] && addmac= - xappend "--add-mac${addmac:+="$addmac"}" - } - - dhcp_option_add "$cfg" "" 0 - dhcp_option_add "$cfg" "" 2 - - xappend "--dhcp-broadcast=tag:needs-broadcast" - - xappend "--addn-hosts=$(dirname $HOSTFILE)" - - config_get dnsmasqconfdir "$cfg" confdir "/tmp/dnsmasq.d" - xappend "--conf-dir=$dnsmasqconfdir" - dnsmasqconfdir="${dnsmasqconfdir%%,*}" - [ ! -d "$dnsmasqconfdir" ] && mkdir -p $dnsmasqconfdir - xappend "--user=dnsmasq" - xappend "--group=dnsmasq" - echo >> $CONFIGFILE_TMP - - config_get_bool enable_tftp "$cfg" enable_tftp 0 - [ "$enable_tftp" -gt 0 ] && { - config_get tftp_root "$cfg" tftp_root - append EXTRA_MOUNT $tftp_root - } - - config_foreach filter_dnsmasq host dhcp_host_add "$cfg" - echo >> $CONFIGFILE_TMP - config_foreach filter_dnsmasq boot dhcp_boot_add "$cfg" - config_foreach filter_dnsmasq mac dhcp_mac_add "$cfg" - config_foreach filter_dnsmasq tag dhcp_tag_add "$cfg" - config_foreach filter_dnsmasq vendorclass dhcp_vendorclass_add "$cfg" - config_foreach filter_dnsmasq userclass dhcp_userclass_add "$cfg" - config_foreach filter_dnsmasq circuitid dhcp_circuitid_add "$cfg" - config_foreach filter_dnsmasq remoteid dhcp_remoteid_add "$cfg" - config_foreach filter_dnsmasq subscrid dhcp_subscrid_add "$cfg" - config_foreach filter_dnsmasq match dhcp_match_add "$cfg" - config_foreach filter_dnsmasq domain dhcp_domain_add "$cfg" - config_foreach filter_dnsmasq hostrecord dhcp_hostrecord_add "$cfg" - [ -n "$BOOT" ] || config_foreach filter_dnsmasq relay dhcp_relay_add "$cfg" - - echo >> $CONFIGFILE_TMP - config_foreach filter_dnsmasq srvhost dhcp_srv_add "$cfg" - config_foreach filter_dnsmasq mxhost dhcp_mx_add "$cfg" - echo >> $CONFIGFILE_TMP - - config_get_bool boguspriv "$cfg" boguspriv 1 - [ "$boguspriv" -gt 0 ] && { - xappend "--bogus-priv" - [ -r "$RFC6761FILE" ] && xappend "--conf-file=$RFC6761FILE" - } - - if [ "$DNSMASQ_DHCP_VER" -gt 4 ] ; then - # Enable RA feature for when/if it is constructed, - # and RA is selected per interface pool (RA, DHCP, or both), - # but no one (should) want RA broadcast in syslog - [ -n "$BOOT" ] || config_foreach filter_dnsmasq dhcp dhcp_add "$cfg" - xappend "--enable-ra" - xappend "--quiet-ra" - append_bool "$cfg" quietdhcp "--quiet-dhcp6" - - elif [ "$DNSMASQ_DHCP_VER" -gt 0 ] ; then - [ -n "$BOOT" ] || config_foreach filter_dnsmasq dhcp dhcp_add "$cfg" - fi - - - echo >> $CONFIGFILE_TMP - config_foreach filter_dnsmasq cname dhcp_cname_add "$cfg" - echo >> $CONFIGFILE_TMP - - echo >> $CONFIGFILE_TMP - mv -f $CONFIGFILE_TMP $CONFIGFILE - mv -f $HOSTFILE_TMP $HOSTFILE - - [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && { - rm -f /tmp/resolv.conf - [ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && { - echo "search $DOMAIN" >> /tmp/resolv.conf - } - DNS_SERVERS="$DNS_SERVERS 127.0.0.1" - for DNS_SERVER in $DNS_SERVERS ; do - echo "nameserver $DNS_SERVER" >> /tmp/resolv.conf - done - } - - procd_open_instance $cfg - procd_set_param command $PROG -C $CONFIGFILE -k -x /var/run/dnsmasq/dnsmasq."${cfg}".pid - procd_set_param file $CONFIGFILE - [ -n "$user_dhcpscript" ] && procd_set_param env USER_DHCPSCRIPT="$user_dhcpscript" - procd_set_param respawn - - procd_add_jail dnsmasq ubus log - procd_add_jail_mount $CONFIGFILE $TRUSTANCHORSFILE $HOSTFILE $RFC6761FILE /etc/passwd /etc/group /etc/TZ /dev/null /dev/urandom $dnsmasqconffile $dnsmasqconfdir $resolvfile $user_dhcpscript /etc/hosts /etc/ethers /sbin/hotplug-call $EXTRA_MOUNT $DHCPSCRIPT - procd_add_jail_mount_rw /var/run/dnsmasq/ $leasefile - - procd_close_instance -} - -dnsmasq_stop() -{ - local cfg="$1" resolvfile - - config_get resolvfile "$cfg" "resolvfile" - - #relink /tmp/resolve.conf only for main instance - [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && { - [ -f /tmp/resolv.conf ] && { - rm -f /tmp/resolv.conf - ln -s "$resolvfile" /tmp/resolv.conf - } - } - - rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp -} - -add_interface_trigger() -{ - local interface ignore - - config_get interface "$1" interface - config_get_bool ignore "$1" ignore 0 - - [ -n "$interface" -a $ignore -eq 0 ] && procd_add_interface_trigger "interface.*" "$interface" /etc/init.d/dnsmasq reload -} - -service_triggers() -{ - procd_add_reload_trigger "dhcp" "system" - - config_load dhcp - config_foreach add_interface_trigger dhcp - config_foreach add_interface_trigger relay -} - -boot() -{ - BOOT=1 - start "$@" -} - -start_service() { - local instance="$1" - local instance_found=0 - - . /lib/functions/network.sh - - config_cb() { - local type="$1" - local name="$2" - if [ "$type" = "dnsmasq" ]; then - if [ -n "$instance" -a "$instance" = "$name" ]; then - instance_found=1 - fi - fi - } - - config_load dhcp - - if [ -n "$instance" ]; then - [ "$instance_found" -gt 0 ] || return - dnsmasq_start "$instance" - else - config_foreach dnsmasq_start dnsmasq - fi -} - -reload_service() { - rc_procd start_service "$@" - procd_send_signal dnsmasq "$@" -} - -stop_service() { - local instance="$1" - local instance_found=0 - - config_cb() { - local type="$1" - local name="$2" - if [ "$type" = "dnsmasq" ]; then - if [ -n "$instance" -a "$instance" = "$name" ]; then - instance_found=1 - fi - fi - } - - config_load dhcp - - if [ -n "$instance" ]; then - [ "$instance_found" -gt 0 ] || return - dnsmasq_stop "$instance" - else - config_foreach dnsmasq_stop dnsmasq - fi -} diff --git a/root/package/base-files/utils/wmt/Makefile b/root/package/base-files/utils/wmt/Makefile deleted file mode 100644 index dffd032e..00000000 --- a/root/package/base-files/utils/wmt/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# -# Copyright (C) 2009 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=wmt -PKG_VERSION:=1.0.0 -PKG_RELEASE:=1 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/abbradar/wmt -PKG_SOURCE_VERSION:=2127e23dd94df960b12f3ffff806bcf41ebbf4b8 -PKG_MAINTAINER:=Nikolay Amiantov - -PKG_BUILD_PARALLEL:=1 - -include $(INCLUDE_DIR)/package.mk - -define Package/$(PKG_NAME) - SECTION:=utils - CATEGORY:=Utilities - TITLE:=wmt utility for MT6625L - DEPENDS:=kmod-mt6625l-wlan-gen2 - MAINTAINER:=Jinkai li -endef - -define Package/$(PKG_NAME)/description - Utility for loading MT6625L firmware. -endef - -define Package/$(PKG_NAME)/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/stp_uart_launcher $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_BUILD_DIR)/wmt_loader $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_BUILD_DIR)/wmt_loopback $(1)/usr/bin/ - $(INSTALL_DIR) $(1)/system/etc/firmware - $(INSTALL_DATA) $(PKG_BUILD_DIR)/config/WMT_SOC.cfg $(1)/system/etc/firmware - $(INSTALL_DATA) $(PKG_BUILD_DIR)/config/WMT_SOC.cfg $(1)/system/etc/firmware/WMT.cfg - $(INSTALL_DIR) $(1)/etc/firmware - $(CP) -r $(PKG_BUILD_DIR)/firmware/* $(1)/etc/firmware/ - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) ./files/wmt.init $(1)/etc/init.d/wmt - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_BIN) ./files/wmt.defaults $(1)/etc/uci-defaults/8803-wmt -endef - -$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/root/package/base-files/utils/wmt/files/wmt.defaults b/root/package/base-files/utils/wmt/files/wmt.defaults deleted file mode 100644 index ff619a29..00000000 --- a/root/package/base-files/utils/wmt/files/wmt.defaults +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -if [ -z "$(uci -q get ucitrack.@wmt[0])" ]; then - uci -q batch <<-EOF - set ucitrack.@wmt[-1]=wmt - set ucitrack.@wmt[-1].init=wmt - add_list ucitrack.@wireless[0].affects=wmt - commit ucitrack - EOF -fi -exit 0 diff --git a/root/package/base-files/utils/wmt/files/wmt.init b/root/package/base-files/utils/wmt/files/wmt.init deleted file mode 100644 index bf4580e3..00000000 --- a/root/package/base-files/utils/wmt/files/wmt.init +++ /dev/null @@ -1,119 +0,0 @@ -#!/bin/sh /etc/rc.common - -START=69 - -check_mtk_device() { - config_get phy "$1" phy - [ "$phy" = "mtkp2p0" ] && { - [ "$(uci -q get wireless.$1.disabled)" = "1" ] || apmode="$1" - [ -z "$(uci -q get wireless.default_$1.ifname)" ] && { - uci -q batch <<-EOF - set wireless.default_$1.ifname=mtkap0 - set wireless.default_$1.bss_load_update_period=0 - rename wireless.$1=ap - rename wireless.default_$1=default_ap - set wireless.default_$1.device=ap - EOF - } - } - [ "$phy" = "mtkphy0" ] && { - [ "$(uci -q get wireless.$1.disabled)" = "1" ] || wlanmode="$1" - [ "$(uci -q get wireless.default_$1.mode)" = "ap" ] && { - uci -q batch <<-EOF - set wireless.default_$1.mode=sta - EOF - } - [ -z "$(uci -q get wireless.default_$1.ifname)" ] && { - uci -q batch <<-EOF - set wireless.default_$1.ifname=mtkwlan0 - set wireless.default_$1.bss_load_update_period=0 - rename wireless.$1=client - rename wireless.default_$1=default_client - set wireless.default_$1.device=client - EOF - } - } -} - -find_radio() { - config_load wireless - apmode="" - wlanmode="" - config_foreach check_mtk_device wifi-device - uci -q commit wireless -} - -start_ap() { - echo A > /dev/wmtWifi - # Those are recommended by vendor to avoid chip lockup. - tc qdisc add dev mtkap0 root handle 1: htb default 11 - tc class add dev mtkap0 parent 1:1 classid 1:2 htb rate 8Mbit ceil 4Mbit prio 2 - - find_radio - if [ -n "$apmode" ]; then - config_get_bool disabled "$apmode" disabled - [ "$disabled" = "1" ] || wifi up "$apmode" 2>/dev/null - fi -} - -start_wlan() { - echo 1 > /dev/wmtWifi - # Those are recommended by vendor to avoid chip lockup. - tc qdisc add dev mtkap0 root handle 1: htb default 11 - tc class add dev mtkap0 parent 1:1 classid 1:2 htb rate 8Mbit ceil 4Mbit prio 2 - - find_radio - if [ -n "$wlanmode" ]; then - config_get_bool disabled "$wlanmode" disabled - [ "$disabled" = "1" ] || wifi up "$wlanmode" 2>/dev/null - fi -} - -stop_apwlan() { - find_radio - [ -n "$apmode" ] && wifi down "$apmode" 2>/dev/null - [ -n "$wlanmode" ] && wifi down "$wlanmode" 2>/dev/null - echo 0 > /dev/wmtWifi - -} - -start() { - find_radio - - [ -c /dev/stpwmt ] || /usr/bin/wmt_loader 2>&1 - /usr/bin/stp_uart_launcher -p /etc/firmware 2>&1 | logger -t stp_uart_launcher & - echo "$!" > /var/run/stp_uart_launcher.pid - sleep 3 - if [ -c /dev/wmtWifi ]; then - [ -n "$apmode" ] && start_ap - [ -n "$wlanmode" ] && start_wlan - [ -z "$apmode" ] && [ -z "$wlanmode" ] && start_ap - return 0 - else - return 1 - fi -} - -stop() { - find_radio - - if [ -c /dev/wmtWifi ]; then - stop_apwlan - stp_pid="$(cat /var/run/stp_uart_launcher.pid 2>/dev/null)" - if [ -n "$stp_pid" ]; then - kill "$stp_pid" - rm /var/run/stp_uart_launcher.pid - fi - fi -} - -reload() { - find_radio - - if [ -c /dev/wmtWifi ]; then - stop_apwlan - [ -n "$apmode" ] && start_ap - [ -n "$wlanmode" ] && start_wlan - [ -z "$apmode" ] && [ -z "$wlanmode" ] && start_ap - fi -} diff --git a/root/package/network/services/dnsmasq/files/dnsmasq.init b/root/package/network/services/dnsmasq/files/dnsmasq.init deleted file mode 100644 index ddd19a54..00000000 --- a/root/package/network/services/dnsmasq/files/dnsmasq.init +++ /dev/null @@ -1,1134 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2007-2012 OpenWrt.org - -START=19 - -USE_PROCD=1 -PROG=/usr/sbin/dnsmasq - -ADD_LOCAL_DOMAIN=1 -ADD_LOCAL_HOSTNAME=1 -ADD_WAN_FQDN=0 -ADD_LOCAL_FQDN="" - -BASECONFIGFILE="/var/etc/dnsmasq.conf" -BASEHOSTFILE="/tmp/hosts/dhcp" -TRUSTANCHORSFILE="/usr/share/dnsmasq/trust-anchors.conf" -TIMEVALIDFILE="/var/state/dnsmasqsec" -BASEDHCPSTAMPFILE="/var/run/dnsmasq" -RFC6761FILE="/usr/share/dnsmasq/rfc6761.conf" -DHCPSCRIPT="/usr/lib/dnsmasq/dhcp-script.sh" - -DNSMASQ_DHCP_VER=4 - -xappend() { - local value="$1" - - echo "${value#--}" >> $CONFIGFILE_TMP -} - -hex_to_hostid() { - local var="$1" - local hex="${2#0x}" # strip optional "0x" prefix - - if [ -n "${hex//[0-9a-fA-F]/}" ]; then - # is invalid hex literal - return 1 - fi - - # convert into host id - export "$var=$( - printf "%0x:%0x" \ - $(((0x$hex >> 16) % 65536)) \ - $(( 0x$hex % 65536)) - )" - - return 0 -} - -dhcp_calc() { - local ip="$1" - local res=0 - - while [ -n "$ip" ]; do - part="${ip%%.*}" - res="$(($res * 256))" - res="$(($res + $part))" - [ "${ip%.*}" != "$ip" ] && ip="${ip#*.}" || ip= - done - echo "$res" -} - -dhcp_check() { - local ifname="$1" - local stamp="${BASEDHCPSTAMPFILE_CFG}.${ifname}.dhcp" - local rv=0 - - [ -s "$stamp" ] && return $(cat "$stamp") - - # If there's no carrier yet, skip this interface. - # The init script will be called again once the link is up - case "$(devstatus "$ifname" | jsonfilter -e @.carrier)" in - false) return 1;; - esac - - udhcpc -n -q -s /bin/true -t 1 -i "$ifname" >&- && rv=1 || rv=0 - - [ $rv -eq 1 ] && \ - logger -t dnsmasq \ - "found already running DHCP-server on interface '$ifname'" \ - "refusing to start, use 'option force 1' to override" - - echo $rv > "$stamp" - return $rv -} - -log_once() { - pidof dnsmasq >/dev/null || \ - logger -t dnsmasq "$@" -} - -has_handler() { - local file - - for file in /etc/hotplug.d/dhcp/* /etc/hotplug.d/tftp/* /etc/hotplug.d/neigh/*; do - [ -f "$file" ] && return 0 - done - - return 1 -} - -append_bool() { - local section="$1" - local option="$2" - local value="$3" - local default="$4" - local _loctmp - [ -z "$default" ] && default="0" - config_get_bool _loctmp "$section" "$option" "$default" - [ $_loctmp -gt 0 ] && xappend "$value" -} - -append_parm() { - local section="$1" - local option="$2" - local switch="$3" - local default="$4" - local _loctmp - config_get _loctmp "$section" "$option" "$default" - [ -z "$_loctmp" ] && return 0 - xappend "$switch=$_loctmp" -} - -append_server() { - xappend "--server=$1" -} - -append_rev_server() { - xappend "--rev-server=$1" -} - -append_address() { - xappend "--address=$1" -} - -append_ipset() { - xappend "--ipset=$1" -} - -append_interface() { - network_get_device ifname "$1" || ifname="$1" - xappend "--interface=$ifname" -} - -append_listenaddress() { - xappend "--listen-address=$1" -} - -append_notinterface() { - network_get_device ifname "$1" || ifname="$1" - xappend "--except-interface=$ifname" -} - -append_addnhosts() { - xappend "--addn-hosts=$1" -} - -append_bogusnxdomain() { - xappend "--bogus-nxdomain=$1" -} - -append_pxe_service() { - xappend "--pxe-service=$1" -} - -append_interface_name() { - xappend "--interface-name=$1,$2" -} - -filter_dnsmasq() { - local cfg="$1" func="$2" match_cfg="$3" found_cfg - - # use entry when no instance entry set, or if it matches - config_get found_cfg "$cfg" "instance" - if [ -z "$found_cfg" -o "$found_cfg" = "$match_cfg" ]; then - $func $cfg - fi -} - -dhcp_subscrid_add() { - local cfg="$1" - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || return 0 - - config_get subscriberid "$cfg" subscriberid - [ -n "$subscriberid" ] || return 0 - - xappend "--dhcp-subscrid=$networkid,$subscriberid" - - config_get_bool force "$cfg" force 0 - - dhcp_option_add "$cfg" "$networkid" "$force" -} - -dhcp_remoteid_add() { - local cfg="$1" - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || return 0 - - config_get remoteid "$cfg" remoteid - [ -n "$remoteid" ] || return 0 - - xappend "--dhcp-remoteid=$networkid,$remoteid" - - config_get_bool force "$cfg" force 0 - - dhcp_option_add "$cfg" "$networkid" "$force" -} - -dhcp_circuitid_add() { - # TODO: DHCPV6 does not have circuitid; catch "option6:" - local cfg="$1" - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || return 0 - - config_get circuitid "$cfg" circuitid - [ -n "$circuitid" ] || return 0 - - xappend "--dhcp-circuitid=$networkid,$circuitid" - - config_get_bool force "$cfg" force 0 - - dhcp_option_add "$cfg" "$networkid" "$force" -} - -dhcp_userclass_add() { - local cfg="$1" - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || return 0 - - config_get userclass "$cfg" userclass - [ -n "$userclass" ] || return 0 - - xappend "--dhcp-userclass=$networkid,$userclass" - - config_get_bool force "$cfg" force 0 - - dhcp_option_add "$cfg" "$networkid" "$force" -} - -dhcp_vendorclass_add() { - # TODO: DHCPV6 vendor class has stricter definitions; catch? fixup? - local cfg="$1" - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || return 0 - - config_get vendorclass "$cfg" vendorclass - [ -n "$vendorclass" ] || return 0 - - xappend "--dhcp-vendorclass=$networkid,$vendorclass" - - config_get_bool force "$cfg" force 0 - - dhcp_option_add "$cfg" "$networkid" "$force" -} - -dhcp_match_add() { - local cfg="$1" - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || return 0 - - config_get match "$cfg" match - [ -n "$match" ] || return 0 - - xappend "--dhcp-match=$networkid,$match" - - config_get_bool force "$cfg" force 0 - - dhcp_option_add "$cfg" "$networkid" "$force" -} - -dhcp_host_add() { - local cfg="$1" - local hosttag nametime addrs duids macs tags - - config_get_bool force "$cfg" force 0 - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] && dhcp_option_add "$cfg" "$networkid" "$force" - - config_get_bool enable "$cfg" enable 1 - [ "$enable" = "0" ] && return 0 - - config_get name "$cfg" name - config_get ip "$cfg" ip - config_get hostid "$cfg" hostid - - [ -n "$ip" -o -n "$name" -o -n "$hostid" ] || return 0 - - config_get_bool dns "$cfg" dns 0 - [ "$dns" = "1" -a -n "$ip" -a -n "$name" ] && { - echo "$ip $name${DOMAIN:+.$DOMAIN}" >> $HOSTFILE_TMP - } - - config_get mac "$cfg" mac - config_get duid "$cfg" duid - config_get tag "$cfg" tag - config_get gw "$cfg" gw - - if [ -n "$mac" ]; then - # --dhcp-host=00:20:e0:3b:13:af,192.168.0.199,lap - # many MAC are possible to track a laptop ON/OFF dock - for m in $mac; do append macs "$m" ","; done - fi - - if [ $DNSMASQ_DHCP_VER -eq 6 -a -n "$duid" ]; then - # --dhcp-host=id:00:03:00:01:12:00:00:01:02:03,[::beef],lap - # one (virtual) machine gets one DUID per RFC3315 - duids="id:${duid// */}" - fi - - if [ -z "$macs" -a -z "$duids" ]; then - # --dhcp-host=lap,192.168.0.199,[::beef] - [ -n "$name" ] || return 0 - macs="$name" - name="" - fi - - if [ -n "$hostid" ]; then - hex_to_hostid hostid "$hostid" - fi - - if [ -n "$tag" ]; then - for t in $tag; do append tags "$t" ",set:"; done - fi - - if [ -n "$gw" ]; then - append tags "$cfg" ",set:" - fi - - config_get_bool broadcast "$cfg" broadcast 0 - config_get leasetime "$cfg" leasetime - - [ "$broadcast" = "0" ] && broadcast= || broadcast=",set:needs-broadcast" - - hosttag="${networkid:+,set:${networkid}}${tags:+,set:${tags}}$broadcast" - nametime="${name:+,$name}${leasetime:+,$leasetime}" - - if [ $DNSMASQ_DHCP_VER -eq 6 ]; then - addrs="${ip:+,$ip}${hostid:+,[::$hostid]}" - xappend "--dhcp-host=$macs${duids:+,$duids}$hosttag$addrs$nametime" - else - xappend "--dhcp-host=$macs$hosttag${ip:+,$ip}$nametime" - fi - if [ -n "$gw" ]; then - xappend "--dhcp-option=tag:$cfg,option:router,$gw" - fi -} - -dhcp_this_host_add() { - local net="$1" - local ifname="$2" - local mode="$3" - local routerstub routername ifdashname - local lanaddr lanaddr6 lanaddrs6 ulaprefix - - if [ "$mode" -gt 0 ] ; then - ifdashname="${ifname//./-}" - routerstub="$( md5sum /etc/os-release )" - routerstub="router-${routerstub// */}" - routername="$( uci_get system @system[0] hostname $routerstub )" - - if [ "$mode" -gt 1 ] ; then - if [ "$mode" -gt 2 ] ; then - if [ "$mode" -gt 3 ] ; then - append_interface_name "$ifdashname.$routername.$DOMAIN" "$ifname" - fi - - append_interface_name "$routername.$DOMAIN" "$ifname" - fi - - # All IP addresses discovered by dnsmasq will be labeled (except fe80::) - append_interface_name "$routername" "$ifname" - - else - # This uses a static host file entry for only limited addresses. - # Use dnsmasq option "--expandhosts" to enable FQDN on host files. - ulaprefix="$(uci_get network @globals[0] ula_prefix)" - network_get_ipaddr lanaddr "$net" - network_get_ipaddrs6 lanaddrs6 "$net" - - if [ -n "$lanaddr" ] ; then - dhcp_domain_add "" "$routername" "$lanaddr" - fi - - if [ -n "$ulaprefix" -a -n "$lanaddrs6" ] ; then - for lanaddr6 in $lanaddrs6 ; do - case "$lanaddr6" in - "${ulaprefix%%:/*}"*) - dhcp_domain_add "" "$routername" "$lanaddr6" - ;; - esac - done - fi - fi - fi -} - -dhcp_tag_add() { - # NOTE: dnsmasq has explicit "option6:" prefix for DHCPv6 so no collisions - local cfg="$1" - - tag="$cfg" - - [ -n "$tag" ] || return 0 - - config_get_bool force "$cfg" force 0 - [ "$force" = "0" ] && force= - - config_get option "$cfg" dhcp_option - for o in $option; do - xappend "--dhcp-option${force:+-force}=tag:$tag,$o" - done -} - -dhcp_mac_add() { - local cfg="$1" - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || return 0 - - config_get mac "$cfg" mac - [ -n "$mac" ] || return 0 - - xappend "--dhcp-mac=$networkid,$mac" - - dhcp_option_add "$cfg" "$networkid" -} - -dhcp_boot_add() { - # TODO: BOOTURL is different between DHCPv4 and DHCPv6 - local cfg="$1" - - config_get networkid "$cfg" networkid - - config_get filename "$cfg" filename - [ -n "$filename" ] || return 0 - - config_get servername "$cfg" servername - config_get serveraddress "$cfg" serveraddress - - [ -n "$serveraddress" -a ! -n "$servername" ] && return 0 - - xappend "--dhcp-boot=${networkid:+net:$networkid,}${filename}${servername:+,$servername}${serveraddress:+,$serveraddress}" - - config_get_bool force "$cfg" force 0 - - dhcp_option_add "$cfg" "$networkid" "$force" -} - - -dhcp_add() { - local cfg="$1" - local dhcp6range="::" - local nettag - local tags - - config_get net "$cfg" interface - [ -n "$net" ] || return 0 - - config_get networkid "$cfg" networkid - [ -n "$networkid" ] || networkid="$net" - - network_get_device ifname "$net" || return 0 - - [ "$cachelocal" = "0" ] && network_get_dnsserver dnsserver "$net" && { - DNS_SERVERS="$DNS_SERVERS $dnsserver" - } - - append_bool "$cfg" ignore "--no-dhcp-interface=$ifname" && { - # Many ISP do not have useful names for DHCP customers (your WAN). - dhcp_this_host_add "$net" "$ifname" "$ADD_WAN_FQDN" - return 0 - } - - network_get_subnet subnet "$net" || return 0 - network_get_protocol proto "$net" || return 0 - - # Do not support non-static interfaces for now - [ static = "$proto" ] || return 0 - - # Override interface netmask with dhcp config if applicable - config_get netmask "$cfg" netmask "${subnet##*/}" - - #check for an already active dhcp server on the interface, unless 'force' is set - config_get_bool force "$cfg" force 0 - [ $force -gt 0 ] || dhcp_check "$ifname" || return 0 - - config_get start "$cfg" start 100 - config_get limit "$cfg" limit 150 - config_get leasetime "$cfg" leasetime 12h - config_get options "$cfg" options - config_get_bool dynamicdhcp "$cfg" dynamicdhcp 1 - - config_get dhcpv4 "$cfg" dhcpv4 - config_get dhcpv6 "$cfg" dhcpv6 - - config_get ra "$cfg" ra - config_get ra_management "$cfg" ra_management - config_get ra_preference "$cfg" ra_preference - config_get dns "$cfg" dns - - config_list_foreach "$cfg" "interface_name" append_interface_name "$ifname" - - # Put the router host name on this DHCP served interface address(es) - dhcp_this_host_add "$net" "$ifname" "$ADD_LOCAL_FQDN" - - start="$( dhcp_calc "$start" )" - - add_tag() { - tags="${tags}tag:$1," - } - config_list_foreach "$cfg" tag add_tag - - nettag="${networkid:+set:${networkid},}" - - if [ "$limit" -gt 0 ] ; then - limit=$((limit-1)) - fi - - eval "$(ipcalc.sh "${subnet%%/*}" $netmask $start $limit)" - - if [ "$dynamicdhcp" = "0" ] ; then - END="static" - dhcp6range="::,static" - else - dhcp6range="::1000,::ffff" - fi - - - if [ "$dhcpv4" != "disabled" ] ; then - xappend "--dhcp-range=$tags$nettag$START,$END,$NETMASK,$leasetime${options:+ $options}" - fi - - - if [ $DNSMASQ_DHCP_VER -eq 6 -a "$ra" = "server" ] ; then - # Note: dnsmasq cannot just be a DHCPv6 server (all-in-1) - # and let some other machine(s) send RA pointing to it. - - case $ra_preference in - *high*) - xappend "--ra-param=$ifname,high,0,7200" - ;; - *low*) - xappend "--ra-param=$ifname,low,0,7200" - ;; - *) - # Send UNSOLICITED RA at default interval and live for 2 hours. - # TODO: convert flexible lease time into route life time (only seconds). - xappend "--ra-param=$ifname,0,7200" - ;; - esac - - if [ "$dhcpv6" = "disabled" ] ; then - ra_management="3" - fi - - - case $ra_management in - 0) - # SLACC with DCHP for extended options - xappend "--dhcp-range=$nettag::,constructor:$ifname,ra-stateless,ra-names" - ;; - 2) - # DHCP address and RA only for management redirection - xappend "--dhcp-range=$nettag$dhcp6range,constructor:$ifname,$leasetime" - ;; - 3) - # SLAAC only but dnsmasq attempts to link HOSTNAME, DHCPv4 MAC, and SLAAC - xappend "--dhcp-range=$nettag::,constructor:$ifname,ra-only,ra-names" - ;; - *) - # SLAAC and full DHCP - xappend "--dhcp-range=$nettag$dhcp6range,constructor:$ifname,slaac,ra-names,$leasetime" - ;; - esac - - if [ -n "$dns" ]; then - dnss="" - for d in $dns; do append dnss "[$d]" ","; done - else - dnss="[::]" - fi - - dhcp_option_append "option6:dns-server,$dnss" "$networkid" - fi - - dhcp_option_add "$cfg" "$networkid" 0 - dhcp_option_add "$cfg" "$networkid" 2 -} - -dhcp_option_append() { - local option="$1" - local networkid="$2" - local force="$3" - - xappend "--dhcp-option${force:+-force}=${networkid:+$networkid,}$option" -} - -dhcp_option_add() { - # NOTE: dnsmasq has explicit "option6:" prefix for DHCPv6 so no collisions - local cfg="$1" - local networkid="$2" - local force="$3" - local opt="dhcp_option" - - [ "$force" = "0" ] && force= - [ "$force" = "2" ] && opt="dhcp_option_force" - - local list_len - config_get list_len "$cfg" "${opt}_LENGTH" - - if [ -n "$list_len" ]; then - config_list_foreach "$cfg" "$opt" dhcp_option_append "$networkid" "$force" - else - config_get dhcp_option "$cfg" "$opt" - - [ -n "$dhcp_option" ] && echo "Warning: the 'option $opt' syntax is deprecated, use 'list $opt'" >&2 - - local option - for option in $dhcp_option; do - dhcp_option_append "$option" "$networkid" "$force" - done - fi -} - -dhcp_domain_add() { - local cfg="$1" - local ip name names record - - config_get names "$cfg" name "$2" - [ -n "$names" ] || return 0 - - config_get ip "$cfg" ip "$3" - [ -n "$ip" ] || return 0 - - for name in $names; do - record="${record:+$record }$name" - done - - echo "$ip $record" >> $HOSTFILE_TMP -} - -dhcp_srv_add() { - local cfg="$1" - - config_get srv "$cfg" srv - [ -n "$srv" ] || return 0 - - config_get target "$cfg" target - [ -n "$target" ] || return 0 - - config_get port "$cfg" port - [ -n "$port" ] || return 0 - - config_get class "$cfg" class - config_get weight "$cfg" weight - - local service="$srv,$target,$port${class:+,$class${weight:+,$weight}}" - - xappend "--srv-host=$service" -} - -dhcp_mx_add() { - local cfg="$1" - local domain relay pref - - config_get domain "$cfg" domain - [ -n "$domain" ] || return 0 - - config_get relay "$cfg" relay - [ -n "$relay" ] || return 0 - - config_get pref "$cfg" pref 0 - - local service="$domain,$relay,$pref" - - xappend "--mx-host=$service" -} - -dhcp_cname_add() { - local cfg="$1" - local cname target - - config_get cname "$cfg" cname - [ -n "$cname" ] || return 0 - - config_get target "$cfg" target - [ -n "$target" ] || return 0 - - xappend "--cname=${cname},${target}" -} - -dhcp_hostrecord_add() { - local cfg="$1" - local names addresses record val - - config_get names "$cfg" name "$2" - if [ -z "$names" ]; then - return 0 - fi - - config_get addresses "$cfg" ip "$3" - if [ -z "$addresses" ]; then - return 0 - fi - - for val in $names $addresses; do - record="${record:+$record,}$val" - done - - xappend "--host-record=$record" -} - -dhcp_relay_add() { - local cfg="$1" - local local_addr server_addr interface - - config_get local_addr "$cfg" local_addr - [ -n "$local_addr" ] || return 0 - - config_get server_addr "$cfg" server_addr - [ -n "$server_addr" ] || return 0 - - config_get interface "$cfg" interface - if [ -z "$interface" ]; then - xappend "--dhcp-relay=$local_addr,$server_addr" - else - network_get_device ifname "$interface" || return - xappend "--dhcp-relay=$local_addr,$server_addr,$ifname" - fi -} - -dnsmasq_start() -{ - local cfg="$1" disabled resolvfile user_dhcpscript - - config_get_bool disabled "$cfg" disabled 0 - [ "$disabled" -gt 0 ] && return 0 - - # reset list of DOMAINS and DNS servers (for each dnsmasq instance) - DNS_SERVERS="" - DOMAIN="" - CONFIGFILE="${BASECONFIGFILE}.${cfg}" - CONFIGFILE_TMP="${CONFIGFILE}.$$" - HOSTFILE="${BASEHOSTFILE}.${cfg}" - HOSTFILE_TMP="${HOSTFILE}.$$" - BASEDHCPSTAMPFILE_CFG="${BASEDHCPSTAMPFILE}.${cfg}" - - # before we can call xappend - mkdir -p /var/run/dnsmasq/ - mkdir -p $(dirname $CONFIGFILE) - mkdir -p $(dirname $HOSTFILE) - mkdir -p /var/lib/misc - chown dnsmasq:dnsmasq /var/run/dnsmasq - - echo "# auto-generated config file from /etc/config/dhcp" > $CONFIGFILE_TMP - echo "# auto-generated config file from /etc/config/dhcp" > $HOSTFILE_TMP - - local dnsmasqconffile="/etc/dnsmasq.${cfg}.conf" - if [ ! -r "$dnsmasqconffile" ]; then - dnsmasqconffile=/etc/dnsmasq.conf - fi - - # if we did this last, we could override auto-generated config - [ -f "${dnsmasqconffile}" ] && { - xappend "--conf-file=${dnsmasqconffile}" - } - - $PROG --version | grep -osqE "^Compile time options:.* DHCPv6( |$)" && DHCPv6CAPABLE=1 || DHCPv6CAPABLE=0 - - - if [ -x /usr/sbin/odhcpd -a -x /etc/init.d/odhcpd ] ; then - local odhcpd_is_main odhcpd_is_enabled - config_get odhcpd_is_main odhcpd maindhcp 0 - /etc/init.d/odhcpd enabled && odhcpd_is_enabled=1 || odhcpd_is_enabled=0 - - - if [ "$odhcpd_is_enabled" -eq 0 -a "$DHCPv6CAPABLE" -eq 1 ] ; then - # DHCP V4 and V6 in DNSMASQ - DNSMASQ_DHCP_VER=6 - elif [ "$odhcpd_is_main" -gt 0 ] ; then - # ODHCPD is doing it all - DNSMASQ_DHCP_VER=0 - else - # You have ODHCPD but use DNSMASQ for DHCPV4 - DNSMASQ_DHCP_VER=4 - fi - - elif [ "$DHCPv6CAPABLE" -eq 1 ] ; then - # DHCP V4 and V6 in DNSMASQ - DNSMASQ_DHCP_VER=6 - else - DNSMASQ_DHCP_VER=4 - fi - - # Allow DHCP/DHCPv6 to be handled by ISC DHCPD - if [ -x /usr/sbin/dhcpd ] ; then - if [ -x /etc/init.d/dhcpd ] ; then - /etc/init.d/dhcpd enabled && DNSMASQ_DHCP_VER=0 - fi - if [ -x /etc/init.d/dhcpd6 -a "$DNSMASQ_DHCP_VER" -gt 0 ] ; then - /etc/init.d/dhcpd6 enabled && DNSMASQ_DHCP_VER=4 - fi - fi - - append_bool "$cfg" authoritative "--dhcp-authoritative" - append_bool "$cfg" nodaemon "--no-daemon" - append_bool "$cfg" domainneeded "--domain-needed" - append_bool "$cfg" filterwin2k "--filterwin2k" - append_bool "$cfg" nohosts "--no-hosts" - append_bool "$cfg" nonegcache "--no-negcache" - append_bool "$cfg" strictorder "--strict-order" - append_bool "$cfg" logqueries "--log-queries=extra" - append_bool "$cfg" noresolv "--no-resolv" - append_bool "$cfg" localise_queries "--localise-queries" - append_bool "$cfg" readethers "--read-ethers" - append_bool "$cfg" dbus "--enable-dbus" - append_bool "$cfg" expandhosts "--expand-hosts" - config_get tftp_root "$cfg" "tftp_root" - [ -n "$tftp_root" ] && mkdir -p "$tftp_root" && append_bool "$cfg" enable_tftp "--enable-tftp" - append_bool "$cfg" tftp_no_fail "--tftp-no-fail" - append_bool "$cfg" nonwildcard "--bind-dynamic" 1 - append_bool "$cfg" fqdn "--dhcp-fqdn" - append_bool "$cfg" proxydnssec "--proxy-dnssec" - append_bool "$cfg" localservice "--local-service" - append_bool "$cfg" logdhcp "--log-dhcp" - append_bool "$cfg" quietdhcp "--quiet-dhcp" - append_bool "$cfg" sequential_ip "--dhcp-sequential-ip" - append_bool "$cfg" allservers "--all-servers" - append_bool "$cfg" noping "--no-ping" - - append_parm "$cfg" logfacility "--log-facility" - - append_parm "$cfg" cachesize "--cache-size" - append_parm "$cfg" dnsforwardmax "--dns-forward-max" - append_parm "$cfg" port "--port" - append_parm "$cfg" ednspacket_max "--edns-packet-max" - append_parm "$cfg" dhcpleasemax "--dhcp-lease-max" - append_parm "$cfg" "queryport" "--query-port" - append_parm "$cfg" "minport" "--min-port" - append_parm "$cfg" "maxport" "--max-port" - append_parm "$cfg" "domain" "--domain" - append_parm "$cfg" "local" "--server" - config_list_foreach "$cfg" "listen_address" append_listenaddress - config_list_foreach "$cfg" "server" append_server - config_list_foreach "$cfg" "rev_server" append_rev_server - config_list_foreach "$cfg" "address" append_address - config_list_foreach "$cfg" "ipset" append_ipset - [ -n "$BOOT" ] || { - config_list_foreach "$cfg" "interface" append_interface - config_list_foreach "$cfg" "notinterface" append_notinterface - } - config_list_foreach "$cfg" "addnhosts" append_addnhosts - config_list_foreach "$cfg" "bogusnxdomain" append_bogusnxdomain - append_parm "$cfg" "leasefile" "--dhcp-leasefile" "/tmp/dhcp.leases" - append_parm "$cfg" "serversfile" "--servers-file" - append_parm "$cfg" "tftp_root" "--tftp-root" - append_parm "$cfg" "dhcp_boot" "--dhcp-boot" - append_parm "$cfg" "local_ttl" "--local-ttl" - append_parm "$cfg" "pxe_prompt" "--pxe-prompt" - config_list_foreach "$cfg" "pxe_service" append_pxe_service - config_get DOMAIN "$cfg" domain - - config_get_bool ADD_LOCAL_DOMAIN "$cfg" add_local_domain 1 - config_get_bool ADD_LOCAL_HOSTNAME "$cfg" add_local_hostname 1 - config_get ADD_LOCAL_FQDN "$cfg" add_local_fqdn "" - config_get ADD_WAN_FQDN "$cfg" add_wan_fqdn 0 - - if [ -z "$ADD_LOCAL_FQDN" ] ; then - # maintain support for previous UCI - ADD_LOCAL_FQDN="$ADD_LOCAL_HOSTNAME" - fi - - config_get_bool readethers "$cfg" readethers - [ "$readethers" = "1" -a \! -e "/etc/ethers" ] && touch /etc/ethers - - config_get user_dhcpscript $cfg dhcpscript - if has_handler || [ -n "$user_dhcpscript" ]; then - xappend "--dhcp-script=$DHCPSCRIPT" - fi - - config_get leasefile $cfg leasefile "/tmp/dhcp.leases" - [ -n "$leasefile" -a \! -e "$leasefile" ] && touch "$leasefile" - config_get_bool cachelocal "$cfg" cachelocal 1 - - config_get_bool noresolv "$cfg" noresolv 0 - if [ "$noresolv" != "1" ]; then - config_get resolvfile "$cfg" resolvfile "/tmp/resolv.conf.auto" - # So jail doesn't complain if file missing - [ -n "$resolvfile" -a \! -e "$resolvfile" ] && touch "$resolvfile" - fi - - [ -n "$resolvfile" ] && xappend "--resolv-file=$resolvfile" - - config_get hostsfile "$cfg" dhcphostsfile - [ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile" - - local rebind - config_get_bool rebind "$cfg" rebind_protection 1 - [ $rebind -gt 0 ] && { - log_once \ - "DNS rebinding protection is active," \ - "will discard upstream RFC1918 responses!" - xappend "--stop-dns-rebind" - - local rebind_localhost - config_get_bool rebind_localhost "$cfg" rebind_localhost 0 - [ $rebind_localhost -gt 0 ] && { - log_once "Allowing 127.0.0.0/8 responses" - xappend "--rebind-localhost-ok" - } - - append_rebind_domain() { - log_once "Allowing RFC1918 responses for domain $1" - xappend "--rebind-domain-ok=$1" - } - - config_list_foreach "$cfg" rebind_domain append_rebind_domain - } - - config_get_bool dnssec "$cfg" dnssec 0 - [ "$dnssec" -gt 0 ] && { - xappend "--conf-file=$TRUSTANCHORSFILE" - xappend "--dnssec" - [ -x /etc/init.d/sysntpd ] && { - /etc/init.d/sysntpd enabled - [ "$?" -ne 0 -o "$(uci_get system.ntp.enabled)" = "1" ] && { - [ -f "$TIMEVALIDFILE" ] || xappend "--dnssec-no-timecheck" - } - } - append_bool "$cfg" dnsseccheckunsigned "--dnssec-check-unsigned" - } - - config_get addmac "$cfg" addmac 0 - [ "$addmac" != "0" ] && { - [ "$addmac" = "1" ] && addmac= - xappend "--add-mac${addmac:+="$addmac"}" - } - - dhcp_option_add "$cfg" "" 0 - dhcp_option_add "$cfg" "" 2 - - xappend "--dhcp-broadcast=tag:needs-broadcast" - - xappend "--addn-hosts=$(dirname $HOSTFILE)" - - config_get dnsmasqconfdir "$cfg" confdir "/tmp/dnsmasq.d" - xappend "--conf-dir=$dnsmasqconfdir" - dnsmasqconfdir="${dnsmasqconfdir%%,*}" - [ ! -d "$dnsmasqconfdir" ] && mkdir -p $dnsmasqconfdir - xappend "--user=dnsmasq" - xappend "--group=dnsmasq" - echo >> $CONFIGFILE_TMP - - config_get_bool enable_tftp "$cfg" enable_tftp 0 - [ "$enable_tftp" -gt 0 ] && { - config_get tftp_root "$cfg" tftp_root - append EXTRA_MOUNT $tftp_root - } - - config_foreach filter_dnsmasq host dhcp_host_add "$cfg" - echo >> $CONFIGFILE_TMP - config_foreach filter_dnsmasq boot dhcp_boot_add "$cfg" - config_foreach filter_dnsmasq mac dhcp_mac_add "$cfg" - config_foreach filter_dnsmasq tag dhcp_tag_add "$cfg" - config_foreach filter_dnsmasq vendorclass dhcp_vendorclass_add "$cfg" - config_foreach filter_dnsmasq userclass dhcp_userclass_add "$cfg" - config_foreach filter_dnsmasq circuitid dhcp_circuitid_add "$cfg" - config_foreach filter_dnsmasq remoteid dhcp_remoteid_add "$cfg" - config_foreach filter_dnsmasq subscrid dhcp_subscrid_add "$cfg" - config_foreach filter_dnsmasq match dhcp_match_add "$cfg" - config_foreach filter_dnsmasq domain dhcp_domain_add "$cfg" - config_foreach filter_dnsmasq hostrecord dhcp_hostrecord_add "$cfg" - [ -n "$BOOT" ] || config_foreach filter_dnsmasq relay dhcp_relay_add "$cfg" - - echo >> $CONFIGFILE_TMP - config_foreach filter_dnsmasq srvhost dhcp_srv_add "$cfg" - config_foreach filter_dnsmasq mxhost dhcp_mx_add "$cfg" - echo >> $CONFIGFILE_TMP - - config_get_bool boguspriv "$cfg" boguspriv 1 - [ "$boguspriv" -gt 0 ] && { - xappend "--bogus-priv" - [ -r "$RFC6761FILE" ] && xappend "--conf-file=$RFC6761FILE" - } - - if [ "$DNSMASQ_DHCP_VER" -gt 4 ] ; then - # Enable RA feature for when/if it is constructed, - # and RA is selected per interface pool (RA, DHCP, or both), - # but no one (should) want RA broadcast in syslog - [ -n "$BOOT" ] || config_foreach filter_dnsmasq dhcp dhcp_add "$cfg" - xappend "--enable-ra" - xappend "--quiet-ra" - append_bool "$cfg" quietdhcp "--quiet-dhcp6" - - elif [ "$DNSMASQ_DHCP_VER" -gt 0 ] ; then - [ -n "$BOOT" ] || config_foreach filter_dnsmasq dhcp dhcp_add "$cfg" - fi - - - echo >> $CONFIGFILE_TMP - config_foreach filter_dnsmasq cname dhcp_cname_add "$cfg" - echo >> $CONFIGFILE_TMP - - echo >> $CONFIGFILE_TMP - mv -f $CONFIGFILE_TMP $CONFIGFILE - mv -f $HOSTFILE_TMP $HOSTFILE - - [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && { - rm -f /tmp/resolv.conf - [ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && { - echo "search $DOMAIN" >> /tmp/resolv.conf - } - DNS_SERVERS="$DNS_SERVERS 127.0.0.1" - for DNS_SERVER in $DNS_SERVERS ; do - echo "nameserver $DNS_SERVER" >> /tmp/resolv.conf - done - } - - procd_open_instance $cfg - procd_set_param command $PROG -C $CONFIGFILE -k -x /var/run/dnsmasq/dnsmasq."${cfg}".pid - procd_set_param file $CONFIGFILE - [ -n "$user_dhcpscript" ] && procd_set_param env USER_DHCPSCRIPT="$user_dhcpscript" - procd_set_param respawn - - procd_add_jail dnsmasq ubus log - procd_add_jail_mount $CONFIGFILE $TRUSTANCHORSFILE $HOSTFILE $RFC6761FILE /etc/passwd /etc/group /etc/TZ /dev/null /dev/urandom $dnsmasqconffile $dnsmasqconfdir $resolvfile $user_dhcpscript /etc/hosts /etc/ethers /sbin/hotplug-call $EXTRA_MOUNT $DHCPSCRIPT - procd_add_jail_mount_rw /var/run/dnsmasq/ $leasefile - - procd_close_instance -} - -dnsmasq_stop() -{ - local cfg="$1" resolvfile - - config_get resolvfile "$cfg" "resolvfile" - - #relink /tmp/resolve.conf only for main instance - [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && { - [ -f /tmp/resolv.conf ] && { - rm -f /tmp/resolv.conf - ln -s "$resolvfile" /tmp/resolv.conf - } - } - - rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp -} - -add_interface_trigger() -{ - local interface ignore - - config_get interface "$1" interface - config_get_bool ignore "$1" ignore 0 - - [ -n "$interface" -a $ignore -eq 0 ] && procd_add_interface_trigger "interface.*" "$interface" /etc/init.d/dnsmasq reload -} - -service_triggers() -{ - procd_add_reload_trigger "dhcp" "system" - - config_load dhcp - config_foreach add_interface_trigger dhcp - config_foreach add_interface_trigger relay -} - -boot() -{ - BOOT=1 - start "$@" -} - -start_service() { - local instance="$1" - local instance_found=0 - - . /lib/functions/network.sh - - config_cb() { - local type="$1" - local name="$2" - if [ "$type" = "dnsmasq" ]; then - if [ -n "$instance" -a "$instance" = "$name" ]; then - instance_found=1 - fi - fi - } - - config_load dhcp - - if [ -n "$instance" ]; then - [ "$instance_found" -gt 0 ] || return - dnsmasq_start "$instance" - else - config_foreach dnsmasq_start dnsmasq - fi -} - -reload_service() { - rc_procd start_service "$@" - procd_send_signal dnsmasq "$@" -} - -stop_service() { - local instance="$1" - local instance_found=0 - - config_cb() { - local type="$1" - local name="$2" - if [ "$type" = "dnsmasq" ]; then - if [ -n "$instance" -a "$instance" = "$name" ]; then - instance_found=1 - fi - fi - } - - config_load dhcp - - if [ -n "$instance" ]; then - [ "$instance_found" -gt 0 ] || return - dnsmasq_stop "$instance" - else - config_foreach dnsmasq_stop dnsmasq - fi -} diff --git a/root/package/utils/wmt/Makefile b/root/package/utils/wmt/Makefile deleted file mode 100644 index dffd032e..00000000 --- a/root/package/utils/wmt/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# -# Copyright (C) 2009 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=wmt -PKG_VERSION:=1.0.0 -PKG_RELEASE:=1 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/abbradar/wmt -PKG_SOURCE_VERSION:=2127e23dd94df960b12f3ffff806bcf41ebbf4b8 -PKG_MAINTAINER:=Nikolay Amiantov - -PKG_BUILD_PARALLEL:=1 - -include $(INCLUDE_DIR)/package.mk - -define Package/$(PKG_NAME) - SECTION:=utils - CATEGORY:=Utilities - TITLE:=wmt utility for MT6625L - DEPENDS:=kmod-mt6625l-wlan-gen2 - MAINTAINER:=Jinkai li -endef - -define Package/$(PKG_NAME)/description - Utility for loading MT6625L firmware. -endef - -define Package/$(PKG_NAME)/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/stp_uart_launcher $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_BUILD_DIR)/wmt_loader $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_BUILD_DIR)/wmt_loopback $(1)/usr/bin/ - $(INSTALL_DIR) $(1)/system/etc/firmware - $(INSTALL_DATA) $(PKG_BUILD_DIR)/config/WMT_SOC.cfg $(1)/system/etc/firmware - $(INSTALL_DATA) $(PKG_BUILD_DIR)/config/WMT_SOC.cfg $(1)/system/etc/firmware/WMT.cfg - $(INSTALL_DIR) $(1)/etc/firmware - $(CP) -r $(PKG_BUILD_DIR)/firmware/* $(1)/etc/firmware/ - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) ./files/wmt.init $(1)/etc/init.d/wmt - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_BIN) ./files/wmt.defaults $(1)/etc/uci-defaults/8803-wmt -endef - -$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/root/package/utils/wmt/files/wmt.defaults b/root/package/utils/wmt/files/wmt.defaults deleted file mode 100644 index ff619a29..00000000 --- a/root/package/utils/wmt/files/wmt.defaults +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -if [ -z "$(uci -q get ucitrack.@wmt[0])" ]; then - uci -q batch <<-EOF - set ucitrack.@wmt[-1]=wmt - set ucitrack.@wmt[-1].init=wmt - add_list ucitrack.@wireless[0].affects=wmt - commit ucitrack - EOF -fi -exit 0 diff --git a/root/package/utils/wmt/files/wmt.init b/root/package/utils/wmt/files/wmt.init deleted file mode 100644 index bf4580e3..00000000 --- a/root/package/utils/wmt/files/wmt.init +++ /dev/null @@ -1,119 +0,0 @@ -#!/bin/sh /etc/rc.common - -START=69 - -check_mtk_device() { - config_get phy "$1" phy - [ "$phy" = "mtkp2p0" ] && { - [ "$(uci -q get wireless.$1.disabled)" = "1" ] || apmode="$1" - [ -z "$(uci -q get wireless.default_$1.ifname)" ] && { - uci -q batch <<-EOF - set wireless.default_$1.ifname=mtkap0 - set wireless.default_$1.bss_load_update_period=0 - rename wireless.$1=ap - rename wireless.default_$1=default_ap - set wireless.default_$1.device=ap - EOF - } - } - [ "$phy" = "mtkphy0" ] && { - [ "$(uci -q get wireless.$1.disabled)" = "1" ] || wlanmode="$1" - [ "$(uci -q get wireless.default_$1.mode)" = "ap" ] && { - uci -q batch <<-EOF - set wireless.default_$1.mode=sta - EOF - } - [ -z "$(uci -q get wireless.default_$1.ifname)" ] && { - uci -q batch <<-EOF - set wireless.default_$1.ifname=mtkwlan0 - set wireless.default_$1.bss_load_update_period=0 - rename wireless.$1=client - rename wireless.default_$1=default_client - set wireless.default_$1.device=client - EOF - } - } -} - -find_radio() { - config_load wireless - apmode="" - wlanmode="" - config_foreach check_mtk_device wifi-device - uci -q commit wireless -} - -start_ap() { - echo A > /dev/wmtWifi - # Those are recommended by vendor to avoid chip lockup. - tc qdisc add dev mtkap0 root handle 1: htb default 11 - tc class add dev mtkap0 parent 1:1 classid 1:2 htb rate 8Mbit ceil 4Mbit prio 2 - - find_radio - if [ -n "$apmode" ]; then - config_get_bool disabled "$apmode" disabled - [ "$disabled" = "1" ] || wifi up "$apmode" 2>/dev/null - fi -} - -start_wlan() { - echo 1 > /dev/wmtWifi - # Those are recommended by vendor to avoid chip lockup. - tc qdisc add dev mtkap0 root handle 1: htb default 11 - tc class add dev mtkap0 parent 1:1 classid 1:2 htb rate 8Mbit ceil 4Mbit prio 2 - - find_radio - if [ -n "$wlanmode" ]; then - config_get_bool disabled "$wlanmode" disabled - [ "$disabled" = "1" ] || wifi up "$wlanmode" 2>/dev/null - fi -} - -stop_apwlan() { - find_radio - [ -n "$apmode" ] && wifi down "$apmode" 2>/dev/null - [ -n "$wlanmode" ] && wifi down "$wlanmode" 2>/dev/null - echo 0 > /dev/wmtWifi - -} - -start() { - find_radio - - [ -c /dev/stpwmt ] || /usr/bin/wmt_loader 2>&1 - /usr/bin/stp_uart_launcher -p /etc/firmware 2>&1 | logger -t stp_uart_launcher & - echo "$!" > /var/run/stp_uart_launcher.pid - sleep 3 - if [ -c /dev/wmtWifi ]; then - [ -n "$apmode" ] && start_ap - [ -n "$wlanmode" ] && start_wlan - [ -z "$apmode" ] && [ -z "$wlanmode" ] && start_ap - return 0 - else - return 1 - fi -} - -stop() { - find_radio - - if [ -c /dev/wmtWifi ]; then - stop_apwlan - stp_pid="$(cat /var/run/stp_uart_launcher.pid 2>/dev/null)" - if [ -n "$stp_pid" ]; then - kill "$stp_pid" - rm /var/run/stp_uart_launcher.pid - fi - fi -} - -reload() { - find_radio - - if [ -c /dev/wmtWifi ]; then - stop_apwlan - [ -n "$apmode" ] && start_ap - [ -n "$wlanmode" ] && start_wlan - [ -z "$apmode" ] && [ -z "$wlanmode" ] && start_ap - fi -} diff --git a/root/target/linux/generic/hack-5.4/690-mptcp_trunk.patch b/root/target/linux/generic/hack-5.4/690-mptcp_v0.96.patch similarity index 94% rename from root/target/linux/generic/hack-5.4/690-mptcp_trunk.patch rename to root/target/linux/generic/hack-5.4/690-mptcp_v0.96.patch index 927ccca4..297808af 100644 --- a/root/target/linux/generic/hack-5.4/690-mptcp_trunk.patch +++ b/root/target/linux/generic/hack-5.4/690-mptcp_v0.96.patch @@ -1,7 +1,7 @@ -diff -aurN linux-5.4.64/Documentation/admin-guide/kernel-parameters.txt linux-5.4.64.mptcp/Documentation/admin-guide/kernel-parameters.txt ---- linux-5.4.64/Documentation/admin-guide/kernel-parameters.txt 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/Documentation/admin-guide/kernel-parameters.txt 2020-09-10 19:25:10.375223065 +0200 -@@ -2734,6 +2734,10 @@ +diff -aurN linux-5.4.155/Documentation/admin-guide/kernel-parameters.txt mptcp-mptcp_v0.96/Documentation/admin-guide/kernel-parameters.txt +--- linux-5.4.155/Documentation/admin-guide/kernel-parameters.txt 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/Documentation/admin-guide/kernel-parameters.txt 2021-10-25 10:05:18.000000000 +0200 +@@ -2742,6 +2742,10 @@ allocations which rules out almost all kernel allocations. Use with caution! @@ -12,9 +12,9 @@ diff -aurN linux-5.4.64/Documentation/admin-guide/kernel-parameters.txt linux-5. MTD_Partition= [MTD] Format: ,,, -diff -aurN linux-5.4.64/Documentation/networking/ip-sysctl.txt linux-5.4.64.mptcp/Documentation/networking/ip-sysctl.txt ---- linux-5.4.64/Documentation/networking/ip-sysctl.txt 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/Documentation/networking/ip-sysctl.txt 2020-09-10 19:25:10.375223065 +0200 +diff -aurN linux-5.4.155/Documentation/networking/ip-sysctl.txt mptcp-mptcp_v0.96/Documentation/networking/ip-sysctl.txt +--- linux-5.4.155/Documentation/networking/ip-sysctl.txt 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/Documentation/networking/ip-sysctl.txt 2021-10-25 10:05:18.000000000 +0200 @@ -818,6 +818,18 @@ Default: 0 (disabled) @@ -34,10 +34,10 @@ diff -aurN linux-5.4.64/Documentation/networking/ip-sysctl.txt linux-5.4.64.mptc UDP variables: udp_l3mdev_accept - BOOLEAN -diff -aurN linux-5.4.64/drivers/infiniband/hw/cxgb4/cm.c linux-5.4.64.mptcp/drivers/infiniband/hw/cxgb4/cm.c ---- linux-5.4.64/drivers/infiniband/hw/cxgb4/cm.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/drivers/infiniband/hw/cxgb4/cm.c 2020-09-10 19:25:10.439222000 +0200 -@@ -3949,7 +3949,7 @@ +diff -aurN linux-5.4.155/drivers/infiniband/hw/cxgb4/cm.c mptcp-mptcp_v0.96/drivers/infiniband/hw/cxgb4/cm.c +--- linux-5.4.155/drivers/infiniband/hw/cxgb4/cm.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/drivers/infiniband/hw/cxgb4/cm.c 2021-10-25 10:05:18.000000000 +0200 +@@ -3950,7 +3950,7 @@ */ memset(&tmp_opt, 0, sizeof(tmp_opt)); tcp_clear_options(&tmp_opt); @@ -46,9 +46,9 @@ diff -aurN linux-5.4.64/drivers/infiniband/hw/cxgb4/cm.c linux-5.4.64.mptcp/driv req = __skb_push(skb, sizeof(*req)); memset(req, 0, sizeof(*req)); -diff -aurN linux-5.4.64/include/linux/skbuff.h linux-5.4.64.mptcp/include/linux/skbuff.h ---- linux-5.4.64/include/linux/skbuff.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/linux/skbuff.h 2020-09-10 19:25:10.439222000 +0200 +diff -aurN linux-5.4.155/include/linux/skbuff.h mptcp-mptcp_v0.96/include/linux/skbuff.h +--- linux-5.4.155/include/linux/skbuff.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/linux/skbuff.h 2021-10-25 10:05:18.000000000 +0200 @@ -717,7 +717,7 @@ * want to keep them across layers you have to do a skb_clone() * first. This is owned by whoever has the skb queued ATM. @@ -58,9 +58,9 @@ diff -aurN linux-5.4.64/include/linux/skbuff.h linux-5.4.64.mptcp/include/linux/ union { struct { -diff -aurN linux-5.4.64/include/linux/tcp.h linux-5.4.64.mptcp/include/linux/tcp.h ---- linux-5.4.64/include/linux/tcp.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/linux/tcp.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/linux/tcp.h mptcp-mptcp_v0.96/include/linux/tcp.h +--- linux-5.4.155/include/linux/tcp.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/linux/tcp.h 2021-10-25 10:05:18.000000000 +0200 @@ -54,7 +54,7 @@ /* TCP Fast Open */ #define TCP_FASTOPEN_COOKIE_MIN 4 /* Min Fast Open Cookie size in bytes */ @@ -146,7 +146,15 @@ diff -aurN linux-5.4.64/include/linux/tcp.h linux-5.4.64.mptcp/include/linux/tcp struct tcp_sock { /* inet_connection_sock has to be the first member of tcp_sock */ struct inet_connection_sock inet_conn; -@@ -397,6 +452,44 @@ +@@ -295,6 +350,7 @@ + u32 rate_interval_us; /* saved rate sample: time elapsed */ + + u32 rcv_wnd; /* Current receiver window */ ++ u32 rcv_right_edge; /* Highest announced right edge */ + u32 write_seq; /* Tail(+1) of data held in tcp send buffer */ + u32 notsent_lowat; /* TCP_NOTSENT_LOWAT */ + u32 pushed_seq; /* Last pushed seq, required to talk to windows */ +@@ -397,6 +453,44 @@ */ struct request_sock __rcu *fastopen_rsk; u32 *saved_syn; @@ -191,7 +199,7 @@ diff -aurN linux-5.4.64/include/linux/tcp.h linux-5.4.64.mptcp/include/linux/tcp }; enum tsq_enum { -@@ -408,6 +501,8 @@ +@@ -408,6 +502,8 @@ TCP_MTU_REDUCED_DEFERRED, /* tcp_v{4|6}_err() could not call * tcp_v{4|6}_mtu_reduced() */ @@ -200,7 +208,7 @@ diff -aurN linux-5.4.64/include/linux/tcp.h linux-5.4.64.mptcp/include/linux/tcp }; enum tsq_flags { -@@ -417,6 +512,8 @@ +@@ -417,6 +513,8 @@ TCPF_WRITE_TIMER_DEFERRED = (1UL << TCP_WRITE_TIMER_DEFERRED), TCPF_DELACK_TIMER_DEFERRED = (1UL << TCP_DELACK_TIMER_DEFERRED), TCPF_MTU_REDUCED_DEFERRED = (1UL << TCP_MTU_REDUCED_DEFERRED), @@ -209,7 +217,7 @@ diff -aurN linux-5.4.64/include/linux/tcp.h linux-5.4.64.mptcp/include/linux/tcp }; static inline struct tcp_sock *tcp_sk(const struct sock *sk) -@@ -440,6 +537,7 @@ +@@ -440,6 +538,7 @@ #ifdef CONFIG_TCP_MD5SIG struct tcp_md5sig_key *tw_md5_key; #endif @@ -217,9 +225,9 @@ diff -aurN linux-5.4.64/include/linux/tcp.h linux-5.4.64.mptcp/include/linux/tcp }; static inline struct tcp_timewait_sock *tcp_twsk(const struct sock *sk) -diff -aurN linux-5.4.64/include/net/inet_common.h linux-5.4.64.mptcp/include/net/inet_common.h ---- linux-5.4.64/include/net/inet_common.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/net/inet_common.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/net/inet_common.h mptcp-mptcp_v0.96/include/net/inet_common.h +--- linux-5.4.155/include/net/inet_common.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/net/inet_common.h 2021-10-25 10:05:18.000000000 +0200 @@ -2,6 +2,7 @@ #ifndef _INET_COMMON_H #define _INET_COMMON_H @@ -237,9 +245,9 @@ diff -aurN linux-5.4.64/include/net/inet_common.h linux-5.4.64.mptcp/include/net int inet_release(struct socket *sock); int inet_stream_connect(struct socket *sock, struct sockaddr *uaddr, int addr_len, int flags); -diff -aurN linux-5.4.64/include/net/inet_connection_sock.h linux-5.4.64.mptcp/include/net/inet_connection_sock.h ---- linux-5.4.64/include/net/inet_connection_sock.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/net/inet_connection_sock.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/net/inet_connection_sock.h mptcp-mptcp_v0.96/include/net/inet_connection_sock.h +--- linux-5.4.155/include/net/inet_connection_sock.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/net/inet_connection_sock.h 2021-10-25 10:05:18.000000000 +0200 @@ -25,6 +25,7 @@ struct inet_bind_bucket; @@ -248,9 +256,9 @@ diff -aurN linux-5.4.64/include/net/inet_connection_sock.h linux-5.4.64.mptcp/in /* * Pointers to address related TCP functions -diff -aurN linux-5.4.64/include/net/inet_sock.h linux-5.4.64.mptcp/include/net/inet_sock.h ---- linux-5.4.64/include/net/inet_sock.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/net/inet_sock.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/net/inet_sock.h mptcp-mptcp_v0.96/include/net/inet_sock.h +--- linux-5.4.155/include/net/inet_sock.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/net/inet_sock.h 2021-10-25 10:05:18.000000000 +0200 @@ -79,7 +79,7 @@ #define ireq_state req.__req_common.skc_state #define ireq_family req.__req_common.skc_family @@ -269,10 +277,10 @@ diff -aurN linux-5.4.64/include/net/inet_sock.h linux-5.4.64.mptcp/include/net/i smc_ok : 1; u32 ir_mark; union { -diff -aurN linux-5.4.64/include/net/mptcp.h linux-5.4.64.mptcp/include/net/mptcp.h ---- linux-5.4.64/include/net/mptcp.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/include/net/mptcp.h 2020-09-10 19:25:10.499221003 +0200 -@@ -0,0 +1,1571 @@ +diff -aurN linux-5.4.155/include/net/mptcp.h mptcp-mptcp_v0.96/include/net/mptcp.h +--- linux-5.4.155/include/net/mptcp.h 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/include/net/mptcp.h 2021-10-25 10:05:18.000000000 +0200 +@@ -0,0 +1,1573 @@ +/* + * MPTCP implementation + * @@ -639,7 +647,7 @@ diff -aurN linux-5.4.64/include/net/mptcp.h linux-5.4.64.mptcp/include/net/mptcp +#define MPTCPV1_SUB_LEN_CAPABLE_ACK 20 +#define MPTCPV1_SUB_LEN_CAPABLE_ACK_ALIGN 20 +#define MPTCPV1_SUB_LEN_CAPABLE_DATA 22 -+#define MPTCPV1_SUB_LEN_CAPABLE_DATA_CSUM 22 ++#define MPTCPV1_SUB_LEN_CAPABLE_DATA_CSUM 24 +#define MPTCPV1_SUB_LEN_CAPABLE_DATA_ALIGN 24 + +#define MPTCP_SUB_JOIN 1 @@ -1004,7 +1012,6 @@ diff -aurN linux-5.4.64/include/net/mptcp.h linux-5.4.64.mptcp/include/net/mptcp + +#define MPTCP_INC_STATS(net, field) SNMP_INC_STATS((net)->mptcp.mptcp_statistics, field) +#define MPTCP_DEC_STATS(net, field) SNMP_DEC_STATS((net)->mptcp.mptcp_statistics, field) -+#define MPTCP_INC_STATS_BH(net, field) __SNMP_INC_STATS((net)->mptcp.mptcp_statistics, field) + +enum +{ @@ -1238,6 +1245,9 @@ diff -aurN linux-5.4.64/include/net/mptcp.h linux-5.4.64.mptcp/include/net/mptcp +{ + if (!mptcp_init_failed && + sk->sk_type == SOCK_STREAM && sk->sk_protocol == IPPROTO_TCP && ++#ifdef CONFIG_TCP_MD5SIG ++ !rcu_access_pointer(tcp_sk(sk)->md5sig_info) && ++#endif + sysctl_mptcp_enabled & MPTCP_ENABLE && + !(sysctl_mptcp_enabled & MPTCP_SERVER_DISABLE)) + mptcp_enable_sock(sk); @@ -1247,6 +1257,9 @@ diff -aurN linux-5.4.64/include/net/mptcp.h linux-5.4.64.mptcp/include/net/mptcp +{ + if (!mptcp_init_failed && + sk->sk_type == SOCK_STREAM && sk->sk_protocol == IPPROTO_TCP && ++#ifdef CONFIG_TCP_MD5SIG ++ !rcu_access_pointer(tcp_sk(sk)->md5sig_info) && ++#endif + sysctl_mptcp_enabled & MPTCP_ENABLE && + !(sysctl_mptcp_enabled & MPTCP_CLIENT_DISABLE)) + mptcp_enable_sock(sk); @@ -1660,9 +1673,6 @@ diff -aurN linux-5.4.64/include/net/mptcp.h linux-5.4.64.mptcp/include/net/mptcp +u16 mptcp_select_window(struct sock *sk); +void mptcp_tcp_set_rto(struct sock *sk); + -+/* TCP and MPTCP flag-depending functions */ -+bool mptcp_prune_ofo_queue(struct sock *sk); -+ +#else /* CONFIG_MPTCP */ +#define mptcp_debug(fmt, args...) \ + do { \ @@ -1844,9 +1854,9 @@ diff -aurN linux-5.4.64/include/net/mptcp.h linux-5.4.64.mptcp/include/net/mptcp +#endif /* CONFIG_MPTCP */ + +#endif /* _MPTCP_H */ -diff -aurN linux-5.4.64/include/net/mptcp_v4.h linux-5.4.64.mptcp/include/net/mptcp_v4.h ---- linux-5.4.64/include/net/mptcp_v4.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/include/net/mptcp_v4.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/net/mptcp_v4.h mptcp-mptcp_v0.96/include/net/mptcp_v4.h +--- linux-5.4.155/include/net/mptcp_v4.h 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/include/net/mptcp_v4.h 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,76 @@ +/* + * MPTCP implementation @@ -1924,9 +1934,9 @@ diff -aurN linux-5.4.64/include/net/mptcp_v4.h linux-5.4.64.mptcp/include/net/mp +#endif /* CONFIG_MPTCP */ + +#endif /* MPTCP_V4_H_ */ -diff -aurN linux-5.4.64/include/net/mptcp_v6.h linux-5.4.64.mptcp/include/net/mptcp_v6.h ---- linux-5.4.64/include/net/mptcp_v6.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/include/net/mptcp_v6.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/net/mptcp_v6.h mptcp-mptcp_v0.96/include/net/mptcp_v6.h +--- linux-5.4.155/include/net/mptcp_v6.h 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/include/net/mptcp_v6.h 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,77 @@ +/* + * MPTCP implementation @@ -2005,9 +2015,9 @@ diff -aurN linux-5.4.64/include/net/mptcp_v6.h linux-5.4.64.mptcp/include/net/mp +#endif /* CONFIG_MPTCP */ + +#endif /* _MPTCP_V6_H */ -diff -aurN linux-5.4.64/include/net/net_namespace.h linux-5.4.64.mptcp/include/net/net_namespace.h ---- linux-5.4.64/include/net/net_namespace.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/net/net_namespace.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/net/net_namespace.h mptcp-mptcp_v0.96/include/net/net_namespace.h +--- linux-5.4.155/include/net/net_namespace.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/net/net_namespace.h 2021-10-25 10:05:18.000000000 +0200 @@ -19,6 +19,7 @@ #include #include @@ -2026,9 +2036,9 @@ diff -aurN linux-5.4.64/include/net/net_namespace.h linux-5.4.64.mptcp/include/n #if IS_ENABLED(CONFIG_IEEE802154_6LOWPAN) struct netns_ieee802154_lowpan ieee802154_lowpan; #endif -diff -aurN linux-5.4.64/include/net/netns/mptcp.h linux-5.4.64.mptcp/include/net/netns/mptcp.h ---- linux-5.4.64/include/net/netns/mptcp.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/include/net/netns/mptcp.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/net/netns/mptcp.h mptcp-mptcp_v0.96/include/net/netns/mptcp.h +--- linux-5.4.155/include/net/netns/mptcp.h 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/include/net/netns/mptcp.h 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,52 @@ +/* + * MPTCP implementation - MPTCP namespace @@ -2082,9 +2092,9 @@ diff -aurN linux-5.4.64/include/net/netns/mptcp.h linux-5.4.64.mptcp/include/net +}; + +#endif /* __NETNS_MPTCP_H__ */ -diff -aurN linux-5.4.64/include/net/snmp.h linux-5.4.64.mptcp/include/net/snmp.h ---- linux-5.4.64/include/net/snmp.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/net/snmp.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/net/snmp.h mptcp-mptcp_v0.96/include/net/snmp.h +--- linux-5.4.155/include/net/snmp.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/net/snmp.h 2021-10-25 10:05:18.000000000 +0200 @@ -86,7 +86,6 @@ atomic_long_t mibs[ICMP6MSG_MIB_MAX]; }; @@ -2093,10 +2103,10 @@ diff -aurN linux-5.4.64/include/net/snmp.h linux-5.4.64.mptcp/include/net/snmp.h /* TCP */ #define TCP_MIB_MAX __TCP_MIB_MAX struct tcp_mib { -diff -aurN linux-5.4.64/include/net/sock.h linux-5.4.64.mptcp/include/net/sock.h ---- linux-5.4.64/include/net/sock.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/net/sock.h 2020-09-10 19:25:10.499221003 +0200 -@@ -819,6 +819,7 @@ +diff -aurN linux-5.4.155/include/net/sock.h mptcp-mptcp_v0.96/include/net/sock.h +--- linux-5.4.155/include/net/sock.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/net/sock.h 2021-10-25 10:05:18.000000000 +0200 +@@ -821,6 +821,7 @@ SOCK_TXTIME, SOCK_XDP, /* XDP is attached */ SOCK_TSTAMP_NEW, /* Indicates 64 bit timestamps always */ @@ -2104,7 +2114,7 @@ diff -aurN linux-5.4.64/include/net/sock.h linux-5.4.64.mptcp/include/net/sock.h }; #define SK_FLAGS_TIMESTAMP ((1UL << SOCK_TIMESTAMP) | (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE)) -@@ -1131,6 +1132,7 @@ +@@ -1133,6 +1134,7 @@ void (*unhash)(struct sock *sk); void (*rehash)(struct sock *sk); int (*get_port)(struct sock *sk, unsigned short snum); @@ -2112,9 +2122,9 @@ diff -aurN linux-5.4.64/include/net/sock.h linux-5.4.64.mptcp/include/net/sock.h /* Keeping track of sockets in use */ #ifdef CONFIG_PROC_FS -diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h ---- linux-5.4.64/include/net/tcp.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/net/tcp.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/net/tcp.h mptcp-mptcp_v0.96/include/net/tcp.h +--- linux-5.4.155/include/net/tcp.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/net/tcp.h 2021-10-25 10:05:18.000000000 +0200 @@ -182,6 +182,7 @@ #define TCPOPT_SACK 5 /* SACK Block */ #define TCPOPT_TIMESTAMP 8 /* Better RTT estimations/PAWS */ @@ -2155,7 +2165,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h /* sysctl variables for tcp */ extern int sysctl_tcp_max_orphans; -@@ -310,6 +336,97 @@ +@@ -310,6 +336,98 @@ #define TCP_DEC_STATS(net, field) SNMP_DEC_STATS((net)->mib.tcp_statistics, field) #define TCP_ADD_STATS(net, field, val) SNMP_ADD_STATS((net)->mib.tcp_statistics, field, val) @@ -2173,6 +2183,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h +void tcp_event_new_data_sent(struct sock *sk, struct sk_buff *skb); +int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, + gfp_t gfp_mask); ++u32 tcp_tso_segs(struct sock *sk, unsigned int mss_now); +unsigned int tcp_mss_split_point(const struct sock *sk, + const struct sk_buff *skb, + unsigned int mss_now, @@ -2253,7 +2264,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h void tcp_tasklet_init(void); int tcp_v4_err(struct sk_buff *skb, u32); -@@ -411,7 +528,9 @@ +@@ -411,7 +529,9 @@ #endif void tcp_parse_options(const struct net *net, const struct sk_buff *skb, struct tcp_options_received *opt_rx, @@ -2264,7 +2275,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h const u8 *tcp_parse_md5sig_option(const struct tcphdr *th); /* -@@ -430,6 +549,7 @@ +@@ -430,6 +550,7 @@ void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb); void tcp_v4_mtu_reduced(struct sock *sk); @@ -2272,7 +2283,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h void tcp_req_err(struct sock *sk, u32 seq, bool abort); int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb); struct sock *tcp_create_openreq_child(const struct sock *sk, -@@ -453,6 +573,7 @@ +@@ -453,6 +574,7 @@ struct request_sock *req, struct tcp_fastopen_cookie *foc, enum tcp_synack_type synack_type); @@ -2280,7 +2291,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h int tcp_disconnect(struct sock *sk, int flags); void tcp_finish_connect(struct sock *sk, struct sk_buff *skb); -@@ -462,6 +583,7 @@ +@@ -462,6 +584,7 @@ /* From syncookies.c */ struct sock *tcp_get_cookie_sock(struct sock *sk, struct sk_buff *skb, struct request_sock *req, @@ -2288,7 +2299,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h struct dst_entry *dst, u32 tsoff); int __cookie_v4_check(const struct iphdr *iph, const struct tcphdr *th, u32 cookie); -@@ -547,7 +669,8 @@ +@@ -547,7 +670,8 @@ u32 __cookie_v4_init_sequence(const struct iphdr *iph, const struct tcphdr *th, u16 *mssp); @@ -2298,7 +2309,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h u64 cookie_init_timestamp(struct request_sock *req); bool cookie_timestamp_decode(const struct net *net, struct tcp_options_received *opt); -@@ -561,7 +684,8 @@ +@@ -561,7 +685,8 @@ u32 __cookie_v6_init_sequence(const struct ipv6hdr *iph, const struct tcphdr *th, u16 *mssp); @@ -2308,7 +2319,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h #endif /* tcp_output.c */ -@@ -597,10 +721,16 @@ +@@ -597,10 +722,16 @@ void tcp_skb_collapse_tstamp(struct sk_buff *skb, const struct sk_buff *next_skb); @@ -2325,7 +2336,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h void tcp_skb_mark_lost_uncond_verify(struct tcp_sock *tp, struct sk_buff *skb); void tcp_fin(struct sock *sk); -@@ -644,7 +774,7 @@ +@@ -645,7 +776,7 @@ } /* tcp.c */ @@ -2334,7 +2345,49 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h /* Read 'sendfile()'-style from a TCP socket */ int tcp_read_sock(struct sock *sk, read_descriptor_t *desc, -@@ -828,6 +958,12 @@ +@@ -723,7 +854,7 @@ + * Rcv_nxt can be after the window if our peer push more data + * than the offered window. + */ +-static inline u32 tcp_receive_window(const struct tcp_sock *tp) ++static inline u32 tcp_receive_window_now(const struct tcp_sock *tp) + { + s32 win = tp->rcv_wup + tp->rcv_wnd - tp->rcv_nxt; + +@@ -732,6 +863,32 @@ + return (u32) win; + } + ++/* right edge only moves forward, even if window shrinks due ++ * to mptcp meta ++ */ ++static inline void tcp_update_rcv_right_edge(struct tcp_sock *tp) ++{ ++ if (after(tp->rcv_wup + tp->rcv_wnd, tp->rcv_right_edge)) ++ tp->rcv_right_edge = tp->rcv_wup + tp->rcv_wnd; ++} ++ ++/* Compute receive window which will never shrink. The way MPTCP handles ++ * the receive window can cause the effective right edge to shrink, ++ * causing valid segments to become out of window. ++ * This function should be used when checking if a segment is valid for ++ * the max right edge announced. ++ */ ++static inline u32 tcp_receive_window_no_shrink(const struct tcp_sock *tp) ++{ ++ s32 win = tp->rcv_right_edge - tp->rcv_nxt; ++ ++ win = max_t(s32, win, tp->rcv_wup + tp->rcv_wnd - tp->rcv_nxt); ++ ++ if (unlikely(win < 0)) ++ win = 0; ++ return (u32) win; ++} ++ + /* Choose a new window, without checks for shrinking, and without + * scaling applied to the result. The caller does these things + * if necessary. This is a "raw" window selection. +@@ -829,6 +986,12 @@ u16 tcp_gso_size; }; }; @@ -2347,7 +2400,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h __u8 tcp_flags; /* TCP header flags. (tcp[13]) */ __u8 sacked; /* State flags for SACK. */ -@@ -846,6 +982,14 @@ +@@ -847,6 +1010,14 @@ has_rxtstamp:1, /* SKB has a RX timestamp */ unused:5; __u32 ack_seq; /* Sequence number ACK'd */ @@ -2362,7 +2415,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h union { struct { /* There is space for up to 24 bytes */ -@@ -1087,6 +1231,8 @@ +@@ -1088,6 +1259,8 @@ int tcp_set_allowed_congestion_control(char *allowed); int tcp_set_congestion_control(struct sock *sk, const char *name, bool load, bool reinit, bool cap_net_admin); @@ -2371,7 +2424,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h u32 tcp_slow_start(struct tcp_sock *tp, u32 acked); void tcp_cong_avoid_ai(struct tcp_sock *tp, u32 w, u32 acked); -@@ -1388,6 +1534,19 @@ +@@ -1389,6 +1562,19 @@ space - (space>>tcp_adv_win_scale); } @@ -2391,7 +2444,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h /* Note: caller must be prepared to deal with negative returns */ static inline int tcp_space(const struct sock *sk) { -@@ -1975,6 +2134,30 @@ +@@ -1981,6 +2167,30 @@ #endif }; @@ -2422,7 +2475,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h struct tcp_request_sock_ops { u16 mss_clamp; #ifdef CONFIG_TCP_MD5SIG -@@ -1985,12 +2168,13 @@ +@@ -1991,12 +2201,13 @@ const struct sock *sk, const struct sk_buff *skb); #endif @@ -2441,7 +2494,7 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h #endif struct dst_entry *(*route_req)(const struct sock *sk, struct flowi *fl, const struct request_sock *req); -@@ -2004,15 +2188,17 @@ +@@ -2010,15 +2221,17 @@ #ifdef CONFIG_SYN_COOKIES static inline __u32 cookie_init_sequence(const struct tcp_request_sock_ops *ops, @@ -2460,9 +2513,9 @@ diff -aurN linux-5.4.64/include/net/tcp.h linux-5.4.64.mptcp/include/net/tcp.h const struct sock *sk, struct sk_buff *skb, __u16 *mss) { -diff -aurN linux-5.4.64/include/net/tcp_states.h linux-5.4.64.mptcp/include/net/tcp_states.h ---- linux-5.4.64/include/net/tcp_states.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/net/tcp_states.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/net/tcp_states.h mptcp-mptcp_v0.96/include/net/tcp_states.h +--- linux-5.4.155/include/net/tcp_states.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/net/tcp_states.h 2021-10-25 10:05:18.000000000 +0200 @@ -22,6 +22,7 @@ TCP_LISTEN, TCP_CLOSING, /* Now a valid state */ @@ -2479,9 +2532,9 @@ diff -aurN linux-5.4.64/include/net/tcp_states.h linux-5.4.64.mptcp/include/net/ }; #endif /* _LINUX_TCP_STATES_H */ -diff -aurN linux-5.4.64/include/net/transp_v6.h linux-5.4.64.mptcp/include/net/transp_v6.h ---- linux-5.4.64/include/net/transp_v6.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/net/transp_v6.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/net/transp_v6.h mptcp-mptcp_v0.96/include/net/transp_v6.h +--- linux-5.4.155/include/net/transp_v6.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/net/transp_v6.h 2021-10-25 10:05:18.000000000 +0200 @@ -58,6 +58,8 @@ /* address family specific functions */ @@ -2491,9 +2544,9 @@ diff -aurN linux-5.4.64/include/net/transp_v6.h linux-5.4.64.mptcp/include/net/t void inet6_destroy_sock(struct sock *sk); -diff -aurN linux-5.4.64/include/trace/events/tcp.h linux-5.4.64.mptcp/include/trace/events/tcp.h ---- linux-5.4.64/include/trace/events/tcp.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/trace/events/tcp.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/trace/events/tcp.h mptcp-mptcp_v0.96/include/trace/events/tcp.h +--- linux-5.4.155/include/trace/events/tcp.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/trace/events/tcp.h 2021-10-25 10:05:18.000000000 +0200 @@ -10,6 +10,7 @@ #include #include @@ -2542,9 +2595,9 @@ diff -aurN linux-5.4.64/include/trace/events/tcp.h linux-5.4.64.mptcp/include/tr ); #endif /* _TRACE_TCP_H */ -diff -aurN linux-5.4.64/include/uapi/linux/bpf.h linux-5.4.64.mptcp/include/uapi/linux/bpf.h ---- linux-5.4.64/include/uapi/linux/bpf.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/uapi/linux/bpf.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/uapi/linux/bpf.h mptcp-mptcp_v0.96/include/uapi/linux/bpf.h +--- linux-5.4.155/include/uapi/linux/bpf.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/uapi/linux/bpf.h 2021-10-25 10:05:18.000000000 +0200 @@ -3438,6 +3438,7 @@ BPF_TCP_LISTEN, BPF_TCP_CLOSING, /* Now a valid state */ @@ -2553,9 +2606,9 @@ diff -aurN linux-5.4.64/include/uapi/linux/bpf.h linux-5.4.64.mptcp/include/uapi BPF_TCP_MAX_STATES /* Leave at the end! */ }; -diff -aurN linux-5.4.64/include/uapi/linux/if.h linux-5.4.64.mptcp/include/uapi/linux/if.h ---- linux-5.4.64/include/uapi/linux/if.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/uapi/linux/if.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/uapi/linux/if.h mptcp-mptcp_v0.96/include/uapi/linux/if.h +--- linux-5.4.155/include/uapi/linux/if.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/uapi/linux/if.h 2021-10-25 10:05:18.000000000 +0200 @@ -132,6 +132,9 @@ #define IFF_ECHO IFF_ECHO #endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */ @@ -2566,9 +2619,9 @@ diff -aurN linux-5.4.64/include/uapi/linux/if.h linux-5.4.64.mptcp/include/uapi/ #define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\ IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT) -diff -aurN linux-5.4.64/include/uapi/linux/in.h linux-5.4.64.mptcp/include/uapi/linux/in.h ---- linux-5.4.64/include/uapi/linux/in.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/uapi/linux/in.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/uapi/linux/in.h mptcp-mptcp_v0.96/include/uapi/linux/in.h +--- linux-5.4.155/include/uapi/linux/in.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/uapi/linux/in.h 2021-10-25 10:05:18.000000000 +0200 @@ -76,6 +76,8 @@ #define IPPROTO_MPLS IPPROTO_MPLS IPPROTO_RAW = 255, /* Raw IP packets */ @@ -2578,9 +2631,9 @@ diff -aurN linux-5.4.64/include/uapi/linux/in.h linux-5.4.64.mptcp/include/uapi/ IPPROTO_MAX }; #endif -diff -aurN linux-5.4.64/include/uapi/linux/mptcp.h linux-5.4.64.mptcp/include/uapi/linux/mptcp.h ---- linux-5.4.64/include/uapi/linux/mptcp.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/include/uapi/linux/mptcp.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/uapi/linux/mptcp.h mptcp-mptcp_v0.96/include/uapi/linux/mptcp.h +--- linux-5.4.155/include/uapi/linux/mptcp.h 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/include/uapi/linux/mptcp.h 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,149 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* @@ -2671,8 +2724,8 @@ diff -aurN linux-5.4.64/include/uapi/linux/mptcp.h linux-5.4.64.mptcp/include/ua + * - MPTCP_CMD_REMOVE: token, loc_id + * Announce that an address has been lost to the peer. + * -+ * - MPTCP_CMD_SUB_CREATE: token, family, loc_id, rem_id, [saddr4 | saddr6, -+ * daddr4 | daddr6, dport [, sport, backup, if_idx]] ++ * - MPTCP_CMD_SUB_CREATE: token, family, loc_id, rem_id, daddr4 | daddr6, ++ * dport [, saddr4 | saddr6, sport, backup, if_idx] + * Create a new subflow. + * + * - MPTCP_CMD_SUB_DESTROY: token, family, saddr4 | saddr6, daddr4 | daddr6, @@ -2731,9 +2784,9 @@ diff -aurN linux-5.4.64/include/uapi/linux/mptcp.h linux-5.4.64.mptcp/include/ua +}; + +#endif /* _LINUX_MPTCP_H */ -diff -aurN linux-5.4.64/include/uapi/linux/tcp.h linux-5.4.64.mptcp/include/uapi/linux/tcp.h ---- linux-5.4.64/include/uapi/linux/tcp.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/include/uapi/linux/tcp.h 2020-09-10 19:25:10.499221003 +0200 +diff -aurN linux-5.4.155/include/uapi/linux/tcp.h mptcp-mptcp_v0.96/include/uapi/linux/tcp.h +--- linux-5.4.155/include/uapi/linux/tcp.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/include/uapi/linux/tcp.h 2021-10-25 10:05:18.000000000 +0200 @@ -18,9 +18,15 @@ #ifndef _UAPI_LINUX_TCP_H #define _UAPI_LINUX_TCP_H @@ -2819,10 +2872,10 @@ diff -aurN linux-5.4.64/include/uapi/linux/tcp.h linux-5.4.64.mptcp/include/uapi /* for TCP_MD5SIG socket option */ #define TCP_MD5SIG_MAXKEYLEN 80 -diff -aurN linux-5.4.64/net/core/dev.c linux-5.4.64.mptcp/net/core/dev.c ---- linux-5.4.64/net/core/dev.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/core/dev.c 2020-09-10 19:25:10.503220935 +0200 -@@ -7851,7 +7851,7 @@ +diff -aurN linux-5.4.155/net/core/dev.c mptcp-mptcp_v0.96/net/core/dev.c +--- linux-5.4.155/net/core/dev.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/core/dev.c 2021-10-25 10:05:18.000000000 +0200 +@@ -7880,7 +7880,7 @@ dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP | IFF_DYNAMIC | IFF_MULTICAST | IFF_PORTSEL | @@ -2831,19 +2884,83 @@ diff -aurN linux-5.4.64/net/core/dev.c linux-5.4.64.mptcp/net/core/dev.c (dev->flags & (IFF_UP | IFF_VOLATILE | IFF_PROMISC | IFF_ALLMULTI)); -diff -aurN linux-5.4.64/net/core/net-traces.c linux-5.4.64.mptcp/net/core/net-traces.c ---- linux-5.4.64/net/core/net-traces.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/core/net-traces.c 2020-09-10 19:25:10.503220935 +0200 +diff -aurN linux-5.4.155/net/core/filter.c mptcp-mptcp_v0.96/net/core/filter.c +--- linux-5.4.155/net/core/filter.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/core/filter.c 2021-10-25 10:05:18.000000000 +0200 +@@ -73,6 +73,7 @@ + #include + #include + #include ++#include + + /** + * sk_filter_trim_cap - run a packet through a socket filter +@@ -4280,6 +4281,19 @@ + if (sk->sk_mark != val) { + sk->sk_mark = val; + sk_dst_reset(sk); ++ ++ if (is_meta_sk(sk)) { ++ struct mptcp_tcp_sock *mptcp; ++ ++ mptcp_for_each_sub(tcp_sk(sk)->mpcb, mptcp) { ++ struct sock *sk_it = mptcp_to_sock(mptcp); ++ ++ if (val != sk_it->sk_mark) { ++ sk_it->sk_mark = val; ++ sk_dst_reset(sk_it); ++ } ++ } ++ } + } + break; + default: +@@ -4302,6 +4316,14 @@ + if (val == -1) + val = 0; + inet->tos = val; ++ ++ /* Update TOS on mptcp subflow */ ++ if (is_meta_sk(sk)) { ++ struct mptcp_tcp_sock *mptcp; ++ ++ mptcp_for_each_sub(tcp_sk(sk)->mpcb, mptcp) ++ inet_sk(mptcp_to_sock(mptcp))->tos = val; ++ } + } + break; + default: +@@ -4324,6 +4346,17 @@ + if (val == -1) + val = 0; + np->tclass = val; ++ ++ if (is_meta_sk(sk)) { ++ struct mptcp_tcp_sock *mptcp; ++ ++ mptcp_for_each_sub(tcp_sk(sk)->mpcb, mptcp) { ++ struct sock *sk_it = mptcp_to_sock(mptcp); ++ ++ if (sk_it->sk_family == AF_INET6) ++ inet6_sk(sk_it)->tclass = val; ++ } ++ } + } + break; + default: +diff -aurN linux-5.4.155/net/core/net-traces.c mptcp-mptcp_v0.96/net/core/net-traces.c +--- linux-5.4.155/net/core/net-traces.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/core/net-traces.c 2021-10-25 10:05:18.000000000 +0200 @@ -60,3 +60,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(napi_poll); EXPORT_TRACEPOINT_SYMBOL_GPL(tcp_send_reset); + +EXPORT_TRACEPOINT_SYMBOL_GPL(mptcp_retransmit); -diff -aurN linux-5.4.64/net/core/skbuff.c linux-5.4.64.mptcp/net/core/skbuff.c ---- linux-5.4.64/net/core/skbuff.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/core/skbuff.c 2020-09-10 19:25:10.503220935 +0200 -@@ -573,7 +573,7 @@ +diff -aurN linux-5.4.155/net/core/skbuff.c mptcp-mptcp_v0.96/net/core/skbuff.c +--- linux-5.4.155/net/core/skbuff.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/core/skbuff.c 2021-10-25 10:05:18.000000000 +0200 +@@ -582,7 +582,7 @@ skb_drop_list(&skb_shinfo(skb)->frag_list); } @@ -2852,9 +2969,9 @@ diff -aurN linux-5.4.64/net/core/skbuff.c linux-5.4.64.mptcp/net/core/skbuff.c { struct sk_buff *list; -diff -aurN linux-5.4.64/net/core/sock.c linux-5.4.64.mptcp/net/core/sock.c ---- linux-5.4.64/net/core/sock.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/core/sock.c 2020-09-10 19:26:53.689504155 +0200 +diff -aurN linux-5.4.155/net/core/sock.c mptcp-mptcp_v0.96/net/core/sock.c +--- linux-5.4.155/net/core/sock.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/core/sock.c 2021-10-25 10:05:18.000000000 +0200 @@ -135,6 +135,11 @@ #include @@ -2867,7 +2984,27 @@ diff -aurN linux-5.4.64/net/core/sock.c linux-5.4.64.mptcp/net/core/sock.c #include #include -@@ -1551,6 +1556,23 @@ +@@ -1063,6 +1068,19 @@ + } else if (val != sk->sk_mark) { + sk->sk_mark = val; + sk_dst_reset(sk); ++ ++ if (is_meta_sk(sk)) { ++ struct mptcp_tcp_sock *mptcp; ++ ++ mptcp_for_each_sub(tcp_sk(sk)->mpcb, mptcp) { ++ struct sock *sk_it = mptcp_to_sock(mptcp); ++ ++ if (val != sk_it->sk_mark) { ++ sk_it->sk_mark = val; ++ sk_dst_reset(sk_it); ++ } ++ } ++ } + } + break; + +@@ -1563,6 +1581,23 @@ */ static inline void sock_lock_init(struct sock *sk) { @@ -2891,7 +3028,7 @@ diff -aurN linux-5.4.64/net/core/sock.c linux-5.4.64.mptcp/net/core/sock.c if (sk->sk_kern_sock) sock_lock_init_class_and_name( sk, -@@ -1599,8 +1621,12 @@ +@@ -1611,8 +1646,12 @@ sk = kmem_cache_alloc(slab, priority & ~__GFP_ZERO); if (!sk) return sk; @@ -2906,18 +3043,17 @@ diff -aurN linux-5.4.64/net/core/sock.c linux-5.4.64.mptcp/net/core/sock.c } else sk = kmalloc(prot->obj_size, priority); -@@ -1832,7 +1858,7 @@ - newsk->sk_userlocks = sk->sk_userlocks & ~SOCK_BINDPORT_LOCK; +@@ -1846,6 +1885,7 @@ atomic_set(&newsk->sk_zckey, 0); -- sock_reset_flag(newsk, SOCK_DONE); + sock_reset_flag(newsk, SOCK_DONE); + sock_reset_flag(newsk, SOCK_MPTCP); /* sk->sk_memcg will be populated at accept() time */ newsk->sk_memcg = NULL; -diff -aurN linux-5.4.64/net/ipv4/af_inet.c linux-5.4.64.mptcp/net/ipv4/af_inet.c ---- linux-5.4.64/net/ipv4/af_inet.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv4/af_inet.c 2020-09-10 19:25:10.503220935 +0200 +diff -aurN linux-5.4.155/net/ipv4/af_inet.c mptcp-mptcp_v0.96/net/ipv4/af_inet.c +--- linux-5.4.155/net/ipv4/af_inet.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv4/af_inet.c 2021-10-25 10:05:18.000000000 +0200 @@ -100,6 +100,7 @@ #include #include @@ -2990,9 +3126,9 @@ diff -aurN linux-5.4.64/net/ipv4/af_inet.c linux-5.4.64.mptcp/net/ipv4/af_inet.c /* Setup TCP slab cache for open requests. */ tcp_init(); -diff -aurN linux-5.4.64/net/ipv4/inet_connection_sock.c linux-5.4.64.mptcp/net/ipv4/inet_connection_sock.c ---- linux-5.4.64/net/ipv4/inet_connection_sock.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv4/inet_connection_sock.c 2020-09-10 19:25:10.503220935 +0200 +diff -aurN linux-5.4.155/net/ipv4/inet_connection_sock.c mptcp-mptcp_v0.96/net/ipv4/inet_connection_sock.c +--- linux-5.4.155/net/ipv4/inet_connection_sock.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv4/inet_connection_sock.c 2021-10-25 10:05:18.000000000 +0200 @@ -19,6 +19,7 @@ #include #include @@ -3001,7 +3137,7 @@ diff -aurN linux-5.4.64/net/ipv4/inet_connection_sock.c linux-5.4.64.mptcp/net/i #include #include #include -@@ -727,7 +728,10 @@ +@@ -730,7 +731,10 @@ int max_retries, thresh; u8 defer_accept; @@ -3013,7 +3149,7 @@ diff -aurN linux-5.4.64/net/ipv4/inet_connection_sock.c linux-5.4.64.mptcp/net/i goto drop; max_retries = icsk->icsk_syn_retries ? : net->ipv4.sysctl_tcp_synack_retries; -@@ -816,7 +820,9 @@ +@@ -819,7 +823,9 @@ const struct request_sock *req, const gfp_t priority) { @@ -3024,7 +3160,7 @@ diff -aurN linux-5.4.64/net/ipv4/inet_connection_sock.c linux-5.4.64.mptcp/net/i if (newsk) { struct inet_connection_sock *newicsk = inet_csk(newsk); -@@ -1015,7 +1021,14 @@ +@@ -1019,7 +1025,14 @@ */ while ((req = reqsk_queue_remove(queue, sk)) != NULL) { struct sock *child = req->sk; @@ -3039,7 +3175,7 @@ diff -aurN linux-5.4.64/net/ipv4/inet_connection_sock.c linux-5.4.64.mptcp/net/i local_bh_disable(); bh_lock_sock(child); WARN_ON(sock_owned_by_user(child)); -@@ -1025,6 +1038,10 @@ +@@ -1029,6 +1042,10 @@ reqsk_put(req); bh_unlock_sock(child); local_bh_enable(); @@ -3050,9 +3186,9 @@ diff -aurN linux-5.4.64/net/ipv4/inet_connection_sock.c linux-5.4.64.mptcp/net/i sock_put(child); cond_resched(); -diff -aurN linux-5.4.64/net/ipv4/ip_sockglue.c linux-5.4.64.mptcp/net/ipv4/ip_sockglue.c ---- linux-5.4.64/net/ipv4/ip_sockglue.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv4/ip_sockglue.c 2020-09-10 19:25:10.503220935 +0200 +diff -aurN linux-5.4.155/net/ipv4/ip_sockglue.c mptcp-mptcp_v0.96/net/ipv4/ip_sockglue.c +--- linux-5.4.155/net/ipv4/ip_sockglue.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv4/ip_sockglue.c 2021-10-25 10:05:18.000000000 +0200 @@ -44,6 +44,8 @@ #endif #include @@ -3092,9 +3228,9 @@ diff -aurN linux-5.4.64/net/ipv4/ip_sockglue.c linux-5.4.64.mptcp/net/ipv4/ip_so } break; case IP_TTL: -diff -aurN linux-5.4.64/net/ipv4/Kconfig linux-5.4.64.mptcp/net/ipv4/Kconfig ---- linux-5.4.64/net/ipv4/Kconfig 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv4/Kconfig 2020-09-10 19:25:10.503220935 +0200 +diff -aurN linux-5.4.155/net/ipv4/Kconfig mptcp-mptcp_v0.96/net/ipv4/Kconfig +--- linux-5.4.155/net/ipv4/Kconfig 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv4/Kconfig 2021-10-25 10:05:18.000000000 +0200 @@ -655,6 +655,51 @@ bufferbloat, policers, or AQM schemes that do not provide a delay signal. It requires the fq ("Fair Queue") pacing packet scheduler. @@ -3180,9 +3316,9 @@ diff -aurN linux-5.4.64/net/ipv4/Kconfig linux-5.4.64.mptcp/net/ipv4/Kconfig default "reno" if DEFAULT_RENO default "dctcp" if DEFAULT_DCTCP default "cdg" if DEFAULT_CDG -diff -aurN linux-5.4.64/net/ipv4/syncookies.c linux-5.4.64.mptcp/net/ipv4/syncookies.c ---- linux-5.4.64/net/ipv4/syncookies.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv4/syncookies.c 2020-09-10 19:25:10.503220935 +0200 +diff -aurN linux-5.4.155/net/ipv4/syncookies.c mptcp-mptcp_v0.96/net/ipv4/syncookies.c +--- linux-5.4.155/net/ipv4/syncookies.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv4/syncookies.c 2021-10-25 10:05:18.000000000 +0200 @@ -12,6 +12,8 @@ #include #include @@ -3287,7 +3423,7 @@ diff -aurN linux-5.4.64/net/ipv4/syncookies.c linux-5.4.64.mptcp/net/ipv4/syncoo /* We throwed the options of the initial SYN away, so we hope * the ACK carries the same options again (see RFC1122 4.2.3.8) */ -@@ -387,15 +421,15 @@ +@@ -392,15 +426,15 @@ (req->rsk_window_clamp > full_space || req->rsk_window_clamp == 0)) req->rsk_window_clamp = full_space; @@ -3308,9 +3444,9 @@ diff -aurN linux-5.4.64/net/ipv4/syncookies.c linux-5.4.64.mptcp/net/ipv4/syncoo /* ip_queue_xmit() depends on our flow being setup * Normal sockets get it right from inet_csk_route_child_sock() */ -diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c ---- linux-5.4.64/net/ipv4/tcp.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv4/tcp.c 2020-09-10 19:44:12.204220735 +0200 +diff -aurN linux-5.4.155/net/ipv4/tcp.c mptcp-mptcp_v0.96/net/ipv4/tcp.c +--- linux-5.4.155/net/ipv4/tcp.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv4/tcp.c 2021-10-25 10:05:18.000000000 +0200 @@ -270,6 +270,7 @@ #include @@ -3355,7 +3491,16 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c sk_sockets_allocated_inc(sk); sk->sk_route_forced_caps = NETIF_F_GSO; } -@@ -785,6 +808,7 @@ +@@ -484,7 +507,7 @@ + return true; + if (tcp_rmem_pressure(sk)) + return true; +- if (tcp_receive_window(tp) <= inet_csk(sk)->icsk_ack.rcv_mss) ++ if (tcp_receive_window_now(tp) <= inet_csk(sk)->icsk_ack.rcv_mss) + return true; + } + if (sk->sk_prot->stream_memory_read) +@@ -787,6 +810,7 @@ int ret; sock_rps_record_flow(sk); @@ -3363,7 +3508,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c /* * We can't seek on a socket input */ -@@ -795,6 +819,16 @@ +@@ -797,6 +821,16 @@ lock_sock(sk); @@ -3380,7 +3525,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c timeo = sock_rcvtimeo(sk, sock->file->f_flags & O_NONBLOCK); while (tss.len) { ret = __tcp_splice_read(sk, &tss); -@@ -910,8 +944,7 @@ +@@ -912,8 +946,7 @@ return NULL; } @@ -3390,7 +3535,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c { struct tcp_sock *tp = tcp_sk(sk); u32 new_size_goal, size_goal; -@@ -939,8 +972,13 @@ +@@ -941,8 +974,13 @@ { int mss_now; @@ -3406,7 +3551,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c return mss_now; } -@@ -979,12 +1017,34 @@ +@@ -982,12 +1020,34 @@ * is fully established. */ if (((1 << sk->sk_state) & ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) && @@ -3442,7 +3587,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c sk_clear_bit(SOCKWQ_ASYNC_NOSPACE, sk); mss_now = tcp_send_mss(sk, &size_goal, flags); -@@ -1106,7 +1166,8 @@ +@@ -1109,7 +1169,8 @@ int tcp_sendpage_locked(struct sock *sk, struct page *page, int offset, size_t size, int flags) { @@ -3452,7 +3597,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c return sock_no_sendpage_locked(sk, page, offset, size, flags); tcp_rate_check_app_limited(sk); /* is sending application-limited? */ -@@ -1228,12 +1289,21 @@ +@@ -1231,12 +1292,21 @@ * is fully established. */ if (((1 << sk->sk_state) & ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) && @@ -3475,7 +3620,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c if (unlikely(tp->repair)) { if (tp->repair_queue == TCP_RECV_QUEUE) { copied = tcp_send_rcvq(sk, msg, size); -@@ -1526,7 +1596,7 @@ +@@ -1529,7 +1599,7 @@ * calculation of whether or not we must ACK for the sake of * a window update. */ @@ -3484,7 +3629,12 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c { struct tcp_sock *tp = tcp_sk(sk); bool time_to_ack = false; -@@ -1569,7 +1639,7 @@ +@@ -1568,11 +1638,11 @@ + * in states, where we will not receive more. It is useless. + */ + if (copied > 0 && !time_to_ack && !(sk->sk_shutdown & RCV_SHUTDOWN)) { +- __u32 rcv_window_now = tcp_receive_window(tp); ++ __u32 rcv_window_now = tcp_receive_window_now(tp); /* Optimize, __tcp_select_window() is not cheap. */ if (2*rcv_window_now <= tp->window_clamp) { @@ -3493,7 +3643,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c /* Send ACK now, if this read freed lots of space * in our buffer. Certainly, new_window is new window. -@@ -1685,7 +1755,7 @@ +@@ -1688,7 +1758,7 @@ /* Clean up data we have read: This will do ACK frames. */ if (copied > 0) { tcp_recv_skb(sk, seq, &offset); @@ -3502,7 +3652,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c } return copied; } -@@ -1976,6 +2046,16 @@ +@@ -1979,6 +2049,16 @@ lock_sock(sk); @@ -3519,7 +3669,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c err = -ENOTCONN; if (sk->sk_state == TCP_LISTEN) goto out; -@@ -2094,7 +2174,7 @@ +@@ -2097,7 +2177,7 @@ } } @@ -3528,7 +3678,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c if (copied >= target) { /* Do not sleep, just process backlog. */ -@@ -2186,7 +2266,7 @@ +@@ -2189,7 +2269,7 @@ */ /* Clean up data we have read: This will do ACK frames. */ @@ -3537,7 +3687,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c release_sock(sk); -@@ -2245,8 +2325,11 @@ +@@ -2248,8 +2328,11 @@ switch (state) { case TCP_ESTABLISHED: @@ -3550,7 +3700,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c break; case TCP_CLOSE: -@@ -2259,8 +2342,11 @@ +@@ -2262,8 +2345,11 @@ inet_put_port(sk); /* fall through */ default: @@ -3563,7 +3713,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c } /* Change state AFTER socket is unhashed to avoid closed -@@ -2294,7 +2380,7 @@ +@@ -2297,7 +2383,7 @@ [TCP_NEW_SYN_RECV] = TCP_CLOSE, /* should not happen ! */ }; @@ -3572,7 +3722,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c { int next = (int)new_state[sk->sk_state]; int ns = next & TCP_STATE_MASK; -@@ -2324,7 +2410,7 @@ +@@ -2327,7 +2413,7 @@ TCPF_SYN_RECV | TCPF_CLOSE_WAIT)) { /* Clear out any half completed packets. FIN if needed. */ if (tcp_close_state(sk)) @@ -3581,7 +3731,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c } } EXPORT_SYMBOL(tcp_shutdown); -@@ -2349,6 +2435,17 @@ +@@ -2352,6 +2438,17 @@ int data_was_unread = 0; int state; @@ -3599,7 +3749,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c lock_sock(sk); sk->sk_shutdown = SHUTDOWN_MASK; -@@ -2393,7 +2490,7 @@ +@@ -2396,7 +2493,7 @@ /* Unread data was tossed, zap the connection. */ NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONCLOSE); tcp_set_state(sk, TCP_CLOSE); @@ -3608,7 +3758,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c } else if (sock_flag(sk, SOCK_LINGER) && !sk->sk_lingertime) { /* Check zero linger _after_ checking for unread data. */ sk->sk_prot->disconnect(sk, 0); -@@ -2467,7 +2564,7 @@ +@@ -2470,7 +2567,7 @@ struct tcp_sock *tp = tcp_sk(sk); if (tp->linger2 < 0) { tcp_set_state(sk, TCP_CLOSE); @@ -3617,7 +3767,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c __NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONLINGER); } else { -@@ -2477,7 +2574,8 @@ +@@ -2480,7 +2577,8 @@ inet_csk_reset_keepalive_timer(sk, tmo - TCP_TIMEWAIT_LEN); } else { @@ -3627,7 +3777,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c goto out; } } -@@ -2486,7 +2584,7 @@ +@@ -2489,7 +2587,7 @@ sk_mem_reclaim(sk); if (tcp_check_oom(sk, 0)) { tcp_set_state(sk, TCP_CLOSE); @@ -3636,7 +3786,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c __NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONMEMORY); } else if (!check_net(sock_net(sk))) { -@@ -2518,15 +2616,6 @@ +@@ -2521,15 +2619,6 @@ } EXPORT_SYMBOL(tcp_close); @@ -3652,7 +3802,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c static void tcp_rtx_queue_purge(struct sock *sk) { struct rb_node *p = rb_first(&sk->tcp_rtx_queue); -@@ -2548,6 +2637,10 @@ +@@ -2551,6 +2640,10 @@ { struct sk_buff *skb; @@ -3663,7 +3813,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c tcp_chrono_stop(sk, TCP_CHRONO_BUSY); while ((skb = __skb_dequeue(&sk->sk_write_queue)) != NULL) { tcp_skb_tsorted_anchor_cleanup(skb); -@@ -2566,6 +2659,35 @@ +@@ -2569,6 +2662,36 @@ inet_csk(sk)->icsk_backoff = 0; } @@ -3675,6 +3825,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c + tp->srtt_us = 0; + tp->mdev_us = jiffies_to_usecs(TCP_TIMEOUT_INIT); + tp->rcv_rtt_last_tsecr = 0; ++ icsk->icsk_probes_tstamp = 0; + icsk->icsk_rto = TCP_TIMEOUT_INIT; + tp->snd_ssthresh = TCP_INFINITE_SSTHRESH; + tp->snd_cwnd = TCP_INIT_CWND; @@ -3683,13 +3834,13 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c + tp->delivered_ce = 0; + tp->is_sack_reneg = 0; + tcp_clear_retrans(tp); ++ tp->segs_in = 0; ++ tp->segs_out = 0; + tp->bytes_sent = 0; + tp->bytes_acked = 0; + tp->bytes_received = 0; + tp->bytes_retrans = 0; + tp->total_retrans = 0; -+ tp->segs_in = 0; -+ tp->segs_out = 0; + tp->data_segs_in = 0; + tp->data_segs_out = 0; + /* There's a bubble in the pipe until at least the first ACK. */ @@ -3699,7 +3850,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c int tcp_disconnect(struct sock *sk, int flags) { struct inet_sock *inet = inet_sk(sk); -@@ -2588,7 +2710,7 @@ +@@ -2591,7 +2714,7 @@ /* The last check adjusts for discrepancy of Linux wrt. RFC * states */ @@ -3708,7 +3859,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c sk->sk_err = ECONNRESET; } else if (old_state == TCP_SYN_SENT) sk->sk_err = ECONNRESET; -@@ -2610,11 +2732,15 @@ +@@ -2613,11 +2736,15 @@ if (!(sk->sk_userlocks & SOCK_BINDADDR_LOCK)) inet_reset_saddr(sk); @@ -3727,11 +3878,11 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c seq = tp->write_seq + tp->max_window + 2; if (!seq) -@@ -2624,21 +2750,15 @@ +@@ -2627,21 +2754,14 @@ icsk->icsk_backoff = 0; tp->snd_cwnd = 2; icsk->icsk_probes_out = 0; - icsk->icsk_probes_tstamp = 0; +- icsk->icsk_probes_tstamp = 0; - icsk->icsk_rto = TCP_TIMEOUT_INIT; - tp->snd_ssthresh = TCP_INFINITE_SSTHRESH; - tp->snd_cwnd = TCP_INIT_CWND; @@ -3752,7 +3903,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c inet_csk_delack_init(sk); /* Initialize rcv_mss to TCP_MIN_MSS to avoid division by 0 * issue in __tcp_select_window() -@@ -2649,14 +2769,6 @@ +@@ -2653,14 +2773,6 @@ sk->sk_rx_dst = NULL; tcp_saved_syn_free(tp); tp->compressed_ack = 0; @@ -3767,7 +3918,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c tp->duplicate_sack[0].start_seq = 0; tp->duplicate_sack[0].end_seq = 0; tp->dsack_dups = 0; -@@ -2665,8 +2777,6 @@ +@@ -2669,8 +2781,6 @@ tp->sacked_out = 0; tp->tlp_high_seq = 0; tp->last_oow_ack_time = 0; @@ -3776,7 +3927,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c tp->rack.mstamp = 0; tp->rack.advanced = 0; tp->rack.reo_wnd_steps = 1; -@@ -2700,7 +2810,7 @@ +@@ -2704,7 +2814,7 @@ static inline bool tcp_can_repair_sock(const struct sock *sk) { return ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN) && @@ -3785,7 +3936,15 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c } static int tcp_repair_set_window(struct tcp_sock *tp, char __user *optbuf, int len) -@@ -2869,6 +2979,61 @@ +@@ -2735,6 +2845,7 @@ + + tp->rcv_wnd = opt.rcv_wnd; + tp->rcv_wup = opt.rcv_wup; ++ tp->rcv_right_edge = tp->rcv_wup + tp->rcv_wnd; + + return 0; + } +@@ -2873,6 +2984,61 @@ return tcp_fastopen_reset_cipher(net, sk, key, backup_key); } @@ -3847,7 +4006,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c default: /* fallthru */ break; -@@ -3051,6 +3216,12 @@ +@@ -3062,6 +3228,12 @@ break; case TCP_DEFER_ACCEPT: @@ -3860,7 +4019,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c /* Translate value in seconds to number of retransmits */ icsk->icsk_accept_queue.rskq_defer_accept = secs_to_retrans(val, TCP_TIMEOUT_INIT / HZ, -@@ -3078,7 +3249,7 @@ +@@ -3089,7 +3261,7 @@ (TCPF_ESTABLISHED | TCPF_CLOSE_WAIT) && inet_csk_ack_scheduled(sk)) { icsk->icsk_ack.pending |= ICSK_ACK_PUSHED; @@ -3869,7 +4028,19 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c if (!(val & 1)) inet_csk_enter_pingpong_mode(sk); } -@@ -3144,6 +3315,32 @@ +@@ -3099,7 +3271,10 @@ + #ifdef CONFIG_TCP_MD5SIG + case TCP_MD5SIG: + case TCP_MD5SIG_EXT: +- err = tp->af_specific->md5_parse(sk, optname, optval, optlen); ++ if (!sock_flag(sk, SOCK_MPTCP)) ++ err = tp->af_specific->md5_parse(sk, optname, optval, optlen); ++ else ++ err = -EINVAL; + break; + #endif + case TCP_USER_TIMEOUT: +@@ -3155,6 +3330,32 @@ tp->notsent_lowat = val; sk->sk_write_space(sk); break; @@ -3878,7 +4049,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c + if (mptcp_init_failed || !sysctl_mptcp_enabled || + sk->sk_state != TCP_CLOSE +#ifdef CONFIG_TCP_MD5SIG -+ || tp->md5sig_info ++ || rcu_access_pointer(tp->md5sig_info) +#endif + ) { + err = -EPERM; @@ -3902,7 +4073,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c case TCP_INQ: if (val > 1 || val < 0) err = -EINVAL; -@@ -3208,7 +3405,7 @@ +@@ -3219,7 +3420,7 @@ } /* Return information about state of tcp endpoint in API format. */ @@ -3911,7 +4082,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c { const struct tcp_sock *tp = tcp_sk(sk); /* iff sk_type == SOCK_STREAM */ const struct inet_connection_sock *icsk = inet_csk(sk); -@@ -3245,7 +3442,8 @@ +@@ -3256,7 +3457,8 @@ return; } @@ -3921,7 +4092,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c info->tcpi_ca_state = icsk->icsk_ca_state; info->tcpi_retransmits = icsk->icsk_retransmits; -@@ -3321,7 +3519,9 @@ +@@ -3332,7 +3534,9 @@ info->tcpi_reord_seen = tp->reord_seen; info->tcpi_rcv_ooopack = tp->rcv_ooopack; info->tcpi_snd_wnd = tp->snd_wnd; @@ -3932,7 +4103,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c } EXPORT_SYMBOL_GPL(tcp_get_info); -@@ -3468,7 +3668,7 @@ +@@ -3479,7 +3683,7 @@ if (get_user(len, optlen)) return -EFAULT; @@ -3941,7 +4112,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c len = min_t(unsigned int, len, sizeof(info)); if (put_user(len, optlen)) -@@ -3657,6 +3857,87 @@ +@@ -3668,6 +3872,87 @@ } return 0; } @@ -4029,7 +4200,17 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c #ifdef CONFIG_MMU case TCP_ZEROCOPY_RECEIVE: { struct tcp_zerocopy_receive zc; -@@ -3878,6 +4161,8 @@ +@@ -3873,7 +4158,9 @@ + if (sk->sk_state == TCP_SYN_SENT || sk->sk_state == TCP_SYN_RECV) + TCP_INC_STATS(sock_net(sk), TCP_MIB_ATTEMPTFAILS); + ++ WARN_ON(sk->sk_state == TCP_CLOSE); + tcp_set_state(sk, TCP_CLOSE); ++ + tcp_clear_xmit_timers(sk); + if (req) + reqsk_fastopen_remove(sk, req, false); +@@ -3889,6 +4176,8 @@ int tcp_abort(struct sock *sk, int err) { @@ -4038,7 +4219,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c if (!sk_fullsock(sk)) { if (sk->sk_state == TCP_NEW_SYN_RECV) { struct request_sock *req = inet_reqsk(sk); -@@ -3891,7 +4176,7 @@ +@@ -3902,7 +4191,7 @@ } /* Don't race with userspace socket closes such as tcp_close. */ @@ -4047,7 +4228,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c if (sk->sk_state == TCP_LISTEN) { tcp_set_state(sk, TCP_CLOSE); -@@ -3900,7 +4185,7 @@ +@@ -3911,7 +4200,7 @@ /* Don't race with BH socket closes such as inet_csk_listen_stop. */ local_bh_disable(); @@ -4056,7 +4237,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c if (!sock_flag(sk, SOCK_DEAD)) { sk->sk_err = err; -@@ -3908,14 +4193,14 @@ +@@ -3919,14 +4208,14 @@ smp_wmb(); sk->sk_error_report(sk); if (tcp_need_reset(sk->sk_state)) @@ -4074,10 +4255,10 @@ diff -aurN linux-5.4.64/net/ipv4/tcp.c linux-5.4.64.mptcp/net/ipv4/tcp.c return 0; } EXPORT_SYMBOL_GPL(tcp_abort); -diff -aurN linux-5.4.64/net/ipv4/tcp_cong.c linux-5.4.64.mptcp/net/ipv4/tcp_cong.c ---- linux-5.4.64/net/ipv4/tcp_cong.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv4/tcp_cong.c 2020-09-10 19:25:10.503220935 +0200 -@@ -328,13 +328,19 @@ +diff -aurN linux-5.4.155/net/ipv4/tcp_cong.c mptcp-mptcp_v0.96/net/ipv4/tcp_cong.c +--- linux-5.4.155/net/ipv4/tcp_cong.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv4/tcp_cong.c 2021-10-25 10:05:18.000000000 +0200 +@@ -337,13 +337,19 @@ return ret; } @@ -4099,9 +4280,9 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_cong.c linux-5.4.64.mptcp/net/ipv4/tcp_cong { struct inet_connection_sock *icsk = inet_csk(sk); const struct tcp_congestion_ops *ca; -diff -aurN linux-5.4.64/net/ipv4/tcp_diag.c linux-5.4.64.mptcp/net/ipv4/tcp_diag.c ---- linux-5.4.64/net/ipv4/tcp_diag.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv4/tcp_diag.c 2020-09-10 19:25:10.503220935 +0200 +diff -aurN linux-5.4.155/net/ipv4/tcp_diag.c mptcp-mptcp_v0.96/net/ipv4/tcp_diag.c +--- linux-5.4.155/net/ipv4/tcp_diag.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv4/tcp_diag.c 2021-10-25 10:05:18.000000000 +0200 @@ -31,7 +31,7 @@ r->idiag_wqueue = READ_ONCE(tp->write_seq) - tp->snd_una; } @@ -4111,9 +4292,9 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_diag.c linux-5.4.64.mptcp/net/ipv4/tcp_diag } #ifdef CONFIG_TCP_MD5SIG -diff -aurN linux-5.4.64/net/ipv4/tcp_fastopen.c linux-5.4.64.mptcp/net/ipv4/tcp_fastopen.c ---- linux-5.4.64/net/ipv4/tcp_fastopen.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv4/tcp_fastopen.c 2020-09-10 19:25:10.503220935 +0200 +diff -aurN linux-5.4.155/net/ipv4/tcp_fastopen.c mptcp-mptcp_v0.96/net/ipv4/tcp_fastopen.c +--- linux-5.4.155/net/ipv4/tcp_fastopen.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv4/tcp_fastopen.c 2021-10-25 10:05:18.000000000 +0200 @@ -9,6 +9,7 @@ #include #include @@ -4142,7 +4323,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_fastopen.c linux-5.4.64.mptcp/net/ipv4/tcp_ child = inet_csk(sk)->icsk_af_ops->syn_recv_sock(sk, skb, req, NULL, NULL, &own_req); -@@ -294,15 +294,26 @@ +@@ -294,15 +294,27 @@ refcount_set(&req->rsk_refcnt, 2); @@ -4155,6 +4336,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_fastopen.c linux-5.4.64.mptcp/net/ipv4/tcp_ tcp_rsk(req)->rcv_nxt = tp->rcv_nxt; tp->rcv_wup = tp->rcv_nxt; ++ tp->rcv_right_edge = tp->rcv_wup + tp->rcv_wnd; + + meta_sk = child; + ret = mptcp_check_req_fastopen(meta_sk, req); @@ -4172,9 +4354,9 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_fastopen.c linux-5.4.64.mptcp/net/ipv4/tcp_ /* tcp_conn_request() is sending the SYNACK, * and queues the child into listener accept queue. */ -diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_input.c ---- linux-5.4.64/net/ipv4/tcp_input.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv4/tcp_input.c 2020-09-10 19:32:43.267687285 +0200 +diff -aurN linux-5.4.155/net/ipv4/tcp_input.c mptcp-mptcp_v0.96/net/ipv4/tcp_input.c +--- linux-5.4.155/net/ipv4/tcp_input.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv4/tcp_input.c 2021-10-25 10:05:18.000000000 +0200 @@ -76,35 +76,15 @@ #include #include @@ -4281,7 +4463,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp inet_csk(sk)->icsk_ack.quick |= 1; } } -@@ -611,7 +608,10 @@ +@@ -612,7 +609,10 @@ tcp_mstamp_refresh(tp); time = tcp_stamp_us_delta(tp->tcp_mstamp, tp->rcvq_space.time); @@ -4293,7 +4475,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp return; /* Number of bytes copied to user in last RTT */ -@@ -834,7 +834,7 @@ +@@ -835,7 +835,7 @@ /* Calculate rto without backoff. This is the second half of Van Jacobson's * routine referred to above. */ @@ -4302,7 +4484,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp { const struct tcp_sock *tp = tcp_sk(sk); /* Old crap is replaced with new one. 8) -@@ -1406,6 +1406,13 @@ +@@ -1407,6 +1407,13 @@ int len; int in_sack; @@ -4316,7 +4498,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp /* Normally R but no L won't result in plain S */ if (!dup_sack && (TCP_SKB_CB(skb)->sacked & (TCPCB_LOST|TCPCB_SACKED_RETRANS)) == TCPCB_SACKED_RETRANS) -@@ -2960,7 +2967,7 @@ +@@ -2962,7 +2969,7 @@ */ tcp_update_rtt_min(sk, ca_rtt_us, flag); tcp_rtt_estimator(sk, seq_rtt_us); @@ -4325,7 +4507,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp /* RFC6298: only reset backoff on valid RTT measurement. */ inet_csk(sk)->icsk_backoff = 0; -@@ -3028,7 +3035,7 @@ +@@ -3030,7 +3037,7 @@ } /* If we get here, the whole TSO packet has not been acked. */ @@ -4334,7 +4516,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp { struct tcp_sock *tp = tcp_sk(sk); u32 packets_acked; -@@ -3048,8 +3055,7 @@ +@@ -3050,8 +3057,7 @@ return packets_acked; } @@ -4344,7 +4526,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp { const struct skb_shared_info *shinfo; -@@ -3154,6 +3160,8 @@ +@@ -3156,6 +3162,8 @@ */ if (likely(!(scb->tcp_flags & TCPHDR_SYN))) { flag |= FLAG_DATA_ACKED; @@ -4353,7 +4535,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp } else { flag |= FLAG_SYN_ACKED; tp->retrans_stamp = 0; -@@ -3274,7 +3282,7 @@ +@@ -3276,7 +3284,7 @@ return flag; } @@ -4362,7 +4544,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp { struct inet_connection_sock *icsk = inet_csk(sk); struct sk_buff *head = tcp_send_head(sk); -@@ -3346,9 +3354,8 @@ +@@ -3350,9 +3358,8 @@ /* Check that window update is acceptable. * The function assumes that snd_una<=ack<=snd_next. */ @@ -4374,7 +4556,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp { return after(ack, tp->snd_una) || after(ack_seq, tp->snd_wl1) || -@@ -3586,7 +3593,7 @@ +@@ -3590,7 +3597,7 @@ } /* This routine deals with incoming acks, but not outgoing ones. */ @@ -4383,7 +4565,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp { struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); -@@ -3709,6 +3716,16 @@ +@@ -3713,6 +3720,16 @@ tcp_rack_update_reo_wnd(sk, &rs); @@ -4399,8 +4581,8 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp + if (tp->tlp_high_seq) tcp_process_tlp_ack(sk, ack, flag); - /* If needed, reset TLP/RTO timer; RACK may later override this. */ -@@ -3851,8 +3868,10 @@ + +@@ -3856,8 +3873,10 @@ */ void tcp_parse_options(const struct net *net, const struct sk_buff *skb, @@ -4413,7 +4595,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp { const unsigned char *ptr; const struct tcphdr *th = tcp_hdr(skb); -@@ -3938,6 +3957,10 @@ +@@ -3943,6 +3962,10 @@ */ break; #endif @@ -4424,7 +4606,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp case TCPOPT_FASTOPEN: tcp_parse_fastopen_option( opsize - TCPOLEN_FASTOPEN_BASE, -@@ -4005,7 +4028,9 @@ +@@ -4010,7 +4033,9 @@ return true; } @@ -4435,7 +4617,16 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp if (tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr) tp->rx_opt.rcv_tsecr -= tp->tsoffset; -@@ -4164,6 +4189,11 @@ +@@ -4120,7 +4145,7 @@ + static inline bool tcp_sequence(const struct tcp_sock *tp, u32 seq, u32 end_seq) + { + return !before(end_seq, tp->rcv_wup) && +- !after(seq, tp->rcv_nxt + tcp_receive_window(tp)); ++ !after(seq, tp->rcv_nxt + tcp_receive_window_no_shrink(tp)); + } + + /* When we get a reset we do this. */ +@@ -4169,6 +4194,11 @@ { struct tcp_sock *tp = tcp_sk(sk); @@ -4447,7 +4638,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp inet_csk_schedule_ack(sk); sk->sk_shutdown |= RCV_SHUTDOWN; -@@ -4174,6 +4204,10 @@ +@@ -4179,6 +4209,10 @@ case TCP_ESTABLISHED: /* Move to CLOSE_WAIT */ tcp_set_state(sk, TCP_CLOSE_WAIT); @@ -4458,7 +4649,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp inet_csk_enter_pingpong_mode(sk); break; -@@ -4196,9 +4230,16 @@ +@@ -4201,9 +4235,16 @@ tcp_set_state(sk, TCP_CLOSING); break; case TCP_FIN_WAIT2: @@ -4476,7 +4667,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp break; default: /* Only TCP_LISTEN and TCP_CLOSE are left, in these -@@ -4220,6 +4261,10 @@ +@@ -4225,6 +4266,10 @@ if (!sock_flag(sk, SOCK_DEAD)) { sk->sk_state_change(sk); @@ -4487,7 +4678,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp /* Do not send POLL_HUP for half duplex close. */ if (sk->sk_shutdown == SHUTDOWN_MASK || sk->sk_state == TCP_CLOSE) -@@ -4434,6 +4479,9 @@ +@@ -4439,6 +4484,9 @@ *fragstolen = false; @@ -4497,7 +4688,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp /* Its possible this segment overlaps with prior segment in queue */ if (TCP_SKB_CB(from)->seq != TCP_SKB_CB(to)->end_seq) return false; -@@ -4488,7 +4536,7 @@ +@@ -4493,7 +4541,7 @@ /* This one checks to see if we can put data from the * out_of_order queue into the receive_queue. */ @@ -4506,7 +4697,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp { struct tcp_sock *tp = tcp_sk(sk); __u32 dsack_high = tp->rcv_nxt; -@@ -4511,7 +4559,14 @@ +@@ -4516,7 +4564,14 @@ p = rb_next(p); rb_erase(&skb->rbnode, &tp->out_of_order_queue); @@ -4522,7 +4713,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp tcp_drop(sk, skb); continue; } -@@ -4541,6 +4596,9 @@ +@@ -4546,6 +4601,9 @@ static int tcp_try_rmem_schedule(struct sock *sk, struct sk_buff *skb, unsigned int size) { @@ -4532,7 +4723,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf || !sk_rmem_schedule(sk, skb, size)) { -@@ -4555,7 +4613,7 @@ +@@ -4560,7 +4618,7 @@ return 0; } @@ -4541,7 +4732,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp { struct tcp_sock *tp = tcp_sk(sk); struct rb_node **p, *parent; -@@ -4627,7 +4685,8 @@ +@@ -4632,7 +4690,8 @@ continue; } if (before(seq, TCP_SKB_CB(skb1)->end_seq)) { @@ -4551,7 +4742,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp /* All the bits are present. Drop. */ NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPOFOMERGE); -@@ -4674,6 +4733,11 @@ +@@ -4679,6 +4738,11 @@ end_seq); break; } @@ -4563,7 +4754,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp rb_erase(&skb1->rbnode, &tp->out_of_order_queue); tcp_dsack_extend(sk, TCP_SKB_CB(skb1)->seq, TCP_SKB_CB(skb1)->end_seq); -@@ -4685,7 +4749,7 @@ +@@ -4690,7 +4754,7 @@ tp->ooo_last_skb = skb; add_sack: @@ -4572,7 +4763,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp tcp_sack_new_ofo_skb(sk, seq, end_seq); end: if (skb) { -@@ -4699,8 +4763,8 @@ +@@ -4704,8 +4768,8 @@ } } @@ -4583,17 +4774,17 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp { int eaten; struct sk_buff *tail = skb_peek_tail(&sk->sk_receive_queue); -@@ -4774,8 +4838,8 @@ - int avail = tp->rcv_nxt - tp->copied_seq; +@@ -4780,7 +4844,8 @@ if (avail < sk->sk_rcvlowat && !tcp_rmem_pressure(sk) && -- !sock_flag(sk, SOCK_DONE) && -+ !sock_flag(sk, SOCK_DONE) && !mptcp(tp) && - tcp_receive_window(tp) > inet_csk(sk)->icsk_ack.rcv_mss) + !sock_flag(sk, SOCK_DONE) && +- tcp_receive_window(tp) > inet_csk(sk)->icsk_ack.rcv_mss) ++ tcp_receive_window_now(tp) > inet_csk(sk)->icsk_ack.rcv_mss && ++ !mptcp(tp)) return; sk->sk_data_ready(sk); -@@ -4786,10 +4850,14 @@ +@@ -4792,10 +4857,14 @@ bool fragstolen; int eaten; @@ -4609,7 +4800,16 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp skb_dst_drop(skb); __skb_pull(skb, tcp_hdr(skb)->doff * 4); -@@ -4816,7 +4884,7 @@ +@@ -4806,7 +4875,7 @@ + * Out of sequence packets to the out_of_order_queue. + */ + if (TCP_SKB_CB(skb)->seq == tp->rcv_nxt) { +- if (tcp_receive_window(tp) == 0) { ++ if (tcp_receive_window_no_shrink(tp) == 0) { + NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPZEROWINDOWDROP); + goto out_of_window; + } +@@ -4822,7 +4891,7 @@ } eaten = tcp_queue_rcv(sk, skb, &fragstolen); @@ -4618,7 +4818,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp tcp_event_data_recv(sk, skb); if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN) tcp_fin(sk); -@@ -4838,7 +4906,11 @@ +@@ -4844,7 +4913,11 @@ if (eaten > 0) kfree_skb_partial(skb, fragstolen); @@ -4631,7 +4831,26 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp tcp_data_ready(sk); return; } -@@ -5181,7 +5253,7 @@ +@@ -4864,7 +4937,8 @@ + } + + /* Out of window. F.e. zero window probe. */ +- if (!before(TCP_SKB_CB(skb)->seq, tp->rcv_nxt + tcp_receive_window(tp))) ++ if (!before(TCP_SKB_CB(skb)->seq, ++ tp->rcv_nxt + tcp_receive_window_no_shrink(tp))) + goto out_of_window; + + if (before(TCP_SKB_CB(skb)->seq, tp->rcv_nxt)) { +@@ -4874,7 +4948,7 @@ + /* If window is closed, drop tail of packet. But after + * remembering D-SACK for its head made in previous line. + */ +- if (!tcp_receive_window(tp)) { ++ if (!tcp_receive_window_no_shrink(tp)) { + NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPZEROWINDOWDROP); + goto out_of_window; + } +@@ -5187,7 +5261,7 @@ return -1; } @@ -4640,7 +4859,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp { const struct tcp_sock *tp = tcp_sk(sk); -@@ -5216,7 +5288,7 @@ +@@ -5222,7 +5296,7 @@ { struct tcp_sock *tp = tcp_sk(sk); @@ -4649,7 +4868,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp tcp_sndbuf_expand(sk); tp->snd_cwnd_stamp = tcp_jiffies32; } -@@ -5230,10 +5302,11 @@ +@@ -5236,10 +5310,11 @@ sock_reset_flag(sk, SOCK_QUEUE_SHRUNK); /* pairs with tcp_poll() */ smp_mb(); @@ -4664,7 +4883,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp tcp_chrono_stop(sk, TCP_CHRONO_SNDBUF_LIMITED); } } -@@ -5252,6 +5325,8 @@ +@@ -5258,6 +5333,8 @@ { struct tcp_sock *tp = tcp_sk(sk); unsigned long rtt, delay; @@ -4673,7 +4892,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp /* More than one full frame received... */ if (((tp->rcv_nxt - tp->rcv_wup) > inet_csk(sk)->icsk_ack.rcv_mss && -@@ -5260,8 +5335,8 @@ +@@ -5266,8 +5343,8 @@ * If application uses SO_RCVLOWAT, we want send ack now if * we have not received enough bytes to satisfy the condition. */ @@ -4684,7 +4903,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp /* We ACK each frame or... */ tcp_in_quickack_mode(sk) || /* Protocol state mandates a one-time immediate ACK */ -@@ -5396,6 +5471,10 @@ +@@ -5402,6 +5479,10 @@ { struct tcp_sock *tp = tcp_sk(sk); @@ -4695,7 +4914,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp /* Check if we get a new urgent pointer - normally not. */ if (th->urg) tcp_check_urg(sk, th); -@@ -5538,9 +5617,15 @@ +@@ -5544,9 +5625,15 @@ goto discard; } @@ -4711,7 +4930,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp tcp_drop(sk, skb); return false; } -@@ -5597,6 +5682,10 @@ +@@ -5603,6 +5690,10 @@ tp->rx_opt.saw_tstamp = 0; @@ -4722,7 +4941,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp /* pred_flags is 0xS?10 << 16 + snd_wnd * if header_prediction is to be made * 'S' will always be tp->tcp_header_len >> 2 -@@ -5769,7 +5858,7 @@ +@@ -5777,7 +5868,7 @@ tcp_call_bpf(sk, bpf_op, 0, NULL); tcp_init_congestion_control(sk); @@ -4731,7 +4950,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp } void tcp_finish_connect(struct sock *sk, struct sk_buff *skb) -@@ -5806,17 +5895,24 @@ +@@ -5814,17 +5905,24 @@ struct tcp_fastopen_cookie *cookie) { struct tcp_sock *tp = tcp_sk(sk); @@ -4758,7 +4977,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp mss = opt.mss_clamp; } -@@ -5840,7 +5936,11 @@ +@@ -5848,7 +5946,11 @@ tcp_fastopen_cache_set(sk, mss, cookie, syn_drop, try_exp); @@ -4771,7 +4990,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp skb_rbtree_walk_from(data) { if (__tcp_retransmit_skb(sk, data, 1)) break; -@@ -5895,9 +5995,13 @@ +@@ -5903,9 +6005,13 @@ struct tcp_sock *tp = tcp_sk(sk); struct tcp_fastopen_cookie foc = { .len = -1 }; int saved_clamp = tp->rx_opt.mss_clamp; @@ -4786,7 +5005,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp if (tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr) tp->rx_opt.rcv_tsecr -= tp->tsoffset; -@@ -5958,6 +6062,35 @@ +@@ -5966,11 +6072,41 @@ tcp_try_undo_spurious_syn(sk); tcp_ack(sk, skb, FLAG_SLOWPATH); @@ -4822,7 +5041,13 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp /* Ok.. it's good. Set up sequence numbers and * move to established. */ -@@ -5984,6 +6117,11 @@ + WRITE_ONCE(tp->rcv_nxt, TCP_SKB_CB(skb)->seq + 1); + tp->rcv_wup = TCP_SKB_CB(skb)->seq + 1; ++ tcp_update_rcv_right_edge(tp); + + /* RFC1323: The window in SYN & SYN/ACK segments is + * never scaled. +@@ -5992,6 +6128,11 @@ tp->tcp_header_len = sizeof(struct tcphdr); } @@ -4834,7 +5059,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp tcp_sync_mss(sk, icsk->icsk_pmtu_cookie); tcp_initialize_rcv_mss(sk); -@@ -6007,9 +6145,12 @@ +@@ -6015,9 +6156,12 @@ } if (fastopen_fail) return -1; @@ -4849,7 +5074,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp /* Save one ACK. Data will be ready after * several ticks, if write_pending is set. * -@@ -6048,6 +6189,7 @@ +@@ -6056,6 +6200,7 @@ tcp_paws_reject(&tp->rx_opt, 0)) goto discard_and_undo; @@ -4857,7 +5082,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp if (th->syn) { /* We see SYN without ACK. It is attempt of * simultaneous connect with crossed SYNs. -@@ -6064,6 +6206,11 @@ +@@ -6072,9 +6217,15 @@ tp->tcp_header_len = sizeof(struct tcphdr); } @@ -4869,7 +5094,11 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp WRITE_ONCE(tp->rcv_nxt, TCP_SKB_CB(skb)->seq + 1); WRITE_ONCE(tp->copied_seq, tp->rcv_nxt); tp->rcv_wup = TCP_SKB_CB(skb)->seq + 1; -@@ -6154,6 +6301,7 @@ ++ tcp_update_rcv_right_edge(tp); + + /* RFC1323: The window in SYN & SYN/ACK segments is + * never scaled. +@@ -6162,6 +6313,7 @@ */ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb) @@ -4877,7 +5106,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp { struct tcp_sock *tp = tcp_sk(sk); struct inet_connection_sock *icsk = inet_csk(sk); -@@ -6196,6 +6344,16 @@ +@@ -6204,6 +6356,16 @@ tp->rx_opt.saw_tstamp = 0; tcp_mstamp_refresh(tp); queued = tcp_rcv_synsent_state_process(sk, skb, th); @@ -4894,7 +5123,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp if (queued >= 0) return queued; -@@ -6268,6 +6426,8 @@ +@@ -6276,6 +6438,8 @@ if (tp->rx_opt.tstamp_ok) tp->advmss -= TCPOLEN_TSTAMP_ALIGNED; @@ -4903,7 +5132,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp if (!inet_csk(sk)->icsk_ca_ops->cong_control) tcp_update_pacing_rate(sk); -@@ -6277,6 +6437,30 @@ +@@ -6285,6 +6449,30 @@ tcp_initialize_rcv_mss(sk); tcp_fast_path_on(tp); @@ -4934,7 +5163,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp break; case TCP_FIN_WAIT1: { -@@ -6317,7 +6501,8 @@ +@@ -6325,7 +6513,8 @@ tmo = tcp_fin_time(sk); if (tmo > TCP_TIMEWAIT_LEN) { inet_csk_reset_keepalive_timer(sk, tmo - TCP_TIMEWAIT_LEN); @@ -4944,7 +5173,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp /* Bad case. We could lose such FIN otherwise. * It is not a big problem, but it looks confusing * and not so rare event. We still can lose it now, -@@ -6326,7 +6511,7 @@ +@@ -6334,7 +6523,7 @@ */ inet_csk_reset_keepalive_timer(sk, tmo); } else { @@ -4953,7 +5182,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp goto discard; } break; -@@ -6334,7 +6519,7 @@ +@@ -6342,7 +6531,7 @@ case TCP_CLOSING: if (tp->snd_una == tp->write_seq) { @@ -4962,7 +5191,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp goto discard; } break; -@@ -6346,6 +6531,9 @@ +@@ -6354,6 +6543,9 @@ goto discard; } break; @@ -4972,7 +5201,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp } /* step 6: check the URG bit */ -@@ -6367,7 +6555,8 @@ +@@ -6375,7 +6567,8 @@ */ if (sk->sk_shutdown & RCV_SHUTDOWN) { if (TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq && @@ -4982,7 +5211,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONDATA); tcp_reset(sk); return 1; -@@ -6469,6 +6658,8 @@ +@@ -6477,6 +6670,8 @@ ireq->wscale_ok = rx_opt->wscale_ok; ireq->acked = 0; ireq->ecn_ok = 0; @@ -4991,7 +5220,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp ireq->ir_rmt_port = tcp_hdr(skb)->source; ireq->ir_num = ntohs(tcp_hdr(skb)->dest); ireq->ir_mark = inet_request_mark(sk, skb); -@@ -6594,12 +6785,17 @@ +@@ -6602,12 +6797,17 @@ /* TW buckets are converted to open requests without * limitations, they conserve resources and peer is * evidently real one. @@ -5010,7 +5239,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp } if (sk_acceptq_is_full(sk)) { -@@ -6617,8 +6813,8 @@ +@@ -6625,8 +6825,8 @@ tcp_clear_options(&tmp_opt); tmp_opt.mss_clamp = af_ops->mss_clamp; tmp_opt.user_mss = tp->rx_opt.user_mss; @@ -5021,7 +5250,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp if (want_cookie && !tmp_opt.saw_tstamp) tcp_clear_options(&tmp_opt); -@@ -6633,7 +6829,8 @@ +@@ -6641,7 +6841,8 @@ /* Note: tcp_v6_init_req() might override ir_iif for link locals */ inet_rsk(req)->ir_iif = inet_request_bound_dev_if(sk, skb); @@ -5031,7 +5260,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp if (security_inet_conn_request(sk, skb, req)) goto drop_and_free; -@@ -6669,7 +6866,7 @@ +@@ -6677,7 +6878,7 @@ tcp_ecn_create_request(req, skb, sk, dst); if (want_cookie) { @@ -5040,7 +5269,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp req->cookie_ts = tmp_opt.tstamp_ok; if (!tmp_opt.tstamp_ok) inet_rsk(req)->ecn_ok = 0; -@@ -6684,17 +6881,25 @@ +@@ -6692,17 +6893,25 @@ fastopen_sk = tcp_try_fastopen(sk, skb, req, &foc, dst); } if (fastopen_sk) { @@ -5067,9 +5296,9 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_input.c linux-5.4.64.mptcp/net/ipv4/tcp_inp sock_put(fastopen_sk); } else { tcp_rsk(req)->tfo_listener = false; -diff -aurN linux-5.4.64/net/ipv4/tcp_ipv4.c linux-5.4.64.mptcp/net/ipv4/tcp_ipv4.c ---- linux-5.4.64/net/ipv4/tcp_ipv4.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv4/tcp_ipv4.c 2020-09-10 19:25:10.503220935 +0200 +diff -aurN linux-5.4.155/net/ipv4/tcp_ipv4.c mptcp-mptcp_v0.96/net/ipv4/tcp_ipv4.c +--- linux-5.4.155/net/ipv4/tcp_ipv4.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv4/tcp_ipv4.c 2021-10-25 10:05:18.000000000 +0200 @@ -62,6 +62,8 @@ #include #include @@ -5379,7 +5608,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_ipv4.c linux-5.4.64.mptcp/net/ipv4/tcp_ipv4 if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */ struct dst_entry *dst = sk->sk_rx_dst; -@@ -1802,6 +1846,10 @@ +@@ -1803,6 +1847,10 @@ TCP_SKB_CB(skb)->end_seq = (TCP_SKB_CB(skb)->seq + th->syn + th->fin + skb->len - th->doff * 4); TCP_SKB_CB(skb)->ack_seq = ntohl(th->ack_seq); @@ -5390,7 +5619,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_ipv4.c linux-5.4.64.mptcp/net/ipv4/tcp_ipv4 TCP_SKB_CB(skb)->tcp_flags = tcp_flag_byte(th); TCP_SKB_CB(skb)->tcp_tw_isn = 0; TCP_SKB_CB(skb)->ip_dsfield = ipv4_get_dsfield(iph); -@@ -1821,8 +1869,8 @@ +@@ -1822,8 +1870,8 @@ int sdif = inet_sdif(skb); const struct iphdr *iph; const struct tcphdr *th; @@ -5400,7 +5629,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_ipv4.c linux-5.4.64.mptcp/net/ipv4/tcp_ipv4 int ret; if (skb->pkt_type != PACKET_HOST) -@@ -1876,7 +1924,11 @@ +@@ -1877,7 +1925,11 @@ reqsk_put(req); goto csum_error; } @@ -5413,7 +5642,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_ipv4.c linux-5.4.64.mptcp/net/ipv4/tcp_ipv4 inet_csk_reqsk_queue_drop_and_put(sk, req); goto lookup; } -@@ -1885,6 +1937,7 @@ +@@ -1886,6 +1938,7 @@ */ sock_hold(sk); refcounted = true; @@ -5421,7 +5650,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_ipv4.c linux-5.4.64.mptcp/net/ipv4/tcp_ipv4 nsk = NULL; if (!tcp_filter(sk, skb)) { th = (const struct tcphdr *)skb->data; -@@ -1945,19 +1998,28 @@ +@@ -1946,19 +1999,28 @@ sk_incoming_cpu_update(sk); @@ -5454,7 +5683,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_ipv4.c linux-5.4.64.mptcp/net/ipv4/tcp_ipv4 if (skb_to_free) __kfree_skb(skb_to_free); -@@ -1973,6 +2035,19 @@ +@@ -1974,6 +2036,19 @@ tcp_v4_fill_cb(skb, iph, th); @@ -5474,7 +5703,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_ipv4.c linux-5.4.64.mptcp/net/ipv4/tcp_ipv4 if (tcp_checksum_complete(skb)) { csum_error: __TCP_INC_STATS(net, TCP_MIB_CSUMERRORS); -@@ -2021,6 +2096,18 @@ +@@ -2022,6 +2097,18 @@ refcounted = false; goto process; } @@ -5493,7 +5722,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_ipv4.c linux-5.4.64.mptcp/net/ipv4/tcp_ipv4 } /* to ACK */ /* fall through */ -@@ -2090,7 +2177,12 @@ +@@ -2091,7 +2178,12 @@ tcp_init_sock(sk); @@ -5507,7 +5736,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_ipv4.c linux-5.4.64.mptcp/net/ipv4/tcp_ipv4 #ifdef CONFIG_TCP_MD5SIG tcp_sk(sk)->af_specific = &tcp_sock_ipv4_specific; -@@ -2109,6 +2201,11 @@ +@@ -2110,6 +2202,11 @@ tcp_cleanup_congestion_control(sk); @@ -5519,7 +5748,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_ipv4.c linux-5.4.64.mptcp/net/ipv4/tcp_ipv4 tcp_cleanup_ulp(sk); /* Cleanup up the write buffer. */ -@@ -2613,6 +2710,11 @@ +@@ -2615,6 +2712,11 @@ .sysctl_rmem_offset = offsetof(struct net, ipv4.sysctl_tcp_rmem), .max_header = MAX_TCP_HEADER, .obj_size = sizeof(struct tcp_sock), @@ -5531,7 +5760,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_ipv4.c linux-5.4.64.mptcp/net/ipv4/tcp_ipv4 .slab_flags = SLAB_TYPESAFE_BY_RCU, .twsk_prot = &tcp_timewait_sock_ops, .rsk_prot = &tcp_request_sock_ops, -@@ -2623,6 +2725,9 @@ +@@ -2625,6 +2727,9 @@ .compat_getsockopt = compat_tcp_getsockopt, #endif .diag_destroy = tcp_abort, @@ -5541,9 +5770,9 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_ipv4.c linux-5.4.64.mptcp/net/ipv4/tcp_ipv4 }; EXPORT_SYMBOL(tcp_prot); -diff -aurN linux-5.4.64/net/ipv4/tcp_minisocks.c linux-5.4.64.mptcp/net/ipv4/tcp_minisocks.c ---- linux-5.4.64/net/ipv4/tcp_minisocks.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv4/tcp_minisocks.c 2020-09-10 19:25:10.503220935 +0200 +diff -aurN linux-5.4.155/net/ipv4/tcp_minisocks.c mptcp-mptcp_v0.96/net/ipv4/tcp_minisocks.c +--- linux-5.4.155/net/ipv4/tcp_minisocks.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv4/tcp_minisocks.c 2021-10-25 10:05:18.000000000 +0200 @@ -19,11 +19,13 @@ * Jorge Cwik, */ @@ -5604,7 +5833,17 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_minisocks.c linux-5.4.64.mptcp/net/ipv4/tcp inet_twsk_put(tw); return TCP_TW_SUCCESS; } -@@ -275,6 +296,16 @@ +@@ -270,11 +291,25 @@ + tw->tw_rcv_wscale = tp->rx_opt.rcv_wscale; + tcptw->tw_rcv_nxt = tp->rcv_nxt; + tcptw->tw_snd_nxt = tp->snd_nxt; +- tcptw->tw_rcv_wnd = tcp_receive_window(tp); ++ /* no need to keep track of the right-most right edge ++ * when in time wait, can directly use the currently ++ * advertised window. ++ */ ++ tcptw->tw_rcv_wnd = tcp_receive_window_now(tp); + tcptw->tw_ts_recent = tp->rx_opt.ts_recent; tcptw->tw_ts_recent_stamp = tp->rx_opt.ts_recent_stamp; tcptw->tw_ts_offset = tp->tsoffset; tcptw->tw_last_oow_ack_time = 0; @@ -5621,7 +5860,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_minisocks.c linux-5.4.64.mptcp/net/ipv4/tcp tcptw->tw_tx_delay = tp->tcp_tx_delay; #if IS_ENABLED(CONFIG_IPV6) if (tw->tw_family == PF_INET6) { -@@ -336,6 +367,7 @@ +@@ -336,6 +371,7 @@ NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPTIMEWAITOVERFLOW); } @@ -5629,7 +5868,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_minisocks.c linux-5.4.64.mptcp/net/ipv4/tcp tcp_update_metrics(sk); tcp_done(sk); } -@@ -343,6 +375,10 @@ +@@ -343,6 +379,10 @@ void tcp_twsk_destructor(struct sock *sk) { @@ -5640,7 +5879,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_minisocks.c linux-5.4.64.mptcp/net/ipv4/tcp #ifdef CONFIG_TCP_MD5SIG if (static_branch_unlikely(&tcp_md5_needed)) { struct tcp_timewait_sock *twsk = tcp_twsk(sk); -@@ -386,8 +422,9 @@ +@@ -386,8 +426,9 @@ full_space = rcv_wnd * mss; /* tcp_full_space because it is guaranteed to be the first packet */ @@ -5652,7 +5891,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_minisocks.c linux-5.4.64.mptcp/net/ipv4/tcp &req->rsk_rcv_wnd, &req->rsk_window_clamp, ireq->wscale_ok, -@@ -487,6 +524,8 @@ +@@ -487,6 +528,8 @@ WRITE_ONCE(newtp->snd_nxt, seq); newtp->snd_up = seq; @@ -5661,7 +5900,15 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_minisocks.c linux-5.4.64.mptcp/net/ipv4/tcp INIT_LIST_HEAD(&newtp->tsq_node); INIT_LIST_HEAD(&newtp->tsorted_sent_queue); -@@ -530,6 +569,8 @@ +@@ -511,6 +554,7 @@ + newtp->window_clamp = req->rsk_window_clamp; + newtp->rcv_ssthresh = req->rsk_rcv_wnd; + newtp->rcv_wnd = req->rsk_rcv_wnd; ++ newtp->rcv_right_edge = newtp->rcv_wnd + newtp->rcv_wup; + newtp->rx_opt.wscale_ok = ireq->wscale_ok; + if (newtp->rx_opt.wscale_ok) { + newtp->rx_opt.snd_wscale = ireq->snd_wscale; +@@ -530,6 +574,8 @@ newtp->rx_opt.ts_recent_stamp = 0; newtp->tcp_header_len = sizeof(struct tcphdr); } @@ -5670,7 +5917,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_minisocks.c linux-5.4.64.mptcp/net/ipv4/tcp if (req->num_timeout) { newtp->undo_marker = treq->snt_isn; newtp->retrans_stamp = div_u64(treq->snt_synack, -@@ -547,6 +588,7 @@ +@@ -547,6 +593,7 @@ tcp_ecn_openreq_child(newtp, req); newtp->fastopen_req = NULL; RCU_INIT_POINTER(newtp->fastopen_rsk, NULL); @@ -5678,7 +5925,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_minisocks.c linux-5.4.64.mptcp/net/ipv4/tcp __TCP_INC_STATS(sock_net(sk), TCP_MIB_PASSIVEOPENS); -@@ -570,15 +612,20 @@ +@@ -570,15 +617,20 @@ bool fastopen, bool *req_stolen) { struct tcp_options_received tmp_opt; @@ -5700,7 +5947,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_minisocks.c linux-5.4.64.mptcp/net/ipv4/tcp if (tmp_opt.saw_tstamp) { tmp_opt.ts_recent = req->ts_recent; -@@ -619,7 +666,14 @@ +@@ -619,7 +671,14 @@ * * Reset timer after retransmitting SYNACK, similar to * the idea of fast retransmit in recovery. @@ -5715,7 +5962,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_minisocks.c linux-5.4.64.mptcp/net/ipv4/tcp if (!tcp_oow_rate_limited(sock_net(sk), skb, LINUX_MIB_TCPACKSKIPPEDSYNRECV, &tcp_rsk(req)->last_oow_ack_time) && -@@ -767,17 +821,40 @@ +@@ -767,17 +826,40 @@ * ESTABLISHED STATE. If it will be dropped after * socket is created, wait for troubles. */ @@ -5756,7 +6003,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_minisocks.c linux-5.4.64.mptcp/net/ipv4/tcp if (!sock_net(sk)->ipv4.sysctl_tcp_abort_on_overflow) { inet_rsk(req)->acked = 1; return NULL; -@@ -820,12 +897,13 @@ +@@ -823,12 +905,13 @@ { int ret = 0; int state = child->sk_state; @@ -5771,7 +6018,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_minisocks.c linux-5.4.64.mptcp/net/ipv4/tcp ret = tcp_rcv_state_process(child, skb); /* Wakeup parent, send SIGIO */ if (state == TCP_SYN_RECV && child->sk_state != state) -@@ -835,10 +913,14 @@ +@@ -838,10 +921,14 @@ * in main socket hash table and lock on listening * socket does not protect us more. */ @@ -5787,9 +6034,9 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_minisocks.c linux-5.4.64.mptcp/net/ipv4/tcp sock_put(child); return ret; } -diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_output.c ---- linux-5.4.64/net/ipv4/tcp_output.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv4/tcp_output.c 2020-09-10 19:34:56.261474044 +0200 +diff -aurN linux-5.4.155/net/ipv4/tcp_output.c mptcp-mptcp_v0.96/net/ipv4/tcp_output.c +--- linux-5.4.155/net/ipv4/tcp_output.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv4/tcp_output.c 2021-10-25 10:05:18.000000000 +0200 @@ -37,6 +37,12 @@ #define pr_fmt(fmt) "TCP: " fmt @@ -5831,20 +6078,23 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou + * have to allow this. Otherwise we may announce a window too large + * for the current meta-level sk_rcvbuf. + */ -+ u32 cur_win = tcp_receive_window(mptcp(tp) ? tcp_sk(mptcp_meta_sk(sk)) : tp); ++ u32 cur_win = tcp_receive_window_now(mptcp(tp) ? tcp_sk(mptcp_meta_sk(sk)) : tp); + u32 new_win = tp->ops->__select_window(sk); /* Never shrink the offered window */ if (new_win < cur_win) { -@@ -276,6 +283,7 @@ +@@ -276,8 +283,10 @@ LINUX_MIB_TCPWANTZEROWINDOWADV); new_win = ALIGN(cur_win, 1 << tp->rx_opt.rcv_wscale); } + tp->rcv_wnd = new_win; tp->rcv_wup = tp->rcv_nxt; ++ tcp_update_rcv_right_edge(tp); -@@ -388,7 +396,7 @@ + /* Make sure we do not exceed the maximum possible + * scaled window. +@@ -388,7 +397,7 @@ /* Constructs common control bits of non-data skb. If SYN/FIN is present, * auto increment end seqno. */ @@ -5853,7 +6103,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { skb->ip_summed = CHECKSUM_PARTIAL; -@@ -403,7 +411,7 @@ +@@ -403,7 +412,7 @@ TCP_SKB_CB(skb)->end_seq = seq; } @@ -5862,7 +6112,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { return tp->snd_una != tp->snd_up; } -@@ -414,6 +422,7 @@ +@@ -414,6 +423,7 @@ #define OPTION_WSCALE (1 << 3) #define OPTION_FAST_OPEN_COOKIE (1 << 8) #define OPTION_SMC (1 << 9) @@ -5870,7 +6120,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou static void smc_options_write(__be32 *ptr, u16 *options) { -@@ -430,17 +439,6 @@ +@@ -430,17 +440,6 @@ #endif } @@ -5888,7 +6138,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou /* Write previously computed TCP options to the packet. * * Beware: Something in the Internet is very sensitive to the ordering of -@@ -455,7 +453,7 @@ +@@ -455,7 +454,7 @@ * (but it may well be that other scenarios fail similarly). */ static void tcp_options_write(__be32 *ptr, struct tcp_sock *tp, @@ -5897,7 +6147,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { u16 options = opts->options; /* mungable copy */ -@@ -549,6 +547,9 @@ +@@ -549,6 +548,9 @@ } smc_options_write(ptr, &options); @@ -5907,7 +6157,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou } static void smc_set_option(const struct tcp_sock *tp, -@@ -635,6 +636,8 @@ +@@ -635,6 +637,8 @@ if (unlikely(!(OPTION_TS & opts->options))) remaining -= TCPOLEN_SACKPERM_ALIGNED; } @@ -5916,7 +6166,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou if (fastopen && fastopen->cookie.len >= 0) { u32 need = fastopen->cookie.len; -@@ -718,6 +721,9 @@ +@@ -718,6 +722,9 @@ smc_set_option_cond(tcp_sk(sk), ireq, opts, &remaining); @@ -5926,7 +6176,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou return MAX_TCP_OPTION_SPACE - remaining; } -@@ -752,14 +758,19 @@ +@@ -752,14 +759,19 @@ opts->tsecr = tp->rx_opt.ts_recent; size += TCPOLEN_TSTAMP_ALIGNED; } @@ -5935,22 +6185,23 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou eff_sacks = tp->rx_opt.num_sacks + tp->rx_opt.dsack; if (unlikely(eff_sacks)) { - const unsigned int remaining = MAX_TCP_OPTION_SPACE - size; +- const unsigned int remaining = MAX_TCP_OPTION_SPACE - size; - opts->num_sack_blocks = - min_t(unsigned int, eff_sacks, - (remaining - TCPOLEN_SACK_BASE_ALIGNED) / - TCPOLEN_SACK_PERBLOCK); ++ const unsigned remaining = MAX_TCP_OPTION_SPACE - size; + if (remaining < TCPOLEN_SACK_BASE_ALIGNED) + opts->num_sack_blocks = 0; + else + opts->num_sack_blocks = -+ min_t(unsigned int, eff_sacks, -+ (remaining - TCPOLEN_SACK_BASE_ALIGNED) / -+ TCPOLEN_SACK_PERBLOCK); ++ min_t(unsigned int, eff_sacks, ++ (remaining - TCPOLEN_SACK_BASE_ALIGNED) / ++ TCPOLEN_SACK_PERBLOCK); if (likely(opts->num_sack_blocks)) size += TCPOLEN_SACK_BASE_ALIGNED + opts->num_sack_blocks * TCPOLEN_SACK_PERBLOCK; -@@ -802,19 +813,31 @@ +@@ -802,19 +814,31 @@ tcp_xmit_retransmit_queue(sk); } @@ -5989,7 +6240,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou } /* * One tasklet per cpu tries to send more skbs. -@@ -851,7 +874,9 @@ +@@ -851,7 +875,9 @@ #define TCP_DEFERRED_ALL (TCPF_TSQ_DEFERRED | \ TCPF_WRITE_TIMER_DEFERRED | \ TCPF_DELACK_TIMER_DEFERRED | \ @@ -6000,7 +6251,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou /** * tcp_release_cb - tcp release_sock() callback * @sk: socket -@@ -874,6 +899,9 @@ +@@ -874,6 +900,9 @@ if (flags & TCPF_TSQ_DEFERRED) { tcp_tsq_write(sk); __sock_put(sk); @@ -6010,7 +6261,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou } /* Here begins the tricky part : * We are called from release_sock() with : -@@ -898,6 +926,13 @@ +@@ -898,6 +927,13 @@ inet_csk(sk)->icsk_af_ops->mtu_reduced(sk); __sock_put(sk); } @@ -6024,7 +6275,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou } EXPORT_SYMBOL(tcp_release_cb); -@@ -981,8 +1016,8 @@ +@@ -981,8 +1017,8 @@ return HRTIMER_NORESTART; } @@ -6035,7 +6286,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { struct tcp_sock *tp = tcp_sk(sk); -@@ -1128,10 +1163,10 @@ +@@ -1128,10 +1164,10 @@ } } @@ -6048,7 +6299,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou tcp_ecn_send(sk, skb, th, tcp_header_size); } else { /* RFC1323: The window in SYN & SYN/ACK segments -@@ -1189,8 +1224,8 @@ +@@ -1189,8 +1225,8 @@ return err; } @@ -6059,7 +6310,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { return __tcp_transmit_skb(sk, skb, clone_it, gfp_mask, tcp_sk(sk)->rcv_nxt); -@@ -1201,7 +1236,7 @@ +@@ -1201,7 +1237,7 @@ * NOTE: probe0 timer is not checked, do not forget tcp_push_pending_frames, * otherwise socket can stall. */ @@ -6068,7 +6319,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { struct tcp_sock *tp = tcp_sk(sk); -@@ -1214,7 +1249,7 @@ +@@ -1214,7 +1250,7 @@ } /* Initialize TSO segments for a packet. */ @@ -6077,7 +6328,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { if (skb->len <= mss_now) { /* Avoid the costly divide in the normal -@@ -1231,7 +1266,7 @@ +@@ -1231,7 +1267,7 @@ /* Pcount in the middle of the write queue got changed, we need to do various * tweaks to fix counters */ @@ -6086,7 +6337,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { struct tcp_sock *tp = tcp_sk(sk); -@@ -1400,7 +1435,7 @@ +@@ -1400,7 +1436,7 @@ /* This is similar to __pskb_pull_tail(). The difference is that pulled * data is not copied, but immediately discarded. */ @@ -6095,7 +6346,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { struct skb_shared_info *shinfo; int i, k, eat; -@@ -1622,6 +1657,7 @@ +@@ -1623,6 +1659,7 @@ return mss_now; } @@ -6103,7 +6354,19 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou /* RFC2861, slow part. Adjust cwnd, after it was not full during one rto. * As additional protections, we do not touch cwnd in retransmission phases, -@@ -1703,8 +1739,8 @@ +@@ -1682,8 +1719,11 @@ + * 2) not cwnd limited (this else condition) + * 3) no more data to send (tcp_write_queue_empty()) + * 4) application is hitting buffer limit (SOCK_NOSPACE) ++ * 5) For MPTCP subflows, the scheduler determines ++ * sndbuf limited. + */ + if (tcp_write_queue_empty(sk) && sk->sk_socket && ++ !(mptcp(tcp_sk(sk)) && !is_meta_sk(sk)) && + test_bit(SOCK_NOSPACE, &sk->sk_socket->flags) && + (1 << sk->sk_state) & (TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) + tcp_chrono_start(sk, TCP_CHRONO_SNDBUF_LIMITED); +@@ -1705,8 +1745,8 @@ * But we can avoid doing the divide again given we already have * skb_pcount = skb->len / mss_now */ @@ -6114,7 +6377,16 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { if (skb->len < tcp_skb_pcount(skb) * mss_now) tp->snd_sml = TCP_SKB_CB(skb)->end_seq; -@@ -1764,11 +1800,11 @@ +@@ -1752,7 +1792,7 @@ + /* Return the number of segments we want in the skb we are transmitting. + * See if congestion control module wants to decide; otherwise, autosize. + */ +-static u32 tcp_tso_segs(struct sock *sk, unsigned int mss_now) ++u32 tcp_tso_segs(struct sock *sk, unsigned int mss_now) + { + const struct tcp_congestion_ops *ca_ops = inet_csk(sk)->icsk_ca_ops; + u32 min_tso, tso_segs; +@@ -1766,11 +1806,11 @@ } /* Returns the portion of skb which can be sent right away */ @@ -6131,7 +6403,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { const struct tcp_sock *tp = tcp_sk(sk); u32 partial, needed, window, max_len; -@@ -1798,13 +1834,14 @@ +@@ -1800,13 +1840,14 @@ /* Can at least one segment of SKB be sent right now, according to the * congestion window rules? If so, return how many segments are allowed. */ @@ -6149,7 +6421,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou tcp_skb_pcount(skb) == 1) return 1; -@@ -1819,12 +1856,13 @@ +@@ -1821,12 +1862,13 @@ halfcwnd = max(cwnd >> 1, 1U); return min(halfcwnd, cwnd - in_flight); } @@ -6164,7 +6436,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { int tso_segs = tcp_skb_pcount(skb); -@@ -1839,8 +1877,8 @@ +@@ -1841,8 +1883,8 @@ /* Return true if the Nagle test allows this packet to be * sent now. */ @@ -6175,7 +6447,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { /* Nagle rule does not apply to frames, which sit in the middle of the * write_queue (they have no chances to get new data). -@@ -1852,7 +1890,8 @@ +@@ -1854,7 +1896,8 @@ return true; /* Don't use the nagle rule for urgent data (or for the final FIN). */ @@ -6185,7 +6457,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou return true; if (!tcp_nagle_check(skb->len < cur_mss, tp, nonagle)) -@@ -1862,9 +1901,8 @@ +@@ -1864,9 +1907,8 @@ } /* Does at least the first segment of SKB fit into the send window? */ @@ -6197,7 +6469,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { u32 end_seq = TCP_SKB_CB(skb)->end_seq; -@@ -1873,6 +1911,7 @@ +@@ -1875,6 +1917,7 @@ return !after(end_seq, tcp_wnd_end(tp)); } @@ -6205,7 +6477,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou /* Trim TSO SKB to LEN bytes, put the remaining data into a new packet * which is put after SKB on the list. It is very much like -@@ -2031,7 +2070,8 @@ +@@ -2033,7 +2076,8 @@ /* If this packet won't get more data, do not wait. */ if ((TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN) || @@ -6215,7 +6487,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou goto send_now; return true; -@@ -2364,7 +2404,7 @@ +@@ -2366,7 +2410,7 @@ * Returns true, if no segments are in flight and we have queued segments, * but cannot send anything now because of SWS or another problem. */ @@ -6224,7 +6496,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou int push_one, gfp_t gfp) { struct tcp_sock *tp = tcp_sk(sk); -@@ -2378,7 +2418,12 @@ +@@ -2380,7 +2424,12 @@ sent_pkts = 0; tcp_mstamp_refresh(tp); @@ -6238,7 +6510,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou /* Do MTU probing. */ result = tcp_mtu_probe(sk); if (!result) { -@@ -2572,7 +2617,7 @@ +@@ -2576,7 +2625,7 @@ skb = tcp_send_head(sk); if (skb && tcp_snd_wnd_test(tp, skb, mss)) { pcount = tp->packets_out; @@ -6247,7 +6519,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou if (tp->packets_out > pcount) goto probe_sent; goto rearm_timer; -@@ -2634,8 +2679,8 @@ +@@ -2638,8 +2687,8 @@ if (unlikely(sk->sk_state == TCP_CLOSE)) return; @@ -6258,7 +6530,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou tcp_check_probe_timer(sk); } -@@ -2648,7 +2693,8 @@ +@@ -2652,7 +2701,8 @@ BUG_ON(!skb || skb->len < mss_now); @@ -6268,7 +6540,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou } /* This function returns the amount that we can raise the -@@ -2870,6 +2916,10 @@ +@@ -2874,6 +2924,10 @@ if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_SYN) return; @@ -6279,7 +6551,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou skb_rbtree_walk_from_safe(skb, tmp) { if (!tcp_can_collapse(sk, skb)) break; -@@ -3351,7 +3401,7 @@ +@@ -3355,7 +3409,7 @@ /* RFC1323: The window in SYN & SYN/ACK segments is never scaled. */ th->window = htons(min(req->rsk_rcv_wnd, 65535U)); @@ -6288,7 +6560,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou th->doff = (tcp_header_size >> 2); __TCP_INC_STATS(sock_net(sk), TCP_MIB_OUTSEGS); -@@ -3433,13 +3483,13 @@ +@@ -3437,13 +3491,13 @@ if (rcv_wnd == 0) rcv_wnd = dst_metric(dst, RTAX_INITRWND); @@ -6309,7 +6581,14 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou tp->rx_opt.rcv_wscale = rcv_wscale; tp->rcv_ssthresh = tp->rcv_wnd; -@@ -3464,6 +3514,36 @@ +@@ -3463,11 +3517,43 @@ + else + tp->rcv_tstamp = tcp_jiffies32; + tp->rcv_wup = tp->rcv_nxt; ++ /* force set rcv_right_edge here at start of connection */ ++ tp->rcv_right_edge = tp->rcv_wup + tp->rcv_wnd; + WRITE_ONCE(tp->copied_seq, tp->rcv_nxt); + inet_csk(sk)->icsk_rto = tcp_timeout_init(sk); inet_csk(sk)->icsk_retransmits = 0; tcp_clear_retrans(tp); @@ -6346,7 +6625,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou } static void tcp_connect_queue_skb(struct sock *sk, struct sk_buff *skb) -@@ -3727,6 +3807,7 @@ +@@ -3731,6 +3817,7 @@ { __tcp_send_ack(sk, tcp_sk(sk)->rcv_nxt); } @@ -6354,7 +6633,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou /* This routine sends a packet with an out of date sequence * number. It assumes the other end will try to ack it. -@@ -3739,7 +3820,7 @@ +@@ -3743,7 +3830,7 @@ * one is with SEG.SEQ=SND.UNA to deliver urgent pointer, another is * out-of-date with SND.UNA-1 to probe window. */ @@ -6363,7 +6642,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou { struct tcp_sock *tp = tcp_sk(sk); struct sk_buff *skb; -@@ -3826,7 +3907,7 @@ +@@ -3830,7 +3917,7 @@ unsigned long timeout; int err; @@ -6372,9 +6651,9 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_output.c linux-5.4.64.mptcp/net/ipv4/tcp_ou if (tp->packets_out || tcp_write_queue_empty(sk)) { /* Cancel probe timer, if it is not required. */ -diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_timer.c ---- linux-5.4.64/net/ipv4/tcp_timer.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv4/tcp_timer.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/ipv4/tcp_timer.c mptcp-mptcp_v0.96/net/ipv4/tcp_timer.c +--- linux-5.4.155/net/ipv4/tcp_timer.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv4/tcp_timer.c 2021-10-25 10:05:18.000000000 +0200 @@ -21,6 +21,7 @@ #include @@ -6383,7 +6662,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_tim #include static u32 tcp_clamp_rto_to_user_timeout(const struct sock *sk) -@@ -47,7 +48,7 @@ +@@ -65,7 +66,7 @@ * Returns: Nothing (void) */ @@ -6392,7 +6671,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_tim { sk->sk_err = sk->sk_err_soft ? : ETIMEDOUT; sk->sk_error_report(sk); -@@ -103,7 +104,7 @@ +@@ -121,7 +122,7 @@ (!tp->snd_wnd && !tp->packets_out)) do_reset = true; if (do_reset) @@ -6401,7 +6680,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_tim tcp_done(sk); __NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONMEMORY); return 1; -@@ -188,9 +189,9 @@ +@@ -206,9 +207,9 @@ * after "boundary" unsuccessful, exponentially backed-off * retransmissions with an initial RTO of TCP_RTO_MIN. */ @@ -6414,7 +6693,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_tim { unsigned int start_ts; -@@ -210,7 +211,7 @@ +@@ -228,7 +229,7 @@ } /* A write timeout has occurred. Process the after effects. */ @@ -6423,7 +6702,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_tim { struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); -@@ -225,6 +226,17 @@ +@@ -243,6 +244,17 @@ sk_rethink_txhash(sk); } retry_until = icsk->icsk_syn_retries ? : net->ipv4.sysctl_tcp_syn_retries; @@ -6441,7 +6720,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_tim expired = icsk->icsk_retransmits >= retry_until; } else { if (retransmits_timed_out(sk, net->ipv4.sysctl_tcp_retries1, 0)) { -@@ -320,18 +332,22 @@ +@@ -338,18 +350,22 @@ struct inet_connection_sock *icsk = from_timer(icsk, t, icsk_delack_timer); struct sock *sk = &icsk->icsk_inet.sk; @@ -6468,7 +6747,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_tim sock_put(sk); } -@@ -375,7 +391,12 @@ +@@ -393,7 +409,12 @@ } if (icsk->icsk_probes_out >= max_probes) { @@ -6482,7 +6761,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_tim } else { /* Only send another probe if we didn't close things up. */ tcp_send_probe0(sk); -@@ -596,7 +617,7 @@ +@@ -614,7 +635,7 @@ break; case ICSK_TIME_RETRANS: icsk->icsk_pending = 0; @@ -6491,7 +6770,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_tim break; case ICSK_TIME_PROBE0: icsk->icsk_pending = 0; -@@ -613,16 +634,19 @@ +@@ -631,16 +652,19 @@ struct inet_connection_sock *icsk = from_timer(icsk, t, icsk_retransmit_timer); struct sock *sk = &icsk->icsk_inet.sk; @@ -6514,7 +6793,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_tim sock_put(sk); } -@@ -652,11 +676,12 @@ +@@ -670,11 +694,12 @@ struct sock *sk = from_timer(sk, t, sk_timer); struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); @@ -6529,7 +6808,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_tim /* Try again later. */ inet_csk_reset_keepalive_timer (sk, HZ/20); goto out; -@@ -668,16 +693,31 @@ +@@ -686,16 +711,31 @@ } tcp_mstamp_refresh(tp); @@ -6563,7 +6842,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_tim goto death; } -@@ -702,11 +742,11 @@ +@@ -720,11 +760,11 @@ icsk->icsk_probes_out > 0) || (icsk->icsk_user_timeout == 0 && icsk->icsk_probes_out >= keepalive_probes(tp))) { @@ -6577,7 +6856,7 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_tim icsk->icsk_probes_out++; elapsed = keepalive_intvl_when(tp); } else { -@@ -730,7 +770,7 @@ +@@ -748,7 +788,7 @@ tcp_done(sk); out: @@ -6586,9 +6865,9 @@ diff -aurN linux-5.4.64/net/ipv4/tcp_timer.c linux-5.4.64.mptcp/net/ipv4/tcp_tim sock_put(sk); } -diff -aurN linux-5.4.64/net/ipv6/addrconf.c linux-5.4.64.mptcp/net/ipv6/addrconf.c ---- linux-5.4.64/net/ipv6/addrconf.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv6/addrconf.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/ipv6/addrconf.c mptcp-mptcp_v0.96/net/ipv6/addrconf.c +--- linux-5.4.155/net/ipv6/addrconf.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv6/addrconf.c 2021-10-25 10:05:18.000000000 +0200 @@ -967,6 +967,7 @@ kfree_rcu(ifp, rcu); @@ -6597,9 +6876,9 @@ diff -aurN linux-5.4.64/net/ipv6/addrconf.c linux-5.4.64.mptcp/net/ipv6/addrconf static void ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp) -diff -aurN linux-5.4.64/net/ipv6/af_inet6.c linux-5.4.64.mptcp/net/ipv6/af_inet6.c ---- linux-5.4.64/net/ipv6/af_inet6.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv6/af_inet6.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/ipv6/af_inet6.c mptcp-mptcp_v0.96/net/ipv6/af_inet6.c +--- linux-5.4.155/net/ipv6/af_inet6.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv6/af_inet6.c 2021-10-25 10:05:18.000000000 +0200 @@ -104,8 +104,7 @@ return (struct ipv6_pinfo *)(((u8 *)sk) + offset); } @@ -6610,9 +6889,9 @@ diff -aurN linux-5.4.64/net/ipv6/af_inet6.c linux-5.4.64.mptcp/net/ipv6/af_inet6 { struct inet_sock *inet; struct ipv6_pinfo *np; -diff -aurN linux-5.4.64/net/ipv6/ipv6_sockglue.c linux-5.4.64.mptcp/net/ipv6/ipv6_sockglue.c ---- linux-5.4.64/net/ipv6/ipv6_sockglue.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv6/ipv6_sockglue.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/ipv6/ipv6_sockglue.c mptcp-mptcp_v0.96/net/ipv6/ipv6_sockglue.c +--- linux-5.4.155/net/ipv6/ipv6_sockglue.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv6/ipv6_sockglue.c 2021-10-25 10:05:18.000000000 +0200 @@ -44,6 +44,8 @@ #include #include @@ -6636,9 +6915,27 @@ diff -aurN linux-5.4.64/net/ipv6/ipv6_sockglue.c linux-5.4.64.mptcp/net/ipv6/ipv sk->sk_socket->ops = &inet_stream_ops; sk->sk_family = PF_INET; tcp_sync_mss(sk, icsk->icsk_pmtu_cookie); -diff -aurN linux-5.4.64/net/ipv6/syncookies.c linux-5.4.64.mptcp/net/ipv6/syncookies.c ---- linux-5.4.64/net/ipv6/syncookies.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv6/syncookies.c 2020-09-10 19:25:10.507220869 +0200 +@@ -345,6 +352,17 @@ + if (val == -1) + val = 0; + np->tclass = val; ++ ++ if (is_meta_sk(sk)) { ++ struct mptcp_tcp_sock *mptcp; ++ ++ mptcp_for_each_sub(tcp_sk(sk)->mpcb, mptcp) { ++ struct sock *sk_it = mptcp_to_sock(mptcp); ++ ++ if (sk_it->sk_family == AF_INET6) ++ inet6_sk(sk_it)->tclass = val; ++ } ++ } + retv = 0; + break; + +diff -aurN linux-5.4.155/net/ipv6/syncookies.c mptcp-mptcp_v0.96/net/ipv6/syncookies.c +--- linux-5.4.155/net/ipv6/syncookies.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv6/syncookies.c 2021-10-25 10:05:18.000000000 +0200 @@ -15,6 +15,8 @@ #include #include @@ -6705,7 +7002,7 @@ diff -aurN linux-5.4.64/net/ipv6/syncookies.c linux-5.4.64.mptcp/net/ipv6/syncoo if (security_inet_conn_request(sk, skb, req)) goto out_free; -@@ -241,15 +259,15 @@ +@@ -247,15 +265,15 @@ (req->rsk_window_clamp > full_space || req->rsk_window_clamp == 0)) req->rsk_window_clamp = full_space; @@ -6726,9 +7023,9 @@ diff -aurN linux-5.4.64/net/ipv6/syncookies.c linux-5.4.64.mptcp/net/ipv6/syncoo out: return ret; out_free: -diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6.c ---- linux-5.4.64/net/ipv6/tcp_ipv6.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/ipv6/tcp_ipv6.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/ipv6/tcp_ipv6.c mptcp-mptcp_v0.96/net/ipv6/tcp_ipv6.c +--- linux-5.4.155/net/ipv6/tcp_ipv6.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/ipv6/tcp_ipv6.c 2021-10-25 10:05:18.000000000 +0200 @@ -58,6 +58,8 @@ #include #include @@ -6817,8 +7114,8 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 +void tcp_v6_mtu_reduced(struct sock *sk) { struct dst_entry *dst; - -@@ -367,7 +372,7 @@ + u32 mtu; +@@ -376,7 +381,7 @@ struct ipv6_pinfo *np; struct tcp_sock *tp; __u32 seq, snd_una; @@ -6827,7 +7124,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 bool fatal; int err; -@@ -393,8 +398,14 @@ +@@ -402,8 +407,14 @@ return 0; } @@ -6844,7 +7141,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 __NET_INC_STATS(net, LINUX_MIB_LOCKDROPPEDICMPS); if (sk->sk_state == TCP_CLOSE) -@@ -405,7 +416,6 @@ +@@ -414,7 +425,6 @@ goto out; } @@ -6852,7 +7149,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 /* XXX (TFO) - tp->snd_una should be ISN (tcp_create_openreq_child() */ fastopen = rcu_dereference(tp->fastopen_rsk); snd_una = fastopen ? tcp_rsk(fastopen)->snt_isn : tp->snd_una; -@@ -439,11 +449,15 @@ +@@ -454,11 +464,15 @@ goto out; tp->mtu_info = ntohl(info); @@ -6872,7 +7169,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 goto out; } -@@ -458,7 +472,7 @@ +@@ -473,7 +487,7 @@ if (fastopen && !fastopen->sk) break; @@ -6881,7 +7178,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 sk->sk_err = err; sk->sk_error_report(sk); /* Wake people up to see the error (see connect in sock.c) */ -@@ -468,14 +482,14 @@ +@@ -483,14 +497,14 @@ goto out; } @@ -6898,7 +7195,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 sock_put(sk); return 0; } -@@ -523,8 +537,7 @@ +@@ -538,8 +552,7 @@ return err; } @@ -6908,7 +7205,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 { kfree(inet_rsk(req)->ipv6_opt); kfree_skb(inet_rsk(req)->pktopts); -@@ -742,9 +755,10 @@ +@@ -757,9 +770,10 @@ return false; } @@ -6922,7 +7219,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 { bool l3_slave = ipv6_l3mdev_skb(TCP_SKB_CB(skb)->header.h6.flags); struct inet_request_sock *ireq = inet_rsk(req); -@@ -766,6 +780,8 @@ +@@ -781,6 +795,8 @@ refcount_inc(&skb->users); ireq->pktopts = skb; } @@ -6931,7 +7228,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 } static struct dst_entry *tcp_v6_route_req(const struct sock *sk, -@@ -785,7 +801,7 @@ +@@ -800,7 +816,7 @@ .syn_ack_timeout = tcp_syn_ack_timeout, }; @@ -6940,7 +7237,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 .mss_clamp = IPV6_MIN_MTU - sizeof(struct tcphdr) - sizeof(struct ipv6hdr), #ifdef CONFIG_TCP_MD5SIG -@@ -803,9 +819,9 @@ +@@ -818,9 +834,9 @@ }; static void tcp_v6_send_response(const struct sock *sk, struct sk_buff *skb, u32 seq, @@ -6952,7 +7249,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 { const struct tcphdr *th = tcp_hdr(skb); struct tcphdr *t1; -@@ -824,7 +840,10 @@ +@@ -839,7 +855,10 @@ if (key) tot_len += TCPOLEN_MD5SIG_ALIGNED; #endif @@ -6964,7 +7261,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 buff = alloc_skb(MAX_HEADER + sizeof(struct ipv6hdr) + tot_len, GFP_ATOMIC); if (!buff) -@@ -862,6 +881,17 @@ +@@ -877,6 +896,17 @@ tcp_v6_md5_hash_hdr((__u8 *)topt, key, &ipv6_hdr(skb)->saddr, &ipv6_hdr(skb)->daddr, t1); @@ -6982,7 +7279,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 } #endif -@@ -920,7 +950,7 @@ +@@ -935,7 +965,7 @@ kfree_skb(buff); } @@ -6991,7 +7288,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 { const struct tcphdr *th = tcp_hdr(skb); struct ipv6hdr *ipv6h = ipv6_hdr(skb); -@@ -1005,8 +1035,8 @@ +@@ -1020,8 +1050,8 @@ label = ip6_flowlabel(ipv6h); } @@ -7002,7 +7299,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 #ifdef CONFIG_TCP_MD5SIG out: -@@ -1015,30 +1045,37 @@ +@@ -1030,30 +1060,37 @@ } static void tcp_v6_send_ack(const struct sock *sk, struct sk_buff *skb, u32 seq, @@ -7047,7 +7344,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 { /* sk->sk_state == TCP_LISTEN -> for regular TCP_SYN_RECV * sk->sk_state == TCP_SYN_RECV -> for Fast Open. -@@ -1048,18 +1085,18 @@ +@@ -1063,18 +1100,18 @@ * exception of segments, MUST be right-shifted by * Rcv.Wind.Shift bits: */ @@ -7070,7 +7367,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 { #ifdef CONFIG_SYN_COOKIES const struct tcphdr *th = tcp_hdr(skb); -@@ -1085,7 +1122,7 @@ +@@ -1100,7 +1137,7 @@ return mss; } @@ -7079,7 +7376,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 { if (skb->protocol == htons(ETH_P_IP)) return tcp_v4_conn_request(sk, skb); -@@ -1111,11 +1148,11 @@ +@@ -1131,11 +1168,11 @@ sizeof(struct inet6_skb_parm)); } @@ -7096,7 +7393,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 { struct inet_request_sock *ireq; struct ipv6_pinfo *newnp; -@@ -1150,7 +1187,15 @@ +@@ -1170,7 +1207,15 @@ newnp->saddr = newsk->sk_v6_rcv_saddr; @@ -7113,7 +7410,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 newsk->sk_backlog_rcv = tcp_v4_do_rcv; #ifdef CONFIG_TCP_MD5SIG newtp->af_specific = &tcp_sock_ipv6_mapped_specific; -@@ -1197,6 +1242,14 @@ +@@ -1217,6 +1262,14 @@ if (!newsk) goto out_nonewsk; @@ -7128,7 +7425,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 /* * No need to charge this sock to the relevant IPv6 refcnt debug socks * count here, tcp_create_openreq_child now does this for us, see the -@@ -1324,7 +1377,7 @@ +@@ -1344,7 +1397,7 @@ * This is because we cannot sleep with the original spinlock * held. */ @@ -7137,7 +7434,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 { struct ipv6_pinfo *np = tcp_inet6_sk(sk); struct sk_buff *opt_skb = NULL; -@@ -1341,6 +1394,9 @@ +@@ -1361,6 +1414,9 @@ if (skb->protocol == htons(ETH_P_IP)) return tcp_v4_do_rcv(sk, skb); @@ -7147,7 +7444,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 /* * socket locking is here for SMP purposes as backlog rcv * is currently called with bh processing disabled. -@@ -1468,6 +1524,10 @@ +@@ -1488,6 +1544,10 @@ TCP_SKB_CB(skb)->end_seq = (TCP_SKB_CB(skb)->seq + th->syn + th->fin + skb->len - th->doff*4); TCP_SKB_CB(skb)->ack_seq = ntohl(th->ack_seq); @@ -7158,7 +7455,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 TCP_SKB_CB(skb)->tcp_flags = tcp_flag_byte(th); TCP_SKB_CB(skb)->tcp_tw_isn = 0; TCP_SKB_CB(skb)->ip_dsfield = ipv6_get_dsfield(hdr); -@@ -1482,8 +1542,8 @@ +@@ -1502,8 +1562,8 @@ int sdif = inet6_sdif(skb); const struct tcphdr *th; const struct ipv6hdr *hdr; @@ -7168,7 +7465,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 int ret; struct net *net = dev_net(skb->dev); -@@ -1537,12 +1597,17 @@ +@@ -1557,12 +1617,17 @@ reqsk_put(req); goto csum_error; } @@ -7187,7 +7484,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 nsk = NULL; if (!tcp_filter(sk, skb)) { th = (const struct tcphdr *)skb->data; -@@ -1601,19 +1666,28 @@ +@@ -1621,19 +1686,28 @@ sk_incoming_cpu_update(sk); @@ -7220,7 +7517,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 if (skb_to_free) __kfree_skb(skb_to_free); put_and_return: -@@ -1627,6 +1701,19 @@ +@@ -1647,6 +1721,19 @@ tcp_v6_fill_cb(skb, hdr, th); @@ -7240,7 +7537,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 if (tcp_checksum_complete(skb)) { csum_error: __TCP_INC_STATS(net, TCP_MIB_CSUMERRORS); -@@ -1679,6 +1766,18 @@ +@@ -1699,6 +1786,18 @@ refcounted = false; goto process; } @@ -7259,7 +7556,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 } /* to ACK */ /* fall through */ -@@ -1733,13 +1832,13 @@ +@@ -1753,13 +1852,13 @@ } } @@ -7275,7 +7572,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 .queue_xmit = inet6_csk_xmit, .send_check = tcp_v6_send_check, .rebuild_header = inet6_sk_rebuild_header, -@@ -1770,7 +1869,7 @@ +@@ -1790,7 +1889,7 @@ /* * TCP over IPv4 via INET6 API */ @@ -7284,7 +7581,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 .queue_xmit = ip_queue_xmit, .send_check = tcp_v4_send_check, .rebuild_header = inet_sk_rebuild_header, -@@ -1806,7 +1905,12 @@ +@@ -1826,7 +1925,12 @@ tcp_init_sock(sk); @@ -7298,7 +7595,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 #ifdef CONFIG_TCP_MD5SIG tcp_sk(sk)->af_specific = &tcp_sock_ipv6_specific; -@@ -1815,7 +1919,7 @@ +@@ -1835,7 +1939,7 @@ return 0; } @@ -7307,7 +7604,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 { tcp_v4_destroy_sock(sk); inet6_destroy_sock(sk); -@@ -2038,6 +2142,11 @@ +@@ -2058,6 +2162,11 @@ .sysctl_rmem_offset = offsetof(struct net, ipv4.sysctl_tcp_rmem), .max_header = MAX_TCP_HEADER, .obj_size = sizeof(struct tcp6_sock), @@ -7319,7 +7616,7 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 .slab_flags = SLAB_TYPESAFE_BY_RCU, .twsk_prot = &tcp6_timewait_sock_ops, .rsk_prot = &tcp6_request_sock_ops, -@@ -2048,6 +2157,9 @@ +@@ -2068,6 +2177,9 @@ .compat_getsockopt = compat_tcp_getsockopt, #endif .diag_destroy = tcp_abort, @@ -7329,9 +7626,9 @@ diff -aurN linux-5.4.64/net/ipv6/tcp_ipv6.c linux-5.4.64.mptcp/net/ipv6/tcp_ipv6 }; /* thinking of making this const? Don't. -diff -aurN linux-5.4.64/net/Kconfig linux-5.4.64.mptcp/net/Kconfig ---- linux-5.4.64/net/Kconfig 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/Kconfig 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/Kconfig mptcp-mptcp_v0.96/net/Kconfig +--- linux-5.4.155/net/Kconfig 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/Kconfig 2021-10-25 10:05:18.000000000 +0200 @@ -94,6 +94,7 @@ source "net/ipv4/Kconfig" source "net/ipv6/Kconfig" @@ -7340,9 +7637,9 @@ diff -aurN linux-5.4.64/net/Kconfig linux-5.4.64.mptcp/net/Kconfig endif # if INET -diff -aurN linux-5.4.64/net/Makefile linux-5.4.64.mptcp/net/Makefile ---- linux-5.4.64/net/Makefile 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/Makefile 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/Makefile mptcp-mptcp_v0.96/net/Makefile +--- linux-5.4.155/net/Makefile 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/Makefile 2021-10-25 10:05:18.000000000 +0200 @@ -20,6 +20,7 @@ obj-$(CONFIG_XFRM) += xfrm/ obj-$(CONFIG_UNIX_SCM) += unix/ @@ -7351,9 +7648,9 @@ diff -aurN linux-5.4.64/net/Makefile linux-5.4.64.mptcp/net/Makefile obj-$(CONFIG_BPFILTER) += bpfilter/ obj-$(CONFIG_PACKET) += packet/ obj-$(CONFIG_NET_KEY) += key/ -diff -aurN linux-5.4.64/net/mptcp/Kconfig linux-5.4.64.mptcp/net/mptcp/Kconfig ---- linux-5.4.64/net/mptcp/Kconfig 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/Kconfig 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/Kconfig mptcp-mptcp_v0.96/net/mptcp/Kconfig +--- linux-5.4.155/net/mptcp/Kconfig 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/Kconfig 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,154 @@ +# +# MPTCP configuration @@ -7509,9 +7806,9 @@ diff -aurN linux-5.4.64/net/mptcp/Kconfig linux-5.4.64.mptcp/net/mptcp/Kconfig + default "redundant" if DEFAULT_REDUNDANT + default "default" + -diff -aurN linux-5.4.64/net/mptcp/Makefile linux-5.4.64.mptcp/net/mptcp/Makefile ---- linux-5.4.64/net/mptcp/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/Makefile 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/Makefile mptcp-mptcp_v0.96/net/mptcp/Makefile +--- linux-5.4.155/net/mptcp/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/Makefile 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,25 @@ +# +## Makefile for MultiPath TCP support code. @@ -7538,9 +7835,9 @@ diff -aurN linux-5.4.64/net/mptcp/Makefile linux-5.4.64.mptcp/net/mptcp/Makefile +obj-$(CONFIG_MPTCP_ECF) += mptcp_ecf.o + +mptcp-$(subst m,y,$(CONFIG_IPV6)) += mptcp_ipv6.o -diff -aurN linux-5.4.64/net/mptcp/mctcp_desync.c linux-5.4.64.mptcp/net/mptcp/mctcp_desync.c ---- linux-5.4.64/net/mptcp/mctcp_desync.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mctcp_desync.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/mctcp_desync.c mptcp-mptcp_v0.96/net/mptcp/mctcp_desync.c +--- linux-5.4.155/net/mptcp/mctcp_desync.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mctcp_desync.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,193 @@ +/* + * Desynchronized Multi-Channel TCP Congestion Control Algorithm @@ -7735,9 +8032,9 @@ diff -aurN linux-5.4.64/net/mptcp/mctcp_desync.c linux-5.4.64.mptcp/net/mptcp/mc +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MCTCP: DESYNCHRONIZED MULTICHANNEL TCP CONGESTION CONTROL"); +MODULE_VERSION("1.0"); -diff -aurN linux-5.4.64/net/mptcp/mptcp_balia.c linux-5.4.64.mptcp/net/mptcp/mptcp_balia.c ---- linux-5.4.64/net/mptcp/mptcp_balia.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_balia.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/mptcp_balia.c mptcp-mptcp_v0.96/net/mptcp/mptcp_balia.c +--- linux-5.4.155/net/mptcp/mptcp_balia.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_balia.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,261 @@ +/* + * MPTCP implementation - Balia Congestion Control @@ -8000,9 +8297,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_balia.c linux-5.4.64.mptcp/net/mptcp/mpt +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP BALIA CONGESTION CONTROL ALGORITHM"); +MODULE_VERSION("0.1"); -diff -aurN linux-5.4.64/net/mptcp/mptcp_binder.c linux-5.4.64.mptcp/net/mptcp/mptcp_binder.c ---- linux-5.4.64/net/mptcp/mptcp_binder.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_binder.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/mptcp_binder.c mptcp-mptcp_v0.96/net/mptcp/mptcp_binder.c +--- linux-5.4.155/net/mptcp/mptcp_binder.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_binder.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,494 @@ +#include + @@ -8498,9 +8795,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_binder.c linux-5.4.64.mptcp/net/mptcp/mp +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("BINDER MPTCP"); +MODULE_VERSION("0.1"); -diff -aurN linux-5.4.64/net/mptcp/mptcp_blest.c linux-5.4.64.mptcp/net/mptcp/mptcp_blest.c ---- linux-5.4.64/net/mptcp/mptcp_blest.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_blest.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/mptcp_blest.c mptcp-mptcp_v0.96/net/mptcp/mptcp_blest.c +--- linux-5.4.155/net/mptcp/mptcp_blest.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_blest.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,285 @@ +// SPDX-License-Identifier: GPL-2.0 +/* MPTCP Scheduler to reduce HoL-blocking and spurious retransmissions. @@ -8787,9 +9084,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_blest.c linux-5.4.64.mptcp/net/mptcp/mpt +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("BLEST scheduler for MPTCP, based on default minimum RTT scheduler"); +MODULE_VERSION("0.95"); -diff -aurN linux-5.4.64/net/mptcp/mptcp_coupled.c linux-5.4.64.mptcp/net/mptcp/mptcp_coupled.c ---- linux-5.4.64/net/mptcp/mptcp_coupled.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_coupled.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/mptcp_coupled.c mptcp-mptcp_v0.96/net/mptcp/mptcp_coupled.c +--- linux-5.4.155/net/mptcp/mptcp_coupled.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_coupled.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,262 @@ +/* + * MPTCP implementation - Linked Increase congestion control Algorithm (LIA) @@ -9053,10 +9350,10 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_coupled.c linux-5.4.64.mptcp/net/mptcp/m +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP LINKED INCREASE CONGESTION CONTROL ALGORITHM"); +MODULE_VERSION("0.1"); -diff -aurN linux-5.4.64/net/mptcp/mptcp_ctrl.c linux-5.4.64.mptcp/net/mptcp/mptcp_ctrl.c ---- linux-5.4.64/net/mptcp/mptcp_ctrl.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_ctrl.c 2020-09-10 19:25:10.507220869 +0200 -@@ -0,0 +1,3309 @@ +diff -aurN linux-5.4.155/net/mptcp/mptcp_ctrl.c mptcp-mptcp_v0.96/net/mptcp/mptcp_ctrl.c +--- linux-5.4.155/net/mptcp/mptcp_ctrl.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_ctrl.c 2021-10-25 10:05:18.000000000 +0200 +@@ -0,0 +1,3313 @@ +/* + * MPTCP implementation - MPTCP-control + * @@ -9365,15 +9662,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_ctrl.c linux-5.4.64.mptcp/net/mptcp/mptc + const struct sk_buff *skb) +{ + struct mptcp_request_sock *mtreq = mptcp_rsk(req); -+ const struct tcp_sock *tp = tcp_sk(sk); + + inet_rsk(req)->saw_mpc = 1; -+ -+ /* MPTCP version agreement */ -+ if (mopt->mptcp_ver >= tp->mptcp_ver) -+ mtreq->mptcp_ver = tp->mptcp_ver; -+ else -+ mtreq->mptcp_ver = mopt->mptcp_ver; ++ mtreq->mptcp_ver = mopt->mptcp_ver; + + rcu_read_lock(); + local_bh_disable(); @@ -9400,11 +9691,10 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_ctrl.c linux-5.4.64.mptcp/net/mptcp/mptc +{ + struct mptcp_request_sock *mtreq = mptcp_rsk(req); + -+ /* MPTCP version agreement */ -+ if (mopt->mptcp_ver >= tcp_sk(sk)->mptcp_ver) -+ mtreq->mptcp_ver = tcp_sk(sk)->mptcp_ver; -+ else -+ mtreq->mptcp_ver = mopt->mptcp_ver; ++ /* Must happen before mptcp_set_key_reqsk to generate the token with ++ * the proper hash algo. ++ */ ++ mtreq->mptcp_ver = mopt->mptcp_ver; + + rcu_read_lock(); + local_bh_disable(); @@ -10163,6 +10453,10 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_ctrl.c linux-5.4.64.mptcp/net/mptcp/mptc + sk_dst_reset(sub_sk); + } + ++ /* IPV6_TCLASS */ ++ if (sub_sk->sk_family == AF_INET6 && meta_sk->sk_family == AF_INET6) ++ inet6_sk(sub_sk)->tclass = inet6_sk(meta_sk)->tclass; ++ + /* Inherit SO_REUSEADDR */ + sub_sk->sk_reuse = meta_sk->sk_reuse; + @@ -10337,6 +10631,7 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_ctrl.c linux-5.4.64.mptcp/net/mptcp/mptc + meta_tp->copied_seq = (u32)idsn; + meta_tp->rcv_nxt = (u32)idsn; + meta_tp->rcv_wup = (u32)idsn; ++ meta_tp->rcv_right_edge = meta_tp->rcv_wup + meta_tp->rcv_wnd; + + meta_tp->snd_wl1 = meta_tp->rcv_nxt - 1; +} @@ -10519,6 +10814,8 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_ctrl.c linux-5.4.64.mptcp/net/mptcp/mptc + INIT_LIST_HEAD(&master_tp->tsq_node); + INIT_LIST_HEAD(&master_tp->tsorted_sent_queue); + ++ master_tp->fastopen_req = NULL; ++ + master_sk->sk_tsq_flags = 0; + /* icsk_bind_hash inherited from the meta, but it will be properly set in + * mptcp_create_master_sk. Same operation is done in inet_csk_clone_lock. @@ -10756,7 +11053,7 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_ctrl.c linux-5.4.64.mptcp/net/mptcp/mptc + __u32 rcv_window_now = 0; + + if (copied > 0 && !(meta_sk->sk_shutdown & RCV_SHUTDOWN)) { -+ rcv_window_now = tcp_receive_window(meta_tp); ++ rcv_window_now = tcp_receive_window_now(meta_tp); + + /* Optimize, __mptcp_select_window() is not cheap. */ + if (2 * rcv_window_now <= meta_tp->window_clamp) @@ -11814,6 +12111,10 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_ctrl.c linux-5.4.64.mptcp/net/mptcp/mptc + if (!sock_flag(sk, SOCK_MPTCP)) + mopt.saw_mpc = 0; + ++ /* If the requested version is higher than what we support, fall back */ ++ if (mopt.saw_mpc && mopt.mptcp_ver > tcp_sk(sk)->mptcp_ver) ++ mopt.saw_mpc = 0; ++ + if (skb->protocol == htons(ETH_P_IP)) { + if (mopt.saw_mpc) { + if (skb_rtable(skb)->rt_flags & @@ -12366,9 +12667,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_ctrl.c linux-5.4.64.mptcp/net/mptcp/mptc +mptcp_sock_cache_failed: + mptcp_init_failed = true; +} -diff -aurN linux-5.4.64/net/mptcp/mptcp_ecf.c linux-5.4.64.mptcp/net/mptcp/mptcp_ecf.c ---- linux-5.4.64/net/mptcp/mptcp_ecf.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_ecf.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/mptcp_ecf.c mptcp-mptcp_v0.96/net/mptcp/mptcp_ecf.c +--- linux-5.4.155/net/mptcp/mptcp_ecf.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_ecf.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,195 @@ +// SPDX-License-Identifier: GPL-2.0 +/* MPTCP ECF Scheduler @@ -12565,9 +12866,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_ecf.c linux-5.4.64.mptcp/net/mptcp/mptcp +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("ECF (Earliest Completion First) scheduler for MPTCP, based on default minimum RTT scheduler"); +MODULE_VERSION("0.95"); -diff -aurN linux-5.4.64/net/mptcp/mptcp_fullmesh.c linux-5.4.64.mptcp/net/mptcp/mptcp_fullmesh.c ---- linux-5.4.64/net/mptcp/mptcp_fullmesh.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_fullmesh.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/mptcp_fullmesh.c mptcp-mptcp_v0.96/net/mptcp/mptcp_fullmesh.c +--- linux-5.4.155/net/mptcp/mptcp_fullmesh.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_fullmesh.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,1938 @@ +#include +#include @@ -14507,10 +14808,10 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_fullmesh.c linux-5.4.64.mptcp/net/mptcp/ +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Full-Mesh MPTCP"); +MODULE_VERSION("0.88"); -diff -aurN linux-5.4.64/net/mptcp/mptcp_input.c linux-5.4.64.mptcp/net/mptcp/mptcp_input.c ---- linux-5.4.64/net/mptcp/mptcp_input.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_input.c 2020-09-10 19:25:10.507220869 +0200 -@@ -0,0 +1,2531 @@ +diff -aurN linux-5.4.155/net/mptcp/mptcp_input.c mptcp-mptcp_v0.96/net/mptcp/mptcp_input.c +--- linux-5.4.155/net/mptcp/mptcp_input.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_input.c 2021-10-25 10:05:18.000000000 +0200 +@@ -0,0 +1,2548 @@ +/* + * MPTCP implementation - Sending side + * @@ -15397,7 +15698,7 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_input.c linux-5.4.64.mptcp/net/mptcp/mpt + } + + return !before64(end_data_seq, rcv_wup64) && -+ !after64(data_seq, mptcp_get_rcv_nxt_64(meta_tp) + tcp_receive_window(meta_tp)); ++ !after64(data_seq, mptcp_get_rcv_nxt_64(meta_tp) + tcp_receive_window_now(meta_tp)); +} + +/* @return: 0 everything is fine. Just continue processing @@ -15546,7 +15847,7 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_input.c linux-5.4.64.mptcp/net/mptcp/mpt + + /* Quick ACK if more 3/4 of the receive window is filled */ + if (after64(tp->mptcp->map_data_seq, -+ rcv_nxt64 + 3 * (tcp_receive_window(meta_tp) >> 2))) ++ rcv_nxt64 + 3 * (tcp_receive_window_now(meta_tp) >> 2))) + tcp_enter_quickack_mode(sk, TCP_MAX_QUICKACKS); + + } else { @@ -15938,6 +16239,19 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_input.c linux-5.4.64.mptcp/net/mptcp/mpt + meta_tp->snd_una = data_ack; +} + ++static void mptcp_stop_subflow_chronos(struct sock *meta_sk, ++ const enum tcp_chrono type) ++{ ++ const struct mptcp_cb *mpcb = tcp_sk(meta_sk)->mpcb; ++ struct mptcp_tcp_sock *mptcp; ++ ++ mptcp_for_each_sub(mpcb, mptcp) { ++ struct sock *sk_it = mptcp_to_sock(mptcp); ++ ++ tcp_chrono_stop(sk_it, type); ++ } ++} ++ +/* Handle the DATA_ACK */ +static bool mptcp_process_data_ack(struct sock *sk, const struct sk_buff *skb) +{ @@ -16063,6 +16377,13 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_input.c linux-5.4.64.mptcp/net/mptcp/mpt + if (meta_sk->sk_socket && + test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags)) + meta_sk->sk_write_space(meta_sk); ++ ++ if (meta_sk->sk_socket && ++ !test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags)) { ++ tcp_chrono_stop(meta_sk, TCP_CHRONO_SNDBUF_LIMITED); ++ mptcp_stop_subflow_chronos(meta_sk, ++ TCP_CHRONO_SNDBUF_LIMITED); ++ } + } + + if (meta_sk->sk_state != TCP_ESTABLISHED) { @@ -16968,9 +17289,6 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_input.c linux-5.4.64.mptcp/net/mptcp/mpt + + tp->mptcp->include_mpc = 1; + -+ /* Ensure that fastopen is handled at the meta-level. */ -+ tp->fastopen_req = NULL; -+ + sk_set_socket(sk, meta_sk->sk_socket); + sk->sk_wq = meta_sk->sk_wq; + @@ -17042,9 +17360,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_input.c linux-5.4.64.mptcp/net/mptcp/mpt + tcp_set_rto(sk); + mptcp_set_rto(sk); +} -diff -aurN linux-5.4.64/net/mptcp/mptcp_ipv4.c linux-5.4.64.mptcp/net/mptcp/mptcp_ipv4.c ---- linux-5.4.64/net/mptcp/mptcp_ipv4.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_ipv4.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/mptcp_ipv4.c mptcp-mptcp_v0.96/net/mptcp/mptcp_ipv4.c +--- linux-5.4.155/net/mptcp/mptcp_ipv4.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_ipv4.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,431 @@ +/* + * MPTCP implementation - IPv4-specific functions @@ -17477,9 +17795,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_ipv4.c linux-5.4.64.mptcp/net/mptcp/mptc + kmem_cache_destroy(mptcp_request_sock_ops.slab); + kfree(mptcp_request_sock_ops.slab_name); +} -diff -aurN linux-5.4.64/net/mptcp/mptcp_ipv6.c linux-5.4.64.mptcp/net/mptcp/mptcp_ipv6.c ---- linux-5.4.64/net/mptcp/mptcp_ipv6.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_ipv6.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/mptcp_ipv6.c mptcp-mptcp_v0.96/net/mptcp/mptcp_ipv6.c +--- linux-5.4.155/net/mptcp/mptcp_ipv6.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_ipv6.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,479 @@ +/* + * MPTCP implementation - IPv6-specific functions @@ -17960,9 +18278,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_ipv6.c linux-5.4.64.mptcp/net/mptcp/mptc + kmem_cache_destroy(mptcp6_request_sock_ops.slab); + kfree(mptcp6_request_sock_ops.slab_name); +} -diff -aurN linux-5.4.64/net/mptcp/mptcp_ndiffports.c linux-5.4.64.mptcp/net/mptcp/mptcp_ndiffports.c ---- linux-5.4.64/net/mptcp/mptcp_ndiffports.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_ndiffports.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/mptcp_ndiffports.c mptcp-mptcp_v0.96/net/mptcp/mptcp_ndiffports.c +--- linux-5.4.155/net/mptcp/mptcp_ndiffports.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_ndiffports.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,174 @@ +#include + @@ -18138,9 +18456,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_ndiffports.c linux-5.4.64.mptcp/net/mptc +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("NDIFF-PORTS MPTCP"); +MODULE_VERSION("0.88"); -diff -aurN linux-5.4.64/net/mptcp/mptcp_netlink.c linux-5.4.64.mptcp/net/mptcp/mptcp_netlink.c ---- linux-5.4.64/net/mptcp/mptcp_netlink.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_netlink.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/mptcp_netlink.c mptcp-mptcp_v0.96/net/mptcp/mptcp_netlink.c +--- linux-5.4.155/net/mptcp/mptcp_netlink.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_netlink.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,1272 @@ +// SPDX-License-Identifier: GPL-2.0 +/* MPTCP implementation - Netlink Path Manager @@ -19414,9 +19732,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_netlink.c linux-5.4.64.mptcp/net/mptcp/m +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP netlink-based path manager"); +MODULE_ALIAS_GENL_FAMILY(MPTCP_GENL_NAME); -diff -aurN linux-5.4.64/net/mptcp/mptcp_olia.c linux-5.4.64.mptcp/net/mptcp/mptcp_olia.c ---- linux-5.4.64/net/mptcp/mptcp_olia.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_olia.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/mptcp_olia.c mptcp-mptcp_v0.96/net/mptcp/mptcp_olia.c +--- linux-5.4.155/net/mptcp/mptcp_olia.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_olia.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,318 @@ +/* + * MPTCP implementation - OPPORTUNISTIC LINKED INCREASES CONGESTION CONTROL: @@ -19736,10 +20054,10 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_olia.c linux-5.4.64.mptcp/net/mptcp/mptc +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP COUPLED CONGESTION CONTROL"); +MODULE_VERSION("0.1"); -diff -aurN linux-5.4.64/net/mptcp/mptcp_output.c linux-5.4.64.mptcp/net/mptcp/mptcp_output.c ---- linux-5.4.64/net/mptcp/mptcp_output.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_output.c 2020-09-10 19:25:10.507220869 +0200 -@@ -0,0 +1,1997 @@ +diff -aurN linux-5.4.155/net/mptcp/mptcp_output.c mptcp-mptcp_v0.96/net/mptcp/mptcp_output.c +--- linux-5.4.155/net/mptcp/mptcp_output.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_output.c 2021-10-25 10:05:18.000000000 +0200 +@@ -0,0 +1,2009 @@ +/* + * MPTCP implementation - Sending side + * @@ -20543,6 +20861,7 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_output.c linux-5.4.64.mptcp/net/mptcp/mp + int push_one, gfp_t gfp) +{ + struct tcp_sock *meta_tp = tcp_sk(meta_sk), *subtp; ++ bool is_rwnd_limited = false; + struct mptcp_tcp_sock *mptcp; + struct sock *subsk = NULL; + struct mptcp_cb *mpcb = meta_tp->mpcb; @@ -20590,8 +20909,10 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_output.c linux-5.4.64.mptcp/net/mptcp/mp + if (skb_unclone(skb, GFP_ATOMIC)) + break; + -+ if (unlikely(!tcp_snd_wnd_test(meta_tp, skb, mss_now))) ++ if (unlikely(!tcp_snd_wnd_test(meta_tp, skb, mss_now))) { ++ is_rwnd_limited = true; + break; ++ } + + /* Force tso_segs to 1 by using UINT_MAX. + * We actually don't care about the exact number of segments @@ -20674,6 +20995,11 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_output.c linux-5.4.64.mptcp/net/mptcp/mp + break; + } + ++ if (is_rwnd_limited) ++ tcp_chrono_start(meta_sk, TCP_CHRONO_RWND_LIMITED); ++ else ++ tcp_chrono_stop(meta_sk, TCP_CHRONO_RWND_LIMITED); ++ + mptcp_for_each_sub(mpcb, mptcp) { + subsk = mptcp_to_sock(mptcp); + subtp = tcp_sk(subsk); @@ -20971,6 +21297,10 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_output.c linux-5.4.64.mptcp/net/mptcp/mp + + meta_tp->rcv_wnd = tp->rcv_wnd; + meta_tp->rcv_wup = meta_tp->rcv_nxt; ++ /* no need to use tcp_update_rcv_right_edge, because at the meta level ++ * right edge cannot go back ++ */ ++ meta_tp->rcv_right_edge = meta_tp->rcv_wnd + meta_tp->rcv_wup; + + return new_win; +} @@ -21737,9 +22067,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_output.c linux-5.4.64.mptcp/net/mptcp/mp + return max(xmit_size_goal, mss_now); +} + -diff -aurN linux-5.4.64/net/mptcp/mptcp_pm.c linux-5.4.64.mptcp/net/mptcp/mptcp_pm.c ---- linux-5.4.64/net/mptcp/mptcp_pm.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_pm.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/mptcp_pm.c mptcp-mptcp_v0.96/net/mptcp/mptcp_pm.c +--- linux-5.4.155/net/mptcp/mptcp_pm.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_pm.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,226 @@ +/* + * MPTCP implementation - MPTCP-subflow-management @@ -21967,10 +22297,10 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_pm.c linux-5.4.64.mptcp/net/mptcp/mptcp_ + return mptcp_set_default_path_manager(CONFIG_DEFAULT_MPTCP_PM); +} +late_initcall(mptcp_path_manager_default); -diff -aurN linux-5.4.64/net/mptcp/mptcp_redundant.c linux-5.4.64.mptcp/net/mptcp/mptcp_redundant.c ---- linux-5.4.64/net/mptcp/mptcp_redundant.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_redundant.c 2020-09-10 19:25:10.507220869 +0200 -@@ -0,0 +1,392 @@ +diff -aurN linux-5.4.155/net/mptcp/mptcp_redundant.c mptcp-mptcp_v0.96/net/mptcp/mptcp_redundant.c +--- linux-5.4.155/net/mptcp/mptcp_redundant.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_redundant.c 2021-10-25 10:05:18.000000000 +0200 +@@ -0,0 +1,395 @@ +/* + * MPTCP Scheduler to reduce latency and jitter. + * @@ -21997,9 +22327,10 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_redundant.c linux-5.4.64.mptcp/net/mptcp +struct redsched_priv { + /* The skb or NULL */ + struct sk_buff *skb; -+ /* End sequence number of the skb. This number should be checked ++ /* Start/end sequence number of the skb. This number should be checked + * to be valid before the skb field is used + */ ++ u32 skb_start_seq; + u32 skb_end_seq; +}; + @@ -22161,7 +22492,7 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_redundant.c linux-5.4.64.mptcp/net/mptcp + struct tcp_sock *meta_tp = tcp_sk(meta_sk); + + if (red_p->skb && -+ (!after(red_p->skb_end_seq, meta_tp->snd_una) || ++ (!after(red_p->skb_start_seq, meta_tp->snd_una) || + after(red_p->skb_end_seq, meta_tp->snd_nxt))) + red_p->skb = NULL; +} @@ -22279,6 +22610,7 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_redundant.c linux-5.4.64.mptcp/net/mptcp + if (skb && redsched_use_subflow(meta_sk, active_valid_sks, tp, + skb)) { + red_p->skb = skb; ++ red_p->skb_start_seq = TCP_SKB_CB(skb)->seq; + red_p->skb_end_seq = TCP_SKB_CB(skb)->end_seq; + redsched_update_next_subflow(tp, red_cb); + *subsk = (struct sock *)tp; @@ -22306,6 +22638,7 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_redundant.c linux-5.4.64.mptcp/net/mptcp + if (skb && redsched_use_subflow(meta_sk, active_valid_sks, tp, + skb)) { + red_p->skb = skb; ++ red_p->skb_start_seq = TCP_SKB_CB(skb)->seq; + red_p->skb_end_seq = TCP_SKB_CB(skb)->end_seq; + redsched_update_next_subflow(tp, red_cb); + *subsk = (struct sock *)tp; @@ -22363,9 +22696,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_redundant.c linux-5.4.64.mptcp/net/mptcp +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("REDUNDANT MPTCP"); +MODULE_VERSION("0.90"); -diff -aurN linux-5.4.64/net/mptcp/mptcp_rr.c linux-5.4.64.mptcp/net/mptcp/mptcp_rr.c ---- linux-5.4.64/net/mptcp/mptcp_rr.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_rr.c 2020-09-10 19:25:10.507220869 +0200 +diff -aurN linux-5.4.155/net/mptcp/mptcp_rr.c mptcp-mptcp_v0.96/net/mptcp/mptcp_rr.c +--- linux-5.4.155/net/mptcp/mptcp_rr.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_rr.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,309 @@ +/* MPTCP Scheduler module selector. Highly inspired by tcp_cong.c */ + @@ -22676,12 +23009,13 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_rr.c linux-5.4.64.mptcp/net/mptcp/mptcp_ +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("ROUNDROBIN MPTCP"); +MODULE_VERSION("0.89"); -diff -aurN linux-5.4.64/net/mptcp/mptcp_sched.c linux-5.4.64.mptcp/net/mptcp/mptcp_sched.c ---- linux-5.4.64/net/mptcp/mptcp_sched.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_sched.c 2020-09-10 19:25:10.511220802 +0200 -@@ -0,0 +1,647 @@ +diff -aurN linux-5.4.155/net/mptcp/mptcp_sched.c mptcp-mptcp_v0.96/net/mptcp/mptcp_sched.c +--- linux-5.4.155/net/mptcp/mptcp_sched.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_sched.c 2021-10-25 10:05:18.000000000 +0200 +@@ -0,0 +1,677 @@ +/* MPTCP Scheduler module selector. Highly inspired by tcp_cong.c */ + ++#include +#include +#include +#include @@ -22719,12 +23053,38 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_sched.c linux-5.4.64.mptcp/net/mptcp/mpt +} +EXPORT_SYMBOL_GPL(mptcp_is_def_unavailable); + ++/* estimate number of segments currently in flight + unsent in ++ * the subflow socket. ++ */ ++static int mptcp_subflow_queued(struct sock *sk, u32 max_tso_segs) ++{ ++ const struct tcp_sock *tp = tcp_sk(sk); ++ unsigned int queued; ++ ++ /* estimate the max number of segments in the write queue ++ * this is an overestimation, avoiding to iterate over the queue ++ * to make a better estimation. ++ * Having only one skb in the queue however might trigger tso deferral, ++ * delaying the sending of a tso segment in the hope that skb_entail ++ * will append more data to the skb soon. ++ * Therefore, in the case only one skb is in the queue, we choose to ++ * potentially underestimate, risking to schedule one skb too many onto ++ * the subflow rather than not enough. ++ */ ++ if (sk->sk_write_queue.qlen > 1) ++ queued = sk->sk_write_queue.qlen * max_tso_segs; ++ else ++ queued = sk->sk_write_queue.qlen; ++ ++ return queued + tcp_packets_in_flight(tp); ++} ++ +static bool mptcp_is_temp_unavailable(struct sock *sk, + const struct sk_buff *skb, + bool zero_wnd_test) +{ + const struct tcp_sock *tp = tcp_sk(sk); -+ unsigned int mss_now, space, in_flight; ++ unsigned int mss_now; + + if (inet_csk(sk)->icsk_ca_state == TCP_CA_Loss) { + /* If SACK is disabled, and we got a loss, TCP does not exit @@ -22748,19 +23108,10 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_sched.c linux-5.4.64.mptcp/net/mptcp/mpt + return true; + } + -+ in_flight = tcp_packets_in_flight(tp); -+ /* Not even a single spot in the cwnd */ -+ if (in_flight >= tp->snd_cwnd) -+ return true; -+ + mss_now = tcp_current_mss(sk); + -+ /* Now, check if what is queued in the subflow's send-queue -+ * already fills the cwnd. -+ */ -+ space = (tp->snd_cwnd - in_flight) * mss_now; -+ -+ if (tp->write_seq - tp->snd_nxt >= space) ++ /* Not even a single spot in the cwnd */ ++ if (mptcp_subflow_queued(sk, tcp_tso_segs(sk, mss_now)) >= tp->snd_cwnd) + return true; + + if (zero_wnd_test && !before(tp->write_seq, tcp_wnd_end(tp))) @@ -23054,14 +23405,22 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_sched.c linux-5.4.64.mptcp/net/mptcp/mpt + if (!skb && meta_sk->sk_socket && + test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags) && + sk_stream_wspace(meta_sk) < sk_stream_min_wspace(meta_sk)) { -+ struct sock *subsk = mpcb->sched_ops->get_subflow(meta_sk, NULL, -+ false); ++ struct sock *subsk; ++ ++ /* meta is send buffer limited */ ++ tcp_chrono_start(meta_sk, TCP_CHRONO_SNDBUF_LIMITED); ++ ++ subsk = mpcb->sched_ops->get_subflow(meta_sk, ++ NULL, false); + if (!subsk) + return NULL; + + skb = mptcp_rcv_buf_optimization(subsk, 0); + if (skb) + *reinject = -1; ++ else ++ tcp_chrono_start(subsk, ++ TCP_CHRONO_SNDBUF_LIMITED); + } + } + return skb; @@ -23073,11 +23432,10 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_sched.c linux-5.4.64.mptcp/net/mptcp/mpt + unsigned int *limit) +{ + struct sk_buff *skb = __mptcp_next_segment(meta_sk, reinject); -+ unsigned int mss_now, in_flight_space; -+ int remaining_in_flight_space; -+ u32 max_len, max_segs, window; ++ unsigned int mss_now; ++ u32 max_len, gso_max_segs, max_segs, max_tso_segs, window; + struct tcp_sock *subtp; -+ u16 gso_max_segs; ++ int queued; + + /* As we set it, we have to reset it as well. */ + *limit = 0; @@ -23093,6 +23451,12 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_sched.c linux-5.4.64.mptcp/net/mptcp/mpt + mss_now = tcp_current_mss(*subsk); + + if (!*reinject && unlikely(!tcp_snd_wnd_test(tcp_sk(meta_sk), skb, mss_now))) { ++ /* an active flow is selected, but segment will not be sent due ++ * to no more space in send window ++ * this means the meta is receive window limited ++ * the subflow might also be, if we have nothing to reinject ++ */ ++ tcp_chrono_start(meta_sk, TCP_CHRONO_RWND_LIMITED); + skb = mptcp_rcv_buf_optimization(*subsk, 1); + if (skb) + *reinject = -1; @@ -23100,40 +23464,39 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_sched.c linux-5.4.64.mptcp/net/mptcp/mpt + return NULL; + } + ++ if (!*reinject) { ++ /* this will stop any other chronos on the meta */ ++ tcp_chrono_start(meta_sk, TCP_CHRONO_BUSY); ++ } ++ + /* No splitting required, as we will only send one single segment */ + if (skb->len <= mss_now) + return skb; + -+ /* The following is similar to tcp_mss_split_point, but -+ * we do not care about nagle, because we will anyways -+ * use TCP_NAGLE_PUSH, which overrides this. ++ max_tso_segs = tcp_tso_segs(*subsk, tcp_current_mss(*subsk)); ++ queued = mptcp_subflow_queued(*subsk, max_tso_segs); ++ ++ /* this condition should already have been established in ++ * mptcp_is_temp_unavailable when selecting available flows + */ ++ WARN_ONCE(subtp->snd_cwnd <= queued, "Selected subflow no cwnd room"); + + gso_max_segs = (*subsk)->sk_gso_max_segs; + if (!gso_max_segs) /* No gso supported on the subflow's NIC */ + gso_max_segs = 1; -+ max_segs = min_t(unsigned int, tcp_cwnd_test(subtp, skb), gso_max_segs); ++ ++ max_segs = min_t(unsigned int, subtp->snd_cwnd - queued, gso_max_segs); + if (!max_segs) + return NULL; + -+ /* max_len is what would fit in the cwnd (respecting the 2GSO-limit of -+ * tcp_cwnd_test), but ignoring whatever was already queued. ++ /* if there is room for a segment, schedule up to a complete TSO ++ * segment to avoid TSO splitting. Even if it is more than allowed by ++ * the congestion window. + */ ++ max_segs = max_t(unsigned int, max_tso_segs, max_segs); ++ + max_len = min(mss_now * max_segs, skb->len); + -+ in_flight_space = (subtp->snd_cwnd - tcp_packets_in_flight(subtp)) * mss_now; -+ remaining_in_flight_space = (int)in_flight_space - (subtp->write_seq - subtp->snd_nxt); -+ -+ if (remaining_in_flight_space <= 0) -+ WARN_ONCE(1, "in_flight %u cwnd %u wseq %u snxt %u mss_now %u cache %u", -+ tcp_packets_in_flight(subtp), subtp->snd_cwnd, -+ subtp->write_seq, subtp->snd_nxt, mss_now, subtp->mss_cache); -+ else -+ /* max_len now fits exactly in the write-queue, taking into -+ * account what was already queued. -+ */ -+ max_len = min_t(u32, max_len, remaining_in_flight_space); -+ + window = tcp_wnd_end(subtp) - subtp->write_seq; + + /* max_len now also respects the announced receive-window */ @@ -23327,9 +23690,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_sched.c linux-5.4.64.mptcp/net/mptcp/mpt + return mptcp_set_default_scheduler(CONFIG_DEFAULT_MPTCP_SCHED); +} +late_initcall(mptcp_scheduler_default); -diff -aurN linux-5.4.64/net/mptcp/mptcp_wvegas.c linux-5.4.64.mptcp/net/mptcp/mptcp_wvegas.c ---- linux-5.4.64/net/mptcp/mptcp_wvegas.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-5.4.64.mptcp/net/mptcp/mptcp_wvegas.c 2020-09-10 19:25:10.511220802 +0200 +diff -aurN linux-5.4.155/net/mptcp/mptcp_wvegas.c mptcp-mptcp_v0.96/net/mptcp/mptcp_wvegas.c +--- linux-5.4.155/net/mptcp/mptcp_wvegas.c 1970-01-01 01:00:00.000000000 +0100 ++++ mptcp-mptcp_v0.96/net/mptcp/mptcp_wvegas.c 2021-10-25 10:05:18.000000000 +0200 @@ -0,0 +1,271 @@ +/* + * MPTCP implementation - WEIGHTED VEGAS @@ -23602,9 +23965,9 @@ diff -aurN linux-5.4.64/net/mptcp/mptcp_wvegas.c linux-5.4.64.mptcp/net/mptcp/mp +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MPTCP wVegas"); +MODULE_VERSION("0.1"); -diff -aurN linux-5.4.64/net/socket.c linux-5.4.64.mptcp/net/socket.c ---- linux-5.4.64/net/socket.c 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/net/socket.c 2020-09-10 19:25:10.511220802 +0200 +diff -aurN linux-5.4.155/net/socket.c mptcp-mptcp_v0.96/net/socket.c +--- linux-5.4.155/net/socket.c 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/net/socket.c 2021-10-25 10:05:18.000000000 +0200 @@ -91,6 +91,7 @@ #include @@ -23613,7 +23976,7 @@ diff -aurN linux-5.4.64/net/socket.c linux-5.4.64.mptcp/net/socket.c #include #include -@@ -1350,6 +1351,7 @@ +@@ -1339,6 +1340,7 @@ int err; struct socket *sock; const struct net_proto_family *pf; @@ -23621,7 +23984,7 @@ diff -aurN linux-5.4.64/net/socket.c linux-5.4.64.mptcp/net/socket.c /* * Check protocol is in range -@@ -1370,6 +1372,9 @@ +@@ -1359,6 +1361,9 @@ family = PF_PACKET; } @@ -23631,7 +23994,7 @@ diff -aurN linux-5.4.64/net/socket.c linux-5.4.64.mptcp/net/socket.c err = security_socket_create(family, type, protocol, kern); if (err) return err; -@@ -1419,6 +1424,10 @@ +@@ -1408,6 +1413,10 @@ if (err < 0) goto out_module_put; @@ -23642,9 +24005,9 @@ diff -aurN linux-5.4.64/net/socket.c linux-5.4.64.mptcp/net/socket.c /* * Now to bump the refcnt of the [loadable] module that owns this * socket at sock_release time we decrement its refcnt. -diff -aurN linux-5.4.64/tools/include/uapi/linux/bpf.h linux-5.4.64.mptcp/tools/include/uapi/linux/bpf.h ---- linux-5.4.64/tools/include/uapi/linux/bpf.h 2020-09-09 19:12:37.000000000 +0200 -+++ linux-5.4.64.mptcp/tools/include/uapi/linux/bpf.h 2020-09-10 19:25:10.511220802 +0200 +diff -aurN linux-5.4.155/tools/include/uapi/linux/bpf.h mptcp-mptcp_v0.96/tools/include/uapi/linux/bpf.h +--- linux-5.4.155/tools/include/uapi/linux/bpf.h 2021-10-20 11:40:18.000000000 +0200 ++++ mptcp-mptcp_v0.96/tools/include/uapi/linux/bpf.h 2021-10-25 10:05:18.000000000 +0200 @@ -3438,6 +3438,7 @@ BPF_TCP_LISTEN, BPF_TCP_CLOSING, /* Now a valid state */ @@ -23653,546 +24016,3 @@ diff -aurN linux-5.4.64/tools/include/uapi/linux/bpf.h linux-5.4.64.mptcp/tools/ BPF_TCP_MAX_STATES /* Leave at the end! */ }; -diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c -index 221e055623c1..49555fee79b4 100644 ---- a/net/ipv4/tcp_output.c -+++ b/net/ipv4/tcp_output.c -@@ -1707,8 +1707,11 @@ static void tcp_cwnd_validate(struct sock *sk, bool is_cwnd_limited) - * 2) not cwnd limited (this else condition) - * 3) no more data to send (tcp_write_queue_empty()) - * 4) application is hitting buffer limit (SOCK_NOSPACE) -+ * 5) For MPTCP subflows, the scheduler determines -+ * sndbuf limited. - */ - if (tcp_write_queue_empty(sk) && sk->sk_socket && -+ !(mptcp(tcp_sk(sk)) && !is_meta_sk(sk)) && - test_bit(SOCK_NOSPACE, &sk->sk_socket->flags) && - (1 << sk->sk_state) & (TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) - tcp_chrono_start(sk, TCP_CHRONO_SNDBUF_LIMITED); -diff --git a/net/mptcp/mptcp_input.c b/net/mptcp/mptcp_input.c -index 3d9eecd74683..1a08d94e8249 100644 ---- a/net/mptcp/mptcp_input.c -+++ b/net/mptcp/mptcp_input.c -@@ -1425,6 +1425,19 @@ static void mptcp_snd_una_update(struct tcp_sock *meta_tp, u32 data_ack) - meta_tp->snd_una = data_ack; - } - -+static void mptcp_stop_subflow_chronos(struct sock *meta_sk, -+ const enum tcp_chrono type) -+{ -+ const struct mptcp_cb *mpcb = tcp_sk(meta_sk)->mpcb; -+ struct mptcp_tcp_sock *mptcp; -+ -+ mptcp_for_each_sub(mpcb, mptcp) { -+ struct sock *sk_it = mptcp_to_sock(mptcp); -+ -+ tcp_chrono_stop(sk_it, type); -+ } -+} -+ - /* Handle the DATA_ACK */ - static bool mptcp_process_data_ack(struct sock *sk, const struct sk_buff *skb) - { -@@ -1550,6 +1563,13 @@ static bool mptcp_process_data_ack(struct sock *sk, const struct sk_buff *skb) - if (meta_sk->sk_socket && - test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags)) - meta_sk->sk_write_space(meta_sk); -+ -+ if (meta_sk->sk_socket && -+ !test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags)) { -+ tcp_chrono_stop(meta_sk, TCP_CHRONO_SNDBUF_LIMITED); -+ mptcp_stop_subflow_chronos(meta_sk, -+ TCP_CHRONO_SNDBUF_LIMITED); -+ } - } - - if (meta_sk->sk_state != TCP_ESTABLISHED) { -diff --git a/net/mptcp/mptcp_output.c b/net/mptcp/mptcp_output.c -index fc71d41c608d..bf6b5324b823 100644 ---- a/net/mptcp/mptcp_output.c -+++ b/net/mptcp/mptcp_output.c -@@ -801,6 +801,7 @@ bool mptcp_write_xmit(struct sock *meta_sk, unsigned int mss_now, int nonagle, - int push_one, gfp_t gfp) - { - struct tcp_sock *meta_tp = tcp_sk(meta_sk), *subtp; -+ bool is_rwnd_limited = false; - struct mptcp_tcp_sock *mptcp; - struct sock *subsk = NULL; - struct mptcp_cb *mpcb = meta_tp->mpcb; -@@ -848,8 +849,10 @@ bool mptcp_write_xmit(struct sock *meta_sk, unsigned int mss_now, int nonagle, - if (skb_unclone(skb, GFP_ATOMIC)) - break; - -- if (unlikely(!tcp_snd_wnd_test(meta_tp, skb, mss_now))) -+ if (unlikely(!tcp_snd_wnd_test(meta_tp, skb, mss_now))) { -+ is_rwnd_limited = true; - break; -+ } - - /* Force tso_segs to 1 by using UINT_MAX. - * We actually don't care about the exact number of segments -@@ -932,6 +935,11 @@ bool mptcp_write_xmit(struct sock *meta_sk, unsigned int mss_now, int nonagle, - break; - } - -+ if (is_rwnd_limited) -+ tcp_chrono_start(meta_sk, TCP_CHRONO_RWND_LIMITED); -+ else -+ tcp_chrono_stop(meta_sk, TCP_CHRONO_RWND_LIMITED); -+ - mptcp_for_each_sub(mpcb, mptcp) { - subsk = mptcp_to_sock(mptcp); - subtp = tcp_sk(subsk); -diff --git a/net/mptcp/mptcp_sched.c b/net/mptcp/mptcp_sched.c -index 39a997f84209..a4d8c4a5e52d 100644 ---- a/net/mptcp/mptcp_sched.c -+++ b/net/mptcp/mptcp_sched.c -@@ -372,14 +372,22 @@ static struct sk_buff *__mptcp_next_segment(struct sock *meta_sk, int *reinject) - if (!skb && meta_sk->sk_socket && - test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags) && - sk_stream_wspace(meta_sk) < sk_stream_min_wspace(meta_sk)) { -- struct sock *subsk = mpcb->sched_ops->get_subflow(meta_sk, NULL, -- false); -+ struct sock *subsk; -+ -+ /* meta is send buffer limited */ -+ tcp_chrono_start(meta_sk, TCP_CHRONO_SNDBUF_LIMITED); -+ -+ subsk = mpcb->sched_ops->get_subflow(meta_sk, -+ NULL, false); - if (!subsk) - return NULL; - - skb = mptcp_rcv_buf_optimization(subsk, 0); - if (skb) - *reinject = -1; -+ else -+ tcp_chrono_start(subsk, -+ TCP_CHRONO_SNDBUF_LIMITED); - } - } - return skb; -@@ -411,6 +419,12 @@ struct sk_buff *mptcp_next_segment(struct sock *meta_sk, - mss_now = tcp_current_mss(*subsk); - - if (!*reinject && unlikely(!tcp_snd_wnd_test(tcp_sk(meta_sk), skb, mss_now))) { -+ /* an active flow is selected, but segment will not be sent due -+ * to no more space in send window -+ * this means the meta is receive window limited -+ * the subflow might also be, if we have nothing to reinject -+ */ -+ tcp_chrono_start(meta_sk, TCP_CHRONO_RWND_LIMITED); - skb = mptcp_rcv_buf_optimization(*subsk, 1); - if (skb) - *reinject = -1; -@@ -418,6 +432,11 @@ struct sk_buff *mptcp_next_segment(struct sock *meta_sk, - return NULL; - } - -+ if (!*reinject) { -+ /* this will stop any other chronos on the meta */ -+ tcp_chrono_start(meta_sk, TCP_CHRONO_BUSY); -+ } -+ - /* No splitting required, as we will only send one single segment */ - if (skb->len <= mss_now) - return skb; -diff --git a/include/linux/tcp.h b/include/linux/tcp.h -index 04fcc5219f7b..970fb566f94d 100644 ---- a/include/linux/tcp.h -+++ b/include/linux/tcp.h -@@ -348,6 +348,7 @@ struct tcp_sock { - u32 rate_interval_us; /* saved rate sample: time elapsed */ - - u32 rcv_wnd; /* Current receiver window */ -+ u32 rcv_right_edge; /* Highest announced right edge */ - u32 write_seq; /* Tail(+1) of data held in tcp send buffer */ - u32 notsent_lowat; /* TCP_NOTSENT_LOWAT */ - u32 pushed_seq; /* Last pushed seq, required to talk to windows */ -diff --git a/include/net/tcp.h b/include/net/tcp.h -index 3e4f5179a835..93d53f5d5359 100644 ---- a/include/net/tcp.h -+++ b/include/net/tcp.h -@@ -850,6 +850,32 @@ static inline u32 tcp_receive_window(const struct tcp_sock *tp) - return (u32) win; - } - -+/* right edge only moves forward, even if window shrinks due -+ * to mptcp meta -+ */ -+static inline void tcp_update_rcv_right_edge(struct tcp_sock *tp) -+{ -+ if (after(tp->rcv_wup + tp->rcv_wnd, tp->rcv_right_edge)) -+ tp->rcv_right_edge = tp->rcv_wup + tp->rcv_wnd; -+} -+ -+/* Compute receive window which will never shrink. The way MPTCP handles -+ * the receive window can cause the effective right edge to shrink, -+ * causing valid segments to become out of window. -+ * This function should be used when checking if a segment is valid for -+ * the max right edge announced. -+ */ -+static inline u32 tcp_receive_window_no_shrink(const struct tcp_sock *tp) -+{ -+ s32 win = tp->rcv_right_edge - tp->rcv_nxt; -+ -+ win = max_t(s32, win, tp->rcv_wup + tp->rcv_wnd - tp->rcv_nxt); -+ -+ if (unlikely(win < 0)) -+ win = 0; -+ return (u32) win; -+} -+ - /* Choose a new window, without checks for shrinking, and without - * scaling applied to the result. The caller does these things - * if necessary. This is a "raw" window selection. -diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c -index 617c06364516..81d35b7b00c0 100644 ---- a/net/ipv4/tcp.c -+++ b/net/ipv4/tcp.c -@@ -2824,6 +2824,7 @@ static int tcp_repair_set_window(struct tcp_sock *tp, char __user *optbuf, int l - - tp->rcv_wnd = opt.rcv_wnd; - tp->rcv_wup = opt.rcv_wup; -+ tp->rcv_right_edge = tp->rcv_wup + tp->rcv_wnd; - - return 0; - } -diff --git a/net/ipv4/tcp_fastopen.c b/net/ipv4/tcp_fastopen.c -index 42d7a7d208df..88c211d28bc5 100644 ---- a/net/ipv4/tcp_fastopen.c -+++ b/net/ipv4/tcp_fastopen.c -@@ -277,6 +277,7 @@ static struct sock *tcp_fastopen_create_child(struct sock *sk, - - tcp_rsk(req)->rcv_nxt = tp->rcv_nxt; - tp->rcv_wup = tp->rcv_nxt; -+ tp->rcv_right_edge = tp->rcv_wup + tp->rcv_wnd; - - meta_sk = child; - ret = mptcp_check_req_fastopen(meta_sk, req); -diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c -index 37e229d2f615..d968cc6fddf7 100644 ---- a/net/ipv4/tcp_input.c -+++ b/net/ipv4/tcp_input.c -@@ -4122,7 +4122,7 @@ static inline bool tcp_paws_discard(const struct sock *sk, - static inline bool tcp_sequence(const struct tcp_sock *tp, u32 seq, u32 end_seq) - { - return !before(end_seq, tp->rcv_wup) && -- !after(seq, tp->rcv_nxt + tcp_receive_window(tp)); -+ !after(seq, tp->rcv_nxt + tcp_receive_window_no_shrink(tp)); - } - - /* When we get a reset we do this. */ -@@ -4842,7 +4842,7 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) - * Out of sequence packets to the out_of_order_queue. - */ - if (TCP_SKB_CB(skb)->seq == tp->rcv_nxt) { -- if (tcp_receive_window(tp) == 0) { -+ if (tcp_receive_window_no_shrink(tp) == 0) { - NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPZEROWINDOWDROP); - goto out_of_window; - } -@@ -4903,7 +4903,8 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) - } - - /* Out of window. F.e. zero window probe. */ -- if (!before(TCP_SKB_CB(skb)->seq, tp->rcv_nxt + tcp_receive_window(tp))) -+ if (!before(TCP_SKB_CB(skb)->seq, -+ tp->rcv_nxt + tcp_receive_window_no_shrink(tp))) - goto out_of_window; - - if (before(TCP_SKB_CB(skb)->seq, tp->rcv_nxt)) { -@@ -4913,7 +4914,7 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) - /* If window is closed, drop tail of packet. But after - * remembering D-SACK for its head made in previous line. - */ -- if (!tcp_receive_window(tp)) { -+ if (!tcp_receive_window_no_shrink(tp)) { - NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPZEROWINDOWDROP); - goto out_of_window; - } -@@ -6069,6 +6070,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, - */ - WRITE_ONCE(tp->rcv_nxt, TCP_SKB_CB(skb)->seq + 1); - tp->rcv_wup = TCP_SKB_CB(skb)->seq + 1; -+ tcp_update_rcv_right_edge(tp); - - /* RFC1323: The window in SYN & SYN/ACK segments is - * never scaled. -@@ -6187,6 +6189,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, - WRITE_ONCE(tp->rcv_nxt, TCP_SKB_CB(skb)->seq + 1); - WRITE_ONCE(tp->copied_seq, tp->rcv_nxt); - tp->rcv_wup = TCP_SKB_CB(skb)->seq + 1; -+ tcp_update_rcv_right_edge(tp); - - /* RFC1323: The window in SYN & SYN/ACK segments is - * never scaled. -diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c -index c4b489bfa9ae..fa9f63e3caaa 100644 ---- a/net/ipv4/tcp_minisocks.c -+++ b/net/ipv4/tcp_minisocks.c -@@ -550,6 +550,7 @@ struct sock *tcp_create_openreq_child(const struct sock *sk, - newtp->window_clamp = req->rsk_window_clamp; - newtp->rcv_ssthresh = req->rsk_rcv_wnd; - newtp->rcv_wnd = req->rsk_rcv_wnd; -+ newtp->rcv_right_edge = newtp->rcv_wnd + newtp->rcv_wup; - newtp->rx_opt.wscale_ok = ireq->wscale_ok; - if (newtp->rx_opt.wscale_ok) { - newtp->rx_opt.snd_wscale = ireq->snd_wscale; -diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c -index 221e055623c1..0f3bb4467133 100644 ---- a/net/ipv4/tcp_output.c -+++ b/net/ipv4/tcp_output.c -@@ -283,6 +283,7 @@ u16 tcp_select_window(struct sock *sk) - - tp->rcv_wnd = new_win; - tp->rcv_wup = tp->rcv_nxt; -+ tcp_update_rcv_right_edge(tp); - - /* Make sure we do not exceed the maximum possible - * scaled window. -@@ -3484,6 +3485,8 @@ static void tcp_connect_init(struct sock *sk) - else - tp->rcv_tstamp = tcp_jiffies32; - tp->rcv_wup = tp->rcv_nxt; -+ /* force set rcv_right_edge here at start of connection */ -+ tp->rcv_right_edge = tp->rcv_wup + tp->rcv_wnd; - WRITE_ONCE(tp->copied_seq, tp->rcv_nxt); - - inet_csk(sk)->icsk_rto = tcp_timeout_init(sk); -diff --git a/net/mptcp/mptcp_ctrl.c b/net/mptcp/mptcp_ctrl.c -index a6bbb7a688ba..9210e755ae3d 100644 ---- a/net/mptcp/mptcp_ctrl.c -+++ b/net/mptcp/mptcp_ctrl.c -@@ -1278,6 +1278,7 @@ void mptcp_initialize_recv_vars(struct tcp_sock *meta_tp, struct mptcp_cb *mpcb, - meta_tp->copied_seq = (u32)idsn; - meta_tp->rcv_nxt = (u32)idsn; - meta_tp->rcv_wup = (u32)idsn; -+ meta_tp->rcv_right_edge = meta_tp->rcv_wup + meta_tp->rcv_wnd; - - meta_tp->snd_wl1 = meta_tp->rcv_nxt - 1; - } -diff --git a/net/mptcp/mptcp_output.c b/net/mptcp/mptcp_output.c -index fc71d41c608d..bdea1a26e3fc 100644 ---- a/net/mptcp/mptcp_output.c -+++ b/net/mptcp/mptcp_output.c -@@ -1229,6 +1229,10 @@ u16 mptcp_select_window(struct sock *sk) - - meta_tp->rcv_wnd = tp->rcv_wnd; - meta_tp->rcv_wup = meta_tp->rcv_nxt; -+ /* no need to use tcp_update_rcv_right_edge, because at the meta level -+ * right edge cannot go back -+ */ -+ meta_tp->rcv_right_edge = meta_tp->rcv_wnd + meta_tp->rcv_wup; - - return new_win; - } -diff --git a/net/mptcp/mptcp_sched.c b/net/mptcp/mptcp_sched.c -index 4b878d14492a..6cb8c5c7d098 100644 ---- a/net/mptcp/mptcp_sched.c -+++ b/net/mptcp/mptcp_sched.c -@@ -388,25 +388,32 @@ static struct sk_buff *__mptcp_next_segment(struct sock *meta_sk, int *reinject) - } else { - skb = tcp_send_head(meta_sk); - -- if (!skb && meta_sk->sk_socket && -- test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags) && -- sk_stream_wspace(meta_sk) < sk_stream_min_wspace(meta_sk)) { -+ if (!skb) { - struct sock *subsk; - -- /* meta is send buffer limited */ -- tcp_chrono_start(meta_sk, TCP_CHRONO_SNDBUF_LIMITED); -- - subsk = mpcb->sched_ops->get_subflow(meta_sk, - NULL, false); - if (!subsk) - return NULL; - -- skb = mptcp_rcv_buf_optimization(subsk, 0); -- if (skb) -- *reinject = -1; -- else -+ if (meta_sk->sk_socket && -+ test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags) && -+ sk_stream_wspace(meta_sk) < sk_stream_min_wspace(meta_sk)) { -+ skb = mptcp_rcv_buf_optimization(subsk, 0); -+ if (skb) -+ *reinject = -1; -+ else -+ tcp_chrono_start(subsk, -+ TCP_CHRONO_SNDBUF_LIMITED); -+ } -+ -+ if (!skb) { -+ /* meta is send buffer limited */ -+ tcp_chrono_start(meta_sk, TCP_CHRONO_SNDBUF_LIMITED); -+ - tcp_chrono_start(subsk, - TCP_CHRONO_SNDBUF_LIMITED); -+ } - } - } - return skb; -diff --git a/include/net/tcp.h b/include/net/tcp.h -index 9d3fa5eb36d9..b6e9d709d1e1 100644 ---- a/include/net/tcp.h -+++ b/include/net/tcp.h -@@ -350,6 +350,7 @@ int tcp_xmit_probe_skb(struct sock *sk, int urgent, int mib); - void tcp_event_new_data_sent(struct sock *sk, struct sk_buff *skb); - int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, - gfp_t gfp_mask); -+u32 tcp_tso_segs(struct sock *sk, unsigned int mss_now); - unsigned int tcp_mss_split_point(const struct sock *sk, - const struct sk_buff *skb, - unsigned int mss_now, -diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c -index f72edfe89b4d..86bce63ab841 100644 ---- a/net/ipv4/tcp_output.c -+++ b/net/ipv4/tcp_output.c -@@ -1781,7 +1781,7 @@ static u32 tcp_tso_autosize(const struct sock *sk, unsigned int mss_now, - /* Return the number of segments we want in the skb we are transmitting. - * See if congestion control module wants to decide; otherwise, autosize. - */ --static u32 tcp_tso_segs(struct sock *sk, unsigned int mss_now) -+u32 tcp_tso_segs(struct sock *sk, unsigned int mss_now) - { - const struct tcp_congestion_ops *ca_ops = inet_csk(sk)->icsk_ca_ops; - u32 min_tso, tso_segs; -diff --git a/net/mptcp/mptcp_sched.c b/net/mptcp/mptcp_sched.c -index a4d8c4a5e52d..4b878d14492a 100644 ---- a/net/mptcp/mptcp_sched.c -+++ b/net/mptcp/mptcp_sched.c -@@ -1,5 +1,6 @@ - /* MPTCP Scheduler module selector. Highly inspired by tcp_cong.c */ - -+#include - #include - #include - #include -@@ -37,12 +38,38 @@ bool mptcp_is_def_unavailable(struct sock *sk) - } - EXPORT_SYMBOL_GPL(mptcp_is_def_unavailable); - -+/* estimate number of segments currently in flight + unsent in -+ * the subflow socket. -+ */ -+static int mptcp_subflow_queued(struct sock *sk, u32 max_tso_segs) -+{ -+ const struct tcp_sock *tp = tcp_sk(sk); -+ unsigned int queued; -+ -+ /* estimate the max number of segments in the write queue -+ * this is an overestimation, avoiding to iterate over the queue -+ * to make a better estimation. -+ * Having only one skb in the queue however might trigger tso deferral, -+ * delaying the sending of a tso segment in the hope that skb_entail -+ * will append more data to the skb soon. -+ * Therefore, in the case only one skb is in the queue, we choose to -+ * potentially underestimate, risking to schedule one skb too many onto -+ * the subflow rather than not enough. -+ */ -+ if (sk->sk_write_queue.qlen > 1) -+ queued = sk->sk_write_queue.qlen * max_tso_segs; -+ else -+ queued = sk->sk_write_queue.qlen; -+ -+ return queued + tcp_packets_in_flight(tp); -+} -+ - static bool mptcp_is_temp_unavailable(struct sock *sk, - const struct sk_buff *skb, - bool zero_wnd_test) - { - const struct tcp_sock *tp = tcp_sk(sk); -- unsigned int mss_now, space, in_flight; -+ unsigned int mss_now; - - if (inet_csk(sk)->icsk_ca_state == TCP_CA_Loss) { - /* If SACK is disabled, and we got a loss, TCP does not exit -@@ -66,19 +93,11 @@ static bool mptcp_is_temp_unavailable(struct sock *sk, - return true; - } - -- in_flight = tcp_packets_in_flight(tp); -- /* Not even a single spot in the cwnd */ -- if (in_flight >= tp->snd_cwnd) -- return true; -- - mss_now = tcp_current_mss(sk); - -- /* Now, check if what is queued in the subflow's send-queue -- * already fills the cwnd. -- */ -- space = (tp->snd_cwnd - in_flight) * mss_now; -- -- if (tp->write_seq - tp->snd_nxt >= space) -+ /* Not even a single spot in the cwnd */ -+ if (mptcp_subflow_queued(sk, tcp_tso_segs(sk, tcp_current_mss(sk))) -+ >= tp->snd_cwnd) - return true; - - if (zero_wnd_test && !before(tp->write_seq, tcp_wnd_end(tp))) -@@ -399,11 +418,10 @@ struct sk_buff *mptcp_next_segment(struct sock *meta_sk, - unsigned int *limit) - { - struct sk_buff *skb = __mptcp_next_segment(meta_sk, reinject); -- unsigned int mss_now, in_flight_space; -- int remaining_in_flight_space; -- u32 max_len, max_segs, window; -+ unsigned int mss_now; -+ u32 max_len, gso_max_segs, max_segs, max_tso_segs, window; - struct tcp_sock *subtp; -- u16 gso_max_segs; -+ int queued; - - /* As we set it, we have to reset it as well. */ - *limit = 0; -@@ -441,35 +459,29 @@ struct sk_buff *mptcp_next_segment(struct sock *meta_sk, - if (skb->len <= mss_now) - return skb; - -- /* The following is similar to tcp_mss_split_point, but -- * we do not care about nagle, because we will anyways -- * use TCP_NAGLE_PUSH, which overrides this. -+ max_tso_segs = tcp_tso_segs(*subsk, tcp_current_mss(*subsk)); -+ queued = mptcp_subflow_queued(*subsk, max_tso_segs); -+ -+ /* this condition should already have been established in -+ * mptcp_is_temp_unavailable when selecting available flows - */ -+ WARN_ONCE(subtp->snd_cwnd <= queued, "Selected subflow no cwnd room"); - - gso_max_segs = (*subsk)->sk_gso_max_segs; - if (!gso_max_segs) /* No gso supported on the subflow's NIC */ - gso_max_segs = 1; -- max_segs = min_t(unsigned int, tcp_cwnd_test(subtp, skb), gso_max_segs); -+ -+ max_segs = min_t(unsigned int, subtp->snd_cwnd - queued, gso_max_segs); - if (!max_segs) - return NULL; - -- /* max_len is what would fit in the cwnd (respecting the 2GSO-limit of -- * tcp_cwnd_test), but ignoring whatever was already queued. -+ /* if there is room for a segment, schedule up to a complete TSO -+ * segment to avoid TSO splitting. Even if it is more than allowed by -+ * the congestion window. - */ -- max_len = min(mss_now * max_segs, skb->len); -- -- in_flight_space = (subtp->snd_cwnd - tcp_packets_in_flight(subtp)) * mss_now; -- remaining_in_flight_space = (int)in_flight_space - (subtp->write_seq - subtp->snd_nxt); -+ max_segs = max_t(unsigned int, max_tso_segs, max_segs); - -- if (remaining_in_flight_space <= 0) -- WARN_ONCE(1, "in_flight %u cwnd %u wseq %u snxt %u mss_now %u cache %u", -- tcp_packets_in_flight(subtp), subtp->snd_cwnd, -- subtp->write_seq, subtp->snd_nxt, mss_now, subtp->mss_cache); -- else -- /* max_len now fits exactly in the write-queue, taking into -- * account what was already queued. -- */ -- max_len = min_t(u32, max_len, remaining_in_flight_space); -+ max_len = min(mss_now * max_segs, skb->len); - - window = tcp_wnd_end(subtp) - subtp->write_seq; \ No newline at end of file diff --git a/sign.sh b/sign.sh new file mode 100644 index 00000000..2d5ca9d0 --- /dev/null +++ b/sign.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +key=${1:-key-build} +path=${2:-x86_64} +[ -d $path/source/bin ] && [ -f "$key" ] && \ + find $path/source/bin \ + \( -name '*.img.gz' -or -name 'Packages' \) \ + -exec $path/source/staging_dir/host/bin/usign -S -m {} -s "$key" \;