| ####################### |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one or more contributor license |
| # agreements. See the NOTICE file distributed with this work for additional information regarding |
| # copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with the License. You may obtain |
| # a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software distributed under the License |
| # is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express |
| # or implied. See the License for the specific language governing permissions and limitations under |
| # the License. |
| # |
| ####################### |
| |
| # ConfigureTransparentProxy.cmake |
| # |
| # The following variables should be set |
| # |
| # ENABLE_TPROXY to one of AUTO, NO, or a number |
| # TS_USE_POSIX_CAP to a boolean value |
| # |
| # This will define the following variables |
| # |
| # TS_USE_TPROXY |
| # TS_IP_TRANSPARENT |
| # |
| |
| set(TS_IP_TRANSPARENT 0) |
| |
| if(ENABLE_TPROXY STREQUAL "NO") |
| set(TS_USE_TPROXY FALSE) |
| return() |
| endif() |
| |
| if(NOT TS_USE_POSIX_CAP) |
| if(ENABLE_TPROXY STREQUAL "AUTO") |
| set(TS_USE_TPROXY FALSE) |
| else() |
| message(FATAL_ERROR "ENABLE_TPROXY requires POSIX capabilities.") |
| endif() |
| return() |
| endif() |
| |
| if(ENABLE_TPROXY STREQUAL "FORCE") |
| set(TS_USE_TPROXY TRUE) |
| set(TS_IP_TRANSPARENT 19) |
| return() |
| endif() |
| |
| if(ENABLE_TPROXY MATCHES "([0-9]+)") |
| set(TS_USE_TPROXY TRUE) |
| set(TS_IP_TRANSPARENT ${CMAKE_MATCH_1}) |
| return() |
| endif() |
| |
| # If the read fails, it will print out a confusing error. This |
| # is to make it clear why the error is happening in that case. |
| message(STATUS "ENABLE_TPROXY enabled, looking for value in /usr/include/linux/in.h") |
| file(READ "/usr/include/linux/in.h" HEADER_CONTENTS) |
| if(HEADER_CONTENTS MATCHES "#define[ \t]+IP_TRANSPARENT[ \t]+([0-9]+)") |
| set(TS_USE_TPROXY TRUE) |
| set(TS_IP_TRANSPARENT ${CMAKE_MATCH_1}) |
| else() |
| if(ENABLE_TPROXY STREQUAL "AUTO") |
| set(TS_USE_TPROXY FALSE) |
| else() |
| message(FATAL_ERROR "ENABLE_TPROXY on but IP_TRANSPARENT symbol not found") |
| endif() |
| endif() |
| |
| unset(HEADER_CONTENTS) |