bgp_community.h
上传用户:xiaozhuqw
上传日期:2009-11-15
资源大小:1338k
文件大小:3k
源码类别:

网络

开发平台:

Unix_Linux

  1. /* Community attribute related functions.
  2.    Copyright (C) 1998 Kunihiro Ishiguro
  3. This file is part of GNU Zebra.
  4. GNU Zebra is free software; you can redistribute it and/or modify it
  5. under the terms of the GNU General Public License as published by the
  6. Free Software Foundation; either version 2, or (at your option) any
  7. later version.
  8. GNU Zebra is distributed in the hope that it will be useful, but
  9. WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11. General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with GNU Zebra; see the file COPYING.  If not, write to the Free
  14. Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  15. 02111-1307, USA.  */
  16. /* Communities attribute.  */
  17. struct community 
  18. {
  19.   /* Reference count of communities value.  */
  20.   unsigned long refcnt;
  21.   /* Communities value size.  */
  22.   int size;
  23.   /* Communities value.  */
  24.   u_int32_t *val;
  25.   /* String of community attribute.  This sring is used by vty output
  26.      and expanded community-list for regular expression match.  */
  27.   char *str;
  28. };
  29. /* Well-known communities value.  */
  30. #define COMMUNITY_INTERNET              0x0
  31. #define COMMUNITY_NO_EXPORT             0xFFFFFF01
  32. #define COMMUNITY_NO_ADVERTISE          0xFFFFFF02
  33. #define COMMUNITY_NO_EXPORT_SUBCONFED   0xFFFFFF03
  34. #define COMMUNITY_LOCAL_AS              0xFFFFFF03
  35. /* Macros of community attribute.  */
  36. #define com_length(X)    ((X)->size * 4)
  37. #define com_lastval(X)   ((X)->val + (X)->size - 1)
  38. #define com_nthval(X,n)  ((X)->val + (n))
  39. /* Prototypes of communities attribute functions.  */
  40. void community_init ();
  41. void community_free (struct community *);
  42. struct community *community_uniq_sort (struct community *);
  43. struct community *community_parse (char *, u_short);
  44. struct community *community_intern (struct community *);
  45. void community_unintern (struct community *);
  46. char *community_str (struct community *);
  47. unsigned int community_hash_make (struct community *);
  48. struct community *community_str2com (char *);
  49. int community_match (struct community *, struct community *);
  50. int community_cmp (struct community *, struct community *);
  51. struct community *community_merge (struct community *, struct community *);
  52. struct community *community_delete (struct community *, struct community *);
  53. struct community *community_dup (struct community *);
  54. int community_include (struct community *, u_int32_t);
  55. void community_del_val (struct community *, u_int32_t *);
  56. unsigned long community_count ();
  57. struct hash *community_hash ();