Name | Type | Description |
---|---|---|
NA_NodeBase | compound module |
Compound module allowing hacked modules. Modificated from NodeBase module. |
// // Copyright (C) 2000 Institut fuer Telematik, Universitaet Karlsruhe // // 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, see <http://www.gnu.org/licenses/>. // // // Copyright (C) 2013 and modified by NESG (Network Engineering and Security Group), http://nesg.ugr.es, // - Gabriel Maciá Fernández (gmacia@ugr.es) // - Leovigildo Sánchez Casado (sancale@ugr.es) // - Rafael A. Rodríguez Gómez (rodgom@ugr.es) // - Roberto Magán Carrión (rmagan@ugr.es) // - Pedro García Teodoro (pgteodor@ugr.es) // - José Camacho Páez (josecamacho@ugr.es) // - Jesús E. Díaz Verdejo (jedv@ugr.es) // package nesg.netattacks.nodes; import inet.util.PcapRecorder; import inet.networklayer.ipv4.RoutingTable; import inet.networklayer.common.InterfaceTable; import inet.mobility.IMobility; import inet.linklayer.IWirelessNic; import inet.linklayer.IWiredNic; import inet.linklayer.IExternalNic; import inet.base.NotificationBoard; import inet.nodes.inet.NetworkLayer; import nesg.netattacks.hackedmodules.networklayer.NA_NetworkLayer; // // Compound module allowing hacked modules. Modificated from NodeBase module. // // Allowed hacked modules: // - NA_NetworkLayer // // @see NA_NetworkLayer, NodeBase // // @author Gabriel Maciá Fernández, gmacia@ugr.es // @date 01/22/2013 module NA_NodeBase { parameters: @display("bgb=611,448"); @node; @labels(node,ethernet-node,wireless-node); int numExtInterfaces = default(0); int numRadios = default(0); // the number of radios in the router. by default no wireless int numPcapRecorders = default(0); // no of PcapRecorders. string mobilityType = default("StationaryMobility"); string routingFile = default(""); bool IPForward = default(true); gates: input radioIn[numRadios] @directIn; inout pppg[] @labels(PPPFrame-conn); inout ethg[] @labels(EtherFrame-conn); submodules: notificationBoard: NotificationBoard { parameters: @display("p=53,194"); } // optional mobility module. Required only if wireless cards are present mobility: <mobilityType> like IMobility if mobilityType != "" && numRadios > 0 { parameters: @display("p=53,121"); } //# Hacked module replacing the normal NetworkLayer INET module for attack purposes. networkLayer: NA_NetworkLayer { parameters: @display("p=329,287;q=queue"); } routingTable: RoutingTable { parameters: @display("p=53,287"); IPForward = IPForward; routingFile = routingFile; } // linklayer interfaceTable: InterfaceTable { parameters: @display("p=53,386"); } pcapRecorder[numPcapRecorders]: PcapRecorder { @display("p=159,259"); } wlan[numRadios]: <default("Ieee80211Nic")> like IWirelessNic { parameters: @display("p=159,386;q=queue"); } eth[sizeof(ethg)]: <default("EthernetInterface")> like IWiredNic { parameters: @display("p=282,386,row,90;q=txQueue"); } ppp[sizeof(pppg)]: <default("PPPInterface")> like IWiredNic { parameters: @display("p=407,386,row,90;q=txQueue"); } ext[numExtInterfaces]: <default("ExtInterface")> like IExternalNic { parameters: @display("p=547,386,row,90;q=txQueue;i=block/ifcard"); } connections allowunconnected: // connections to network outside for i=0..sizeof(radioIn)-1 { radioIn[i] --> wlan[i].radioIn; wlan[i].upperLayerOut --> networkLayer.ifIn++; wlan[i].upperLayerIn <-- networkLayer.ifOut++; } for i=0..sizeof(ethg)-1 { ethg[i] <--> eth[i].phys; eth[i].upperLayerOut --> networkLayer.ifIn++; eth[i].upperLayerIn <-- networkLayer.ifOut++; } for i=0..sizeof(pppg)-1 { pppg[i] <--> ppp[i].phys; ppp[i].upperLayerOut --> networkLayer.ifIn++; ppp[i].upperLayerIn <-- networkLayer.ifOut++; } for i=0..numExtInterfaces-1 { ext[i].upperLayerOut --> networkLayer.ifIn++; ext[i].upperLayerIn <-- networkLayer.ifOut++; } }