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

📄 packet.h

📁 这是一个著名的应用层组播中间件的源码
💻 H
字号:
//Copyright (c) 2004, Charles Killian, Adolfo Rodriguez, Dejan Kostic, Sooraj Bhat, and Amin Vahdat//All rights reserved.////Redistribution and use in source and binary forms, with or without//modification, are permitted provided that the following conditions are met:////   * Redistributions of source code must retain the above copyright//     notice, this list of conditions and the following disclaimer.//   * Redistributions in binary form must reproduce the above copyright//     notice, this list of conditions and the following disclaimer in//     the documentation and/or other materials provided with the//     distribution.//   * Neither the names of Duke University nor The University of//     California, San Diego, nor the names of its contributors//     may be used to endorse or promote products derived from//     this software without specific prior written permission.////THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"//AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE//IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE//DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE//FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL//DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR//SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,//OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE//USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#ifndef PACKETH#define PACKETH#include "config.h"#include <stdlib.h>#include <stdio.h>#define HEADER_SIZE #define PT_DMST 3#define PT_NARADA 4#define PT_saro 7class AppData { public:  unsigned char *data_;  unsigned int size_;};class Packet { public:  Packet();  unsigned char *bits_;  unsigned int hdrlen_;  unsigned char *data_;  unsigned int size_;  inline unsigned char* access(int off) const {    return (&bits_[off]);  }  Packet *copy();  static inline Packet *alloc();  static inline void free(Packet *);};struct hdr_ip{  ns_addr_t       src_;  ns_addr_t       dst_;  int             ttl_;  int             fid_;  static int offset_;  inline static int& offset() { return offset_; }  inline static hdr_ip* access(const Packet* p) {    return (hdr_ip*) p->access(offset_);  }};struct hdr_cmn{  int     size_;          // simulated packet size  int     hdrsize_;    // size of headers  static int offset_;  inline static hdr_cmn* access(const Packet* p) {    return (hdr_cmn*) p->access(offset_);  }  inline int& size() { return (size_); }};class PacketHeaderClass { public:  PacketHeaderClass(char *mystring, int size);  int size_;};inline voidPacket::free(Packet *pkt){  void *tofree = pkt->bits_;  if (tofree)    ::free(tofree);  pkt->bits_=NULL;  tofree = pkt->data_;  if (tofree)     {      //      printf("Freeing real data at %x\n", tofree);      //      sprintf((char *)tofree, "FREED");      ::free(tofree);       tofree = 0;    }  pkt->data_=NULL;  delete pkt;}inline Packet *Packet::alloc(){  Packet *pkt = new Packet();  hdr_cmn *my_cmn;  hdr_ip *my_ip;  pkt->bits_ = (unsigned char *) malloc(pkt->hdrlen_);  //printf("alloc %d\n",pkt->hdrlen_);  return pkt;}typedef void TclObject;class TclClass{ public:  TclClass(char *);};void bind (char *, void *);#define TCL_OK 0#endif

⌨️ 快捷键说明

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