/* Copyright (C) 2020-2023 Open Information Security Foundation * * You can copy, redistribute or modify this Program under the terms of * the GNU General Public License version 2 as published by the Free * Software Foundation. * * 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 * version 2 along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ #![allow(clippy::uninlined_format_args)] extern crate proc_macro; use proc_macro::TokenStream; mod applayerevent; mod applayerframetype; /// The `AppLayerEvent` derive macro generates a `AppLayerEvent` trait /// implementation for enums that define AppLayerEvents. /// /// Example usage (DNS app-layer events): /// /// #[derive(AppLayerEvent)] /// enum { /// MalformedData, /// NotRequest, /// NotResponse, /// #[name("reserved_z_flag_set")] /// ZFlagSet, /// } /// /// The enum variants must follow the naming convention of OneTwoThree /// for proper conversion to the name used in rules (one_tow_three) or /// optionally add a name attribute. #[proc_macro_derive(AppLayerEvent, attributes(name))] pub fn derive_app_layer_event(input: TokenStream) -> TokenStream { applayerevent::derive_app_layer_event(input) } #[proc_macro_derive(AppLayerFrameType)] pub fn derive_app_layer_frame_type(input: TokenStream) -> TokenStream { applayerframetype::derive_app_layer_frame_type(input) }