?? dsr-opt.h
字號:
/* Copyright (C) Uppsala University * * This file is distributed under the terms of the GNU general Public * License (GPL), see the file LICENSE * * Author: Erik Nordstr?m, <erikn@it.uu.se> */#ifndef _DSR_OPT_H#define _DSR_OPT_H#ifdef NS2#include <packet.h>#include "endian.h"#endif#include "dsr.h"#ifndef NO_GLOBALS/* Generic header for all options */struct dsr_opt { u_int8_t type; u_int8_t length;};/* The DSR options header (always comes first) */struct dsr_opt_hdr { u_int8_t nh;#if defined(__LITTLE_ENDIAN_BITFIELD) u_int8_t res:7; u_int8_t f:1;#elif defined (__BIG_ENDIAN_BITFIELD) u_int8_t f:1; u_int8_t res:7;#else#error "Please fix <asm/byteorder.h>"#endif u_int16_t p_len; /* payload length */#ifdef NS2 static int offset_; inline static int &offset() { return offset_; } inline static dsr_opt_hdr *access(const Packet * p) { return (dsr_opt_hdr *) p->access(offset_); } int size() { return ntohs(p_len) + sizeof(struct dsr_opt_hdr); }#endif /* NS2 */ struct dsr_opt option[0];};struct dsr_pad1_opt { u_int8_t type;};#ifdef NS2#define DSR_NO_NEXT_HDR_TYPE PT_NTYPE#else#define DSR_NO_NEXT_HDR_TYPE 0#endif/* Header lengths */#define DSR_FIXED_HDR_LEN 4 /* Should be the same as DSR_OPT_HDR_LEN, but that * is not the case in ns-2 */#define DSR_OPT_HDR_LEN sizeof(struct dsr_opt_hdr)#define DSR_OPT_PAD1_LEN 1#define DSR_PKT_MIN_LEN 24 /* IP header + DSR header = 20 + 4 *//* Header types */#define DSR_OPT_PADN 0#define DSR_OPT_RREP 1#define DSR_OPT_RREQ 2#define DSR_OPT_RERR 3#define DSR_OPT_PREV_HOP 5#define DSR_OPT_ACK 32#define DSR_OPT_SRT 96#define DSR_OPT_TIMEOUT 128#define DSR_OPT_FLOWID 129#define DSR_OPT_ACK_REQ 160#define DSR_OPT_PAD1 224/* #define DSR_FIXED_HDR(iph) (struct dsr_opt_hdr *)((char *)iph + (iph->ihl << 2)) */#define DSR_GET_OPT(opt_hdr) ((struct dsr_opt *)(((char *)opt_hdr) + DSR_OPT_HDR_LEN))#define DSR_GET_NEXT_OPT(dopt) ((struct dsr_opt *)((char *)dopt + dopt->length + 2))#define DSR_LAST_OPT(dp, opt) ((dp->dh.raw + ntohs(dp->dh.opth->p_len) + 4) == ((char *)opt + opt->length + 2))struct dsr_opt_hdr *dsr_opt_hdr_add(char *buf, unsigned int len, unsigned int protocol);struct dsr_opt *dsr_opt_find_opt(struct dsr_pkt *dp, int type);int dsr_opt_parse(struct dsr_pkt *dp);#ifdef __KERNEL__struct iphdr *dsr_build_ip(struct dsr_pkt *dp, struct in_addr src, struct in_addr dst, int ip_len, int totlen, int protocol, int ttl);#endif#endif /* NO_GLOBALS */#ifndef NO_DECLSint dsr_opt_remove(struct dsr_pkt *dp);int dsr_opt_recv(struct dsr_pkt *dp);#endif /* NO_DECLS */#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -