⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aodv-uu.h

📁 一种用于AD HOC 无线自组网络上的动态路由的源代码
💻 H
字号:
/***************************************************************************** * * Copyright (C) 2002 Uppsala University. * * 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, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA * * Authors: Bj鰎n Wiberg <bjorn.wiberg@home.se> * *****************************************************************************/#ifndef _AODV_UU_H#define _AODV_UU_H/* Constants for interface queue packet buffering/dropping */#define IFQ_BUFFER 0#define IFQ_DROP 1#define IFQ_DROP_BY_DEST 2/* This is a C++ port of AODV-UU for ns-2 */#ifndef NS_PORT#error "To compile the ported version, NS_PORT must be defined!"#endif /* NS_PORT *//* System-dependent datatypes *//* Needed by some network-related datatypes */#include <sys/types.h>/* Network-related datatypes *//* Needed by <netinet/ip.h> on Sun Solaris */#include <netinet/in_systm.h>/* Header files from ns-2 */#include <common/packet.h>#include <common/timer-handler.h>#include <tools/random.h>#include <trace/cmu-trace.h>#include <queue/priqueue.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>/* Forward declaration needed to be able to reference the class */class AODVUU;/* Global definitions and lib functions */#include "../params.h"#include "../defs.h"#include "../list.h"/* Extract global data types, defines and global declarations */#undef NS_NO_GLOBALS#define NS_NO_DECLARATIONS#include "../timer_queue.h"#include "../aodv_hello.h"#include "../aodv_rerr.h"#include "../aodv_rrep.h"#include "../aodv_rreq.h"#include "../aodv_socket.h"#include "../aodv_timeout.h"#include "../debug.h"#include "../routing_table.h"#include "../seek_list.h"#include "../locality.h"#include "packet_queue.h"#include "packet_input.h"#undef NS_NO_DECLARATIONS/* In ns-2 we don't care about byte order */#undef ntohl#undef htonl#undef htons#undef ntohs#define ntohl(x) x#define htonl(x) x#define htons(x) x#define ntohs(x) x/* Timer class for managing the queue of timers */class TimerQueueTimer : public TimerHandler { public:  TimerQueueTimer(AODVUU *a) : TimerHandler() { agent_ = a; }  virtual void expire(Event *e); protected:  AODVUU *agent_;};/* The AODV-UU routing agent class */class AODVUU : public Agent {  friend class TimerQueueTimer; public:  AODVUU(nsaddr_t id);  ~AODVUU();  void recv(Packet *p, Handler *);  int command(int argc, const char *const *argv);  void packetFailed(Packet *p);  protected:  void interfaceQueue(nsaddr_t next_hop, int action);  void sendPacket(Packet *p, struct in_addr next_hop, double delay);  int startAODVUUAgent();  void scheduleNextEvent();  int gettimeofday(struct timeval *tv, struct timezone *tz);  char *if_indextoname(int ifindex, char *ifname);  Packet *pkt_encapsulate(Packet *p, struct in_addr gw_addr);  Packet *pkt_decapsulate(Packet *p);  int initialized;  TimerQueueTimer tqtimer;  PriQueue *ifqueue;  NsObject *ll; /* Pointer to link layer */  int  node_id;  MobileNode *node_;  NsObject *port_dmux_;  NsObject *wired_target_;/*  Extract method declarations (and occasionally, variables)  from header files*/#define NS_NO_GLOBALS#undef NS_NO_DECLARATIONS#undef _AODV_NEIGHBOR_H#include "../aodv_neighbor.h"#undef _AODV_HELLO_H#include "../aodv_hello.h"#undef _AODV_RERR_H#include "../aodv_rerr.h"#undef _AODV_RREP_H#include "../aodv_rrep.h"#undef _AODV_RREQ_H#include "../aodv_rreq.h"#undef _AODV_SOCKET_H#include "../aodv_socket.h"#undef _AODV_TIMEOUT_H#include "../aodv_timeout.h"#undef _DEBUG_H#include "../debug.h"#undef _ROUTING_TABLE_H#include "../routing_table.h"#undef _SEEK_LIST_H#include "../seek_list.h"#undef _TIMER_QUEUE_H#include "../timer_queue.h"#undef _LOCALITY_H#include "../locality.h"#undef _PACKET_INPUT_H#include "packet_input.h"#undef _PACKET_QUEUE_H#include "packet_queue.h"#undef NS_NO_GLOBALS  /* (Previously global) variables from main.c */  int log_to_file;  int rt_log_interval;  int unidir_hack;  int rreq_gratuitous;  int expanding_ring_search;  int internet_gw_mode;  int local_repair;  int receive_n_hellos;  int hello_jittering;  int optimized_hellos;  int ratelimit;  int llfeedback;  char *progname;  int wait_on_reboot;  struct timer worb_timer;    /* Parameters that are dynamic configuration values: */  int active_route_timeout;  int ttl_start;  int delete_period;  /* From aodv_hello.c */  struct timer hello_timer;  /* From aodv_rreq.c */  list_t rreq_records;  list_t rreq_blacklist;    /* From seek_list.c */  list_t seekhead;    /* From aodv_socket.c */  char recv_buf[RECV_BUF_SIZE];  char send_buf[SEND_BUF_SIZE];  /* From debug.c */  int log_file_fd;  int log_rt_fd;  int log_nmsgs;  int debug;  struct timer rt_log_timer;  /* From defs.h */  struct host_info this_host;  unsigned int dev_indices[MAX_NR_INTERFACES];  inline int ifindex2devindex(unsigned int ifindex);  /* From timer_queue.c */  list_t TQ;};/* From defs.h (needs the AODVUU class declaration) */inline int NS_CLASS ifindex2devindex(unsigned int ifindex){  int i;  for (i = 0; i < this_host.nif; i++)    if (dev_indices[i] == ifindex)      return i;  return -1;}#endif /* AODV_UU_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -