1 //-------------------------------------------------------------------------- 2 // Copyright (C) 2014-2021 Cisco and/or its affiliates. All rights reserved. 3 // 4 // This program is free software; you can redistribute it and/or modify it 5 // under the terms of the GNU General Public License Version 2 as published 6 // by the Free Software Foundation. You may not use, modify or distribute 7 // this program under any other version of the GNU General Public License. 8 // 9 // This program is distributed in the hope that it will be useful, but 10 // WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 // General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License along 15 // with this program; if not, write to the Free Software Foundation, Inc., 16 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 17 //-------------------------------------------------------------------------- 18 // codec_api.cc author Josh Rosenbaum <jrosenba@cisco.com> 19 20 #ifdef HAVE_CONFIG_H 21 #include "config.h" 22 #endif 23 24 #include "codec_api.h" 25 26 #include "framework/codec.h" 27 #include "managers/plugin_manager.h" 28 29 using namespace snort; 30 31 extern const BaseApi* cd_ipv4[]; // static due to dependence on fpdetect 32 extern const BaseApi* cd_hopopts[]; // static to ensure the symbols CheckIPV6HopOptions 33 // and CheckIPv6ExtensionOrder the final executable. 34 extern const BaseApi* cd_tcp[]; // static because only file that specific functions 35 // (symbols will be removed from final executable) 36 37 #ifdef STATIC_CODECS 38 extern const BaseApi* cd_ah[]; 39 extern const BaseApi* cd_arp[]; 40 extern const BaseApi* cd_bad_proto[]; 41 extern const BaseApi* cd_ciscometadata[]; 42 extern const BaseApi* cd_dstopts[]; 43 extern const BaseApi* cd_erspan2[]; 44 extern const BaseApi* cd_erspan3[]; 45 extern const BaseApi* cd_esp[]; 46 extern const BaseApi* cd_eth[]; 47 extern const BaseApi* cd_fabricpath[]; 48 extern const BaseApi* cd_frag[]; 49 extern const BaseApi* cd_geneve[]; 50 extern const BaseApi* cd_gre[]; 51 extern const BaseApi* cd_gtp[]; 52 extern const BaseApi* cd_icmp4[]; 53 extern const BaseApi* cd_icmp4_ip[]; 54 extern const BaseApi* cd_icmp6[]; 55 extern const BaseApi* cd_icmp6_ip[]; 56 extern const BaseApi* cd_ipv6[]; 57 extern const BaseApi* cd_igmp[]; 58 extern const BaseApi* cd_llc[]; 59 extern const BaseApi* cd_mobility[]; 60 extern const BaseApi* cd_mpls[]; 61 extern const BaseApi* cd_no_next[]; 62 extern const BaseApi* cd_pgm[]; 63 extern const BaseApi* cd_pppencap[]; 64 extern const BaseApi* cd_pppoepkt[]; 65 extern const BaseApi* cd_raw[]; 66 extern const BaseApi* cd_routing[]; 67 extern const BaseApi* cd_teredo[]; 68 extern const BaseApi* cd_transbridge[]; 69 extern const BaseApi* cd_udp[]; 70 extern const BaseApi* cd_user[]; 71 extern const BaseApi* cd_vlan[]; 72 extern const BaseApi* cd_vxlan[]; 73 #endif 74 load_codecs()75void load_codecs() 76 { 77 PluginManager::load_plugins(cd_ipv4); 78 PluginManager::load_plugins(cd_tcp); 79 PluginManager::load_plugins(cd_hopopts); 80 81 #ifdef STATIC_CODECS 82 PluginManager::load_plugins(cd_ah); 83 PluginManager::load_plugins(cd_arp); 84 PluginManager::load_plugins(cd_bad_proto); 85 PluginManager::load_plugins(cd_ciscometadata); 86 PluginManager::load_plugins(cd_dstopts); 87 PluginManager::load_plugins(cd_erspan2); 88 PluginManager::load_plugins(cd_erspan3); 89 PluginManager::load_plugins(cd_esp); 90 PluginManager::load_plugins(cd_eth); 91 PluginManager::load_plugins(cd_fabricpath); 92 PluginManager::load_plugins(cd_frag); 93 PluginManager::load_plugins(cd_geneve); 94 PluginManager::load_plugins(cd_gre); 95 PluginManager::load_plugins(cd_gtp); 96 PluginManager::load_plugins(cd_icmp4); 97 PluginManager::load_plugins(cd_icmp4_ip); 98 PluginManager::load_plugins(cd_icmp6); 99 PluginManager::load_plugins(cd_icmp6_ip); 100 PluginManager::load_plugins(cd_ipv6); 101 PluginManager::load_plugins(cd_igmp); 102 PluginManager::load_plugins(cd_llc); 103 PluginManager::load_plugins(cd_mobility); 104 PluginManager::load_plugins(cd_mpls); 105 PluginManager::load_plugins(cd_no_next); 106 PluginManager::load_plugins(cd_pgm); 107 PluginManager::load_plugins(cd_pppencap); 108 PluginManager::load_plugins(cd_pppoepkt); 109 PluginManager::load_plugins(cd_raw); 110 PluginManager::load_plugins(cd_routing); 111 PluginManager::load_plugins(cd_teredo); 112 PluginManager::load_plugins(cd_transbridge); 113 PluginManager::load_plugins(cd_udp); 114 PluginManager::load_plugins(cd_user); 115 PluginManager::load_plugins(cd_vlan); 116 PluginManager::load_plugins(cd_vxlan); 117 #endif 118 } 119 120