classifier-addr.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. /*
  2.  * Copyright (c) Sun Microsystems, Inc. 1998 All rights reserved.
  3.  *
  4.  * Redistribution and use in source and binary forms, with or without
  5.  * modification, are permitted provided that the following conditions
  6.  * are met:
  7.  *
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  *
  11.  * 2. Redistributions in binary form must reproduce the above copyright
  12.  *    notice, this list of conditions and the following disclaimer in the
  13.  *    documentation and/or other materials provided with the distribution.
  14.  *
  15.  * 3. All advertising materials mentioning features or use of this software
  16.  *    must display the following acknowledgement:
  17.  *      This product includes software developed by Sun Microsystems, Inc.
  18.  *
  19.  * 4. The name of the Sun Microsystems, Inc nor may not be used to endorse or
  20.  *      promote products derived from this software without specific prior
  21.  *      written permission.
  22.  *
  23.  * SUN MICROSYSTEMS MERCHANTABILITY OF THIS SOFTWARE OR THE SUITABILITY OF THIS
  24.  * SOFTWARE FOR ANY PARTICULAR PURPOSE.  The software is provided "as is"
  25.  * without express or implied warranty of any kind.
  26.  *
  27.  * These notices must be retained in any copies of any part of this software.
  28.  */
  29. #ifndef ns_classifier_addr_h
  30. #define ns_classifier_addr_h
  31. #include "config.h"
  32. #include "packet.h"
  33. #include "ip.h"
  34. #include "classifier.h"
  35. #define BCAST_ADDR_MASK mask_
  36. class AddressClassifier : public Classifier {
  37. protected:
  38. virtual int classify(Packet * p);
  39. };
  40. /* addr. classifier that enforces reserved ports */
  41. class ReserveAddressClassifier : public AddressClassifier {
  42. public:
  43. ReserveAddressClassifier() : AddressClassifier(), reserved_(0) {}
  44. protected:
  45. virtual int classify(Packet *p);
  46. virtual void clear(int slot);
  47. virtual int getnxt(NsObject *);
  48. virtual int command(int argc, const char*const* argv);
  49. int reserved_;
  50. };
  51. /* addr. classifier that supports limited broadcast */
  52. class BcastAddressClassifier : public AddressClassifier {
  53. public:
  54. BcastAddressClassifier() : AddressClassifier(), bcast_recver_(0) {}
  55. NsObject *find(Packet *);
  56. protected:
  57. virtual int command(int argc, const char*const* argv);
  58. NsObject *bcast_recver_;
  59. };
  60. #endif