diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2021-08-21 16:00:38 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2021-08-21 16:00:38 +0000 |
commit | 279cb658e432cdc420fa18613df255900e046974 (patch) | |
tree | 433358645cdfb23ed664705b8c6c8dbf7e759088 | |
parent | Initial commit. (diff) | |
download | dnsdist-279cb658e432cdc420fa18613df255900e046974.tar.xz dnsdist-279cb658e432cdc420fa18613df255900e046974.zip |
Adding upstream version 1.5.1.upstream/1.5.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
277 files changed, 155277 insertions, 0 deletions
@@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <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 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License.
\ No newline at end of file diff --git a/DNSDIST-MIB.txt b/DNSDIST-MIB.txt new file mode 100644 index 0000000..4f1f0bc --- /dev/null +++ b/DNSDIST-MIB.txt @@ -0,0 +1,729 @@ +-- -*- snmpv2 -*- +-- ---------------------------------------------------------------------- +-- MIB file for dnsdist +-- ---------------------------------------------------------------------- + +DNSDIST-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, MODULE-IDENTITY, enterprises, + Counter64, Unsigned32, NOTIFICATION-TYPE + FROM SNMPv2-SMI + CounterBasedGauge64 + FROM HCNUM-TC + Float64TC + FROM FLOAT-TC-MIB + OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP + FROM SNMPv2-CONF + InetAddressType + FROM INET-ADDRESS-MIB + TEXTUAL-CONVENTION, DisplayString + FROM SNMPv2-TC; + +dnsdist MODULE-IDENTITY + LAST-UPDATED "201611080000Z" + ORGANIZATION "PowerDNS BV" + CONTACT-INFO "support@powerdns.com" + DESCRIPTION + "This MIB module describes information gathered through dnsdist." + + REVISION "201611080000Z" + DESCRIPTION "Initial revision." + + ::= { powerdns 3 } + +powerdns OBJECT IDENTIFIER ::= { enterprises 43315 } + +stats OBJECT IDENTIFIER ::= { dnsdist 1 } + +queries OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries received" + ::= { stats 1 } + +responses OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses received" + ::= { stats 2 } + +servfailResponses OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of servfail responses received" + ::= { stats 3 } + +aclDrops OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries dropped because of the ACL" + ::= { stats 4 } + +-- stats 5 was a BlockFilter Counter, removed in 1.2.0 + +ruleDrop OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries dropped because of a rule" + ::= { stats 6 } + +ruleNXDomain OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of NXDomain responses returned because of a rule" + ::= { stats 7 } + +ruleRefused OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Refused responses returned because of a rule" + ::= { stats 8 } + +selfAnswered OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of self-answered responses" + ::= { stats 9 } + +downstreamTimeouts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of downstream timeouts" + ::= { stats 10 } + +downstreamSendErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of downstream send errors" + ::= { stats 11 } + +truncFailures OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of errors while truncating a response" + ::= { stats 12 } + +noPolicy OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries dropped because no server was available" + ::= { stats 13 } + +latency01 OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries answered in less than 1 ms" + ::= { stats 14 } + +latency110 OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries answered in 1-10 ms" + ::= { stats 15 } + +latency1050 OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries answered in 10-50 ms" + ::= { stats 16 } + +latency50100 OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries answered in 50-100 ms" + ::= { stats 17 } + +latency1001000 OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries answered in 100-1000 ms" + ::= { stats 18 } + +latencySlow OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries answered in more than 1s" + ::= { stats 19 } + +latencyAVG100 OBJECT-TYPE + SYNTAX Float64TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Average latency over the last 100 queries" + ::= { stats 20 } + +latencyAVG1000 OBJECT-TYPE + SYNTAX Float64TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Average latency over the last 1000 queries" + ::= { stats 21 } + +latencyAVG10000 OBJECT-TYPE + SYNTAX Float64TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Average latency over the last 10000 queries" + ::= { stats 22 } + +latencyAVG1000000 OBJECT-TYPE + SYNTAX Float64TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Average latency over the last 1000000 queries" + ::= { stats 23 } + +uptime OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Uptime of the dnsdist process, in seconds" + ::= { stats 24 } + +realMemoryUsage OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Memory usage" + ::= { stats 25 } + +nonCompliantQueries OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries dropped as non-compliant" + ::= { stats 26 } + +nonCompliantResponses OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses dropped as non-compliant" + ::= { stats 27 } + +rdQueries OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries with the RD flag set" + ::= { stats 28 } + +emptyQueries OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of empty queries received" + ::= { stats 29 } + +cacheHits OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of cache hits" + ::= { stats 30 } + +cacheMisses OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of cache misses" + ::= { stats 31 } + +cpuUserMSec OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "CPU Usage (user)" + ::= { stats 32 } + +cpuSysMSec OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "CPU Usage (sys)" + ::= { stats 33 } + +fdUsage OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of file descriptors" + ::= { stats 34 } + +dynBlocked OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries dropped because of a dynamic block" + ::= { stats 35 } + +dynBlockNMGSize OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Dynamic blocks (NMG) size" + ::= { stats 36 } + +ruleServFail OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of ServFail responses returned because of a rule" + ::= { stats 37 } + +specialMemoryUsage OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Memory usage (more precise but expensive to retrieve)" + ::= { stats 38 } + +securityStatus OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Security status of this software. 0=unknown, 1=OK, 2=upgrade recommended, 3=upgrade mandatory" + ::= { stats 38 } + +backendStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF BackendStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Statistics for backends" + ::= { dnsdist 2 } + +backendStatEntry OBJECT-TYPE + SYNTAX BackendStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Statistics for one backend" + INDEX { backendId } + ::= { backendStatTable 1 } + +BackendStatEntry ::= SEQUENCE { + backendId Unsigned32, + backendName DisplayString, + backendLatency CounterBasedGauge64, + backendWeight CounterBasedGauge64, + backendOutstanding CounterBasedGauge64, + backendQPSLimit CounterBasedGauge64, + backendReused Counter64, + backendState DisplayString, + backendAddress OCTET STRING, + backendPools DisplayString, + backendQPS CounterBasedGauge64, + backendQueries Counter64, + backendOrder CounterBasedGauge64 +} + +backendId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Backend ID" + ::= { backendStatEntry 1 } + +backendName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Backend name" + ::= { backendStatEntry 2 } + +backendLatency OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Backend latency" + ::= { backendStatEntry 3 } + +backendWeight OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Backend weight" + ::= { backendStatEntry 4 } + +backendOutstanding OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Backend outstanding queries" + ::= { backendStatEntry 5 } + +backendQPSLimit OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Backend QPS limit" + ::= { backendStatEntry 6 } + +backendReused OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Backend reused slots" + ::= { backendStatEntry 7 } + +backendState OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Backend state" + ::= { backendStatEntry 8 } + +backendAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2..24)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Backend address" + ::= { backendStatEntry 9 } + +backendPools OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "List of pools this backend belongs to" + ::= { backendStatEntry 10 } + +backendQPS OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Backend QPS" + ::= { backendStatEntry 11 } + +backendQueries OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries sent to this backend" + ::= { backendStatEntry 12 } + +backendOrder OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Backend order" + ::= { backendStatEntry 13 } + +--- +--- Textual Conventions +--- + +SocketProtocolType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value that represents a type of socket protocol." + SYNTAX INTEGER { + unknown(0), + udp(1), + tcp(2) + } + +DNSQueryType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value that represents a type of DNS query (question or response)." + SYNTAX INTEGER { + unknown(0), + question(1), + response(2) + } + +--- +--- Traps / Notifications +--- + +trap OBJECT IDENTIFIER ::= { dnsdist 10 } +traps OBJECT IDENTIFIER ::= { trap 0 } --- reverse-mappable +trapObjects OBJECT IDENTIFIER ::= { dnsdist 11 } + +socketFamily OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Socket family type" + ::= { trapObjects 1 } + +socketProtocol OBJECT-TYPE + SYNTAX SocketProtocolType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Socket protocol type" + ::= { trapObjects 2 } + +fromAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2..24)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Requestor address" + ::= { trapObjects 3 } + +toAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2..24)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Responder address" + ::= { trapObjects 4 } + +queryType OBJECT-TYPE + SYNTAX DNSQueryType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Query / Response" + ::= { trapObjects 5 } + +querySize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Size in bytes" + ::= { trapObjects 6 } + +queryID OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "DNS query ID" + ::= { trapObjects 7 } + +qName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "DNS qname" + ::= { trapObjects 8 } + +qClass OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "DNS query class" + ::= { trapObjects 9 } + +qType OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "DNS query type" + ::= { trapObjects 10 } + +trapReason OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reason for this trap" + ::= { trapObjects 11 } + +backendStatusChangeTrap NOTIFICATION-TYPE + OBJECTS { + backendName, + backendAddress, + backendState + } + STATUS current + DESCRIPTION "Backend status changed" + ::= { traps 1 } + +actionTrap NOTIFICATION-TYPE + OBJECTS { + socketFamily, + socketProtocol, + fromAddress, + toAddress, + queryType, + querySize, + queryID, + qName, + qClass, + qType, + trapReason + } + STATUS current + DESCRIPTION "Trap sent by SNMPTrapAction" + ::= { traps 2 } + +customTrap NOTIFICATION-TYPE + OBJECTS { + trapReason + } + STATUS current + DESCRIPTION "Trap sent by sendCustomTrap" + ::= { traps 3 } + +--- +--- Conformance +--- + +dnsdistConformance OBJECT IDENTIFIER ::= { dnsdist 100 } + +dnsdistCompliances MODULE-COMPLIANCE + STATUS current + DESCRIPTION "dnsdist compliance statement" + MODULE + MANDATORY-GROUPS { + dnsdistGroup, + dnsdistTrapsGroup + } + ::= { dnsdistConformance 1 } + +dnsdistGroup OBJECT-GROUP + OBJECTS { + queries, + responses, + servfailResponses, + aclDrops, + ruleDrop, + ruleNXDomain, + ruleRefused, + selfAnswered, + downstreamTimeouts, + downstreamSendErrors, + truncFailures, + noPolicy, + latency01, + latency110, + latency1050, + latency50100, + latency1001000, + latencySlow, + latencyAVG100, + latencyAVG1000, + latencyAVG10000, + latencyAVG1000000, + uptime, + realMemoryUsage, + specialMemoryUsage, + nonCompliantQueries, + nonCompliantResponses, + rdQueries, + emptyQueries, + cacheHits, + cacheMisses, + cpuUserMSec, + cpuSysMSec, + fdUsage, + dynBlocked, + dynBlockNMGSize, + securityStatus, + backendName, + backendLatency, + backendWeight, + backendOutstanding, + backendQPSLimit, + backendReused, + backendState, + backendAddress, + backendPools, + backendQPS, + backendQueries, + backendOrder, + socketFamily, + socketProtocol, + fromAddress, + toAddress, + queryType, + querySize, + queryID, + qName, + qClass, + qType, + trapReason + } + STATUS current + DESCRIPTION "Objects conformance group for dnsdist" + ::= { dnsdistConformance 2 } + +dnsdistTrapsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + actionTrap, + customTrap, + backendStatusChangeTrap + } + STATUS current + DESCRIPTION "Traps conformance group for dnsdist" + ::= { dnsdistConformance 3 } + +END diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..b0ca67a --- /dev/null +++ b/Makefile.am @@ -0,0 +1,488 @@ +AM_CPPFLAGS += $(SYSTEMD_CFLAGS) $(LUA_CFLAGS) $(LIBEDIT_CFLAGS) $(LIBSODIUM_CFLAGS) $(FSTRM_CFLAGS) $(YAHTTP_CFLAGS) $(SANITIZER_FLAGS) $(NET_SNMP_CFLAGS) $(LIBCAP_CFLAGS) -DSYSCONFDIR=\"${sysconfdir}\" + +ACLOCAL_AMFLAGS = -I m4 + +SUBDIRS=ext/ipcrypt \ + ext/yahttp + +CLEANFILES = \ + dnsmessage.pb.cc \ + dnsmessage.pb.h \ + htmlfiles.h.tmp \ + htmlfiles.h \ + dnsdist-lua-ffi-interface.inc \ + dnstap.pb.cc \ + dnstap.pb.h + +dnslabeltext.cc: dnslabeltext.rl + $(AM_V_GEN)$(RAGEL) $< -o dnslabeltext.cc + +BUILT_SOURCES=htmlfiles.h \ + dnsdist-lua-ffi-interface.inc \ + dnslabeltext.cc + +htmlfiles.h: $(srcdir)/html/* + $(AM_V_GEN)$(srcdir)/incfiles $(srcdir) > $@.tmp + @mv $@.tmp $@ + +dnsdist-lua-ffi-interface.inc: dnsdist-lua-ffi-interface.h + echo 'R"FFIContent(' > $@ + cat $< >> $@ + echo ')FFIContent"' >> $@ + +SRC_JS_FILES := $(wildcard src_js/*.js) +MIN_JS_FILES := $(patsubst src_js/%.js,html/js/%.min.js,$(SRC_JS_FILES)) + +html/js/%.min.js: src_js/%.js + uglifyjs $< > $@ + +min_js: $(MIN_JS_FILES) + +if HAVE_RE2 +AM_CPPFLAGS += $(RE2_CFLAGS) +endif + +if HAVE_DNS_OVER_TLS +if HAVE_LIBSSL +AM_CPPFLAGS += $(LIBSSL_CFLAGS) +endif + +if HAVE_GNUTLS +AM_CPPFLAGS += $(GNUTLS_CFLAGS) +endif +endif + +if HAVE_LIBCRYPTO +AM_CPPFLAGS += $(LIBCRYPTO_INCLUDES) +endif + +if HAVE_CDB +AM_CPPFLAGS += $(CDB_CFLAGS) +endif + +if HAVE_LMDB +AM_CPPFLAGS += $(LMDB_CFLAGS) +endif + +if HAVE_DNS_OVER_HTTPS +if HAVE_LIBSSL +AM_CPPFLAGS += $(LIBSSL_CFLAGS) +endif + +if HAVE_LIBH2OEVLOOP +AM_CPPFLAGS += $(LIBH2OEVLOOP_CFLAGS) +endif +endif + +EXTRA_DIST=COPYING \ + dnslabeltext.rl \ + dnsdistconf.lua \ + dnsmessage.proto \ + dnstap.proto \ + README.md \ + delaypipe.cc delaypipe.hh \ + html \ + contrib \ + ext/incbin/UNLICENSE \ + incfiles \ + src_js \ + dnsdist.service.in \ + lua_hpp.mk \ + bpf-filter.main.ebpf \ + bpf-filter.qname.ebpf \ + bpf-filter.ebpf.src \ + DNSDIST-MIB.txt \ + devpollmplexer.cc \ + epollmplexer.cc \ + kqueuemplexer.cc \ + portsmplexer.cc \ + cdb.cc cdb.hh \ + ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh \ + builder-support/gen-version + +bin_PROGRAMS = dnsdist + +if UNIT_TESTS +noinst_PROGRAMS = testrunner +TESTS_ENVIRONMENT = env BOOST_TEST_LOG_LEVEL=message SRCDIR='$(srcdir)' +TESTS=testrunner +else +check-local: + @echo "Unit tests are not enabled" + @echo "Run ./configure --enable-unit-tests" +endif + +dnsdist-web.$(OBJEXT): htmlfiles.h + +dnsdist_SOURCES = \ + ascii.hh \ + base64.hh \ + bpf-filter.cc bpf-filter.hh \ + cachecleaner.hh \ + capabilities.cc capabilities.hh \ + circular_buffer.hh \ + dns.cc dns.hh \ + dnscrypt.cc dnscrypt.hh \ + dnsdist.cc dnsdist.hh \ + dnsdist-backend.cc \ + dnsdist-dynbpf.cc dnsdist-dynbpf.hh \ + dnsdist-cache.cc dnsdist-cache.hh \ + dnsdist-carbon.cc \ + dnsdist-console.cc dnsdist-console.hh \ + dnsdist-dnscrypt.cc \ + dnsdist-dynblocks.cc dnsdist-dynblocks.hh \ + dnsdist-ecs.cc dnsdist-ecs.hh \ + dnsdist-healthchecks.cc dnsdist-healthchecks.hh \ + dnsdist-idstate.cc \ + dnsdist-kvs.hh dnsdist-kvs.cc \ + dnsdist-lbpolicies.cc dnsdist-lbpolicies.hh \ + dnsdist-lua.hh dnsdist-lua.cc \ + dnsdist-lua-actions.cc \ + dnsdist-lua-bindings.cc \ + dnsdist-lua-bindings-dnscrypt.cc \ + dnsdist-lua-bindings-dnsquestion.cc \ + dnsdist-lua-bindings-kvs.cc \ + dnsdist-lua-bindings-packetcache.cc \ + dnsdist-lua-bindings-protobuf.cc \ + dnsdist-lua-ffi.cc dnsdist-lua-ffi.hh \ + dnsdist-lua-ffi-interface.h dnsdist-lua-ffi-interface.inc \ + dnsdist-lua-inspection.cc \ + dnsdist-lua-inspection-ffi.cc dnsdist-lua-inspection-ffi.hh \ + dnsdist-lua-rules.cc \ + dnsdist-lua-vars.cc \ + dnsdist-prometheus.hh \ + dnsdist-protobuf.cc dnsdist-protobuf.hh \ + dnsdist-proxy-protocol.cc dnsdist-proxy-protocol.hh \ + dnsdist-rings.cc dnsdist-rings.hh \ + dnsdist-rules.hh \ + dnsdist-secpoll.cc dnsdist-secpoll.hh \ + dnsdist-snmp.cc dnsdist-snmp.hh \ + dnsdist-systemd.cc dnsdist-systemd.hh \ + dnsdist-tcp.cc \ + dnsdist-web.cc dnsdist-web.hh \ + dnsdist-xpf.cc dnsdist-xpf.hh \ + dnslabeltext.cc \ + dnsname.cc dnsname.hh \ + dnsparser.hh dnsparser.cc \ + dnswriter.cc dnswriter.hh \ + doh.hh doh.cc \ + dolog.hh \ + ednsoptions.cc ednsoptions.hh \ + ednscookies.cc ednscookies.hh \ + ednssubnet.cc ednssubnet.hh \ + fstrm_logger.cc fstrm_logger.hh \ + gettime.cc gettime.hh \ + htmlfiles.h \ + iputils.cc iputils.hh \ + libssl.cc libssl.hh \ + lock.hh \ + misc.cc misc.hh \ + mplexer.hh \ + namespaces.hh \ + pdnsexception.hh \ + protobuf.cc protobuf.hh \ + proxy-protocol.cc proxy-protocol.hh \ + dnstap.cc dnstap.hh \ + qtype.cc qtype.hh \ + remote_logger.cc remote_logger.hh \ + pollmplexer.cc \ + sholder.hh \ + snmp-agent.cc snmp-agent.hh \ + sodcrypto.cc sodcrypto.hh \ + sstuff.hh \ + statnode.cc statnode.hh \ + tcpiohandler.cc tcpiohandler.hh \ + threadname.hh threadname.cc \ + uuid-utils.hh uuid-utils.cc \ + views.hh \ + xpf.cc xpf.hh \ + ext/luawrapper/include/LuaContext.hpp \ + ext/json11/json11.cpp \ + ext/json11/json11.hpp \ + ext/incbin/incbin.h \ + ext/libbpf/libbpf.h + +testrunner_SOURCES = \ + base64.hh \ + dns.hh \ + test-base64_cc.cc \ + test-delaypipe_hh.cc \ + test-dnscrypt_cc.cc \ + test-dnsdist_cc.cc \ + test-dnsdistdynblocks_hh.cc \ + test-dnsdistkvs_cc.cc \ + test-dnsdistlbpolicies_cc.cc \ + test-dnsdistpacketcache_cc.cc \ + test-dnsdistrings_cc.cc \ + test-dnsdistrules_cc.cc \ + test-dnsparser_cc.cc \ + test-iputils_hh.cc \ + test-mplexer.cc \ + test-proxy_protocol_cc.cc \ + cachecleaner.hh \ + circular_buffer.hh \ + dnsdist.hh \ + dnsdist-backend.cc \ + dnsdist-cache.cc dnsdist-cache.hh \ + dnsdist-dynblocks.cc dnsdist-dynblocks.hh \ + dnsdist-ecs.cc dnsdist-ecs.hh \ + dnsdist-kvs.cc dnsdist-kvs.hh \ + dnsdist-lbpolicies.cc dnsdist-lbpolicies.hh \ + dnsdist-lua-ffi.cc dnsdist-lua-ffi.hh \ + dnsdist-lua-ffi-interface.h dnsdist-lua-ffi-interface.inc \ + dnsdist-rings.hh \ + dnsdist-xpf.cc dnsdist-xpf.hh \ + dnscrypt.cc dnscrypt.hh \ + dnslabeltext.cc \ + dnsname.cc dnsname.hh \ + dnsparser.hh dnsparser.cc \ + dnswriter.cc dnswriter.hh \ + dolog.hh \ + ednsoptions.cc ednsoptions.hh \ + ednscookies.cc ednscookies.hh \ + ednssubnet.cc ednssubnet.hh \ + gettime.cc gettime.hh \ + iputils.cc iputils.hh \ + misc.cc misc.hh \ + namespaces.hh \ + pdnsexception.hh \ + pollmplexer.cc \ + proxy-protocol.cc proxy-protocol.hh \ + qtype.cc qtype.hh \ + sholder.hh \ + sodcrypto.cc \ + sstuff.hh \ + statnode.cc statnode.hh \ + threadname.hh threadname.cc \ + testrunner.cc \ + uuid-utils.hh uuid-utils.cc \ + xpf.cc xpf.hh \ + ext/luawrapper/include/LuaContext.hpp + +dnsdist_LDFLAGS = \ + $(AM_LDFLAGS) \ + $(PROGRAM_LDFLAGS) \ + -pthread + +dnsdist_LDADD = \ + $(LUA_LIBS) \ + $(LIBEDIT_LIBS) \ + $(RT_LIBS) \ + $(YAHTTP_LIBS) \ + $(LIBSODIUM_LIBS) \ + $(FSTRM_LIBS) \ + $(SANITIZER_FLAGS) \ + $(SYSTEMD_LIBS) \ + $(NET_SNMP_LIBS) \ + $(LIBCAP_LIBS) \ + $(IPCRYPT_LIBS) + +testrunner_LDFLAGS = \ + $(AM_LDFLAGS) \ + $(PROGRAM_LDFLAGS) \ + $(BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS) \ + -pthread + +testrunner_LDADD = \ + $(BOOST_UNIT_TEST_FRAMEWORK_LIBS) \ + $(FSTRM_LIBS) \ + $(LIBSODIUM_LIBS) \ + $(LUA_LIBS) \ + $(RT_LIBS) \ + $(SANITIZER_FLAGS) \ + $(LIBCAP_LIBS) + +if HAVE_CDB +dnsdist_LDADD += $(CDB_LDFLAGS) $(CDB_LIBS) +testrunner_LDADD += $(CDB_LDFLAGS) $(CDB_LIBS) +dnsdist_SOURCES += cdb.cc cdb.hh +testrunner_SOURCES += cdb.cc cdb.hh +endif + +if HAVE_RE2 +dnsdist_LDADD += $(RE2_LIBS) +endif + +if HAVE_LIBSSL +dnsdist_LDADD += $(LIBSSL_LIBS) +endif + +if HAVE_LIBCRYPTO +dnsdist_LDADD += $(LIBCRYPTO_LDFLAGS) $(LIBCRYPTO_LIBS) +dnsdist_SOURCES += ipcipher.cc ipcipher.hh +endif + +if HAVE_LMDB +dnsdist_LDADD += $(LMDB_LDFLAGS) $(LMDB_LIBS) +testrunner_LDADD += $(LMDB_LDFLAGS) $(LMDB_LIBS) +dnsdist_SOURCES += ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh +testrunner_SOURCES += ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh +endif + +if HAVE_DNS_OVER_TLS +if HAVE_GNUTLS +dnsdist_LDADD += -lgnutls +endif +endif + +if HAVE_DNS_OVER_HTTPS + +if HAVE_LIBH2OEVLOOP +dnsdist_LDADD += $(LIBH2OEVLOOP_LIBS) +endif + +endif + +if !HAVE_LUA_HPP +BUILT_SOURCES += lua.hpp +nodist_dnsdist_SOURCES = lua.hpp +endif + +CLEANFILES += lua.hpp + +if HAVE_PROTOBUF +if HAVE_PROTOC +dnsmessage.pb.cc: dnsmessage.proto + $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $< + +dnstap.pb.cc: dnstap.proto + $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $< + +BUILT_SOURCES += dnsmessage.pb.cc dnstap.pb.cc + +nodist_dnsdist_SOURCES = dnsmessage.pb.cc dnsmessage.pb.h dnstap.pb.cc dnstap.pb.h +dnsdist_LDADD += $(PROTOBUF_LIBS) + +dnsdist.$(OBJEXT): dnsmessage.pb.cc dnstap.pb.cc +endif +endif + +if HAVE_FREEBSD +dnsdist_SOURCES += kqueuemplexer.cc +testrunner_SOURCES += kqueuemplexer.cc +endif + +if HAVE_LINUX +dnsdist_SOURCES += epollmplexer.cc +testrunner_SOURCES += epollmplexer.cc +endif + +if HAVE_SOLARIS +dnsdist_SOURCES += \ + devpollmplexer.cc \ + portsmplexer.cc +testrunner_SOURCES += \ + devpollmplexer.cc \ + portsmplexer.cc +endif + +MANPAGES=dnsdist.1 + +dist_man_MANS=$(MANPAGES) + +if HAVE_VIRTUALENV +if !HAVE_MANPAGES +$(MANPAGES): %: docs/manpages/%.rst .venv + $(AM_V_GEN).venv/bin/python -msphinx -b man docs . $< +endif # if !HAVE_MANPAGES + +.venv: docs/requirements.txt + virtualenv .venv + .venv/bin/pip install -U pip setuptools setuptools-git + .venv/bin/pip install -r $< + +latex/dnsdist.pdf: docs/** .venv + .venv/bin/python -msphinx -M latexpdf docs . + +dnsdist.pdf: latex/dnsdist.pdf + mv $< $@ + +html-docs.tar.bz2: html-docs + tar cjf $@ $< + +html-docs: docs/** .venv + .venv/bin/python -msphinx -b html docs html-docs + +all-docs: html-docs html-docs.tar.bz2 dnsdist.pdf + +upload-docs: all-docs + rsync -crv --delete --no-p --chmod=g=rwX --exclude '*~' ./html-docs/ web1.powerdns.com:/srv/www/dnsdist.org + rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./html-docs.tar.bz2 web1.powerdns.com:/srv/www/dnsdist.org + rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./dnsdist.pdf web1.powerdns.com:/srv/www/dnsdist.org + +else # if HAVE_VIRTUALENV +$(MANPAGES): + @echo "You need virtualenv to generate the manpages" + exit 1 + +html-docs: %: docs/manpages/%.rst .venv + @echo "You need virtualenv to generate the HTML documentation" + exit 1 + +dnsdist.pdf: + @echo "You need virtualenv to generate the pdf documentation" + exit 1 +endif + +if HAVE_SYSTEMD +dnsdist.service: dnsdist.service.in + $(AM_V_GEN)sed -e 's![@]bindir[@]!$(bindir)!' -e 's![@]service_user[@]!$(service_user)!' -e 's![@]service_group[@]!$(service_group)!' < $< > $@ +if !HAVE_SYSTEMD_LOCK_PERSONALITY + $(AM_V_GEN)perl -ni -e 'print unless /^LockPersonality/' $@ +endif +if !HAVE_SYSTEMD_PRIVATE_DEVICES + $(AM_V_GEN)perl -ni -e 'print unless /^PrivateDevices/' $@ +endif +if !HAVE_SYSTEMD_PRIVATE_TMP + $(AM_V_GEN)perl -ni -e 'print unless /^PrivateTmp/' $@ +endif +if !HAVE_SYSTEMD_PROTECT_CONTROL_GROUPS + $(AM_V_GEN)perl -ni -e 'print unless /^ProtectControlGroups/' $@ +endif +if !HAVE_SYSTEMD_PROTECT_HOME + $(AM_V_GEN)perl -ni -e 'print unless /^ProtectHome/' $@ +endif +if !HAVE_SYSTEMD_PROTECT_KERNEL_MODULES + $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelModules/' $@ +endif +if !HAVE_SYSTEMD_PROTECT_KERNEL_TUNABLES + $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelTunables/' $@ +endif +if !HAVE_SYSTEMD_PROTECT_SYSTEM + $(AM_V_GEN)perl -ni -e 'print unless /^ProtectSystem/' $@ +endif +if !HAVE_SYSTEMD_RESTRICT_ADDRESS_FAMILIES + $(AM_V_GEN)perl -ni -e 'print unless /^RestrictAddressFamilies/' $@ +endif +if !HAVE_SYSTEMD_RESTRICT_NAMESPACES + $(AM_V_GEN)perl -ni -e 'print unless /^RestrictNamespaces/' $@ +endif +if !HAVE_SYSTEMD_RESTRICT_REALTIME + $(AM_V_GEN)perl -ni -e 'print unless /^RestrictRealtime/' $@ +endif +if !HAVE_SYSTEMD_SYSTEM_CALL_ARCHITECTURES + $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallArchitectures/' $@ +endif +if !HAVE_SYSTEMD_SYSTEM_CALL_FILTER + $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallFilter/' $@ +endif + +dnsdist@.service: dnsdist.service + $(AM_V_GEN)sed -e 's!/dnsdist !&--config $(sysconfdir)/dnsdist-%i.conf !' \ + -e 's!RuntimeDirectory=.*!&-%i!' \ + < $< >$@ + +systemdsystemunitdir = $(SYSTEMD_DIR) + +systemdsystemunit_DATA = \ + dnsdist.service \ + dnsdist@.service + +CLEANFILES += \ + dnsdist.service \ + dnsdist@.service +endif + +if !HAVE_LUA_HPP +include lua_hpp.mk +endif diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..6d250d2 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,2362 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@HAVE_RE2_TRUE@am__append_1 = $(RE2_CFLAGS) +@HAVE_DNS_OVER_TLS_TRUE@@HAVE_LIBSSL_TRUE@am__append_2 = $(LIBSSL_CFLAGS) +@HAVE_DNS_OVER_TLS_TRUE@@HAVE_GNUTLS_TRUE@am__append_3 = $(GNUTLS_CFLAGS) +@HAVE_LIBCRYPTO_TRUE@am__append_4 = $(LIBCRYPTO_INCLUDES) +@HAVE_CDB_TRUE@am__append_5 = $(CDB_CFLAGS) +@HAVE_LMDB_TRUE@am__append_6 = $(LMDB_CFLAGS) +@HAVE_DNS_OVER_HTTPS_TRUE@@HAVE_LIBSSL_TRUE@am__append_7 = $(LIBSSL_CFLAGS) +@HAVE_DNS_OVER_HTTPS_TRUE@@HAVE_LIBH2OEVLOOP_TRUE@am__append_8 = $(LIBH2OEVLOOP_CFLAGS) +bin_PROGRAMS = dnsdist$(EXEEXT) +@UNIT_TESTS_TRUE@noinst_PROGRAMS = testrunner$(EXEEXT) +@UNIT_TESTS_TRUE@TESTS = testrunner$(EXEEXT) +@HAVE_CDB_TRUE@am__append_9 = $(CDB_LDFLAGS) $(CDB_LIBS) +@HAVE_CDB_TRUE@am__append_10 = $(CDB_LDFLAGS) $(CDB_LIBS) +@HAVE_CDB_TRUE@am__append_11 = cdb.cc cdb.hh +@HAVE_CDB_TRUE@am__append_12 = cdb.cc cdb.hh +@HAVE_RE2_TRUE@am__append_13 = $(RE2_LIBS) +@HAVE_LIBSSL_TRUE@am__append_14 = $(LIBSSL_LIBS) +@HAVE_LIBCRYPTO_TRUE@am__append_15 = $(LIBCRYPTO_LDFLAGS) $(LIBCRYPTO_LIBS) +@HAVE_LIBCRYPTO_TRUE@am__append_16 = ipcipher.cc ipcipher.hh +@HAVE_LMDB_TRUE@am__append_17 = $(LMDB_LDFLAGS) $(LMDB_LIBS) +@HAVE_LMDB_TRUE@am__append_18 = $(LMDB_LDFLAGS) $(LMDB_LIBS) +@HAVE_LMDB_TRUE@am__append_19 = ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh +@HAVE_LMDB_TRUE@am__append_20 = ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh +@HAVE_DNS_OVER_TLS_TRUE@@HAVE_GNUTLS_TRUE@am__append_21 = -lgnutls +@HAVE_DNS_OVER_HTTPS_TRUE@@HAVE_LIBH2OEVLOOP_TRUE@am__append_22 = $(LIBH2OEVLOOP_LIBS) +@HAVE_LUA_HPP_FALSE@am__append_23 = lua.hpp +@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_24 = dnsmessage.pb.cc dnstap.pb.cc +@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_25 = $(PROTOBUF_LIBS) +@HAVE_FREEBSD_TRUE@am__append_26 = kqueuemplexer.cc +@HAVE_FREEBSD_TRUE@am__append_27 = kqueuemplexer.cc +@HAVE_LINUX_TRUE@am__append_28 = epollmplexer.cc +@HAVE_LINUX_TRUE@am__append_29 = epollmplexer.cc +@HAVE_SOLARIS_TRUE@am__append_30 = \ +@HAVE_SOLARIS_TRUE@ devpollmplexer.cc \ +@HAVE_SOLARIS_TRUE@ portsmplexer.cc + +@HAVE_SOLARIS_TRUE@am__append_31 = \ +@HAVE_SOLARIS_TRUE@ devpollmplexer.cc \ +@HAVE_SOLARIS_TRUE@ portsmplexer.cc + +@HAVE_SYSTEMD_TRUE@am__append_32 = \ +@HAVE_SYSTEMD_TRUE@ dnsdist.service \ +@HAVE_SYSTEMD_TRUE@ dnsdist@.service + +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ac_pthread_set_name.m4 \ + $(top_srcdir)/m4/ax_arg_default_enable_disable.m4 \ + $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ + $(top_srcdir)/m4/boost.m4 \ + $(top_srcdir)/m4/dnsdist_enable_dnscrypt.m4 \ + $(top_srcdir)/m4/dnsdist_enable_doh.m4 \ + $(top_srcdir)/m4/dnsdist_enable_tls.m4 \ + $(top_srcdir)/m4/dnsdist_with_gnutls.m4 \ + $(top_srcdir)/m4/dnsdist_with_libssl.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/pdns_check_cdb.m4 \ + $(top_srcdir)/m4/pdns_check_clock_gettime.m4 \ + $(top_srcdir)/m4/pdns_check_dnstap.m4 \ + $(top_srcdir)/m4/pdns_check_libcrypto.m4 \ + $(top_srcdir)/m4/pdns_check_libedit.m4 \ + $(top_srcdir)/m4/pdns_check_libh2o_evloop.m4 \ + $(top_srcdir)/m4/pdns_check_lmdb.m4 \ + $(top_srcdir)/m4/pdns_check_lua_hpp.m4 \ + $(top_srcdir)/m4/pdns_check_network_libs.m4 \ + $(top_srcdir)/m4/pdns_check_os.m4 \ + $(top_srcdir)/m4/pdns_check_pthread_np.m4 \ + $(top_srcdir)/m4/pdns_check_ragel.m4 \ + $(top_srcdir)/m4/pdns_check_secure_memset.m4 \ + $(top_srcdir)/m4/pdns_check_virtualenv.m4 \ + $(top_srcdir)/m4/pdns_d_fortify_source.m4 \ + $(top_srcdir)/m4/pdns_enable_sanitizers.m4 \ + $(top_srcdir)/m4/pdns_enable_unit_tests.m4 \ + $(top_srcdir)/m4/pdns_param_ssp_buffer_size.m4 \ + $(top_srcdir)/m4/pdns_pie.m4 $(top_srcdir)/m4/pdns_relro.m4 \ + $(top_srcdir)/m4/pdns_stack_protector.m4 \ + $(top_srcdir)/m4/pdns_with_ebpf.m4 \ + $(top_srcdir)/m4/pdns_with_libcap.m4 \ + $(top_srcdir)/m4/pdns_with_libsodium.m4 \ + $(top_srcdir)/m4/pdns_with_lua.m4 \ + $(top_srcdir)/m4/pdns_with_net_snmp.m4 \ + $(top_srcdir)/m4/pdns_with_protobuf.m4 \ + $(top_srcdir)/m4/pdns_with_re2.m4 \ + $(top_srcdir)/m4/pdns_with_service_user.m4 \ + $(top_srcdir)/m4/systemd.m4 $(top_srcdir)/m4/warnings.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ + "$(DESTDIR)$(systemdsystemunitdir)" +PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) +am__dnsdist_SOURCES_DIST = ascii.hh base64.hh bpf-filter.cc \ + bpf-filter.hh cachecleaner.hh capabilities.cc capabilities.hh \ + circular_buffer.hh dns.cc dns.hh dnscrypt.cc dnscrypt.hh \ + dnsdist.cc dnsdist.hh dnsdist-backend.cc dnsdist-dynbpf.cc \ + dnsdist-dynbpf.hh dnsdist-cache.cc dnsdist-cache.hh \ + dnsdist-carbon.cc dnsdist-console.cc dnsdist-console.hh \ + dnsdist-dnscrypt.cc dnsdist-dynblocks.cc dnsdist-dynblocks.hh \ + dnsdist-ecs.cc dnsdist-ecs.hh dnsdist-healthchecks.cc \ + dnsdist-healthchecks.hh dnsdist-idstate.cc dnsdist-kvs.hh \ + dnsdist-kvs.cc dnsdist-lbpolicies.cc dnsdist-lbpolicies.hh \ + dnsdist-lua.hh dnsdist-lua.cc dnsdist-lua-actions.cc \ + dnsdist-lua-bindings.cc dnsdist-lua-bindings-dnscrypt.cc \ + dnsdist-lua-bindings-dnsquestion.cc \ + dnsdist-lua-bindings-kvs.cc \ + dnsdist-lua-bindings-packetcache.cc \ + dnsdist-lua-bindings-protobuf.cc dnsdist-lua-ffi.cc \ + dnsdist-lua-ffi.hh dnsdist-lua-ffi-interface.h \ + dnsdist-lua-ffi-interface.inc dnsdist-lua-inspection.cc \ + dnsdist-lua-inspection-ffi.cc dnsdist-lua-inspection-ffi.hh \ + dnsdist-lua-rules.cc dnsdist-lua-vars.cc dnsdist-prometheus.hh \ + dnsdist-protobuf.cc dnsdist-protobuf.hh \ + dnsdist-proxy-protocol.cc dnsdist-proxy-protocol.hh \ + dnsdist-rings.cc dnsdist-rings.hh dnsdist-rules.hh \ + dnsdist-secpoll.cc dnsdist-secpoll.hh dnsdist-snmp.cc \ + dnsdist-snmp.hh dnsdist-systemd.cc dnsdist-systemd.hh \ + dnsdist-tcp.cc dnsdist-web.cc dnsdist-web.hh dnsdist-xpf.cc \ + dnsdist-xpf.hh dnslabeltext.cc dnsname.cc dnsname.hh \ + dnsparser.hh dnsparser.cc dnswriter.cc dnswriter.hh doh.hh \ + doh.cc dolog.hh ednsoptions.cc ednsoptions.hh ednscookies.cc \ + ednscookies.hh ednssubnet.cc ednssubnet.hh fstrm_logger.cc \ + fstrm_logger.hh gettime.cc gettime.hh htmlfiles.h iputils.cc \ + iputils.hh libssl.cc libssl.hh lock.hh misc.cc misc.hh \ + mplexer.hh namespaces.hh pdnsexception.hh protobuf.cc \ + protobuf.hh proxy-protocol.cc proxy-protocol.hh dnstap.cc \ + dnstap.hh qtype.cc qtype.hh remote_logger.cc remote_logger.hh \ + pollmplexer.cc sholder.hh snmp-agent.cc snmp-agent.hh \ + sodcrypto.cc sodcrypto.hh sstuff.hh statnode.cc statnode.hh \ + tcpiohandler.cc tcpiohandler.hh threadname.hh threadname.cc \ + uuid-utils.hh uuid-utils.cc views.hh xpf.cc xpf.hh \ + ext/luawrapper/include/LuaContext.hpp ext/json11/json11.cpp \ + ext/json11/json11.hpp ext/incbin/incbin.h ext/libbpf/libbpf.h \ + cdb.cc cdb.hh ipcipher.cc ipcipher.hh \ + ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh \ + kqueuemplexer.cc epollmplexer.cc devpollmplexer.cc \ + portsmplexer.cc +am__dirstamp = $(am__leading_dot)dirstamp +@HAVE_CDB_TRUE@am__objects_1 = cdb.$(OBJEXT) +@HAVE_LIBCRYPTO_TRUE@am__objects_2 = ipcipher.$(OBJEXT) +@HAVE_LMDB_TRUE@am__objects_3 = ext/lmdb-safe/lmdb-safe.$(OBJEXT) +@HAVE_FREEBSD_TRUE@am__objects_4 = kqueuemplexer.$(OBJEXT) +@HAVE_LINUX_TRUE@am__objects_5 = epollmplexer.$(OBJEXT) +@HAVE_SOLARIS_TRUE@am__objects_6 = devpollmplexer.$(OBJEXT) \ +@HAVE_SOLARIS_TRUE@ portsmplexer.$(OBJEXT) +am_dnsdist_OBJECTS = bpf-filter.$(OBJEXT) capabilities.$(OBJEXT) \ + dns.$(OBJEXT) dnscrypt.$(OBJEXT) dnsdist.$(OBJEXT) \ + dnsdist-backend.$(OBJEXT) dnsdist-dynbpf.$(OBJEXT) \ + dnsdist-cache.$(OBJEXT) dnsdist-carbon.$(OBJEXT) \ + dnsdist-console.$(OBJEXT) dnsdist-dnscrypt.$(OBJEXT) \ + dnsdist-dynblocks.$(OBJEXT) dnsdist-ecs.$(OBJEXT) \ + dnsdist-healthchecks.$(OBJEXT) dnsdist-idstate.$(OBJEXT) \ + dnsdist-kvs.$(OBJEXT) dnsdist-lbpolicies.$(OBJEXT) \ + dnsdist-lua.$(OBJEXT) dnsdist-lua-actions.$(OBJEXT) \ + dnsdist-lua-bindings.$(OBJEXT) \ + dnsdist-lua-bindings-dnscrypt.$(OBJEXT) \ + dnsdist-lua-bindings-dnsquestion.$(OBJEXT) \ + dnsdist-lua-bindings-kvs.$(OBJEXT) \ + dnsdist-lua-bindings-packetcache.$(OBJEXT) \ + dnsdist-lua-bindings-protobuf.$(OBJEXT) \ + dnsdist-lua-ffi.$(OBJEXT) dnsdist-lua-inspection.$(OBJEXT) \ + dnsdist-lua-inspection-ffi.$(OBJEXT) \ + dnsdist-lua-rules.$(OBJEXT) dnsdist-lua-vars.$(OBJEXT) \ + dnsdist-protobuf.$(OBJEXT) dnsdist-proxy-protocol.$(OBJEXT) \ + dnsdist-rings.$(OBJEXT) dnsdist-secpoll.$(OBJEXT) \ + dnsdist-snmp.$(OBJEXT) dnsdist-systemd.$(OBJEXT) \ + dnsdist-tcp.$(OBJEXT) dnsdist-web.$(OBJEXT) \ + dnsdist-xpf.$(OBJEXT) dnslabeltext.$(OBJEXT) dnsname.$(OBJEXT) \ + dnsparser.$(OBJEXT) dnswriter.$(OBJEXT) doh.$(OBJEXT) \ + ednsoptions.$(OBJEXT) ednscookies.$(OBJEXT) \ + ednssubnet.$(OBJEXT) fstrm_logger.$(OBJEXT) gettime.$(OBJEXT) \ + iputils.$(OBJEXT) libssl.$(OBJEXT) misc.$(OBJEXT) \ + protobuf.$(OBJEXT) proxy-protocol.$(OBJEXT) dnstap.$(OBJEXT) \ + qtype.$(OBJEXT) remote_logger.$(OBJEXT) pollmplexer.$(OBJEXT) \ + snmp-agent.$(OBJEXT) sodcrypto.$(OBJEXT) statnode.$(OBJEXT) \ + tcpiohandler.$(OBJEXT) threadname.$(OBJEXT) \ + uuid-utils.$(OBJEXT) xpf.$(OBJEXT) ext/json11/json11.$(OBJEXT) \ + $(am__objects_1) $(am__objects_2) $(am__objects_3) \ + $(am__objects_4) $(am__objects_5) $(am__objects_6) +@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@nodist_dnsdist_OBJECTS = \ +@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ dnsmessage.pb.$(OBJEXT) \ +@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ dnstap.pb.$(OBJEXT) +dnsdist_OBJECTS = $(am_dnsdist_OBJECTS) $(nodist_dnsdist_OBJECTS) +am__DEPENDENCIES_1 = +@HAVE_CDB_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) +@HAVE_RE2_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) +@HAVE_LIBSSL_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1) +@HAVE_LIBCRYPTO_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1) \ +@HAVE_LIBCRYPTO_TRUE@ $(am__DEPENDENCIES_1) +@HAVE_LMDB_TRUE@am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1) +@HAVE_DNS_OVER_HTTPS_TRUE@@HAVE_LIBH2OEVLOOP_TRUE@am__DEPENDENCIES_7 = $(am__DEPENDENCIES_1) +@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__DEPENDENCIES_8 = \ +@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ $(am__DEPENDENCIES_1) +dnsdist_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4) \ + $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_6) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_7) \ + $(am__DEPENDENCIES_8) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +dnsdist_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(dnsdist_LDFLAGS) $(LDFLAGS) -o $@ +am__testrunner_SOURCES_DIST = base64.hh dns.hh test-base64_cc.cc \ + test-delaypipe_hh.cc test-dnscrypt_cc.cc test-dnsdist_cc.cc \ + test-dnsdistdynblocks_hh.cc test-dnsdistkvs_cc.cc \ + test-dnsdistlbpolicies_cc.cc test-dnsdistpacketcache_cc.cc \ + test-dnsdistrings_cc.cc test-dnsdistrules_cc.cc \ + test-dnsparser_cc.cc test-iputils_hh.cc test-mplexer.cc \ + test-proxy_protocol_cc.cc cachecleaner.hh circular_buffer.hh \ + dnsdist.hh dnsdist-backend.cc dnsdist-cache.cc \ + dnsdist-cache.hh dnsdist-dynblocks.cc dnsdist-dynblocks.hh \ + dnsdist-ecs.cc dnsdist-ecs.hh dnsdist-kvs.cc dnsdist-kvs.hh \ + dnsdist-lbpolicies.cc dnsdist-lbpolicies.hh dnsdist-lua-ffi.cc \ + dnsdist-lua-ffi.hh dnsdist-lua-ffi-interface.h \ + dnsdist-lua-ffi-interface.inc dnsdist-rings.hh dnsdist-xpf.cc \ + dnsdist-xpf.hh dnscrypt.cc dnscrypt.hh dnslabeltext.cc \ + dnsname.cc dnsname.hh dnsparser.hh dnsparser.cc dnswriter.cc \ + dnswriter.hh dolog.hh ednsoptions.cc ednsoptions.hh \ + ednscookies.cc ednscookies.hh ednssubnet.cc ednssubnet.hh \ + gettime.cc gettime.hh iputils.cc iputils.hh misc.cc misc.hh \ + namespaces.hh pdnsexception.hh pollmplexer.cc \ + proxy-protocol.cc proxy-protocol.hh qtype.cc qtype.hh \ + sholder.hh sodcrypto.cc sstuff.hh statnode.cc statnode.hh \ + threadname.hh threadname.cc testrunner.cc uuid-utils.hh \ + uuid-utils.cc xpf.cc xpf.hh \ + ext/luawrapper/include/LuaContext.hpp cdb.cc cdb.hh \ + ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh \ + kqueuemplexer.cc epollmplexer.cc devpollmplexer.cc \ + portsmplexer.cc +am_testrunner_OBJECTS = test-base64_cc.$(OBJEXT) \ + test-delaypipe_hh.$(OBJEXT) test-dnscrypt_cc.$(OBJEXT) \ + test-dnsdist_cc.$(OBJEXT) test-dnsdistdynblocks_hh.$(OBJEXT) \ + test-dnsdistkvs_cc.$(OBJEXT) \ + test-dnsdistlbpolicies_cc.$(OBJEXT) \ + test-dnsdistpacketcache_cc.$(OBJEXT) \ + test-dnsdistrings_cc.$(OBJEXT) test-dnsdistrules_cc.$(OBJEXT) \ + test-dnsparser_cc.$(OBJEXT) test-iputils_hh.$(OBJEXT) \ + test-mplexer.$(OBJEXT) test-proxy_protocol_cc.$(OBJEXT) \ + dnsdist-backend.$(OBJEXT) dnsdist-cache.$(OBJEXT) \ + dnsdist-dynblocks.$(OBJEXT) dnsdist-ecs.$(OBJEXT) \ + dnsdist-kvs.$(OBJEXT) dnsdist-lbpolicies.$(OBJEXT) \ + dnsdist-lua-ffi.$(OBJEXT) dnsdist-xpf.$(OBJEXT) \ + dnscrypt.$(OBJEXT) dnslabeltext.$(OBJEXT) dnsname.$(OBJEXT) \ + dnsparser.$(OBJEXT) dnswriter.$(OBJEXT) ednsoptions.$(OBJEXT) \ + ednscookies.$(OBJEXT) ednssubnet.$(OBJEXT) gettime.$(OBJEXT) \ + iputils.$(OBJEXT) misc.$(OBJEXT) pollmplexer.$(OBJEXT) \ + proxy-protocol.$(OBJEXT) qtype.$(OBJEXT) sodcrypto.$(OBJEXT) \ + statnode.$(OBJEXT) threadname.$(OBJEXT) testrunner.$(OBJEXT) \ + uuid-utils.$(OBJEXT) xpf.$(OBJEXT) $(am__objects_1) \ + $(am__objects_3) $(am__objects_4) $(am__objects_5) \ + $(am__objects_6) +testrunner_OBJECTS = $(am_testrunner_OBJECTS) +testrunner_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_6) +testrunner_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(testrunner_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/bpf-filter.Po \ + ./$(DEPDIR)/capabilities.Po ./$(DEPDIR)/cdb.Po \ + ./$(DEPDIR)/devpollmplexer.Po ./$(DEPDIR)/dns.Po \ + ./$(DEPDIR)/dnscrypt.Po ./$(DEPDIR)/dnsdist-backend.Po \ + ./$(DEPDIR)/dnsdist-cache.Po ./$(DEPDIR)/dnsdist-carbon.Po \ + ./$(DEPDIR)/dnsdist-console.Po ./$(DEPDIR)/dnsdist-dnscrypt.Po \ + ./$(DEPDIR)/dnsdist-dynblocks.Po ./$(DEPDIR)/dnsdist-dynbpf.Po \ + ./$(DEPDIR)/dnsdist-ecs.Po ./$(DEPDIR)/dnsdist-healthchecks.Po \ + ./$(DEPDIR)/dnsdist-idstate.Po ./$(DEPDIR)/dnsdist-kvs.Po \ + ./$(DEPDIR)/dnsdist-lbpolicies.Po \ + ./$(DEPDIR)/dnsdist-lua-actions.Po \ + ./$(DEPDIR)/dnsdist-lua-bindings-dnscrypt.Po \ + ./$(DEPDIR)/dnsdist-lua-bindings-dnsquestion.Po \ + ./$(DEPDIR)/dnsdist-lua-bindings-kvs.Po \ + ./$(DEPDIR)/dnsdist-lua-bindings-packetcache.Po \ + ./$(DEPDIR)/dnsdist-lua-bindings-protobuf.Po \ + ./$(DEPDIR)/dnsdist-lua-bindings.Po \ + ./$(DEPDIR)/dnsdist-lua-ffi.Po \ + ./$(DEPDIR)/dnsdist-lua-inspection-ffi.Po \ + ./$(DEPDIR)/dnsdist-lua-inspection.Po \ + ./$(DEPDIR)/dnsdist-lua-rules.Po \ + ./$(DEPDIR)/dnsdist-lua-vars.Po ./$(DEPDIR)/dnsdist-lua.Po \ + ./$(DEPDIR)/dnsdist-protobuf.Po \ + ./$(DEPDIR)/dnsdist-proxy-protocol.Po \ + ./$(DEPDIR)/dnsdist-rings.Po ./$(DEPDIR)/dnsdist-secpoll.Po \ + ./$(DEPDIR)/dnsdist-snmp.Po ./$(DEPDIR)/dnsdist-systemd.Po \ + ./$(DEPDIR)/dnsdist-tcp.Po ./$(DEPDIR)/dnsdist-web.Po \ + ./$(DEPDIR)/dnsdist-xpf.Po ./$(DEPDIR)/dnsdist.Po \ + ./$(DEPDIR)/dnslabeltext.Po ./$(DEPDIR)/dnsmessage.pb.Po \ + ./$(DEPDIR)/dnsname.Po ./$(DEPDIR)/dnsparser.Po \ + ./$(DEPDIR)/dnstap.Po ./$(DEPDIR)/dnstap.pb.Po \ + ./$(DEPDIR)/dnswriter.Po ./$(DEPDIR)/doh.Po \ + ./$(DEPDIR)/ednscookies.Po ./$(DEPDIR)/ednsoptions.Po \ + ./$(DEPDIR)/ednssubnet.Po ./$(DEPDIR)/epollmplexer.Po \ + ./$(DEPDIR)/fstrm_logger.Po ./$(DEPDIR)/gettime.Po \ + ./$(DEPDIR)/ipcipher.Po ./$(DEPDIR)/iputils.Po \ + ./$(DEPDIR)/kqueuemplexer.Po ./$(DEPDIR)/libssl.Po \ + ./$(DEPDIR)/misc.Po ./$(DEPDIR)/pollmplexer.Po \ + ./$(DEPDIR)/portsmplexer.Po ./$(DEPDIR)/protobuf.Po \ + ./$(DEPDIR)/proxy-protocol.Po ./$(DEPDIR)/qtype.Po \ + ./$(DEPDIR)/remote_logger.Po ./$(DEPDIR)/snmp-agent.Po \ + ./$(DEPDIR)/sodcrypto.Po ./$(DEPDIR)/statnode.Po \ + ./$(DEPDIR)/tcpiohandler.Po ./$(DEPDIR)/test-base64_cc.Po \ + ./$(DEPDIR)/test-delaypipe_hh.Po \ + ./$(DEPDIR)/test-dnscrypt_cc.Po ./$(DEPDIR)/test-dnsdist_cc.Po \ + ./$(DEPDIR)/test-dnsdistdynblocks_hh.Po \ + ./$(DEPDIR)/test-dnsdistkvs_cc.Po \ + ./$(DEPDIR)/test-dnsdistlbpolicies_cc.Po \ + ./$(DEPDIR)/test-dnsdistpacketcache_cc.Po \ + ./$(DEPDIR)/test-dnsdistrings_cc.Po \ + ./$(DEPDIR)/test-dnsdistrules_cc.Po \ + ./$(DEPDIR)/test-dnsparser_cc.Po \ + ./$(DEPDIR)/test-iputils_hh.Po ./$(DEPDIR)/test-mplexer.Po \ + ./$(DEPDIR)/test-proxy_protocol_cc.Po \ + ./$(DEPDIR)/testrunner.Po ./$(DEPDIR)/threadname.Po \ + ./$(DEPDIR)/uuid-utils.Po ./$(DEPDIR)/xpf.Po \ + ext/json11/$(DEPDIR)/json11.Po \ + ext/lmdb-safe/$(DEPDIR)/lmdb-safe.Po +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(dnsdist_SOURCES) $(nodist_dnsdist_SOURCES) \ + $(testrunner_SOURCES) +DIST_SOURCES = $(am__dnsdist_SOURCES_DIST) \ + $(am__testrunner_SOURCES_DIST) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +NROFF = nroff +MANS = $(dist_man_MANS) +DATA = $(systemdsystemunit_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope check recheck distdir distdir-am dist dist-all \ + distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red='[0;31m'; \ + grn='[0;32m'; \ + lgn='[1;32m'; \ + blu='[1;34m'; \ + mgn='[0;35m'; \ + brg='[1m'; \ + std='[m'; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \ + $(srcdir)/config.h.in $(srcdir)/lua_hpp.mk COPYING README \ + compile config.guess config.sub depcomp install-sh ltmain.sh \ + missing test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +GZIP_ENV = --best +DIST_ARCHIVES = $(distdir).tar.bz2 +DIST_TARGETS = dist-bzip2 +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_CPPFLAGS = @AM_CPPFLAGS@ $(SYSTEMD_CFLAGS) $(LUA_CFLAGS) \ + $(LIBEDIT_CFLAGS) $(LIBSODIUM_CFLAGS) $(FSTRM_CFLAGS) \ + $(YAHTTP_CFLAGS) $(SANITIZER_FLAGS) $(NET_SNMP_CFLAGS) \ + $(LIBCAP_CFLAGS) -DSYSCONFDIR=\"${sysconfdir}\" \ + $(am__append_1) $(am__append_2) $(am__append_3) \ + $(am__append_4) $(am__append_5) $(am__append_6) \ + $(am__append_7) $(am__append_8) +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ +BOOST_LDPATH = @BOOST_LDPATH@ +BOOST_ROOT = @BOOST_ROOT@ +BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS = @BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS@ +BOOST_UNIT_TEST_FRAMEWORK_LDPATH = @BOOST_UNIT_TEST_FRAMEWORK_LDPATH@ +BOOST_UNIT_TEST_FRAMEWORK_LIBS = @BOOST_UNIT_TEST_FRAMEWORK_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CDB_CFLAGS = @CDB_CFLAGS@ +CDB_LIBS = @CDB_LIBS@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +DYNLINKFLAGS = @DYNLINKFLAGS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FSTRM_CFLAGS = @FSTRM_CFLAGS@ +FSTRM_LIBS = @FSTRM_LIBS@ +GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ +GNUTLS_LIBS = @GNUTLS_LIBS@ +GREP = @GREP@ +HAVE_CXX11 = @HAVE_CXX11@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IPCRYPT_CFLAGS = @IPCRYPT_CFLAGS@ +IPCRYPT_LIBS = @IPCRYPT_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP_CFLAGS = @LIBCAP_CFLAGS@ +LIBCAP_LIBS = @LIBCAP_LIBS@ +LIBCRYPTO_INCLUDES = @LIBCRYPTO_INCLUDES@ +LIBCRYPTO_LDFLAGS = @LIBCRYPTO_LDFLAGS@ +LIBCRYPTO_LIBS = @LIBCRYPTO_LIBS@ +LIBEDIT_CFLAGS = @LIBEDIT_CFLAGS@ +LIBEDIT_LIBS = @LIBEDIT_LIBS@ +LIBH2OEVLOOP_CFLAGS = @LIBH2OEVLOOP_CFLAGS@ +LIBH2OEVLOOP_LIBS = @LIBH2OEVLOOP_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSODIUM_CFLAGS = @LIBSODIUM_CFLAGS@ +LIBSODIUM_LIBS = @LIBSODIUM_LIBS@ +LIBSSL_CFLAGS = @LIBSSL_CFLAGS@ +LIBSSL_LIBS = @LIBSSL_LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LMDB_CFLAGS = @LMDB_CFLAGS@ +LMDB_LIBS = @LMDB_LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +LUA_CFLAGS = @LUA_CFLAGS@ +LUA_LIBS = @LUA_LIBS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NET_SNMP_CFLAGS = @NET_SNMP_CFLAGS@ +NET_SNMP_LIBS = @NET_SNMP_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGEVERSION = @PACKAGEVERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PIE_CFLAGS = @PIE_CFLAGS@ +PIE_LDFLAGS = @PIE_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROGRAM_LDFLAGS = @PROGRAM_LDFLAGS@ +PROTOBUF_CFLAGS = @PROTOBUF_CFLAGS@ +PROTOBUF_LIBS = @PROTOBUF_LIBS@ +PROTOC = @PROTOC@ +RAGEL = @RAGEL@ +RANLIB = @RANLIB@ +RE2_CFLAGS = @RE2_CFLAGS@ +RE2_LIBS = @RE2_LIBS@ +RELRO_LDFLAGS = @RELRO_LDFLAGS@ +RT_LIBS = @RT_LIBS@ +SANITIZER_FLAGS = @SANITIZER_FLAGS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SYSTEMCTL = @SYSTEMCTL@ +SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@ +SYSTEMD_DIR = @SYSTEMD_DIR@ +SYSTEMD_LIBS = @SYSTEMD_LIBS@ +SYSTEMD_MODULES_LOAD = @SYSTEMD_MODULES_LOAD@ +THREADFLAGS = @THREADFLAGS@ +VERSION = @VERSION@ +VIRTUALENV = @VIRTUALENV@ +WARN_CFLAGS = @WARN_CFLAGS@ +YAHTTP_CFLAGS = @YAHTTP_CFLAGS@ +YAHTTP_LIBS = @YAHTTP_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +service_group = @service_group@ +service_user = @service_user@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemd = @systemd@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ACLOCAL_AMFLAGS = -I m4 +SUBDIRS = ext/ipcrypt \ + ext/yahttp + +CLEANFILES = dnsmessage.pb.cc dnsmessage.pb.h htmlfiles.h.tmp \ + htmlfiles.h dnsdist-lua-ffi-interface.inc dnstap.pb.cc \ + dnstap.pb.h lua.hpp $(am__append_32) +BUILT_SOURCES = htmlfiles.h dnsdist-lua-ffi-interface.inc \ + dnslabeltext.cc $(am__append_23) $(am__append_24) +SRC_JS_FILES := $(wildcard src_js/*.js) +MIN_JS_FILES := $(patsubst src_js/%.js,html/js/%.min.js,$(SRC_JS_FILES)) +EXTRA_DIST = COPYING \ + dnslabeltext.rl \ + dnsdistconf.lua \ + dnsmessage.proto \ + dnstap.proto \ + README.md \ + delaypipe.cc delaypipe.hh \ + html \ + contrib \ + ext/incbin/UNLICENSE \ + incfiles \ + src_js \ + dnsdist.service.in \ + lua_hpp.mk \ + bpf-filter.main.ebpf \ + bpf-filter.qname.ebpf \ + bpf-filter.ebpf.src \ + DNSDIST-MIB.txt \ + devpollmplexer.cc \ + epollmplexer.cc \ + kqueuemplexer.cc \ + portsmplexer.cc \ + cdb.cc cdb.hh \ + ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh \ + builder-support/gen-version + +@UNIT_TESTS_TRUE@TESTS_ENVIRONMENT = env BOOST_TEST_LOG_LEVEL=message SRCDIR='$(srcdir)' +dnsdist_SOURCES = ascii.hh base64.hh bpf-filter.cc bpf-filter.hh \ + cachecleaner.hh capabilities.cc capabilities.hh \ + circular_buffer.hh dns.cc dns.hh dnscrypt.cc dnscrypt.hh \ + dnsdist.cc dnsdist.hh dnsdist-backend.cc dnsdist-dynbpf.cc \ + dnsdist-dynbpf.hh dnsdist-cache.cc dnsdist-cache.hh \ + dnsdist-carbon.cc dnsdist-console.cc dnsdist-console.hh \ + dnsdist-dnscrypt.cc dnsdist-dynblocks.cc dnsdist-dynblocks.hh \ + dnsdist-ecs.cc dnsdist-ecs.hh dnsdist-healthchecks.cc \ + dnsdist-healthchecks.hh dnsdist-idstate.cc dnsdist-kvs.hh \ + dnsdist-kvs.cc dnsdist-lbpolicies.cc dnsdist-lbpolicies.hh \ + dnsdist-lua.hh dnsdist-lua.cc dnsdist-lua-actions.cc \ + dnsdist-lua-bindings.cc dnsdist-lua-bindings-dnscrypt.cc \ + dnsdist-lua-bindings-dnsquestion.cc \ + dnsdist-lua-bindings-kvs.cc \ + dnsdist-lua-bindings-packetcache.cc \ + dnsdist-lua-bindings-protobuf.cc dnsdist-lua-ffi.cc \ + dnsdist-lua-ffi.hh dnsdist-lua-ffi-interface.h \ + dnsdist-lua-ffi-interface.inc dnsdist-lua-inspection.cc \ + dnsdist-lua-inspection-ffi.cc dnsdist-lua-inspection-ffi.hh \ + dnsdist-lua-rules.cc dnsdist-lua-vars.cc dnsdist-prometheus.hh \ + dnsdist-protobuf.cc dnsdist-protobuf.hh \ + dnsdist-proxy-protocol.cc dnsdist-proxy-protocol.hh \ + dnsdist-rings.cc dnsdist-rings.hh dnsdist-rules.hh \ + dnsdist-secpoll.cc dnsdist-secpoll.hh dnsdist-snmp.cc \ + dnsdist-snmp.hh dnsdist-systemd.cc dnsdist-systemd.hh \ + dnsdist-tcp.cc dnsdist-web.cc dnsdist-web.hh dnsdist-xpf.cc \ + dnsdist-xpf.hh dnslabeltext.cc dnsname.cc dnsname.hh \ + dnsparser.hh dnsparser.cc dnswriter.cc dnswriter.hh doh.hh \ + doh.cc dolog.hh ednsoptions.cc ednsoptions.hh ednscookies.cc \ + ednscookies.hh ednssubnet.cc ednssubnet.hh fstrm_logger.cc \ + fstrm_logger.hh gettime.cc gettime.hh htmlfiles.h iputils.cc \ + iputils.hh libssl.cc libssl.hh lock.hh misc.cc misc.hh \ + mplexer.hh namespaces.hh pdnsexception.hh protobuf.cc \ + protobuf.hh proxy-protocol.cc proxy-protocol.hh dnstap.cc \ + dnstap.hh qtype.cc qtype.hh remote_logger.cc remote_logger.hh \ + pollmplexer.cc sholder.hh snmp-agent.cc snmp-agent.hh \ + sodcrypto.cc sodcrypto.hh sstuff.hh statnode.cc statnode.hh \ + tcpiohandler.cc tcpiohandler.hh threadname.hh threadname.cc \ + uuid-utils.hh uuid-utils.cc views.hh xpf.cc xpf.hh \ + ext/luawrapper/include/LuaContext.hpp ext/json11/json11.cpp \ + ext/json11/json11.hpp ext/incbin/incbin.h ext/libbpf/libbpf.h \ + $(am__append_11) $(am__append_16) $(am__append_19) \ + $(am__append_26) $(am__append_28) $(am__append_30) +testrunner_SOURCES = base64.hh dns.hh test-base64_cc.cc \ + test-delaypipe_hh.cc test-dnscrypt_cc.cc test-dnsdist_cc.cc \ + test-dnsdistdynblocks_hh.cc test-dnsdistkvs_cc.cc \ + test-dnsdistlbpolicies_cc.cc test-dnsdistpacketcache_cc.cc \ + test-dnsdistrings_cc.cc test-dnsdistrules_cc.cc \ + test-dnsparser_cc.cc test-iputils_hh.cc test-mplexer.cc \ + test-proxy_protocol_cc.cc cachecleaner.hh circular_buffer.hh \ + dnsdist.hh dnsdist-backend.cc dnsdist-cache.cc \ + dnsdist-cache.hh dnsdist-dynblocks.cc dnsdist-dynblocks.hh \ + dnsdist-ecs.cc dnsdist-ecs.hh dnsdist-kvs.cc dnsdist-kvs.hh \ + dnsdist-lbpolicies.cc dnsdist-lbpolicies.hh dnsdist-lua-ffi.cc \ + dnsdist-lua-ffi.hh dnsdist-lua-ffi-interface.h \ + dnsdist-lua-ffi-interface.inc dnsdist-rings.hh dnsdist-xpf.cc \ + dnsdist-xpf.hh dnscrypt.cc dnscrypt.hh dnslabeltext.cc \ + dnsname.cc dnsname.hh dnsparser.hh dnsparser.cc dnswriter.cc \ + dnswriter.hh dolog.hh ednsoptions.cc ednsoptions.hh \ + ednscookies.cc ednscookies.hh ednssubnet.cc ednssubnet.hh \ + gettime.cc gettime.hh iputils.cc iputils.hh misc.cc misc.hh \ + namespaces.hh pdnsexception.hh pollmplexer.cc \ + proxy-protocol.cc proxy-protocol.hh qtype.cc qtype.hh \ + sholder.hh sodcrypto.cc sstuff.hh statnode.cc statnode.hh \ + threadname.hh threadname.cc testrunner.cc uuid-utils.hh \ + uuid-utils.cc xpf.cc xpf.hh \ + ext/luawrapper/include/LuaContext.hpp $(am__append_12) \ + $(am__append_20) $(am__append_27) $(am__append_29) \ + $(am__append_31) +dnsdist_LDFLAGS = \ + $(AM_LDFLAGS) \ + $(PROGRAM_LDFLAGS) \ + -pthread + +dnsdist_LDADD = $(LUA_LIBS) $(LIBEDIT_LIBS) $(RT_LIBS) $(YAHTTP_LIBS) \ + $(LIBSODIUM_LIBS) $(FSTRM_LIBS) $(SANITIZER_FLAGS) \ + $(SYSTEMD_LIBS) $(NET_SNMP_LIBS) $(LIBCAP_LIBS) \ + $(IPCRYPT_LIBS) $(am__append_9) $(am__append_13) \ + $(am__append_14) $(am__append_15) $(am__append_17) \ + $(am__append_21) $(am__append_22) $(am__append_25) +testrunner_LDFLAGS = \ + $(AM_LDFLAGS) \ + $(PROGRAM_LDFLAGS) \ + $(BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS) \ + -pthread + +testrunner_LDADD = $(BOOST_UNIT_TEST_FRAMEWORK_LIBS) $(FSTRM_LIBS) \ + $(LIBSODIUM_LIBS) $(LUA_LIBS) $(RT_LIBS) $(SANITIZER_FLAGS) \ + $(LIBCAP_LIBS) $(am__append_10) $(am__append_18) +@HAVE_LUA_HPP_FALSE@nodist_dnsdist_SOURCES = lua.hpp +@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@nodist_dnsdist_SOURCES = dnsmessage.pb.cc dnsmessage.pb.h dnstap.pb.cc dnstap.pb.h +MANPAGES = dnsdist.1 +dist_man_MANS = $(MANPAGES) +@HAVE_SYSTEMD_TRUE@systemdsystemunitdir = $(SYSTEMD_DIR) +@HAVE_SYSTEMD_TRUE@systemdsystemunit_DATA = \ +@HAVE_SYSTEMD_TRUE@ dnsdist.service \ +@HAVE_SYSTEMD_TRUE@ dnsdist@.service + +all: $(BUILT_SOURCES) config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .cc .cpp .lo .log .o .obj .test .test$(EXEEXT) .trs +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/lua_hpp.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; +$(srcdir)/lua_hpp.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +ext/json11/$(am__dirstamp): + @$(MKDIR_P) ext/json11 + @: > ext/json11/$(am__dirstamp) +ext/json11/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) ext/json11/$(DEPDIR) + @: > ext/json11/$(DEPDIR)/$(am__dirstamp) +ext/json11/json11.$(OBJEXT): ext/json11/$(am__dirstamp) \ + ext/json11/$(DEPDIR)/$(am__dirstamp) +ext/lmdb-safe/$(am__dirstamp): + @$(MKDIR_P) ext/lmdb-safe + @: > ext/lmdb-safe/$(am__dirstamp) +ext/lmdb-safe/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) ext/lmdb-safe/$(DEPDIR) + @: > ext/lmdb-safe/$(DEPDIR)/$(am__dirstamp) +ext/lmdb-safe/lmdb-safe.$(OBJEXT): ext/lmdb-safe/$(am__dirstamp) \ + ext/lmdb-safe/$(DEPDIR)/$(am__dirstamp) + +dnsdist$(EXEEXT): $(dnsdist_OBJECTS) $(dnsdist_DEPENDENCIES) $(EXTRA_dnsdist_DEPENDENCIES) + @rm -f dnsdist$(EXEEXT) + $(AM_V_CXXLD)$(dnsdist_LINK) $(dnsdist_OBJECTS) $(dnsdist_LDADD) $(LIBS) + +testrunner$(EXEEXT): $(testrunner_OBJECTS) $(testrunner_DEPENDENCIES) $(EXTRA_testrunner_DEPENDENCIES) + @rm -f testrunner$(EXEEXT) + $(AM_V_CXXLD)$(testrunner_LINK) $(testrunner_OBJECTS) $(testrunner_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f ext/json11/*.$(OBJEXT) + -rm -f ext/lmdb-safe/*.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-filter.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/capabilities.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdb.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/devpollmplexer.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dns.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnscrypt.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-backend.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-cache.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-carbon.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-console.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-dnscrypt.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-dynblocks.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-dynbpf.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-ecs.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-healthchecks.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-idstate.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-kvs.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-lbpolicies.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-lua-actions.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-lua-bindings-dnscrypt.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-lua-bindings-dnsquestion.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-lua-bindings-kvs.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-lua-bindings-packetcache.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-lua-bindings-protobuf.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-lua-bindings.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-lua-ffi.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-lua-inspection-ffi.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-lua-inspection.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-lua-rules.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-lua-vars.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-lua.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-protobuf.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-proxy-protocol.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-rings.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-secpoll.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-snmp.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-systemd.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-tcp.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-web.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist-xpf.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsdist.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnslabeltext.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsmessage.pb.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsname.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsparser.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnstap.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnstap.pb.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnswriter.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/doh.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ednscookies.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ednsoptions.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ednssubnet.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epollmplexer.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstrm_logger.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettime.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipcipher.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iputils.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kqueuemplexer.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libssl.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pollmplexer.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portsmplexer.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protobuf.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proxy-protocol.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qtype.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote_logger.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmp-agent.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sodcrypto.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statnode.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tcpiohandler.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-base64_cc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-delaypipe_hh.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dnscrypt_cc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dnsdist_cc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dnsdistdynblocks_hh.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dnsdistkvs_cc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dnsdistlbpolicies_cc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dnsdistpacketcache_cc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dnsdistrings_cc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dnsdistrules_cc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dnsparser_cc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-iputils_hh.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mplexer.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-proxy_protocol_cc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testrunner.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threadname.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uuid-utils.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpf.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ext/json11/$(DEPDIR)/json11.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ext/lmdb-safe/$(DEPDIR)/lmdb-safe.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.cc.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cc.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cc.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-man1: $(dist_man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(dist_man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +install-systemdsystemunitDATA: $(systemdsystemunit_DATA) + @$(NORMAL_INSTALL) + @list='$(systemdsystemunit_DATA)'; test -n "$(systemdsystemunitdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(systemdsystemunitdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(systemdsystemunitdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(systemdsystemunitdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(systemdsystemunitdir)" || exit $$?; \ + done + +uninstall-systemdsystemunitDATA: + @$(NORMAL_UNINSTALL) + @list='$(systemdsystemunit_DATA)'; test -n "$(systemdsystemunitdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(systemdsystemunitdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +testrunner.log: testrunner$(EXEEXT) + @p='testrunner$(EXEEXT)'; \ + b='testrunner'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +@UNIT_TESTS_TRUE@check-local: +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(PROGRAMS) $(MANS) $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(systemdsystemunitdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f ext/json11/$(DEPDIR)/$(am__dirstamp) + -rm -f ext/json11/$(am__dirstamp) + -rm -f ext/lmdb-safe/$(DEPDIR)/$(am__dirstamp) + -rm -f ext/lmdb-safe/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-generic clean-libtool \ + clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f ./$(DEPDIR)/bpf-filter.Po + -rm -f ./$(DEPDIR)/capabilities.Po + -rm -f ./$(DEPDIR)/cdb.Po + -rm -f ./$(DEPDIR)/devpollmplexer.Po + -rm -f ./$(DEPDIR)/dns.Po + -rm -f ./$(DEPDIR)/dnscrypt.Po + -rm -f ./$(DEPDIR)/dnsdist-backend.Po + -rm -f ./$(DEPDIR)/dnsdist-cache.Po + -rm -f ./$(DEPDIR)/dnsdist-carbon.Po + -rm -f ./$(DEPDIR)/dnsdist-console.Po + -rm -f ./$(DEPDIR)/dnsdist-dnscrypt.Po + -rm -f ./$(DEPDIR)/dnsdist-dynblocks.Po + -rm -f ./$(DEPDIR)/dnsdist-dynbpf.Po + -rm -f ./$(DEPDIR)/dnsdist-ecs.Po + -rm -f ./$(DEPDIR)/dnsdist-healthchecks.Po + -rm -f ./$(DEPDIR)/dnsdist-idstate.Po + -rm -f ./$(DEPDIR)/dnsdist-kvs.Po + -rm -f ./$(DEPDIR)/dnsdist-lbpolicies.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-actions.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-bindings-dnscrypt.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-bindings-dnsquestion.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-bindings-kvs.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-bindings-packetcache.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-bindings-protobuf.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-bindings.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-ffi.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-inspection-ffi.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-inspection.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-rules.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-vars.Po + -rm -f ./$(DEPDIR)/dnsdist-lua.Po + -rm -f ./$(DEPDIR)/dnsdist-protobuf.Po + -rm -f ./$(DEPDIR)/dnsdist-proxy-protocol.Po + -rm -f ./$(DEPDIR)/dnsdist-rings.Po + -rm -f ./$(DEPDIR)/dnsdist-secpoll.Po + -rm -f ./$(DEPDIR)/dnsdist-snmp.Po + -rm -f ./$(DEPDIR)/dnsdist-systemd.Po + -rm -f ./$(DEPDIR)/dnsdist-tcp.Po + -rm -f ./$(DEPDIR)/dnsdist-web.Po + -rm -f ./$(DEPDIR)/dnsdist-xpf.Po + -rm -f ./$(DEPDIR)/dnsdist.Po + -rm -f ./$(DEPDIR)/dnslabeltext.Po + -rm -f ./$(DEPDIR)/dnsmessage.pb.Po + -rm -f ./$(DEPDIR)/dnsname.Po + -rm -f ./$(DEPDIR)/dnsparser.Po + -rm -f ./$(DEPDIR)/dnstap.Po + -rm -f ./$(DEPDIR)/dnstap.pb.Po + -rm -f ./$(DEPDIR)/dnswriter.Po + -rm -f ./$(DEPDIR)/doh.Po + -rm -f ./$(DEPDIR)/ednscookies.Po + -rm -f ./$(DEPDIR)/ednsoptions.Po + -rm -f ./$(DEPDIR)/ednssubnet.Po + -rm -f ./$(DEPDIR)/epollmplexer.Po + -rm -f ./$(DEPDIR)/fstrm_logger.Po + -rm -f ./$(DEPDIR)/gettime.Po + -rm -f ./$(DEPDIR)/ipcipher.Po + -rm -f ./$(DEPDIR)/iputils.Po + -rm -f ./$(DEPDIR)/kqueuemplexer.Po + -rm -f ./$(DEPDIR)/libssl.Po + -rm -f ./$(DEPDIR)/misc.Po + -rm -f ./$(DEPDIR)/pollmplexer.Po + -rm -f ./$(DEPDIR)/portsmplexer.Po + -rm -f ./$(DEPDIR)/protobuf.Po + -rm -f ./$(DEPDIR)/proxy-protocol.Po + -rm -f ./$(DEPDIR)/qtype.Po + -rm -f ./$(DEPDIR)/remote_logger.Po + -rm -f ./$(DEPDIR)/snmp-agent.Po + -rm -f ./$(DEPDIR)/sodcrypto.Po + -rm -f ./$(DEPDIR)/statnode.Po + -rm -f ./$(DEPDIR)/tcpiohandler.Po + -rm -f ./$(DEPDIR)/test-base64_cc.Po + -rm -f ./$(DEPDIR)/test-delaypipe_hh.Po + -rm -f ./$(DEPDIR)/test-dnscrypt_cc.Po + -rm -f ./$(DEPDIR)/test-dnsdist_cc.Po + -rm -f ./$(DEPDIR)/test-dnsdistdynblocks_hh.Po + -rm -f ./$(DEPDIR)/test-dnsdistkvs_cc.Po + -rm -f ./$(DEPDIR)/test-dnsdistlbpolicies_cc.Po + -rm -f ./$(DEPDIR)/test-dnsdistpacketcache_cc.Po + -rm -f ./$(DEPDIR)/test-dnsdistrings_cc.Po + -rm -f ./$(DEPDIR)/test-dnsdistrules_cc.Po + -rm -f ./$(DEPDIR)/test-dnsparser_cc.Po + -rm -f ./$(DEPDIR)/test-iputils_hh.Po + -rm -f ./$(DEPDIR)/test-mplexer.Po + -rm -f ./$(DEPDIR)/test-proxy_protocol_cc.Po + -rm -f ./$(DEPDIR)/testrunner.Po + -rm -f ./$(DEPDIR)/threadname.Po + -rm -f ./$(DEPDIR)/uuid-utils.Po + -rm -f ./$(DEPDIR)/xpf.Po + -rm -f ext/json11/$(DEPDIR)/json11.Po + -rm -f ext/lmdb-safe/$(DEPDIR)/lmdb-safe.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-man install-systemdsystemunitDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f ./$(DEPDIR)/bpf-filter.Po + -rm -f ./$(DEPDIR)/capabilities.Po + -rm -f ./$(DEPDIR)/cdb.Po + -rm -f ./$(DEPDIR)/devpollmplexer.Po + -rm -f ./$(DEPDIR)/dns.Po + -rm -f ./$(DEPDIR)/dnscrypt.Po + -rm -f ./$(DEPDIR)/dnsdist-backend.Po + -rm -f ./$(DEPDIR)/dnsdist-cache.Po + -rm -f ./$(DEPDIR)/dnsdist-carbon.Po + -rm -f ./$(DEPDIR)/dnsdist-console.Po + -rm -f ./$(DEPDIR)/dnsdist-dnscrypt.Po + -rm -f ./$(DEPDIR)/dnsdist-dynblocks.Po + -rm -f ./$(DEPDIR)/dnsdist-dynbpf.Po + -rm -f ./$(DEPDIR)/dnsdist-ecs.Po + -rm -f ./$(DEPDIR)/dnsdist-healthchecks.Po + -rm -f ./$(DEPDIR)/dnsdist-idstate.Po + -rm -f ./$(DEPDIR)/dnsdist-kvs.Po + -rm -f ./$(DEPDIR)/dnsdist-lbpolicies.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-actions.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-bindings-dnscrypt.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-bindings-dnsquestion.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-bindings-kvs.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-bindings-packetcache.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-bindings-protobuf.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-bindings.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-ffi.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-inspection-ffi.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-inspection.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-rules.Po + -rm -f ./$(DEPDIR)/dnsdist-lua-vars.Po + -rm -f ./$(DEPDIR)/dnsdist-lua.Po + -rm -f ./$(DEPDIR)/dnsdist-protobuf.Po + -rm -f ./$(DEPDIR)/dnsdist-proxy-protocol.Po + -rm -f ./$(DEPDIR)/dnsdist-rings.Po + -rm -f ./$(DEPDIR)/dnsdist-secpoll.Po + -rm -f ./$(DEPDIR)/dnsdist-snmp.Po + -rm -f ./$(DEPDIR)/dnsdist-systemd.Po + -rm -f ./$(DEPDIR)/dnsdist-tcp.Po + -rm -f ./$(DEPDIR)/dnsdist-web.Po + -rm -f ./$(DEPDIR)/dnsdist-xpf.Po + -rm -f ./$(DEPDIR)/dnsdist.Po + -rm -f ./$(DEPDIR)/dnslabeltext.Po + -rm -f ./$(DEPDIR)/dnsmessage.pb.Po + -rm -f ./$(DEPDIR)/dnsname.Po + -rm -f ./$(DEPDIR)/dnsparser.Po + -rm -f ./$(DEPDIR)/dnstap.Po + -rm -f ./$(DEPDIR)/dnstap.pb.Po + -rm -f ./$(DEPDIR)/dnswriter.Po + -rm -f ./$(DEPDIR)/doh.Po + -rm -f ./$(DEPDIR)/ednscookies.Po + -rm -f ./$(DEPDIR)/ednsoptions.Po + -rm -f ./$(DEPDIR)/ednssubnet.Po + -rm -f ./$(DEPDIR)/epollmplexer.Po + -rm -f ./$(DEPDIR)/fstrm_logger.Po + -rm -f ./$(DEPDIR)/gettime.Po + -rm -f ./$(DEPDIR)/ipcipher.Po + -rm -f ./$(DEPDIR)/iputils.Po + -rm -f ./$(DEPDIR)/kqueuemplexer.Po + -rm -f ./$(DEPDIR)/libssl.Po + -rm -f ./$(DEPDIR)/misc.Po + -rm -f ./$(DEPDIR)/pollmplexer.Po + -rm -f ./$(DEPDIR)/portsmplexer.Po + -rm -f ./$(DEPDIR)/protobuf.Po + -rm -f ./$(DEPDIR)/proxy-protocol.Po + -rm -f ./$(DEPDIR)/qtype.Po + -rm -f ./$(DEPDIR)/remote_logger.Po + -rm -f ./$(DEPDIR)/snmp-agent.Po + -rm -f ./$(DEPDIR)/sodcrypto.Po + -rm -f ./$(DEPDIR)/statnode.Po + -rm -f ./$(DEPDIR)/tcpiohandler.Po + -rm -f ./$(DEPDIR)/test-base64_cc.Po + -rm -f ./$(DEPDIR)/test-delaypipe_hh.Po + -rm -f ./$(DEPDIR)/test-dnscrypt_cc.Po + -rm -f ./$(DEPDIR)/test-dnsdist_cc.Po + -rm -f ./$(DEPDIR)/test-dnsdistdynblocks_hh.Po + -rm -f ./$(DEPDIR)/test-dnsdistkvs_cc.Po + -rm -f ./$(DEPDIR)/test-dnsdistlbpolicies_cc.Po + -rm -f ./$(DEPDIR)/test-dnsdistpacketcache_cc.Po + -rm -f ./$(DEPDIR)/test-dnsdistrings_cc.Po + -rm -f ./$(DEPDIR)/test-dnsdistrules_cc.Po + -rm -f ./$(DEPDIR)/test-dnsparser_cc.Po + -rm -f ./$(DEPDIR)/test-iputils_hh.Po + -rm -f ./$(DEPDIR)/test-mplexer.Po + -rm -f ./$(DEPDIR)/test-proxy_protocol_cc.Po + -rm -f ./$(DEPDIR)/testrunner.Po + -rm -f ./$(DEPDIR)/threadname.Po + -rm -f ./$(DEPDIR)/uuid-utils.Po + -rm -f ./$(DEPDIR)/xpf.Po + -rm -f ext/json11/$(DEPDIR)/json11.Po + -rm -f ext/lmdb-safe/$(DEPDIR)/lmdb-safe.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-man \ + uninstall-systemdsystemunitDATA + +uninstall-man: uninstall-man1 + +.MAKE: $(am__recursive_targets) all check check-am install install-am \ + install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--depfiles am--refresh check check-TESTS check-am \ + check-local clean clean-binPROGRAMS clean-cscope clean-generic \ + clean-libtool clean-noinstPROGRAMS cscope cscopelist-am ctags \ + ctags-am dist dist-all dist-bzip2 dist-gzip dist-lzip \ + dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ + distclean-compile distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-man1 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + install-systemdsystemunitDATA installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-man uninstall-man1 \ + uninstall-systemdsystemunitDATA + +.PRECIOUS: Makefile + + +dnslabeltext.cc: dnslabeltext.rl + $(AM_V_GEN)$(RAGEL) $< -o dnslabeltext.cc + +htmlfiles.h: $(srcdir)/html/* + $(AM_V_GEN)$(srcdir)/incfiles $(srcdir) > $@.tmp + @mv $@.tmp $@ + +dnsdist-lua-ffi-interface.inc: dnsdist-lua-ffi-interface.h + echo 'R"FFIContent(' > $@ + cat $< >> $@ + echo ')FFIContent"' >> $@ + +html/js/%.min.js: src_js/%.js + uglifyjs $< > $@ + +min_js: $(MIN_JS_FILES) +@UNIT_TESTS_FALSE@check-local: +@UNIT_TESTS_FALSE@ @echo "Unit tests are not enabled" +@UNIT_TESTS_FALSE@ @echo "Run ./configure --enable-unit-tests" + +dnsdist-web.$(OBJEXT): htmlfiles.h + +@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@dnsmessage.pb.cc: dnsmessage.proto +@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $< + +@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@dnstap.pb.cc: dnstap.proto +@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $< + +@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@dnsdist.$(OBJEXT): dnsmessage.pb.cc dnstap.pb.cc + +@HAVE_MANPAGES_FALSE@@HAVE_VIRTUALENV_TRUE@$(MANPAGES): %: docs/manpages/%.rst .venv +@HAVE_MANPAGES_FALSE@@HAVE_VIRTUALENV_TRUE@ $(AM_V_GEN).venv/bin/python -msphinx -b man docs . $< + +@HAVE_VIRTUALENV_TRUE@.venv: docs/requirements.txt +@HAVE_VIRTUALENV_TRUE@ virtualenv .venv +@HAVE_VIRTUALENV_TRUE@ .venv/bin/pip install -U pip setuptools setuptools-git +@HAVE_VIRTUALENV_TRUE@ .venv/bin/pip install -r $< + +@HAVE_VIRTUALENV_TRUE@latex/dnsdist.pdf: docs/** .venv +@HAVE_VIRTUALENV_TRUE@ .venv/bin/python -msphinx -M latexpdf docs . + +@HAVE_VIRTUALENV_TRUE@dnsdist.pdf: latex/dnsdist.pdf +@HAVE_VIRTUALENV_TRUE@ mv $< $@ + +@HAVE_VIRTUALENV_TRUE@html-docs.tar.bz2: html-docs +@HAVE_VIRTUALENV_TRUE@ tar cjf $@ $< + +@HAVE_VIRTUALENV_TRUE@html-docs: docs/** .venv +@HAVE_VIRTUALENV_TRUE@ .venv/bin/python -msphinx -b html docs html-docs + +@HAVE_VIRTUALENV_TRUE@all-docs: html-docs html-docs.tar.bz2 dnsdist.pdf + +@HAVE_VIRTUALENV_TRUE@upload-docs: all-docs +@HAVE_VIRTUALENV_TRUE@ rsync -crv --delete --no-p --chmod=g=rwX --exclude '*~' ./html-docs/ web1.powerdns.com:/srv/www/dnsdist.org +@HAVE_VIRTUALENV_TRUE@ rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./html-docs.tar.bz2 web1.powerdns.com:/srv/www/dnsdist.org +@HAVE_VIRTUALENV_TRUE@ rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./dnsdist.pdf web1.powerdns.com:/srv/www/dnsdist.org + +@HAVE_VIRTUALENV_FALSE@$(MANPAGES): +@HAVE_VIRTUALENV_FALSE@ @echo "You need virtualenv to generate the manpages" +@HAVE_VIRTUALENV_FALSE@ exit 1 + +@HAVE_VIRTUALENV_FALSE@html-docs: %: docs/manpages/%.rst .venv +@HAVE_VIRTUALENV_FALSE@ @echo "You need virtualenv to generate the HTML documentation" +@HAVE_VIRTUALENV_FALSE@ exit 1 + +@HAVE_VIRTUALENV_FALSE@dnsdist.pdf: +@HAVE_VIRTUALENV_FALSE@ @echo "You need virtualenv to generate the pdf documentation" +@HAVE_VIRTUALENV_FALSE@ exit 1 + +@HAVE_SYSTEMD_TRUE@dnsdist.service: dnsdist.service.in +@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)sed -e 's![@]bindir[@]!$(bindir)!' -e 's![@]service_user[@]!$(service_user)!' -e 's![@]service_group[@]!$(service_group)!' < $< > $@ +@HAVE_SYSTEMD_LOCK_PERSONALITY_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^LockPersonality/' $@ +@HAVE_SYSTEMD_PRIVATE_DEVICES_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^PrivateDevices/' $@ +@HAVE_SYSTEMD_PRIVATE_TMP_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^PrivateTmp/' $@ +@HAVE_SYSTEMD_PROTECT_CONTROL_GROUPS_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^ProtectControlGroups/' $@ +@HAVE_SYSTEMD_PROTECT_HOME_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^ProtectHome/' $@ +@HAVE_SYSTEMD_PROTECT_KERNEL_MODULES_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelModules/' $@ +@HAVE_SYSTEMD_PROTECT_KERNEL_TUNABLES_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelTunables/' $@ +@HAVE_SYSTEMD_PROTECT_SYSTEM_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^ProtectSystem/' $@ +@HAVE_SYSTEMD_RESTRICT_ADDRESS_FAMILIES_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^RestrictAddressFamilies/' $@ +@HAVE_SYSTEMD_RESTRICT_NAMESPACES_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^RestrictNamespaces/' $@ +@HAVE_SYSTEMD_RESTRICT_REALTIME_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^RestrictRealtime/' $@ +@HAVE_SYSTEMD_SYSTEM_CALL_ARCHITECTURES_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallArchitectures/' $@ +@HAVE_SYSTEMD_SYSTEM_CALL_FILTER_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallFilter/' $@ + +@HAVE_SYSTEMD_TRUE@dnsdist@.service: dnsdist.service +@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)sed -e 's!/dnsdist !&--config $(sysconfdir)/dnsdist-%i.conf !' \ +@HAVE_SYSTEMD_TRUE@ -e 's!RuntimeDirectory=.*!&-%i!' \ +@HAVE_SYSTEMD_TRUE@ < $< >$@ +@HAVE_LUA_HPP_FALSE@lua.hpp: +@HAVE_LUA_HPP_FALSE@ $(AM_V_GEN)echo 'extern "C" {' > $@ +@HAVE_LUA_HPP_FALSE@ @echo '#include "lua.h"' >> $@ +@HAVE_LUA_HPP_FALSE@ @echo '#include "lualib.h"' >> $@ +@HAVE_LUA_HPP_FALSE@ @echo '#include "lauxlib.h"' >> $@ +@HAVE_LUA_HPP_FALSE@ @echo '}' >> $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: @@ -0,0 +1,29 @@ +# dnsdist +`dnsdist` is a highly DNS-, DoS- and abuse-aware loadbalancer. Its goal in +life is to route traffic to the best server, delivering top performance +to legitimate users while shunting or blocking abusive traffic. + +`dnsdist` is dynamic, in the sense that its configuration can be changed at +runtime, and that its statistics can be queried from a console-like +interface. + +All `dnsdist` features are documented at [dnsdist.org](https://dnsdist.org). + +## Compiling from git + +Make sure to `autoreconf -vi` before running `configure`. + +## macOS Notes + +Install dependencies from Homebrew: + +```sh +brew install autoconf automake boost libedit libsodium libtool lua pkg-config protobuf +``` + +Let configure know where to find libedit, and openssl or libressl: + +```sh +./configure 'PKG_CONFIG_PATH=/usr/local/opt/libedit/lib/pkgconfig:/usr/local/opt/libressl/lib/pkgconfig' +make +``` diff --git a/README.md b/README.md new file mode 100644 index 0000000..f8e67cb --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# dnsdist +`dnsdist` is a highly DNS-, DoS- and abuse-aware loadbalancer. Its goal in +life is to route traffic to the best server, delivering top performance +to legitimate users while shunting or blocking abusive traffic. + +`dnsdist` is dynamic, in the sense that its configuration can be changed at +runtime, and that its statistics can be queried from a console-like +interface. + +All `dnsdist` features are documented at [dnsdist.org](https://dnsdist.org). + +## Compiling from git + +Make sure to `autoreconf -vi` before running `configure`. + +## macOS Notes + +Install dependencies from Homebrew: + +```sh +brew install autoconf automake boost libedit libsodium libtool lua pkg-config protobuf +``` + +Let configure know where to find libedit, and openssl or libressl: + +```sh +./configure 'PKG_CONFIG_PATH=/usr/local/opt/libedit/lib/pkgconfig:/usr/local/opt/libressl/lib/pkgconfig' +make +``` diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..3e7e712 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,1561 @@ +# generated automatically by aclocal 1.16.1 -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 11 (pkg-config-0.29.1) + +dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>. +dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com> +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.1]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------ +dnl +dnl Prepare a "--with-" configure option using the lowercase +dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and +dnl PKG_CHECK_MODULES in a single macro. +AC_DEFUN([PKG_WITH_MODULES], +[ +m4_pushdef([with_arg], m4_tolower([$1])) + +m4_pushdef([description], + [m4_default([$5], [build with ]with_arg[ support])]) + +m4_pushdef([def_arg], [m4_default([$6], [auto])]) +m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) +m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) + +m4_case(def_arg, + [yes],[m4_pushdef([with_without], [--without-]with_arg)], + [m4_pushdef([with_without],[--with-]with_arg)]) + +AC_ARG_WITH(with_arg, + AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, + [AS_TR_SH([with_]with_arg)=def_arg]) + +AS_CASE([$AS_TR_SH([with_]with_arg)], + [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], + [auto],[PKG_CHECK_MODULES([$1],[$2], + [m4_n([def_action_if_found]) $3], + [m4_n([def_action_if_not_found]) $4])]) + +m4_popdef([with_arg]) +m4_popdef([description]) +m4_popdef([def_arg]) + +])dnl PKG_WITH_MODULES + +dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ----------------------------------------------- +dnl +dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES +dnl check._[VARIABLE-PREFIX] is exported as make variable. +AC_DEFUN([PKG_HAVE_WITH_MODULES], +[ +PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) + +AM_CONDITIONAL([HAVE_][$1], + [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) +])dnl PKG_HAVE_WITH_MODULES + +dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------------------ +dnl +dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after +dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make +dnl and preprocessor variable. +AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], +[ +PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) + +AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], + [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) +])dnl PKG_HAVE_DEFINE_WITH_MODULES + +# Copyright (C) 2002-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.16' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.16.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.16.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_COND_IF -*- Autoconf -*- + +# Copyright (C) 2008-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_COND_IF +# _AM_COND_ELSE +# _AM_COND_ENDIF +# -------------- +# These macros are only used for tracing. +m4_define([_AM_COND_IF]) +m4_define([_AM_COND_ELSE]) +m4_define([_AM_COND_ENDIF]) + +# AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) +# --------------------------------------- +# If the shell condition COND is true, execute IF-TRUE, otherwise execute +# IF-FALSE. Allow automake to learn about conditional instantiating macros +# (the AC_CONFIG_FOOS). +AC_DEFUN([AM_COND_IF], +[m4_ifndef([_AM_COND_VALUE_$1], + [m4_fatal([$0: no such condition "$1"])])dnl +_AM_COND_IF([$1])dnl +if test -z "$$1_TRUE"; then : + m4_n([$2])[]dnl +m4_ifval([$3], +[_AM_COND_ELSE([$1])dnl +else + $3 +])dnl +_AM_COND_ENDIF([$1])dnl +fi[]dnl +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking is enabled. +# This creates each '.Po' and '.Plo' makefile fragment that we'll need in +# order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> +# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542> + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: <https://www.gnu.org/software/coreutils/>. + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check whether make has an 'include' directive that can support all +# the idioms we need for our automatic dependency tracking code. +AC_DEFUN([AM_MAKE_INCLUDE], +[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +AC_SUBST([am__quote])]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar <conftest.tar]) + AM_RUN_LOG([cat conftest.dir/file]) + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/ac_pthread_set_name.m4]) +m4_include([m4/ax_arg_default_enable_disable.m4]) +m4_include([m4/ax_cxx_compile_stdcxx_11.m4]) +m4_include([m4/boost.m4]) +m4_include([m4/dnsdist_enable_dnscrypt.m4]) +m4_include([m4/dnsdist_enable_doh.m4]) +m4_include([m4/dnsdist_enable_tls.m4]) +m4_include([m4/dnsdist_with_gnutls.m4]) +m4_include([m4/dnsdist_with_libssl.m4]) +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) +m4_include([m4/pdns_check_cdb.m4]) +m4_include([m4/pdns_check_clock_gettime.m4]) +m4_include([m4/pdns_check_dnstap.m4]) +m4_include([m4/pdns_check_libcrypto.m4]) +m4_include([m4/pdns_check_libedit.m4]) +m4_include([m4/pdns_check_libh2o_evloop.m4]) +m4_include([m4/pdns_check_lmdb.m4]) +m4_include([m4/pdns_check_lua_hpp.m4]) +m4_include([m4/pdns_check_network_libs.m4]) +m4_include([m4/pdns_check_os.m4]) +m4_include([m4/pdns_check_pthread_np.m4]) +m4_include([m4/pdns_check_ragel.m4]) +m4_include([m4/pdns_check_secure_memset.m4]) +m4_include([m4/pdns_check_virtualenv.m4]) +m4_include([m4/pdns_d_fortify_source.m4]) +m4_include([m4/pdns_enable_sanitizers.m4]) +m4_include([m4/pdns_enable_unit_tests.m4]) +m4_include([m4/pdns_param_ssp_buffer_size.m4]) +m4_include([m4/pdns_pie.m4]) +m4_include([m4/pdns_relro.m4]) +m4_include([m4/pdns_stack_protector.m4]) +m4_include([m4/pdns_with_ebpf.m4]) +m4_include([m4/pdns_with_libcap.m4]) +m4_include([m4/pdns_with_libsodium.m4]) +m4_include([m4/pdns_with_lua.m4]) +m4_include([m4/pdns_with_net_snmp.m4]) +m4_include([m4/pdns_with_protobuf.m4]) +m4_include([m4/pdns_with_re2.m4]) +m4_include([m4/pdns_with_service_user.m4]) +m4_include([m4/systemd.m4]) +m4_include([m4/warnings.m4]) diff --git a/ascii.hh b/ascii.hh new file mode 100644 index 0000000..09f42de --- /dev/null +++ b/ascii.hh @@ -0,0 +1,41 @@ +/* + * This file is part of PowerDNS or dnsdist. + * Copyright -- PowerDNS.COM B.V. and its contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * In addition, for the avoidance of any doubt, permission is granted to + * link this program with OpenSSL and to (re)distribute the binaries + * produced as the result of such linking. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#pragma once + +inline bool dns_isspace(char c) +{ + return c==' ' || c=='\t' || c=='\r' || c=='\n'; +} + +inline unsigned char dns_toupper(unsigned char c) +{ + if(c>='a' && c<='z') + c+='A'-'a'; + return c; +} + +inline unsigned char dns_tolower(unsigned char c) +{ + if(c>='A' && c<='Z') + c+='a'-'A'; + return c; +} diff --git a/base64.hh b/base64.hh new file mode 100644 index 0000000..f7b39ec --- /dev/null +++ b/base64.hh @@ -0,0 +1,26 @@ +/* + * This file is part of PowerDNS or dnsdist. + * Copyright -- PowerDNS.COM B.V. and its contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * In addition, for the avoidance of any doubt, permission is granted to + * link this program with OpenSSL and to (re)distribute the binaries + * produced as the result of such linking. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#pragma once +#include <string> + +int B64Decode(const std::string& src, std::string& dst); +std::string Base64Encode (const std::string& src); diff --git a/bpf-filter.cc b/bpf-filter.cc new file mode 100644 index 0000000..56418c2 --- /dev/null +++ b/bpf-filter.cc @@ -0,0 +1,425 @@ +/* + * This file is part of PowerDNS or dnsdist. + * Copyright -- PowerDNS.COM B.V. and its contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * In addition, for the avoidance of any doubt, permission is granted to + * link this program with OpenSSL and to (re)distribute the binaries + * produced as the result of such linking. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#include "bpf-filter.hh" + +#ifdef HAVE_EBPF + +#include <sys/syscall.h> +#include <linux/bpf.h> + +#include "ext/libbpf/libbpf.h" + +#include "misc.hh" + +static __u64 ptr_to_u64(void *ptr) +{ + return (__u64) (unsigned long) ptr; +} + +int bpf_create_map(enum bpf_map_type map_type, int key_size, int value_size, + int max_entries) +{ + union bpf_attr attr; + memset(&attr, 0, sizeof(attr)); + attr.map_type = map_type; + attr.key_size = key_size; + attr.value_size = value_size; + attr.max_entries = max_entries; + return syscall(SYS_bpf, BPF_MAP_CREATE, &attr, sizeof(attr)); +} + +int bpf_update_elem(int fd, void *key, void *value, unsigned long long flags) +{ + union bpf_attr attr; + memset(&attr, 0, sizeof(attr)); + attr.map_fd = fd; + attr.key = ptr_to_u64(key); + attr.value = ptr_to_u64(value); + attr.flags = flags; + return syscall(SYS_bpf, BPF_MAP_UPDATE_ELEM, &attr, sizeof(attr)); +} + +int bpf_lookup_elem(int fd, void *key, void *value) +{ + union bpf_attr attr; + memset(&attr, 0, sizeof(attr)); + attr.map_fd = fd; + attr.key = ptr_to_u64(key); + attr.value = ptr_to_u64(value); + return syscall(SYS_bpf, BPF_MAP_LOOKUP_ELEM, &attr, sizeof(attr)); +} + +int bpf_delete_elem(int fd, void *key) +{ + union bpf_attr attr; + memset(&attr, 0, sizeof(attr)); + attr.map_fd = fd; + attr.key = ptr_to_u64(key); + return syscall(SYS_bpf, BPF_MAP_DELETE_ELEM, &attr, sizeof(attr)); +} + +int bpf_get_next_key(int fd, void *key, void *next_key) +{ + union bpf_attr attr; + memset(&attr, 0, sizeof(attr)); + attr.map_fd = fd; + attr.key = ptr_to_u64(key); + attr.next_key = ptr_to_u64(next_key); + return syscall(SYS_bpf, BPF_MAP_GET_NEXT_KEY, &attr, sizeof(attr)); +} + +int bpf_prog_load(enum bpf_prog_type prog_type, + const struct bpf_insn *insns, int prog_len, + const char *license, int kern_version) +{ + char log_buf[65535]; + union bpf_attr attr; + memset(&attr, 0, sizeof(attr)); + attr.prog_type = prog_type; + attr.insns = ptr_to_u64((void *) insns); + attr.insn_cnt = prog_len / sizeof(struct bpf_insn); + attr.license = ptr_to_u64((void *) license); + attr.log_buf = ptr_to_u64(log_buf); + attr.log_size = sizeof(log_buf); + attr.log_level = 1; + /* assign one field outside of struct init to make sure any + * padding is zero initialized + */ + attr.kern_version = kern_version; + + long res = syscall(SYS_bpf, BPF_PROG_LOAD, &attr, sizeof(attr)); + if (res == -1) { + if (errno == ENOSPC) { + /* not enough space in the log buffer */ + attr.log_level = 0; + attr.log_size = 0; + attr.log_buf = ptr_to_u64(nullptr); + res = syscall(SYS_bpf, BPF_PROG_LOAD, &attr, sizeof(attr)); + if (res != -1) { + return res; + } + } + throw std::runtime_error("Error loading BPF program: (" + stringerror() + "):\n" + std::string(log_buf)); + } + return res; +} + +struct KeyV6 +{ + uint8_t src[16]; +}; + +struct QNameKey +{ + uint8_t qname[255]; +}; + +struct QNameValue +{ + uint64_t counter; + uint16_t qtype; +}; + +BPFFilter::BPFFilter(uint32_t maxV4Addresses, uint32_t maxV6Addresses, uint32_t maxQNames): d_maxV4(maxV4Addresses), d_maxV6(maxV6Addresses), d_maxQNames(maxQNames) +{ + d_v4map.fd = bpf_create_map(BPF_MAP_TYPE_HASH, sizeof(uint32_t), sizeof(uint64_t), (int) maxV4Addresses); + if (d_v4map.fd == -1) { + throw std::runtime_error("Error creating a BPF v4 map of size " + std::to_string(maxV4Addresses) + ": " + stringerror()); + } + + d_v6map.fd = bpf_create_map(BPF_MAP_TYPE_HASH, sizeof(struct KeyV6), sizeof(uint64_t), (int) maxV6Addresses); + if (d_v6map.fd == -1) { + throw std::runtime_error("Error creating a BPF v6 map of size " + std::to_string(maxV6Addresses) + ": " + stringerror()); + } + + d_qnamemap.fd = bpf_create_map(BPF_MAP_TYPE_HASH, sizeof(struct QNameKey), sizeof(struct QNameValue), (int) maxQNames); + if (d_qnamemap.fd == -1) { + throw std::runtime_error("Error creating a BPF qname map of size " + std::to_string(maxQNames) + ": " + stringerror()); + } + + d_filtermap.fd = bpf_create_map(BPF_MAP_TYPE_PROG_ARRAY, sizeof(uint32_t), sizeof(uint32_t), 1); + if (d_filtermap.fd == -1) { + throw std::runtime_error("Error creating a BPF program map of size 1: " + stringerror()); + } + + struct bpf_insn main_filter[] = { +#include "bpf-filter.main.ebpf" + }; + + d_mainfilter.fd = bpf_prog_load(BPF_PROG_TYPE_SOCKET_FILTER, + main_filter, + sizeof(main_filter), + "GPL", + 0); + if (d_mainfilter.fd == -1) { + throw std::runtime_error("Error loading BPF main filter: " + stringerror()); + } + + struct bpf_insn qname_filter[] = { +#include "bpf-filter.qname.ebpf" + }; + + d_qnamefilter.fd = bpf_prog_load(BPF_PROG_TYPE_SOCKET_FILTER, + qname_filter, + sizeof(qname_filter), + "GPL", + 0); + if (d_qnamefilter.fd == -1) { + throw std::runtime_error("Error loading BPF qname filter: " + stringerror()); + } + + uint32_t key = 0; + int res = bpf_update_elem(d_filtermap.fd, &key, &d_qnamefilter.fd, BPF_ANY); + if (res != 0) { + throw std::runtime_error("Error updating BPF filters map: " + stringerror()); + } +} + +void BPFFilter::addSocket(int sock) +{ + int res = setsockopt(sock, SOL_SOCKET, SO_ATTACH_BPF, &d_mainfilter.fd, sizeof(d_mainfilter.fd)); + + if (res != 0) { + throw std::runtime_error("Error attaching BPF filter to this socket: " + stringerror()); + } +} + +void BPFFilter::removeSocket(int sock) +{ + int res = setsockopt(sock, SOL_SOCKET, SO_DETACH_BPF, &d_mainfilter.fd, sizeof(d_mainfilter.fd)); + + if (res != 0) { + throw std::runtime_error("Error detaching BPF filter from this socket: " + stringerror()); + } +} + +void BPFFilter::block(const ComboAddress& addr) +{ + std::unique_lock<std::mutex> lock(d_mutex); + + uint64_t counter = 0; + int res = 0; + if (addr.sin4.sin_family == AF_INET) { + uint32_t key = htonl(addr.sin4.sin_addr.s_addr); + if (d_v4Count >= d_maxV4) { + throw std::runtime_error("Table full when trying to block " + addr.toString()); + } + + res = bpf_lookup_elem(d_v4map.fd, &key, &counter); + if (res != -1) { + throw std::runtime_error("Trying to block an already blocked address: " + addr.toString()); + } + + res = bpf_update_elem(d_v4map.fd, &key, &counter, BPF_NOEXIST); + if (res == 0) { + d_v4Count++; + } + } + else if (addr.sin4.sin_family == AF_INET6) { + uint8_t key[16]; + static_assert(sizeof(addr.sin6.sin6_addr.s6_addr) == sizeof(key), "POSIX mandates s6_addr to be an array of 16 uint8_t"); + for (size_t idx = 0; idx < sizeof(key); idx++) { + key[idx] = addr.sin6.sin6_addr.s6_addr[idx]; + } + + if (d_v6Count >= d_maxV6) { + throw std::runtime_error("Table full when trying to block " + addr.toString()); + } + + res = bpf_lookup_elem(d_v6map.fd, &key, &counter); + if (res != -1) { + throw std::runtime_error("Trying to block an already blocked address: " + addr.toString()); + } + + res = bpf_update_elem(d_v6map.fd, key, &counter, BPF_NOEXIST); + if (res == 0) { + d_v6Count++; + } + } + + if (res != 0) { + throw std::runtime_error("Error adding blocked address " + addr.toString() + ": " + stringerror()); + } +} + +void BPFFilter::unblock(const ComboAddress& addr) +{ + std::unique_lock<std::mutex> lock(d_mutex); + + int res = 0; + if (addr.sin4.sin_family == AF_INET) { + uint32_t key = htonl(addr.sin4.sin_addr.s_addr); + res = bpf_delete_elem(d_v4map.fd, &key); + if (res == 0) { + d_v4Count--; + } + } + else if (addr.sin4.sin_family == AF_INET6) { + uint8_t key[16]; + static_assert(sizeof(addr.sin6.sin6_addr.s6_addr) == sizeof(key), "POSIX mandates s6_addr to be an array of 16 uint8_t"); + for (size_t idx = 0; idx < sizeof(key); idx++) { + key[idx] = addr.sin6.sin6_addr.s6_addr[idx]; + } + + res = bpf_delete_elem(d_v6map.fd, key); + if (res == 0) { + d_v6Count--; + } + } + + if (res != 0) { + throw std::runtime_error("Error removing blocked address " + addr.toString() + ": " + stringerror()); + } +} + +void BPFFilter::block(const DNSName& qname, uint16_t qtype) +{ + struct QNameKey key; + struct QNameValue value; + memset(&key, 0, sizeof(key)); + memset(&value, 0, sizeof(value)); + value.counter = 0; + value.qtype = qtype; + + std::string keyStr = qname.toDNSStringLC(); + if (keyStr.size() > sizeof(key.qname)) { + throw std::runtime_error("Invalid QName to block " + qname.toLogString()); + } + memcpy(key.qname, keyStr.c_str(), keyStr.size()); + + { + std::unique_lock<std::mutex> lock(d_mutex); + if (d_qNamesCount >= d_maxQNames) { + throw std::runtime_error("Table full when trying to block " + qname.toLogString()); + } + + int res = bpf_lookup_elem(d_qnamemap.fd, &key, &value); + if (res != -1) { + throw std::runtime_error("Trying to block an already blocked qname: " + qname.toLogString()); + } + + res = bpf_update_elem(d_qnamemap.fd, &key, &value, BPF_NOEXIST); + if (res == 0) { + d_qNamesCount++; + } + + if (res != 0) { + throw std::runtime_error("Error adding blocked qname " + qname.toLogString() + ": " + stringerror()); + } + } +} + +void BPFFilter::unblock(const DNSName& qname, uint16_t qtype) +{ + struct QNameKey key = { { 0 } }; + std::string keyStr = qname.toDNSStringLC(); + (void) qtype; + + if (keyStr.size() > sizeof(key.qname)) { + throw std::runtime_error("Invalid QName to block " + qname.toLogString()); + } + memcpy(key.qname, keyStr.c_str(), keyStr.size()); + + { + std::unique_lock<std::mutex> lock(d_mutex); + + int res = bpf_delete_elem(d_qnamemap.fd, &key); + if (res == 0) { + d_qNamesCount--; + } + else { + throw std::runtime_error("Error removing qname address " + qname.toLogString() + ": " + stringerror()); + } + } +} + +std::vector<std::pair<ComboAddress, uint64_t> > BPFFilter::getAddrStats() +{ + std::vector<std::pair<ComboAddress, uint64_t> > result; + std::unique_lock<std::mutex> lock(d_mutex); + + uint32_t v4Key = 0; + uint32_t nextV4Key; + uint64_t value; + int res = bpf_get_next_key(d_v4map.fd, &v4Key, &nextV4Key); + sockaddr_in v4Addr; + memset(&v4Addr, 0, sizeof(v4Addr)); + v4Addr.sin_family = AF_INET; + + while (res == 0) { + v4Key = nextV4Key; + if (bpf_lookup_elem(d_v4map.fd, &v4Key, &value) == 0) { + v4Addr.sin_addr.s_addr = ntohl(v4Key); + result.push_back(make_pair(ComboAddress(&v4Addr), value)); + } + + res = bpf_get_next_key(d_v4map.fd, &v4Key, &nextV4Key); + } + + uint8_t v6Key[16]; + uint8_t nextV6Key[16]; + sockaddr_in6 v6Addr; + memset(&v6Addr, 0, sizeof(v6Addr)); + v6Addr.sin6_family = AF_INET6; + + static_assert(sizeof(v6Addr.sin6_addr.s6_addr) == sizeof(v6Key), "POSIX mandates s6_addr to be an array of 16 uint8_t"); + for (size_t idx = 0; idx < sizeof(v6Key); idx++) { + v6Key[idx] = 0; + } + + res = bpf_get_next_key(d_v6map.fd, &v6Key, &nextV6Key); + + while (res == 0) { + if (bpf_lookup_elem(d_v6map.fd, &nextV6Key, &value) == 0) { + for (size_t idx = 0; idx < sizeof(nextV6Key); idx++) { + v6Addr.sin6_addr.s6_addr[idx] = nextV6Key[idx]; + } + result.push_back(make_pair(ComboAddress(&v6Addr), value)); + } + + res = bpf_get_next_key(d_v6map.fd, &nextV6Key, &nextV6Key); + } + return result; +} + +std::vector<std::tuple<DNSName, uint16_t, uint64_t> > BPFFilter::getQNameStats() +{ + std::vector<std::tuple<DNSName, uint16_t, uint64_t> > result; + std::unique_lock<std::mutex> lock(d_mutex); + + struct QNameKey key = { { 0 } }; + struct QNameKey nextKey = { { 0 } }; + struct QNameValue value; + + int res = bpf_get_next_key(d_qnamemap.fd, &key, &nextKey); + + while (res == 0) { + if (bpf_lookup_elem(d_qnamemap.fd, &nextKey, &value) == 0) { + nextKey.qname[sizeof(nextKey.qname) - 1 ] = '\0'; + result.push_back(std::make_tuple(DNSName((const char*) nextKey.qname, sizeof(nextKey.qname), 0, false), value.qtype, value.counter)); + } + + res = bpf_get_next_key(d_qnamemap.fd, &nextKey, &nextKey); + } + return result; +} +#endif /* HAVE_EBPF */ diff --git a/bpf-filter.ebpf.src b/bpf-filter.ebpf.src new file mode 100644 index 0000000..f1c5eff --- /dev/null +++ b/bpf-filter.ebpf.src @@ -0,0 +1,497 @@ + +#include <net/sock.h> +#include <linux/types.h> +#include <uapi/linux/tcp.h> +#include <uapi/linux/udp.h> +#include <uapi/linux/ip.h> +#include <uapi/linux/ipv6.h> +#include <bcc/proto.h> + +struct dnsheader { + unsigned id :16; /* query identification number */ +#if BYTE_ORDER == BIG_ENDIAN + /* fields in third byte */ + unsigned qr: 1; /* response flag */ + unsigned opcode: 4; /* purpose of message */ + unsigned aa: 1; /* authoritative answer */ + unsigned tc: 1; /* truncated message */ + unsigned rd: 1; /* recursion desired */ + /* fields in fourth byte */ + unsigned ra: 1; /* recursion available */ + unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */ + unsigned ad: 1; /* authentic data from named */ + unsigned cd: 1; /* checking disabled by resolver */ + unsigned rcode :4; /* response code */ +#elif BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN + /* fields in third byte */ + unsigned rd :1; /* recursion desired */ + unsigned tc :1; /* truncated message */ + unsigned aa :1; /* authoritative answer */ + unsigned opcode :4; /* purpose of message */ + unsigned qr :1; /* response flag */ + /* fields in fourth byte */ + unsigned rcode :4; /* response code */ + unsigned cd: 1; /* checking disabled by resolver */ + unsigned ad: 1; /* authentic data from named */ + unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */ + unsigned ra :1; /* recursion available */ +#endif + /* remaining bytes */ + unsigned qdcount :16; /* number of question entries */ + unsigned ancount :16; /* number of answer entries */ + unsigned nscount :16; /* number of authority entries */ + unsigned arcount :16; /* number of resource entries */ +}; + +struct QNameKey +{ + uint8_t qname[255]; +}; + +struct KeyV6 +{ + uint8_t src[16]; +}; + +struct QNameValue +{ + u64 counter; + u16 qtype; +}; + +BPF_TABLE("hash", u32, u64, v4filter, 1024); +BPF_TABLE("hash", struct KeyV6, u64, v6filter, 1024); +BPF_TABLE("hash", struct QNameKey, struct QNameValue, qnamefilter, 1024); +BPF_TABLE("prog", int, int, progsarray, 1); + +int bpf_qname_filter(struct __sk_buff *skb) +{ + uint32_t qname_off = skb->cb[0]; + ssize_t labellen = skb->cb[3]; + size_t idx = 2; + struct QNameKey qkey = { 0 }; + u32 val = skb->cb[1]; + if (val) { + qkey.qname[0] = val; + } + val = skb->cb[2]; + if (val) { + qkey.qname[1] = val; + } + uint8_t temp; + +#define FILL_ONE_KEY \ + temp = load_byte(skb, qname_off + idx); \ + labellen--; \ + if (labellen < 0) { \ + labellen = temp; \ + if (labellen == 0) { \ + goto end; \ + } \ + } else if (temp >= 'A' && temp <= 'Z') { \ + temp += ('a' - 'A'); \ + } \ + qkey.qname[idx] = temp; \ + idx++; + + /* 2 - 52 */ + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + /* 52 - 102 */ + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + /* 102 - 152 */ + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + /* 152 - 202 */ + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + /* 202 - 252 */ + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + FILL_ONE_KEY + + /* 252 - 254 */ + FILL_ONE_KEY + FILL_ONE_KEY + + /* the only value that makes sense for + qkey.qname[255] is 0, and it's already + there */ + end: + + { + idx++; + u16 qtype = load_half(skb, (qname_off + idx)); + + struct QNameValue* qvalue = qnamefilter.lookup(&qkey); + if (qvalue && + (qvalue->qtype == 255 || qtype == qvalue->qtype)) { + __sync_fetch_and_add(&qvalue->counter, 1); + return 0; + } + } + + return 2147483647; +} + +int bpf_dns_filter(struct __sk_buff *skb) { + u8 ip_proto; + int proto_off; + int nh_off = BPF_LL_OFF + ETH_HLEN; + + if (skb->protocol == ntohs(0x0800)) { + u32 key; + int off = nh_off + offsetof(struct iphdr, saddr); + key = load_word(skb, off); + + u64* counter = v4filter.lookup(&key); + if (counter) { + __sync_fetch_and_add(counter, 1); + return 0; + } + + ip_proto = load_byte(skb, nh_off + offsetof(struct iphdr, protocol)); + proto_off = nh_off + sizeof(struct iphdr); + } + else if (skb->protocol == ntohs(0x86DD)) { + struct KeyV6 key; + int off = nh_off + offsetof(struct ipv6hdr, saddr); + key.src[0] = load_byte(skb, off++); + key.src[1] = load_byte(skb, off++); + key.src[2] = load_byte(skb, off++); + key.src[3] = load_byte(skb, off++); + key.src[4] = load_byte(skb, off++); + key.src[5] = load_byte(skb, off++); + key.src[6] = load_byte(skb, off++); + key.src[7] = load_byte(skb, off++); + key.src[8] = load_byte(skb, off++); + key.src[9] = load_byte(skb, off++); + key.src[10] = load_byte(skb, off++); + key.src[11] = load_byte(skb, off++); + key.src[12] = load_byte(skb, off++); + key.src[13] = load_byte(skb, off++); + key.src[14] = load_byte(skb, off++); + key.src[15] = load_byte(skb, off++); + + u64* counter = v6filter.lookup(&key); + if (counter) { + __sync_fetch_and_add(counter, 1); + return 0; + } + + ip_proto = load_byte(skb, nh_off + offsetof(struct ipv6hdr, nexthdr)); + proto_off = nh_off + sizeof(struct ipv6hdr); + } + else { + /* neither IPv4 not IPv6, well */ + return 2147483647; + } + + /* allow TCP */ + if (ip_proto == IPPROTO_TCP) { + return 2147483647; + } + + struct QNameKey qkey = { 0 }; + int dns_off = proto_off + sizeof(struct udphdr); + int qname_off = dns_off + sizeof(struct dnsheader); + skb->cb[0] = (uint32_t) qname_off; + u16 qtype; + + uint8_t temp = load_byte(skb, qname_off); + if (temp > 63) { + return 0; + } + + if (temp == 0) { + /* root, nothing else to see */ + qtype = load_half(skb, (qname_off + 1)); + + struct QNameValue* qvalue = qnamefilter.lookup(&qkey); + if (qvalue && + (qvalue->qtype == 255 || qtype == qvalue->qtype)) { + __sync_fetch_and_add(&qvalue->counter, 1); + return 0; + } + return 2147483647; + } + + ssize_t labellen = temp; + skb->cb[1] = temp; + qkey.qname[0] = temp; + + temp = load_byte(skb, qname_off + 1); + labellen--; + if (temp >= 'A' && temp <= 'Z') { + temp += ('a' - 'A'); + } + skb->cb[2] = temp; + skb->cb[3] = labellen; + progsarray.call(skb, 0); + + return 2147483647; +} diff --git a/bpf-filter.hh b/bpf-filter.hh new file mode 100644 index 0000000..f01d329 --- /dev/null +++ b/bpf-filter.hh @@ -0,0 +1,69 @@ +/* + * This file is part of PowerDNS or dnsdist. + * Copyright -- PowerDNS.COM B.V. and its contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * In addition, for the avoidance of any doubt, permission is granted to + * link this program with OpenSSL and to (re)distribute the binaries + * produced as the result of such linking. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#pragma once +#include "config.h" + +#include <mutex> + +#include "iputils.hh" + +#ifdef HAVE_EBPF + +class BPFFilter +{ +public: + BPFFilter(uint32_t maxV4Addresses, uint32_t maxV6Addresses, uint32_t maxQNames); + void addSocket(int sock); + void removeSocket(int sock); + void block(const ComboAddress& addr); + void block(const DNSName& qname, uint16_t qtype=255); + void unblock(const ComboAddress& addr); + void unblock(const DNSName& qname, uint16_t qtype=255); + std::vector<std::pair<ComboAddress, uint64_t> > getAddrStats(); + std::vector<std::tuple<DNSName, uint16_t, uint64_t> > getQNameStats(); +private: + struct FDWrapper + { + ~FDWrapper() + { + if (fd != -1) { + close(fd); + } + } + int fd{-1}; + }; + std::mutex d_mutex; + uint32_t d_maxV4; + uint32_t d_maxV6; + uint32_t d_maxQNames; + uint32_t d_v4Count{0}; + uint32_t d_v6Count{0}; + uint32_t d_qNamesCount{0}; + FDWrapper d_v4map; + FDWrapper d_v6map; + FDWrapper d_qnamemap; + FDWrapper d_filtermap; + FDWrapper d_mainfilter; + FDWrapper d_qnamefilter; +}; + +#endif /* HAVE_EBPF */ diff --git a/bpf-filter.main.ebpf b/bpf-filter.main.ebpf new file mode 100644 index 0000000..954b98a --- /dev/null +++ b/bpf-filter.main.ebpf @@ -0,0 +1,160 @@ +/* generated from the bpf_dns_filter() function in bpf-filter.ebpf.src */ +BPF_MOV64_REG(BPF_REG_6,BPF_REG_1), +BPF_LDX_MEM(BPF_W,BPF_REG_1,BPF_REG_6,16), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_1,ntohs(0x86dd),14), +BPF_MOV64_IMM(BPF_REG_0,2147483647), +BPF_JMP_IMM(BPF_JNE,BPF_REG_1,ntohs(0x0800),160), +BPF_LD_ABS(BPF_W,-2097126), +BPF_STX_MEM(BPF_W,BPF_REG_10,BPF_REG_0,-4), +BPF_LD_MAP_FD(BPF_REG_1,d_v4map.fd), +BPF_MOV64_REG(BPF_REG_2,BPF_REG_10), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_2,-4), +BPF_RAW_INSN(BPF_JMP|BPF_CALL,0,0,0,BPF_FUNC_map_lookup_elem), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_0,0,47), +BPF_MOV64_IMM(BPF_REG_1,1), +BPF_RAW_INSN(BPF_STX|BPF_XADD|BPF_DW,BPF_REG_0,BPF_REG_1,0,0), +BPF_MOV64_IMM(BPF_REG_0,0), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,148), +BPF_LD_ABS(BPF_B,-2097130), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-24), +BPF_LD_ABS(BPF_B,-2097129), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-23), +BPF_LD_ABS(BPF_B,-2097128), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-22), +BPF_LD_ABS(BPF_B,-2097127), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-21), +BPF_LD_ABS(BPF_B,-2097126), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-20), +BPF_LD_ABS(BPF_B,-2097125), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-19), +BPF_LD_ABS(BPF_B,-2097124), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-18), +BPF_LD_ABS(BPF_B,-2097123), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-17), +BPF_LD_ABS(BPF_B,-2097122), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-16), +BPF_LD_ABS(BPF_B,-2097121), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-15), +BPF_LD_ABS(BPF_B,-2097120), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-14), +BPF_LD_ABS(BPF_B,-2097119), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-13), +BPF_LD_ABS(BPF_B,-2097118), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-12), +BPF_LD_ABS(BPF_B,-2097117), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-11), +BPF_LD_ABS(BPF_B,-2097116), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-10), +BPF_LD_ABS(BPF_B,-2097115), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-9), +BPF_LD_MAP_FD(BPF_REG_1,d_v6map.fd), +BPF_MOV64_REG(BPF_REG_2,BPF_REG_10), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_2,-24), +BPF_RAW_INSN(BPF_JMP|BPF_CALL,0,0,0,BPF_FUNC_map_lookup_elem), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_0,0,1), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,-43), +BPF_LD_IMM64_RAW(BPF_REG_7,BPF_REG_0,4292870218), +BPF_LD_ABS(BPF_B,-2097132), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,3), +BPF_LD_IMM64_RAW(BPF_REG_7,BPF_REG_0,4292870198), +BPF_LD_ABS(BPF_B,-2097129), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_MOV64_IMM(BPF_REG_0,2147483647), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_1,6,98), +BPF_MOV64_IMM(BPF_REG_1,0), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_1,-26), +BPF_STX_MEM(BPF_H,BPF_REG_10,BPF_REG_1,-28), +BPF_STX_MEM(BPF_W,BPF_REG_10,BPF_REG_1,-32), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-40), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-48), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-56), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-64), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-72), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-80), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-88), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-96), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-104), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-112), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-120), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-128), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-136), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-144), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-152), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-160), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-168), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-176), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-184), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-192), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-200), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-208), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-216), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-224), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-232), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-240), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-248), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-256), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-264), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-272), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-280), +BPF_STX_MEM(BPF_W,BPF_REG_6,BPF_REG_7,48), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_7), +BPF_ALU64_IMM(BPF_LSH,BPF_REG_8,32), +BPF_ALU64_IMM(BPF_ARSH,BPF_REG_8,32), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_8,0,0), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_MOV64_REG(BPF_REG_2,BPF_REG_1), +BPF_ALU64_IMM(BPF_AND,BPF_REG_2,192), +BPF_MOV64_IMM(BPF_REG_0,0), +BPF_JMP_IMM(BPF_JGT,BPF_REG_2,63,53), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_1), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JNE,BPF_REG_8,0,22), +BPF_ALU64_IMM(BPF_OR,BPF_REG_7,1), +BPF_ALU64_IMM(BPF_LSH,BPF_REG_7,32), +BPF_ALU64_IMM(BPF_ARSH,BPF_REG_7,32), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_H,BPF_REG_0,BPF_REG_7,0,0), +BPF_MOV64_REG(BPF_REG_6,BPF_REG_0), +BPF_LD_MAP_FD(BPF_REG_1,d_qnamemap.fd), +BPF_MOV64_REG(BPF_REG_2,BPF_REG_10), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_2,-280), +BPF_RAW_INSN(BPF_JMP|BPF_CALL,0,0,0,BPF_FUNC_map_lookup_elem), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_MOV64_IMM(BPF_REG_0,2147483647), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_1,0,37), +BPF_LDX_MEM(BPF_H,BPF_REG_2,BPF_REG_1,8), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_2,255,3), +BPF_ALU64_IMM(BPF_AND,BPF_REG_6,65535), +BPF_MOV64_IMM(BPF_REG_0,2147483647), +BPF_JMP_REG(BPF_JNE,BPF_REG_6,BPF_REG_2,32), +BPF_MOV64_IMM(BPF_REG_2,1), +BPF_RAW_INSN(BPF_STX|BPF_XADD|BPF_DW,BPF_REG_1,BPF_REG_2,0,0), +BPF_MOV64_IMM(BPF_REG_0,0), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,28), +BPF_STX_MEM(BPF_W,BPF_REG_6,BPF_REG_8,52), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_1,-280), +BPF_ALU64_IMM(BPF_OR,BPF_REG_7,1), +BPF_ALU64_IMM(BPF_LSH,BPF_REG_7,32), +BPF_ALU64_IMM(BPF_ARSH,BPF_REG_7,32), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_7,0,0), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,32), +BPF_MOV64_REG(BPF_REG_2,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_2,255), +BPF_MOV64_IMM(BPF_REG_3,91), +BPF_JMP_REG(BPF_JGT,BPF_REG_3,BPF_REG_2,1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_MOV64_IMM(BPF_REG_3,64), +BPF_JMP_REG(BPF_JGT,BPF_REG_2,BPF_REG_3,1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_LD_IMM64_RAW(BPF_REG_2,BPF_REG_0,4294967295), +BPF_ALU64_REG(BPF_ADD,BPF_REG_8,BPF_REG_2), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_STX_MEM(BPF_W,BPF_REG_6,BPF_REG_1,56), +BPF_STX_MEM(BPF_W,BPF_REG_6,BPF_REG_8,60), +BPF_LD_MAP_FD(BPF_REG_2,d_filtermap.fd), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_6), +BPF_MOV64_IMM(BPF_REG_3,0), +BPF_RAW_INSN(BPF_JMP|BPF_CALL,0,0,0,BPF_FUNC_tail_call), +BPF_MOV64_IMM(BPF_REG_0,2147483647), +BPF_EXIT_INSN(), diff --git a/bpf-filter.qname.ebpf b/bpf-filter.qname.ebpf new file mode 100644 index 0000000..22b4465 --- /dev/null +++ b/bpf-filter.qname.ebpf @@ -0,0 +1,4095 @@ +/* generated from the bpf_qname_filter() function in bpf-filter.ebpf.src */ +BPF_MOV64_REG(BPF_REG_6,BPF_REG_1), +BPF_LDX_MEM(BPF_W,BPF_REG_8,BPF_REG_6,60), +BPF_LDX_MEM(BPF_W,BPF_REG_7,BPF_REG_6,48), +BPF_MOV64_IMM(BPF_REG_1,0), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_1,-2), +BPF_STX_MEM(BPF_H,BPF_REG_10,BPF_REG_1,-4), +BPF_STX_MEM(BPF_W,BPF_REG_10,BPF_REG_1,-8), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-16), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-24), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-32), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-40), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-48), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-56), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-64), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-72), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-80), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-88), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-96), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-104), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-112), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-120), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-128), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-136), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-144), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-152), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-160), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-168), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-176), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-184), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-192), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-200), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-208), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-216), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-224), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-232), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-240), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-248), +BPF_STX_MEM(BPF_DW,BPF_REG_10,BPF_REG_1,-256), +BPF_LDX_MEM(BPF_W,BPF_REG_1,BPF_REG_6,52), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_1,0,1), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_1,-256), +BPF_LDX_MEM(BPF_W,BPF_REG_1,BPF_REG_6,56), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_1,0,1), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_1,-255), +BPF_MOV64_REG(BPF_REG_2,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_2,2), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_2,0,0), +BPF_JMP_IMM(BPF_JNE,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,3), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,4024), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-254), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,3), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,4), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,4008), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-253), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,4), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,5), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3992), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-252), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,5), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,6), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3976), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-251), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,6), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,7), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3960), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-250), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,7), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,8), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3944), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-249), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,8), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,9), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3928), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-248), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,9), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,10), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3912), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-247), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,10), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,11), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3896), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-246), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,11), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,12), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3880), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-245), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,12), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,13), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3864), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-244), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,13), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,14), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3848), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-243), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,14), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,15), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3832), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-242), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,15), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,16), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3816), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-241), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,16), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,17), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3800), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-240), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,17), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,18), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3784), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-239), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,18), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,19), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3768), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-238), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,19), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,20), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3752), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-237), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,20), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,21), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3736), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-236), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,21), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,22), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3720), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-235), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,22), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,23), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3704), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-234), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,23), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,24), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3688), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-233), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,24), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,25), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3672), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-232), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,25), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,26), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3656), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-231), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,26), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,27), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3640), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-230), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,27), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,28), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3624), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-229), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,28), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,29), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3608), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-228), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,29), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,30), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3592), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-227), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,30), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,31), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3576), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-226), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,31), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,32), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3560), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-225), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,32), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,33), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3544), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-224), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,33), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,34), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3528), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-223), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,34), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,35), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3512), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-222), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,35), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,36), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3496), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-221), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,36), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,37), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3480), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-220), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,37), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,38), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3464), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-219), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,38), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,39), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3448), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-218), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,39), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,40), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3432), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-217), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,40), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,41), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3416), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-216), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,41), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,42), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3400), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-215), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,42), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,43), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3384), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-214), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,43), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,44), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3368), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-213), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,44), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,45), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3352), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-212), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,45), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,46), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3336), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-211), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,46), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,47), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3320), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-210), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,47), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,48), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3304), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-209), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,48), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,49), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3288), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-208), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,49), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,50), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3272), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-207), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,50), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,51), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3256), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-206), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,51), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,52), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3240), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-205), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,52), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,53), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3224), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-204), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,53), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,54), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3208), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-203), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,54), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,55), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3192), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-202), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,55), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,56), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3176), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-201), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,56), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,57), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3160), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-200), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,57), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,58), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3144), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-199), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,58), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,59), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3128), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-198), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,59), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,60), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3112), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-197), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,60), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,61), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3096), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-196), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,61), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,62), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3080), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-195), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,62), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,63), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3064), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-194), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,63), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,64), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3048), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-193), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,64), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,65), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3032), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-192), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,65), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,66), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3016), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-191), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,66), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,67), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,3000), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-190), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,67), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,68), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2984), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-189), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,68), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,69), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2968), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-188), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,69), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,70), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2952), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-187), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,70), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,71), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2936), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-186), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,71), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,72), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2920), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-185), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,72), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,73), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2904), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-184), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,73), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,74), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2888), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-183), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,74), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,75), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2872), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-182), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,75), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,76), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2856), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-181), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,76), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,77), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2840), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-180), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,77), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,78), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2824), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-179), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,78), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,79), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2808), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-178), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,79), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,80), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2792), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-177), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,80), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,81), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2776), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-176), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,81), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,82), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2760), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-175), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,82), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,83), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2744), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-174), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,83), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,84), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2728), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-173), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,84), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,85), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2712), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-172), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,85), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,86), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2696), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-171), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,86), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,87), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2680), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-170), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,87), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,88), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2664), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-169), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,88), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,89), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2648), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-168), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,89), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,90), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2632), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-167), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,90), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,91), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2616), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-166), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,91), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,92), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2600), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-165), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,92), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,93), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2584), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-164), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,93), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,94), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2568), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-163), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,94), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,95), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2552), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-162), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,95), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,96), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2536), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-161), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,96), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,97), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2520), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-160), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,97), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,98), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2504), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-159), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,98), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,99), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2488), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-158), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,99), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,100), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2472), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-157), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,100), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,101), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2456), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-156), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,101), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,102), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2440), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-155), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,102), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,103), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2424), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-154), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,103), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,104), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2408), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-153), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,104), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,105), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2392), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-152), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,105), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,106), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2376), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-151), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,106), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,107), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2360), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-150), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,107), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,108), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2344), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-149), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,108), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,109), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2328), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-148), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,109), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,110), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2312), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-147), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,110), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,111), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2296), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-146), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,111), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,112), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2280), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-145), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,112), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,113), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2264), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-144), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,113), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,114), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2248), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-143), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,114), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,115), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2232), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-142), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,115), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,116), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2216), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-141), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,116), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,117), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2200), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-140), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,117), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,118), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2184), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-139), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,118), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,119), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2168), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-138), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,119), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,120), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2152), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-137), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,120), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,121), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2136), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-136), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,121), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,122), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2120), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-135), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,122), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,123), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2104), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-134), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,123), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,124), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2088), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-133), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,124), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,125), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2072), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-132), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,125), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,126), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2056), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-131), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,126), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,127), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2040), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-130), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,127), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,128), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2024), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-129), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,128), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,129), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,2008), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-128), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,129), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,130), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1992), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-127), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,130), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,131), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1976), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-126), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,131), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,132), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1960), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-125), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,132), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,133), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1944), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-124), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,133), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,134), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1928), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-123), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,134), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,135), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1912), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-122), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,135), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,136), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1896), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-121), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,136), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,137), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1880), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-120), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,137), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,138), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1864), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-119), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,138), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,139), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1848), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-118), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,139), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,140), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1832), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-117), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,140), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,141), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1816), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-116), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,141), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,142), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1800), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-115), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,142), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,143), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1784), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-114), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,143), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,144), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1768), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-113), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,144), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,145), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1752), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-112), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,145), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,146), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1736), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-111), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,146), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,147), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1720), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-110), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,147), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,148), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1704), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-109), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,148), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,149), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1688), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-108), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,149), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,150), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1672), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-107), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,150), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,151), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1656), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-106), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,151), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,152), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1640), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-105), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,152), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,153), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1624), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-104), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,153), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,154), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1608), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-103), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,154), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,155), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1592), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-102), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,155), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,156), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1576), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-101), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,156), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,157), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1560), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-100), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,157), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,158), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1544), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-99), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,158), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,159), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1528), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-98), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,159), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,160), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1512), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-97), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,160), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,161), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1496), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-96), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,161), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,162), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1480), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-95), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,162), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,163), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1464), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-94), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,163), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,164), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1448), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-93), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,164), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,165), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1432), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-92), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,165), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,166), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1416), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-91), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,166), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,167), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1400), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-90), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,167), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,168), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1384), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-89), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,168), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,169), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1368), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-88), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,169), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,170), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1352), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-87), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,170), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,171), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1336), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-86), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,171), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,172), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1320), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-85), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,172), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,173), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1304), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-84), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,173), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,174), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1288), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-83), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,174), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,175), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1272), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-82), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,175), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,176), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1256), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-81), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,176), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,177), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1240), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-80), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,177), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,178), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1224), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-79), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,178), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,179), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1208), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-78), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,179), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,180), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1192), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-77), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,180), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,181), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1176), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-76), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,181), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,182), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1160), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-75), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,182), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,183), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1144), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-74), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,183), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,184), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1128), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-73), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,184), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,185), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1112), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-72), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,185), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,186), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1096), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-71), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,186), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,187), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1080), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-70), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,187), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,188), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1064), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-69), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,188), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,189), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1048), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-68), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,189), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,190), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1032), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-67), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,190), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,191), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1016), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-66), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,191), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,192), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,1000), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-65), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,192), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,193), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,984), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-64), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,193), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,194), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,968), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-63), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,194), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,195), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,952), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-62), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,195), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,196), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,936), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-61), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,196), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,197), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,920), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-60), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,197), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,198), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,904), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-59), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,198), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,199), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,888), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-58), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,199), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,200), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,872), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-57), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,200), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,201), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,856), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-56), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,201), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,202), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,840), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-55), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,202), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,203), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,824), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-54), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,203), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,204), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,808), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-53), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,204), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,205), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,792), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-52), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,205), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,206), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,776), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-51), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,206), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,207), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,760), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-50), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,207), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,208), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,744), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-49), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,208), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,209), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,728), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-48), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,209), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,210), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,712), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-47), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,210), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,211), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,696), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-46), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,211), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,212), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,680), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-45), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,212), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,213), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,664), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-44), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,213), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,214), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,648), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-43), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,214), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,215), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,632), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-42), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,215), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,216), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,616), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-41), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,216), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,217), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,600), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-40), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,217), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,218), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,584), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-39), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,218), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,219), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,568), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-38), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,219), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,220), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,552), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-37), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,220), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,221), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,536), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-36), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,221), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,222), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,520), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-35), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,222), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,223), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,504), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-34), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,223), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,224), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,488), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-33), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,224), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,225), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,472), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-32), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,225), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,226), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,456), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-31), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,226), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,227), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,440), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-30), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,227), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,228), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,424), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-29), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,228), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,229), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,408), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-28), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,229), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,230), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,392), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-27), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,230), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,231), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,376), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-26), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,231), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,232), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,360), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-25), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,232), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,233), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,344), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-24), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,233), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,234), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,328), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-23), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,234), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,235), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,312), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-22), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,235), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,236), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,296), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-21), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,236), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,237), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,280), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-20), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,237), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,238), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,264), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-19), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,238), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,239), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,248), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-18), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,239), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,240), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,232), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-17), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,240), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,241), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,216), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-16), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,241), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,242), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,200), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-15), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,242), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,243), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,184), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-14), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,243), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,244), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,168), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-13), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,244), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,245), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,152), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-12), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,245), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,246), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,136), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-11), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,246), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,247), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,120), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-10), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,247), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,248), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,104), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-9), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,248), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,249), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,88), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-8), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,249), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,250), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,72), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-7), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,250), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,251), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,56), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-6), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,251), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,252), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,40), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-5), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,252), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,253), +BPF_MOV64_REG(BPF_REG_8,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_8,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_8,0,24), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,6), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_8,-1), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-4), +BPF_MOV64_REG(BPF_REG_9,BPF_REG_7), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_9,253), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_B,BPF_REG_0,BPF_REG_9,0,0), +BPF_JMP_IMM(BPF_JSGT,BPF_REG_8,0,5), +BPF_MOV64_IMM(BPF_REG_9,254), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_1,0,8), +BPF_JMP_IMM(BPF_JA,BPF_REG_0,0,5), +BPF_MOV64_REG(BPF_REG_1,BPF_REG_0), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_1,-65), +BPF_ALU64_IMM(BPF_AND,BPF_REG_1,255), +BPF_JMP_IMM(BPF_JGT,BPF_REG_1,25,1), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_0,32), +BPF_STX_MEM(BPF_B,BPF_REG_10,BPF_REG_0,-3), +BPF_MOV64_IMM(BPF_REG_9,255), +BPF_ALU64_REG(BPF_ADD,BPF_REG_9,BPF_REG_7), +BPF_RAW_INSN(BPF_LD|BPF_IND|BPF_H,BPF_REG_0,BPF_REG_9,0,0), +BPF_MOV64_REG(BPF_REG_6,BPF_REG_0), +BPF_LD_MAP_FD(BPF_REG_1,d_qnamemap.fd), +BPF_MOV64_REG(BPF_REG_2,BPF_REG_10), +BPF_ALU64_IMM(BPF_ADD,BPF_REG_2,-256), +BPF_RAW_INSN(BPF_JMP|BPF_CALL,0,0,0,BPF_FUNC_map_lookup_elem), +BPF_MOV64_IMM(BPF_REG_1,2147483647), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_0,0,7), +BPF_LDX_MEM(BPF_H,BPF_REG_2,BPF_REG_0,8), +BPF_JMP_IMM(BPF_JEQ,BPF_REG_2,255,2), +BPF_ALU64_IMM(BPF_AND,BPF_REG_6,65535), +BPF_JMP_REG(BPF_JNE,BPF_REG_6,BPF_REG_2,3), +BPF_MOV64_IMM(BPF_REG_1,1), +BPF_RAW_INSN(BPF_STX|BPF_XADD|BPF_DW,BPF_REG_0,BPF_REG_1,0,0), +BPF_MOV64_IMM(BPF_REG_1,0), +BPF_MOV64_REG(BPF_REG_0,BPF_REG_1), +BPF_EXIT_INSN(), diff --git a/builder-support/gen-version b/builder-support/gen-version new file mode 100755 index 0000000..4411794 --- /dev/null +++ b/builder-support/gen-version @@ -0,0 +1,74 @@ +#!/bin/sh +if [ ! -z "${BUILDER_VERSION}" ]; then + printf ${BUILDER_VERSION} + exit 0 +fi + +VERSION="unknown" + +DIRTY="" +git status | grep -q clean || DIRTY='.dirty' + +# Special environment variable to signal that we are building a release, as this +# has consequenses for the version number. +if [ "${IS_RELEASE}" = "YES" ]; then + TAG="$(git describe --tags --exact-match 2> /dev/null | cut -d- -f 2-)" + if [ -n "${TAG}" ]; then + # We're on a tag + echo "${TAG}${DIRTY}" > .version + printf "${TAG}${DIRTY}" + exit 0 + fi + echo 'This is not a tag, either tag this commit or do not set $IS_RELEASE' >&2 + exit 1 +fi + +# +# Generate the version number based on the branch +# +if [ ! -z "$(git rev-parse --abbrev-ref HEAD 2> /dev/null)" ]; then + if [ -n "${BUILDER_MODULES}" ]; then + match=${BUILDER_MODULES} + [ $match = "authoritative" ] && match='auth' + [ $match = "recursor" ] && match='rec' + GIT_VERSION="$(git describe --match=${match}-* --tags | cut -d- -f2-)" + if [ $(echo ${GIT_VERSION} | awk -F"-" '{print NF-1}') = '3' ]; then + # A prerelease happened before + LAST_TAG="$(echo ${GIT_VERSION} | cut -d- -f1-2)" + COMMITS_SINCE_TAG="$(echo ${GIT_VERSION} | cut -d- -f3)" + GIT_HASH="$(echo ${GIT_VERSION} | cut -d- -f4)" + else + LAST_TAG="$(echo ${GIT_VERSION} | cut -d- -f1)" + COMMITS_SINCE_TAG="$(echo ${GIT_VERSION} | cut -d- -f2)" + GIT_HASH="$(echo ${GIT_VERSION} | cut -d- -f3)" + fi + fi + + if [ -z "${GIT_VERSION}" ]; then + # BUILDER_SUPPORT has more than one product listed, fall back to the 0.0.0 logic + + # We used 0.0.XXXXgHASH for master in the previous incarnation of our build pipeline. + # This now becomes 0.0.XXXX.0.gHASH, as 0.0.0.XXXX.gHASH (which is more correct) + # would break upgrades for those running master + # This _should_ be ok for forever is we stick to X.Y.Z for version numbers + LAST_TAG=0.0 + COMMITS_SINCE_TAG="$(git rev-list --count 12c868770afc20b6cc0da439d881105151d557dd..HEAD 2> /dev/null).0" + [ "${COMMITS_SINCE_TAG}" = ".0" ] && COMMITS_SINCE_TAG=0.0 + GIT_HASH="g$(git rev-parse HEAD | cut -c1-10 2> /dev/null)" + fi + + BRANCH=".$(git rev-parse --abbrev-ref HEAD | perl -p -e 's/[^[:alnum:]]//g;')" + + TAG="$(git describe --tags --exact-match 2> /dev/null | cut -d- -f 2-)" + if [ -n "${TAG}" ]; then # We're exactly on a tag + COMMITS_SINCE_TAG="0" + GIT_HASH="g$(git show --no-patch --format=format:%h HEAD 2>/dev/null)" + if [ -z "$GIT_HASH" ]; then + GIT_HASH="g$(git show --format=format:%h HEAD | head -n1)" + fi + fi + + VERSION="${LAST_TAG}.${COMMITS_SINCE_TAG}${BRANCH}.${GIT_HASH}${DIRTY}" +fi + +printf $VERSION diff --git a/cachecleaner.hh b/cachecleaner.hh new file mode 100644 index 0000000..5b2ff3d --- /dev/null +++ b/cachecleaner.hh @@ -0,0 +1,261 @@ +/* + * This file is part of PowerDNS or dnsdist. + * Copyright -- PowerDNS.COM B.V. and its contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * In addition, for the avoidance of any doubt, permission is granted to + * link this program with OpenSSL and to (re)distribute the binaries + * produced as the result of such linking. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#pragma once + +#include <mutex> +#include "lock.hh" + +// this function can clean any cache that has a getTTD() method on its entries, a preRemoval() method and a 'sequence' index as its second index +// the ritual is that the oldest entries are in *front* of the sequence collection, so on a hit, move an item to the end +// on a miss, move it to the beginning +template <typename S, typename C, typename T> void pruneCollection(C& container, T& collection, size_t maxCached, size_t scanFraction = 1000) +{ + const time_t now = time(0); + size_t toTrim = 0; + const size_t cacheSize = collection.size(); + + if (cacheSize > maxCached) { + toTrim = cacheSize - maxCached; + } + + auto& sidx = collection.template get<S>(); + + // two modes - if toTrim is 0, just look through 1/scanFraction of all records + // and nuke everything that is expired + // otherwise, scan first 5*toTrim records, and stop once we've nuked enough + const size_t lookAt = toTrim ? 5 * toTrim : cacheSize / scanFraction; + size_t tried = 0, erased = 0; + + for (auto iter = sidx.begin(); iter != sidx.end() && tried < lookAt ; ++tried) { + if (iter->getTTD() < now) { + container.preRemoval(*iter); + iter = sidx.erase(iter); + erased++; + } + else { + ++iter; + } + + if (toTrim && erased >= toTrim) { + break; + } + } + + if (erased >= toTrim) { // done + return; + } + + toTrim -= erased; + + // just lob it off from the beginning + auto iter = sidx.begin(); + for (size_t i = 0; i < toTrim && iter != sidx.end(); i++) { + container.preRemoval(*iter); + iter = sidx.erase(iter); + } +} + +// note: this expects iterator from first index +template <typename S, typename T> void moveCacheItemToFrontOrBack(T& collection, typename T::iterator& iter, bool front) +{ + typedef typename T::template index<S>::type sequence_t; + sequence_t& sidx=collection.template get<S>(); + typename sequence_t::iterator si=collection.template project<S>(iter); + if(front) + sidx.relocate(sidx.begin(), si); // at the beginning of the delete queue + else + sidx.relocate(sidx.end(), si); // back +} + +template <typename S, typename T> void moveCacheItemToFront(T& collection, typename T::iterator& iter) +{ + moveCacheItemToFrontOrBack<S>(collection, iter, true); +} + +template <typename S, typename T> void moveCacheItemToBack(T& collection, typename T::iterator& iter) +{ + moveCacheItemToFrontOrBack<S>(collection, iter, false); +} + +template <typename S, typename T> uint64_t pruneLockedCollectionsVector(vector<T>& maps) +{ + uint64_t totErased = 0; + time_t now = time(nullptr); + + for(auto& mc : maps) { + WriteLock wl(&mc.d_mut); + + uint64_t lookAt = (mc.d_map.size() + 9) / 10; // Look at 10% of this shard + uint64_t erased = 0; + + auto& sidx = boost::multi_index::get<S>(mc.d_map); + for(auto i = sidx.begin(); i != sidx.end() && lookAt > 0; lookAt--) { + if(i->ttd < now) { + i = sidx.erase(i); + erased++; + } else { + ++i; + } + } + totErased += erased; + } + + return totErased; +} + +template <typename S, typename C, typename T> uint64_t pruneMutexCollectionsVector(C& container, vector<T>& maps, uint64_t maxCached, uint64_t cacheSize) +{ + time_t now = time(nullptr); + uint64_t totErased = 0; + uint64_t toTrim = 0; + uint64_t lookAt = 0; + + // two modes - if toTrim is 0, just look through 10% of the cache and nuke everything that is expired + // otherwise, scan first 5*toTrim records, and stop once we've nuked enough + if (cacheSize > maxCached) { + toTrim = cacheSize - maxCached; + lookAt = 5 * toTrim; + } else { + lookAt = cacheSize / 10; + } + + uint64_t maps_size = maps.size(); + if (maps_size == 0) + return 0; + + for (auto& mc : maps) { + const typename C::lock l(mc); + mc.d_cachecachevalid = false; + auto& sidx = boost::multi_index::get<S>(mc.d_map); + uint64_t erased = 0, lookedAt = 0; + for (auto i = sidx.begin(); i != sidx.end(); lookedAt++) { + if (i->getTTD() < now) { + container.preRemoval(*i); + i = sidx.erase(i); + erased++; + mc.d_entriesCount--; + } else { + ++i; + } + + if (toTrim && erased >= toTrim / maps_size) + break; + + if (lookedAt > lookAt / maps_size) + break; + } + totErased += erased; + if (toTrim && totErased >= toTrim) + break; + } + + if (totErased >= toTrim) { // done + return totErased; + } + + toTrim -= totErased; + + while (true) { + size_t pershard = toTrim / maps_size + 1; + for (auto& mc : maps) { + const typename C::lock l(mc); + mc.d_cachecachevalid = false; + auto& sidx = boost::multi_index::get<S>(mc.d_map); + size_t removed = 0; + for (auto i = sidx.begin(); i != sidx.end() && removed < pershard; removed++) { + container.preRemoval(*i); + i = sidx.erase(i); + mc.d_entriesCount--; + totErased++; + toTrim--; + if (toTrim == 0) { + return totErased; + } + } + } + } + // Not reached + return totErased; +} + +template <typename T> uint64_t purgeLockedCollectionsVector(vector<T>& maps) +{ + uint64_t delcount=0; + + for(auto& mc : maps) { + WriteLock wl(&mc.d_mut); + delcount += mc.d_map.size(); + mc.d_map.clear(); + } + + return delcount; +} + +template <typename N, typename T> uint64_t purgeLockedCollectionsVector(vector<T>& maps, const std::string& match) +{ + uint64_t delcount=0; + string prefix(match); + prefix.resize(prefix.size()-1); + DNSName dprefix(prefix); + for(auto& mc : maps) { + WriteLock wl(&mc.d_mut); + auto& idx = boost::multi_index::get<N>(mc.d_map); + auto iter = idx.lower_bound(dprefix); + auto start = iter; + + for(; iter != idx.end(); ++iter) { + if(!iter->qname.isPartOf(dprefix)) { + break; + } + delcount++; + } + idx.erase(start, iter); + } + + return delcount; +} + +template <typename N, typename T> uint64_t purgeExactLockedCollection(T& mc, const DNSName& qname) +{ + uint64_t delcount=0; + WriteLock wl(&mc.d_mut); + auto& idx = boost::multi_index::get<N>(mc.d_map); + auto range = idx.equal_range(qname); + if(range.first != range.second) { + delcount += distance(range.first, range.second); + idx.erase(range.first, range.second); + } + + return delcount; +} + +template<typename S, typename Index> +std::pair<typename Index::iterator,bool> +lruReplacingInsert(Index& i,const typename Index::value_type& x) +{ + std::pair<typename Index::iterator,bool> res = i.insert(x); + if (!res.second) { + moveCacheItemToBack<S>(i, res.first); + res.second = i.replace(res.first, x); + } + return res; +} diff --git a/capabilities.cc b/capabilities.cc new file mode 100644 index 0000000..534d665 --- /dev/null +++ b/capabilities.cc @@ -0,0 +1,75 @@ +/* + * This file is part of PowerDNS or dnsdist. + * Copyright -- PowerDNS.COM B.V. and its contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * In addition, for the avoidance of any doubt, permission is granted to + * link this program with OpenSSL and to (re)distribute the binaries + * produced as the result of such linking. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "config.h" + +#include <cstring> +#include <stdexcept> + +#ifdef HAVE_LIBCAP +#include <sys/capability.h> +#endif + +#include "capabilities.hh" +#include "misc.hh" + +void dropCapabilities(std::set<std::string> capabilitiesToKeep) +{ +#ifdef HAVE_LIBCAP + cap_t caps = cap_get_proc(); + if (caps != nullptr) { + cap_clear(caps); + + if (!capabilitiesToKeep.empty()) { + std::vector<cap_value_t> toKeep; + toKeep.reserve(capabilitiesToKeep.size()); + + for (const auto& capToKeep : capabilitiesToKeep) { + cap_value_t value; + int res = cap_from_name(capToKeep.c_str(), &value); + if (res != 0) { + cap_free(caps); + throw std::runtime_error("Unable to convert capability name '" + capToKeep + "': " + stringerror()); + } + toKeep.push_back(value); + } + + if (cap_set_flag(caps, CAP_EFFECTIVE, toKeep.size(), toKeep.data(), CAP_SET) != 0) { + cap_free(caps); + throw std::runtime_error("Unable to set effective flag capabilities: " + stringerror()); + } + + if (cap_set_flag(caps, CAP_PERMITTED, toKeep.size(), toKeep.data(), CAP_SET) != 0) { + cap_free(caps); + throw std::runtime_error("Unable to set permitted flag capabilities: " + stringerror()); + } + } + + if (cap_set_proc(caps) != 0) { + cap_free(caps); + throw std::runtime_error("Unable to drop capabilities: " + stringerror()); + } + + cap_free(caps); + } +#endif /* HAVE_LIBCAP */ +} diff --git a/capabilities.hh b/capabilities.hh new file mode 100644 index 0000000..4d0b0de --- /dev/null +++ b/capabilities.hh @@ -0,0 +1,26 @@ +/* + * This file is part of PowerDNS or dnsdist. + * Copyright -- PowerDNS.COM B.V. and its contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * In addition, for the avoidance of any doubt, permission is granted to + * link this program with OpenSSL and to (re)distribute the binaries + * produced as the result of such linking. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#pragma once + +#include <set> + +void dropCapabilities(std::set<std::string> capabilitiesToKeep = {}); @@ -0,0 +1,227 @@ +/* + * This file is part of PowerDNS or dnsdist. + * Copyright -- PowerDNS.COM B.V. and its contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * In addition, for the avoidance of any doubt, permission is granted to + * link this program with OpenSSL and to (re)distribute the binaries + * produced as the result of such linking. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <unistd.h> + +#include "cdb.hh" + +CDB::CDB(const string &cdbfile) +{ + d_fd = open(cdbfile.c_str(), O_RDONLY); + if (d_fd < 0) + { + throw std::runtime_error("Failed to open cdb database file '"+cdbfile+"': " + stringerror()); + } + + memset(&d_cdbf,0,sizeof(struct cdb_find)); + int cdbinit = cdb_init(&d_cdb, d_fd); + if (cdbinit < 0) + { + close(d_fd); + d_fd = -1; + throw std::runtime_error("Failed to initialize cdb structure for database '+cdbfile+': '" + std::to_string(cdbinit) + "'"); + } +} + +CDB::~CDB() { + cdb_free(&d_cdb); + close(d_fd); +} + +int CDB::searchKey(const string &key) { + d_searchType = SearchKey; + + // A 'bug' in tinycdb (the lib used for reading the CDB files) means we have to copy the key because the cdb_find struct + // keeps a pointer to it. + d_key = key; + return cdb_findinit(&d_cdbf, &d_cdb, d_key.c_str(), d_key.size()); +} + +bool CDB::searchSuffix(const string &key) { + d_searchType = SearchSuffix; + + //See CDB::searchKey() + d_key = key; + + // We are ok with a search on things, but we do want to know if a record with that key exists......... + bool hasDomain = (cdb_find(&d_cdb, d_key.c_str(), d_key.size()) == 1); + if (hasDomain) { + cdb_seqinit(&d_seqPtr, &d_cdb); + } + + return hasDomain; +} + +void CDB::searchAll() { + d_searchType = SearchAll; + cdb_seqinit(&d_seqPtr, &d_cdb); +} + +bool CDB::moveToNext() { + int hasNext = 0; + if (d_searchType == SearchKey) { + hasNext = cdb_findnext(&d_cdbf); + } else { + hasNext = cdb_seqnext(&d_seqPtr, &d_cdb); + } + return (hasNext > 0); +} + +bool CDB::readNext(pair<string, string> &value) { + while (moveToNext()) { + unsigned int pos; + unsigned int len; + + pos = cdb_keypos(&d_cdb); + len = cdb_keylen(&d_cdb); + + std::string key; + key.resize(len); + int ret = cdb_read(&d_cdb, &key[0], len, pos); + if (ret < 0) { + throw std::runtime_error("Error while reading key for key '" + key + "' from CDB database: " + std::to_string(ret)); + } + + if (d_searchType == SearchSuffix) { + char *p = strstr(const_cast<char*>(key.c_str()), d_key.c_str()); + if (p == nullptr) { + continue; + } + } + + pos = cdb_datapos(&d_cdb); + len = cdb_datalen(&d_cdb); + std::string val; + val.resize(len); + ret = cdb_read(&d_cdb, &val[0], len, pos); + if (ret < 0) { + throw std::runtime_error("Error while reading value for key '" + key + "' from CDB database: " + std::to_string(ret)); + } + + value = make_pair(std::move(key), std::move(val)); + return true; + } + + // We're done searching, so we can clean up d_key + if (d_searchType != SearchAll) { + d_key.clear(); + } + + return false; +} + +vector<string> CDB::findall(string &key) +{ + vector<string> ret; + struct cdb_find cdbf; + + int res = cdb_findinit(&cdbf, &d_cdb, key.c_str(), key.size()); + if (res < 0) { + throw std::runtime_error("Error looking up key '" + key + "' from CDB database: " + std::to_string(res)); + } + + int x=0; + while(cdb_findnext(&cdbf) > 0) { + x++; + unsigned int vpos = cdb_datapos(&d_cdb); + unsigned int vlen = cdb_datalen(&d_cdb); + std::string val; + val.resize(vlen); + res = cdb_read(&d_cdb, &val[0], vlen, vpos); + if (res < 0) { + throw std::runtime_error("Error while reading value for key '" + key + "' from CDB database: " + std::to_string(res)); + } + ret.push_back(std::move(val)); + } + + return ret; +} + +bool CDB::keyExists(const string& key) +{ + int ret = cdb_find(&d_cdb, key.c_str(), key.size()); + if (ret < 0) { + throw std::runtime_error("Error while looking up key '" + key + "' from CDB database: " + std::to_string(ret)); + } + if (ret == 0) { + /* no such key */ + return false; + } + + return true; +} + +bool CDB::findOne(const string& key, string& value) +{ + if (!keyExists(key)) { + return false; + } + + unsigned int vpos = cdb_datapos(&d_cdb); + unsigned int vlen = cdb_datalen(&d_cdb); + value.resize(vlen); + int ret = cdb_read(&d_cdb, &value[0], vlen, vpos); + if (ret < 0) { + throw std::runtime_error("Error while reading value for key '" + key + "' from CDB database: " + std::to_string(ret)); + } + + return true; +} + +CDBWriter::CDBWriter(int fd): d_fd(fd) +{ + cdb_make_start(&d_cdbm, d_fd); +} + +CDBWriter::~CDBWriter() +{ + close(); +} + +void CDBWriter::close() +{ + if (d_fd >= 0) { + cdb_make_finish(&d_cdbm); + ::close(d_fd); + d_fd = -1; + } +} + +bool CDBWriter::addEntry(const std::string& key, const std::string& value) +{ + if (d_fd < 0) { + throw std::runtime_error("Can't add an entry to a closed CDB database"); + } + + int ret = cdb_make_add(&d_cdbm, key.c_str(), key.size(), value.c_str(), value.size()); + if (ret != 0) { + throw std::runtime_error("Error adding key '" + key + "' to CDB database: " + std::to_string(ret)); + } + + return true; +} @@ -0,0 +1,70 @@ +/* + * This file is part of PowerDNS or dnsdist. + * Copyright -- PowerDNS.COM B.V. and its contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * In addition, for the avoidance of any doubt, permission is granted to + * link this program with OpenSSL and to (re)distribute the binaries + * produced as the result of such linking. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#pragma once +#include <cdb.h> + +#include "misc.hh" + +// This class is responsible for the reading of a CDB file. +// The constructor opens the CDB file, the destructor closes it, so make sure you call that. +class CDB +{ +public: + CDB(const string &cdbfile); + ~CDB(); + + /* Return negative value on error or non-negative value on success. + Values can be retrieved via readNext() */ + int searchKey(const string &key); + bool searchSuffix(const string &key); + void searchAll(); + bool readNext(pair<string, string> &value); + vector<string> findall(string &key); + bool keyExists(const string& key); + bool findOne(const string& key, string& value); + +private: + bool moveToNext(); + + int d_fd{-1}; + struct cdb d_cdb; + struct cdb_find d_cdbf; + std::string d_key; + unsigned d_seqPtr{0}; + enum SearchType { SearchSuffix, SearchKey, SearchAll } d_searchType{SearchKey}; +}; + +class CDBWriter +{ +public: + /* we own the fd after this call, don't ever touch it */ + CDBWriter(int fd); + ~CDBWriter(); + + bool addEntry(const std::string& key, const std::string& value); + /* finalize the database and close the fd, the only thing you can do now is to call the destructor */ + void close(); + +private: + struct cdb_make d_cdbm; + int d_fd{-1}; +}; diff --git a/circular_buffer.hh b/circular_buffer.hh new file mode 100644 index 0000000..eb1dbb9 --- /dev/null +++ b/circular_buffer.hh @@ -0,0 +1,38 @@ +/* + * This file is part of PowerDNS or dnsdist. + * Copyright -- PowerDNS.COM B.V. and its contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * In addition, for the avoidance of any doubt, permission is granted to + * link this program with OpenSSL and to (re)distribute the binaries + * produced as the result of such linking. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#pragma once + +// Disable the non-threadsafe debug code in boost::circular_buffer before 1.62 +#define BOOST_CB_DISABLE_DEBUG 1 + +// Make sure it is also disabled when >= 1.62 +#ifndef BOOST_CB_ENABLE_DEBUG +#define BOOST_CB_ENABLE_DEBUG 0 +#endif + +#if BOOST_CB_ENABLE_DEBUG +// https://github.com/boostorg/circular_buffer/pull/9 +// https://svn.boost.org/trac10/ticket/6277 +#error Building with BOOST_CB_ENABLE_DEBUG prevents accessing a boost::circular_buffer from more than one thread at once +#endif /* BOOST_CB_ENABLE_DEBUG */ + +#include <boost/circular_buffer.hpp> @@ -0,0 +1,348 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Written by Tom Tromey <tromey@cygnus.com>. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, 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 <https://www.gnu.org/licenses/>. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to <bug-automake@gnu.org> or send patches to +# <automake-patches@gnu.org>. + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to <bug-automake@gnu.org>. +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/config.guess b/config.guess new file mode 100755 index 0000000..256083a --- /dev/null +++ b/config.guess @@ -0,0 +1,1476 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2018 Free Software Foundation, Inc. + +timestamp='2018-03-08' + +# This file 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 <https://www.gnu.org/licenses/>. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to <config-patches@gnu.org>. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2018 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > "$dummy.c" ; + for c in cc gcc c89 c99 ; do + if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "$UNAME_SYSTEM" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval "$set_cc_for_build" + cat <<-EOF > "$dummy.c" + #include <features.h> + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + + # If ldd exists, use it to detect musl libc. + if command -v ldd >/dev/null && \ + ldd --version 2>&1 | grep -q ^musl + then + LIBC=musl + fi + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ + echo unknown)` + case "$UNAME_MACHINE_ARCH" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine="${arch}${endian}"-unknown + ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case "$UNAME_MACHINE_ARCH" in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval "$set_cc_for_build" + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "$UNAME_MACHINE_ARCH" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "$UNAME_VERSION" in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "$machine-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" + exit ;; + *:MidnightBSD:*:*) + echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" + exit ;; + *:ekkoBSD:*:*) + echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" + exit ;; + *:SolidBSD:*:*) + echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:MirBSD:*:*) + echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:Sortix:*:*) + echo "$UNAME_MACHINE"-unknown-sortix + exit ;; + *:Redox:*:*) + echo "$UNAME_MACHINE"-unknown-redox + exit ;; + mips:OSF1:*.*) + echo mips-dec-osf1 + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix"$UNAME_RELEASE" + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux"$UNAME_RELEASE" + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval "$set_cc_for_build" + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos"$UNAME_RELEASE" + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos"$UNAME_RELEASE" + ;; + sun4) + echo sparc-sun-sunos"$UNAME_RELEASE" + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos"$UNAME_RELEASE" + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint"$UNAME_RELEASE" + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint"$UNAME_RELEASE" + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint"$UNAME_RELEASE" + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten"$UNAME_RELEASE" + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten"$UNAME_RELEASE" + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix"$UNAME_RELEASE" + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix"$UNAME_RELEASE" + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix"$UNAME_RELEASE" + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include <stdio.h> /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos"$UNAME_RELEASE" + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + then + if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ + [ "$TARGET_BINARY_INTERFACE"x = x ] + then + echo m88k-dg-dgux"$UNAME_RELEASE" + else + echo m88k-dg-dguxbcs"$UNAME_RELEASE" + fi + else + echo i586-dg-dgux"$UNAME_RELEASE" + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #include <sys/systemcfg.h> + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$IBM_ARCH"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + case "$UNAME_MACHINE" in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "$sc_cpu_version" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "$sc_kernel_bits" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "$HP_ARCH" = "" ]; then + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include <stdlib.h> + #include <unistd.h> + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ "$HP_ARCH" = hppa2.0w ] + then + eval "$set_cc_for_build" + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + echo "$HP_ARCH"-hp-hpux"$HPUX_REV" + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux"$HPUX_REV" + exit ;; + 3050*:HI-UX:*:*) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #include <unistd.h> + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo "$UNAME_MACHINE"-unknown-osf1mk + else + echo "$UNAME_MACHINE"-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi"$UNAME_RELEASE" + exit ;; + *:BSD/OS:*:*) + echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case "$UNAME_PROCESSOR" in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; + i*:CYGWIN*:*) + echo "$UNAME_MACHINE"-pc-cygwin + exit ;; + *:MINGW64*:*) + echo "$UNAME_MACHINE"-pc-mingw64 + exit ;; + *:MINGW*:*) + echo "$UNAME_MACHINE"-pc-mingw32 + exit ;; + *:MSYS*:*) + echo "$UNAME_MACHINE"-pc-msys + exit ;; + i*:PW*:*) + echo "$UNAME_MACHINE"-pc-pw32 + exit ;; + *:Interix*:*) + case "$UNAME_MACHINE" in + x86) + echo i586-pc-interix"$UNAME_RELEASE" + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix"$UNAME_RELEASE" + exit ;; + IA64) + echo ia64-unknown-interix"$UNAME_RELEASE" + exit ;; + esac ;; + i*:UWIN*:*) + echo "$UNAME_MACHINE"-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + *:GNU:*:*) + # the GNU system + echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" + exit ;; + i*86:Minix:*:*) + echo "$UNAME_MACHINE"-pc-minix + exit ;; + aarch64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arm*:Linux:*:*) + eval "$set_cc_for_build" + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + else + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + cris:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + crisv32:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + e2k:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + frv:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + hexagon:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:Linux:*:*) + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + exit ;; + ia64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + k1om:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m32r*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m68*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" + test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } + ;; + mips64el:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-"$LIBC" + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-"$LIBC" + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-"$LIBC" + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; + PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; + *) echo hppa-unknown-linux-"$LIBC" ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-"$LIBC" + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-"$LIBC" + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-"$LIBC" + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-"$LIBC" + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" + exit ;; + sh64*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sh*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + tile*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + vax:Linux:*:*) + echo "$UNAME_MACHINE"-dec-linux-"$LIBC" + exit ;; + x86_64:Linux:*:*) + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + exit ;; + xtensa*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo "$UNAME_MACHINE"-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo "$UNAME_MACHINE"-unknown-stop + exit ;; + i*86:atheos:*:*) + echo "$UNAME_MACHINE"-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo "$UNAME_MACHINE"-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos"$UNAME_RELEASE" + exit ;; + i*86:*DOS:*:*) + echo "$UNAME_MACHINE"-pc-msdosdjgpp + exit ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` + echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL" + elif /bin/uname -X 2>/dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos"$UNAME_RELEASE" + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos"$UNAME_RELEASE" + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv"$UNAME_RELEASE" + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo "$UNAME_MACHINE"-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Richard.M.Bartel@ccMail.Census.GOV> + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes <hewes@openmarket.com>. + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo "$UNAME_MACHINE"-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux"$UNAME_RELEASE" + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv"$UNAME_RELEASE" + else + echo mips-unknown-sysv"$UNAME_RELEASE" + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux"$UNAME_RELEASE" + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux"$UNAME_RELEASE" + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux"$UNAME_RELEASE" + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux"$UNAME_RELEASE" + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux"$UNAME_RELEASE" + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Rhapsody:*:*) + echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval "$set_cc_for_build" + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-*:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSR-*:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSV-*:NONSTOP_KERNEL:*:*) + echo nsv-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk"$UNAME_RELEASE" + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = 386; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo "$UNAME_MACHINE"-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux"$UNAME_RELEASE" + exit ;; + *:DragonFly:*:*) + echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "$UNAME_MACHINE" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" + exit ;; + i*86:rdos:*:*) + echo "$UNAME_MACHINE"-pc-rdos + exit ;; + i*86:AROS:*:*) + echo "$UNAME_MACHINE"-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo "$UNAME_MACHINE"-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; +esac + +echo "$0: unable to guess system type" >&2 + +case "$UNAME_MACHINE:$UNAME_SYSTEM" in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <<EOF + +NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize +the system type. Please install a C compiler and try again. +EOF + ;; +esac + +cat >&2 <<EOF + +This script (version $timestamp), has failed to recognize the +operating system you are using. If your script is old, overwrite *all* +copies of config.guess and config.sub with the latest versions from: + + https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +and + https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +If $0 has already been updated, send the following data and any +information you think might be pertinent to config-patches@gnu.org to +provide the necessary information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..ba3a020 --- /dev/null +++ b/config.h.in @@ -0,0 +1,307 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* This is dnsdist */ +#undef DNSDIST + +/* Define to 1 if you have the `accept4' function. */ +#undef HAVE_ACCEPT4 + +/* Defined if the requested minimum BOOST version is satisfied */ +#undef HAVE_BOOST + +/* Define to 1 if you have <boost/test/unit_test.hpp> */ +#undef HAVE_BOOST_TEST_UNIT_TEST_HPP + +/* Defined if the Boost unit_test_framework library is available */ +#undef HAVE_BOOST_UNIT_TEST_FRAMEWORK + +/* Define to 1 if you have CDB */ +#undef HAVE_CDB + +/* Define to 1 if you have the <cdb.h> header file. */ +#undef HAVE_CDB_H + +/* Define to 1 if you have clock_gettime */ +#undef HAVE_CLOCK_GETTIME + +/* Define to 1 if you have the `crypto_box_curve25519xchacha20poly1305_easy' + function. */ +#undef HAVE_CRYPTO_BOX_CURVE25519XCHACHA20POLY1305_EASY + +/* Define to 1 if you have the `crypto_box_easy_afternm' function. */ +#undef HAVE_CRYPTO_BOX_EASY_AFTERNM + +/* Define to 1 if you have the `CRYPTO_memcmp' function. */ +#undef HAVE_CRYPTO_MEMCMP + +/* define if the compiler supports basic C++11 syntax */ +#undef HAVE_CXX11 + +/* Define to 1 if you have the declaration of + `h2o_socket_get_ssl_server_name', and to 0 if you don't. */ +#undef HAVE_DECL_H2O_SOCKET_GET_SSL_SERVER_NAME + +/* Define to 1 if you have the declaration of `snmp_select_info2', and to 0 if + you don't. */ +#undef HAVE_DECL_SNMP_SELECT_INFO2 + +/* Define to 1 if you have the <dlfcn.h> header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you enable dnscrypt support */ +#undef HAVE_DNSCRYPT + +/* Define to 1 if you enable DNS over HTTPS support */ +#undef HAVE_DNS_OVER_HTTPS + +/* Define to 1 if you enable DNS over TLS support */ +#undef HAVE_DNS_OVER_TLS + +/* Define if using eBPF. */ +#undef HAVE_EBPF + +/* Define to 1 if you have the `EVP_MD_CTX_free' function. */ +#undef HAVE_EVP_MD_CTX_FREE + +/* Define to 1 if you have the `EVP_MD_CTX_new' function. */ +#undef HAVE_EVP_MD_CTX_NEW + +/* Define to 1 if you have the `explicit_bzero' function. */ +#undef HAVE_EXPLICIT_BZERO + +/* Define to 1 if you have the `explicit_memset' function. */ +#undef HAVE_EXPLICIT_MEMSET + +/* Define if ASAN fiber annotation interface is available. */ +#undef HAVE_FIBER_SANITIZER + +/* Define to 1 if you have libfstrm */ +#undef HAVE_FSTRM + +/* Define to 1 if you have the `fstrm_tcp_writer_init' function. */ +#undef HAVE_FSTRM_TCP_WRITER_INIT + +/* Define to 1 if you have the `gmtime_r' function. */ +#undef HAVE_GMTIME_R + +/* Define to 1 if you have GnuTLS */ +#undef HAVE_GNUTLS + +/* Define to 1 if you have the `gnutls_memset' function. */ +#undef HAVE_GNUTLS_MEMSET + +/* define to 1 if h2o_socket_get_ssl_server_name is available. */ +#undef HAVE_H2O_SOCKET_GET_SSL_SERVER_NAME + +/* Define to 1 if you have the <inttypes.h> header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have libcap */ +#undef HAVE_LIBCAP + +/* Define to 1 if you have OpenSSL libcrypto */ +#undef HAVE_LIBCRYPTO + +/* Define to 1 if you have libh2o-evloop */ +#undef HAVE_LIBH2OEVLOOP + +/* Define to 1 if you have libsodium */ +#undef HAVE_LIBSODIUM + +/* Define to 1 if you have OpenSSL libssl */ +#undef HAVE_LIBSSL + +/* Define to 1 if you have the <linux/bpf.h> header file. */ +#undef HAVE_LINUX_BPF_H + +/* Define to 1 if you have LMDB */ +#undef HAVE_LMDB + +/* Define to 1 if you have the <lmdb.h> header file. */ +#undef HAVE_LMDB_H + +/* Define to 1 if you have the `localtime_r' function. */ +#undef HAVE_LOCALTIME_R + +/* Define to 1 if you have lua */ +#undef HAVE_LUA + +/* Define to 1 if you have the <memory.h> header file. */ +#undef HAVE_MEMORY_H + +/* Define if using Net SNMP. */ +#undef HAVE_NET_SNMP + +/* Define to 1 if you have the `OCSP_basic_sign' function. */ +#undef HAVE_OCSP_BASIC_SIGN + +/* Define to 1 if you have the `OPENSSL_init_crypto' function. */ +#undef HAVE_OPENSSL_INIT_CRYPTO + +/* Define if using protobuf. */ +#undef HAVE_PROTOBUF + +/* Define to 1 if you have the <pthread_np.h> header file. */ +#undef HAVE_PTHREAD_NP_H + +/* Define to 1 if you have pthread_setaffinity_np */ +#undef HAVE_PTHREAD_SETAFFINITY_NP + +/* 1-arg pthread_setname_np */ +#undef HAVE_PTHREAD_SETNAME_NP_1 + +/* 2-arg pthread_setname_np */ +#undef HAVE_PTHREAD_SETNAME_NP_2 + +/* 3-arg pthread_setname_np */ +#undef HAVE_PTHREAD_SETNAME_NP_3 + +/* 2-arg pthread_set_name_np */ +#undef HAVE_PTHREAD_SET_NAME_NP_2 + +/* 2-arg void pthread_set_name_np */ +#undef HAVE_PTHREAD_SET_NAME_NP_2_VOID + +/* Define to 1 if you have the `randombytes_stir' function. */ +#undef HAVE_RANDOMBYTES_STIR + +/* Define to 1 if you have the `RAND_bytes' function. */ +#undef HAVE_RAND_BYTES + +/* Define to 1 if you have the `RAND_pseudo_bytes' function. */ +#undef HAVE_RAND_PSEUDO_BYTES + +/* Define if using RE2. */ +#undef HAVE_RE2 + +/* Define to 1 if you have the `recvmmsg' function. */ +#undef HAVE_RECVMMSG + +/* Define to 1 if you have the `RSA_get0_key' function. */ +#undef HAVE_RSA_GET0_KEY + +/* Define to 1 if you have the <sanitizer/common_interface_defs.h> header + file. */ +#undef HAVE_SANITIZER_COMMON_INTERFACE_DEFS_H + +/* Define to 1 if __sanitizer_finish_switch_fiber takes only a pointer */ +#undef HAVE_SANITIZER_FINISH_SWITCH_FIBER_SINGLE_PTR + +/* Define to 1 if __sanitizer_finish_switch_fiber takes three pointers */ +#undef HAVE_SANITIZER_FINISH_SWITCH_FIBER_THREE_PTRS + +/* Define to 1 if you have the `sendmmsg' function. */ +#undef HAVE_SENDMMSG + +/* define to 1 if snmp_select_info2 is available. */ +#undef HAVE_SNMP_SELECT_INFO2 + +/* Define to 1 if you have the `SSL_CTX_get0_privatekey' function. */ +#undef HAVE_SSL_CTX_GET0_PRIVATEKEY + +/* Define to 1 if you have the `SSL_CTX_set_ciphersuites' function. */ +#undef HAVE_SSL_CTX_SET_CIPHERSUITES + +/* Define to 1 if you have the `SSL_CTX_set_keylog_callback' function. */ +#undef HAVE_SSL_CTX_SET_KEYLOG_CALLBACK + +/* Define to 1 if you have the `SSL_CTX_set_min_proto_version' function. */ +#undef HAVE_SSL_CTX_SET_MIN_PROTO_VERSION + +/* Define to 1 if you have the `SSL_CTX_set_num_tickets' function. */ +#undef HAVE_SSL_CTX_SET_NUM_TICKETS + +/* Define to 1 if you have the <stdint.h> header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the <stdlib.h> header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the <strings.h> header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the <string.h> header file. */ +#undef HAVE_STRING_H + +/* Systemd available and enabled */ +#undef HAVE_SYSTEMD + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the <sys/types.h> header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the <unistd.h> header file. */ +#undef HAVE_UNISTD_H + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#undef LT_OBJDIR + +/* If your OS is so broken that it needs an additional prototype */ +#undef NEED_INET_NTOP_PROTO + +/* If POSIX typedefs need to be defined */ +#undef NEED_POSIX_TYPEDEF + +/* Name of package */ +#undef PACKAGE + +/* Set to the package version used for secpoll */ +#undef PACKAGEVERSION + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif + + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if on MINIX. */ +#undef _MINIX + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +#undef _POSIX_SOURCE diff --git a/config.sub b/config.sub new file mode 100755 index 0000000..9ccf09a --- /dev/null +++ b/config.sub @@ -0,0 +1,1801 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2018 Free Software Foundation, Inc. + +timestamp='2018-03-08' + +# This file 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 <https://www.gnu.org/licenses/>. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to <config-patches@gnu.org>. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2018 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo "$1" | sed 's/-[^-]*$//'` + if [ "$basic_machine" != "$1" ] + then os=`echo "$1" | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pru \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | wasm32 \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pru-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | wasm32-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-pc + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2*) + basic_machine=m68k-bull + os=-sysv3 + ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=$os"spe" + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + nsv-tandem) + basic_machine=nsv-tandem + ;; + nsx-tandem) + basic_machine=nsx-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + x64) + basic_machine=x86_64-pc + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases that might get confused + # with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # es1800 is here to avoid being matched by es* (a different OS) + -es1800*) + os=-ose + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* | -hcos* \ + | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \ + | -midnightbsd*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -xray | -os68k* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo "$os" | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo "$os" | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo "$os" | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4*) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -pikeos*) + # Until real need of OS specific support for + # particular features comes up, bare metal + # configurations are quite functional. + case $basic_machine in + arm*) + os=-eabi + ;; + *) + os=-elf + ;; + esac + ;; + -nacl*) + ;; + -ios) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + pru-*) + os=-elf + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` + ;; +esac + +echo "$basic_machine$os" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/configure b/configure new file mode 100755 index 0000000..c1ca3d6 --- /dev/null +++ b/configure @@ -0,0 +1,25925 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for dnsdist 1.5.1. +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 </dev/null +exec 6>&1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='dnsdist' +PACKAGE_TARNAME='dnsdist' +PACKAGE_VERSION='1.5.1' +PACKAGE_STRING='dnsdist 1.5.1' +PACKAGE_BUGREPORT='' +PACKAGE_URL='' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include <stdio.h> +#ifdef HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# ifdef HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#ifdef HAVE_STRINGS_H +# include <strings.h> +#endif +#ifdef HAVE_INTTYPES_H +# include <inttypes.h> +#endif +#ifdef HAVE_STDINT_H +# include <stdint.h> +#endif +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif" + +ac_func_list= +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +PACKAGEVERSION +AM_CPPFLAGS +PROGRAM_LDFLAGS +HAVE_MANPAGES_FALSE +HAVE_MANPAGES_TRUE +HAVE_VIRTUALENV_FALSE +HAVE_VIRTUALENV_TRUE +VIRTUALENV +WARN_CFLAGS +SANITIZER_FLAGS +RELRO_LDFLAGS +PIE_LDFLAGS +PIE_CFLAGS +HAVE_CXX11 +LMDB_LIBS +LMDB_CFLAGS +CDB_LIBS +CDB_CFLAGS +HAVE_LIBH2OEVLOOP_FALSE +HAVE_LIBH2OEVLOOP_TRUE +LIBH2OEVLOOP_LIBS +LIBH2OEVLOOP_CFLAGS +GNUTLS_LIBS +GNUTLS_CFLAGS +LIBSSL_LIBS +LIBSSL_CFLAGS +HAVE_DNS_OVER_HTTPS_FALSE +HAVE_DNS_OVER_HTTPS_TRUE +HAVE_DNS_OVER_TLS_FALSE +HAVE_DNS_OVER_TLS_TRUE +HAVE_LIBCRYPTO_FALSE +HAVE_LIBCRYPTO_TRUE +LIBCRYPTO_LDFLAGS +LIBCRYPTO_LIBS +LIBCRYPTO_INCLUDES +HAVE_CDB_FALSE +HAVE_CDB_TRUE +HAVE_LMDB_FALSE +HAVE_LMDB_TRUE +HAVE_LIBSSL_FALSE +HAVE_LIBSSL_TRUE +HAVE_GNUTLS_FALSE +HAVE_GNUTLS_TRUE +HAVE_LUA_HPP_FALSE +HAVE_LUA_HPP_TRUE +LUA_FALSE +LUA_TRUE +LUA_LIBS +LUA_CFLAGS +IPCRYPT_LIBS +IPCRYPT_CFLAGS +YAHTTP_LIBS +YAHTTP_CFLAGS +service_group +service_user +HAVE_SYSTEMD_FALSE +HAVE_SYSTEMD_TRUE +HAVE_SYSTEMD_SYSTEM_CALL_FILTER_FALSE +HAVE_SYSTEMD_SYSTEM_CALL_FILTER_TRUE +HAVE_SYSTEMD_SYSTEM_CALL_ARCHITECTURES_FALSE +HAVE_SYSTEMD_SYSTEM_CALL_ARCHITECTURES_TRUE +HAVE_SYSTEMD_RESTRICT_SUIDSGID_FALSE +HAVE_SYSTEMD_RESTRICT_SUIDSGID_TRUE +HAVE_SYSTEMD_RESTRICT_REALTIME_FALSE +HAVE_SYSTEMD_RESTRICT_REALTIME_TRUE +HAVE_SYSTEMD_RESTRICT_NAMESPACES_FALSE +HAVE_SYSTEMD_RESTRICT_NAMESPACES_TRUE +HAVE_SYSTEMD_RESTRICT_ADDRESS_FAMILIES_FALSE +HAVE_SYSTEMD_RESTRICT_ADDRESS_FAMILIES_TRUE +HAVE_SYSTEMD_REMOVE_IPC_FALSE +HAVE_SYSTEMD_REMOVE_IPC_TRUE +HAVE_SYSTEMD_PROTECT_SYSTEM_STRICT_FALSE +HAVE_SYSTEMD_PROTECT_SYSTEM_STRICT_TRUE +HAVE_SYSTEMD_PROTECT_SYSTEM_FALSE +HAVE_SYSTEMD_PROTECT_SYSTEM_TRUE +HAVE_SYSTEMD_PROTECT_KERNEL_TUNABLES_FALSE +HAVE_SYSTEMD_PROTECT_KERNEL_TUNABLES_TRUE +HAVE_SYSTEMD_PROTECT_KERNEL_MODULES_FALSE +HAVE_SYSTEMD_PROTECT_KERNEL_MODULES_TRUE +HAVE_SYSTEMD_PROTECT_HOME_FALSE +HAVE_SYSTEMD_PROTECT_HOME_TRUE +HAVE_SYSTEMD_PROTECT_CONTROL_GROUPS_FALSE +HAVE_SYSTEMD_PROTECT_CONTROL_GROUPS_TRUE +HAVE_SYSTEMD_PRIVATE_USERS_FALSE +HAVE_SYSTEMD_PRIVATE_USERS_TRUE +HAVE_SYSTEMD_PRIVATE_TMP_FALSE +HAVE_SYSTEMD_PRIVATE_TMP_TRUE +HAVE_SYSTEMD_PRIVATE_DEVICES_FALSE +HAVE_SYSTEMD_PRIVATE_DEVICES_TRUE +HAVE_SYSTEMD_MEMORY_DENY_WRITE_EXECUTE_FALSE +HAVE_SYSTEMD_MEMORY_DENY_WRITE_EXECUTE_TRUE +HAVE_SYSTEMD_LOCK_PERSONALITY_FALSE +HAVE_SYSTEMD_LOCK_PERSONALITY_TRUE +HAVE_SYSTEMD_DYNAMIC_USER_FALSE +HAVE_SYSTEMD_DYNAMIC_USER_TRUE +SYSTEMCTL +SYSTEMD_LIBS +SYSTEMD_CFLAGS +SYSTEMD_MODULES_LOAD +SYSTEMD_DIR +systemd +HAVE_LIBCAP_FALSE +HAVE_LIBCAP_TRUE +LIBCAP_LIBS +LIBCAP_CFLAGS +HAVE_NET_SNMP_FALSE +HAVE_NET_SNMP_TRUE +NET_SNMP_LIBS +NET_SNMP_CFLAGS +HAVE_EBPF_FALSE +HAVE_EBPF_TRUE +DNSCRYPT_FALSE +DNSCRYPT_TRUE +HAVE_RE2_FALSE +HAVE_RE2_TRUE +RE2_LIBS +RE2_CFLAGS +BOOST_UNIT_TEST_FRAMEWORK_LIBS +BOOST_LDPATH +BOOST_UNIT_TEST_FRAMEWORK_LDPATH +BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS +UNIT_TESTS_FALSE +UNIT_TESTS_TRUE +BOOST_CPPFLAGS +DISTCHECK_CONFIGURE_FLAGS +BOOST_ROOT +HAVE_PROTOC_FALSE +HAVE_PROTOC_TRUE +HAVE_PROTOBUF_FALSE +HAVE_PROTOBUF_TRUE +PROTOC +PROTOBUF_LIBS +PROTOBUF_CFLAGS +DYNLINKFLAGS +THREADFLAGS +HAVE_SOLARIS_FALSE +HAVE_SOLARIS_TRUE +HAVE_LINUX_FALSE +HAVE_LINUX_TRUE +HAVE_FREEBSD_FALSE +HAVE_FREEBSD_TRUE +RT_LIBS +LIBEDIT_LIBS +LIBEDIT_CFLAGS +RAGEL +FSTRM_FALSE +FSTRM_TRUE +FSTRM_LIBS +FSTRM_CFLAGS +LIBSODIUM_FALSE +LIBSODIUM_TRUE +LIBSODIUM_LIBS +LIBSODIUM_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +host_os +host_vendor |