Skip to content
Extraits de code Groupes Projets
Valider c0b80761 rédigé par François De Keersmaeker's avatar François De Keersmaeker
Parcourir les fichiers

Translator: added argument for nfqueue name

parent c240899a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -6,7 +6,5 @@ ...@@ -6,7 +6,5 @@
build build
bin bin
devices
# Python cache # Python cache
__pycache__ __pycache__
...@@ -37,7 +37,6 @@ set(PARSERS header dns dhcp http igmp ssdp coap) ...@@ -37,7 +37,6 @@ set(PARSERS header dns dhcp http igmp ssdp coap)
# Subdirectories containing code # Subdirectories containing code
add_subdirectory(src) add_subdirectory(src)
add_subdirectory(devices)
IF( NOT OPENWRT_CROSSCOMPILING ) IF( NOT OPENWRT_CROSSCOMPILING )
add_subdirectory(test) add_subdirectory(test)
ENDIF() ENDIF()
...@@ -4,12 +4,12 @@ cmake_minimum_required(VERSION 3.20) ...@@ -4,12 +4,12 @@ cmake_minimum_required(VERSION 3.20)
set(EXECUTABLE_OUTPUT_PATH ${BIN_DIR}) set(EXECUTABLE_OUTPUT_PATH ${BIN_DIR})
# Nfqueue C file for device {{device}} # Nfqueue C file for device {{device}}
add_executable({{device}} nfqueues.c) add_executable({{nfqueue_name}} nfqueues.c)
target_link_libraries({{device}} pthread) target_link_libraries({{nfqueue_name}} pthread)
IF( OPENWRT_CROSSCOMPILING ) IF( OPENWRT_CROSSCOMPILING )
target_link_libraries({{device}} jansson mnl nfnetlink nftnl nftables netfilter_queue netfilter_log) target_link_libraries({{nfqueue_name}} jansson mnl nfnetlink nftnl nftables netfilter_queue netfilter_log)
ENDIF() ENDIF()
target_link_libraries({{device}} nfqueue packet_utils rule_utils) target_link_libraries({{nfqueue_name}} nfqueue packet_utils rule_utils)
target_link_libraries({{device}} ${PARSERS}) target_link_libraries({{nfqueue_name}} ${PARSERS})
target_include_directories({{device}} PRIVATE ${INCLUDE_DIR} ${INCLUDE_PARSERS_DIR}) target_include_directories({{nfqueue_name}} PRIVATE ${INCLUDE_DIR} ${INCLUDE_PARSERS_DIR})
install(TARGETS {{device}} DESTINATION ${EXECUTABLE_OUTPUT_PATH}) install(TARGETS {{nfqueue_name}} DESTINATION ${EXECUTABLE_OUTPUT_PATH})
...@@ -128,6 +128,7 @@ if __name__ == "__main__": ...@@ -128,6 +128,7 @@ if __name__ == "__main__":
description = "Translate a device YAML profile to the corresponding pair of NFTables firewall script and NFQueue C source code." description = "Translate a device YAML profile to the corresponding pair of NFTables firewall script and NFQueue C source code."
parser = argparse.ArgumentParser(description=description) parser = argparse.ArgumentParser(description=description)
parser.add_argument("profile", type=str, help="Path to the device YAML profile") parser.add_argument("profile", type=str, help="Path to the device YAML profile")
parser.add_argument("-n", "--name", type=str, help="Name of the device's NFQueue")
parser.add_argument("-q", "--nfqueue", type=uint16, default=0, help="NFQueue start index for this profile's policies (must be an integer between 0 and 65535)") parser.add_argument("-q", "--nfqueue", type=uint16, default=0, help="NFQueue start index for this profile's policies (must be an integer between 0 and 65535)")
parser.add_argument("-o", "--output", type=directory, help="Output directory for the generated files") parser.add_argument("-o", "--output", type=directory, help="Output directory for the generated files")
# Verdict modes # Verdict modes
...@@ -173,6 +174,9 @@ if __name__ == "__main__": ...@@ -173,6 +174,9 @@ if __name__ == "__main__":
# Get device info # Get device info
device = profile["device-info"] device = profile["device-info"]
# Set device's NFQueue name if not provided as argument
args.name = args.name if args.name is not None else device["name"]
# Base nfqueue id, will be incremented at each interaction # Base nfqueue id, will be incremented at each interaction
nfq_id = args.nfqueue nfq_id = args.nfqueue
...@@ -184,7 +188,7 @@ if __name__ == "__main__": ...@@ -184,7 +188,7 @@ if __name__ == "__main__":
} }
# Loop over the device's individual policies ## Loop over the device's individual policies
if "single-policies" in profile: if "single-policies" in profile:
for policy_name in profile["single-policies"]: for policy_name in profile["single-policies"]:
profile_data = profile["single-policies"][policy_name] profile_data = profile["single-policies"][policy_name]
...@@ -259,7 +263,10 @@ if __name__ == "__main__": ...@@ -259,7 +263,10 @@ if __name__ == "__main__":
fw.write(main) fw.write(main)
# Create CMake file # Create CMake file
cmake_dict = {"device": device["name"]} cmake_dict = {
"device": device["name"],
"nfqueue_name": args.name
}
env.get_template("CMakeLists.txt.j2").stream(cmake_dict).dump(f"{args.output}/CMakeLists.txt") env.get_template("CMakeLists.txt.j2").stream(cmake_dict).dump(f"{args.output}/CMakeLists.txt")
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter