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

网络

开发平台:

Unix_Linux

  1. /* AS path related definitions.
  2.    Copyright (C) 1997, 98, 99 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. /* AS path segment type.  */
  17. #define AS_SET                       1
  18. #define AS_SEQUENCE                  2
  19. #define AS_CONFED_SEQUENCE           3
  20. #define AS_CONFED_SET                4
  21. /* Private AS range defined in RFC2270.  */
  22. #define BGP_PRIVATE_AS_MIN       64512
  23. #define BGP_PRIVATE_AS_MAX       65535
  24. /* AS path may be include some AsSegments.  */
  25. struct aspath 
  26. {
  27.   /* Reference count to this aspath.  */
  28.   unsigned long refcnt;
  29.   /* Rawdata length.  */
  30.   int length;
  31.   /* AS count.  */
  32.   int count;
  33.   /* Rawdata.  */
  34.   caddr_t data;
  35.   /* String expression of AS path.  This string is used by vty output
  36.      and AS path regular expression match.  */
  37.   char *str;
  38. };
  39. #define ASPATH_STR_DEFAULT_LEN 32
  40. /* Prototypes. */
  41. void aspath_init ();
  42. struct aspath *aspath_parse ();
  43. struct aspath *aspath_dup (struct aspath *);
  44. struct aspath *aspath_aggregate (struct aspath *, struct aspath *);
  45. struct aspath *aspath_prepend (struct aspath *, struct aspath *);
  46. struct aspath *aspath_add_seq (struct aspath *, as_t);
  47. struct aspath *aspath_add_confed_seq (struct aspath *, as_t);
  48. int aspath_cmp_left (struct aspath *, struct aspath *);
  49. int aspath_cmp_left_confed (struct aspath *, struct aspath *);
  50. struct aspath *aspath_delete_confed_seq (struct aspath *);
  51. struct aspath *aspath_empty ();
  52. struct aspath *aspath_empty_get ();
  53. struct aspath *aspath_str2aspath (char *);
  54. void aspath_free (struct aspath *);
  55. struct aspath *aspath_intern (struct aspath *);
  56. void aspath_unintern (struct aspath *);
  57. const char *aspath_print (struct aspath *);
  58. void aspath_print_vty (struct vty *, struct aspath *);
  59. void aspath_print_all_vty (struct vty *);
  60. unsigned int aspath_key_make (struct aspath *);
  61. int aspath_loop_check (struct aspath *, as_t);
  62. int aspath_private_as_check (struct aspath *);
  63. int aspath_firstas_check (struct aspath *, as_t);
  64. unsigned long aspath_count ();