/* BGP open message handling
- Copyright (C) 1999 Kunihiro Ishiguro
-
-This file is part of GNU Zebra.
-
-GNU Zebra is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-
-GNU Zebra is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Zebra; see the file COPYING. If not, write to the Free
-Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
+ * Copyright (C) 1999 Kunihiro Ishiguro
+ *
+ * This file is part of GNU Zebra.
+ *
+ * GNU Zebra is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any
+ * later version.
+ *
+ * GNU Zebra is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
#ifndef _QUAGGA_BGP_OPEN_H
#define _QUAGGA_BGP_OPEN_H
/* Standard header for capability TLV */
struct capability_header {
- u_char code;
- u_char length;
+ uint8_t code;
+ uint8_t length;
};
/* Generic MP capability data */
struct capability_mp_data {
- iana_afi_t afi;
- u_char reserved;
- safi_t safi;
-};
-
-#pragma pack(1)
-struct capability_orf_entry {
- struct capability_mp_data mpc;
- u_char num;
- struct {
- u_char type;
- u_char mode;
- } orfs[];
-} __attribute__((packed));
-#pragma pack()
-
-struct capability_as4 {
- uint32_t as4;
+ uint16_t afi; /* iana_afi_t */
+ uint8_t reserved;
+ uint8_t safi; /* iana_safi_t */
};
struct graceful_restart_af {
afi_t afi;
safi_t safi;
- u_char flag;
-};
-
-struct capability_gr {
- u_int16_t restart_flag_time;
- struct graceful_restart_af gr[];
+ uint8_t flag;
};
/* Capability Code */
#define CAPABILITY_CODE_DYNAMIC_OLD 66 /* Dynamic Capability, deprecated since 2003 */
#define CAPABILITY_CODE_DYNAMIC 67 /* Dynamic Capability */
#define CAPABILITY_CODE_ADDPATH 69 /* Addpath Capability */
-#define CAPABILITY_CODE_FQDN 73 /* Advertise hostname capabilty */
+#define CAPABILITY_CODE_FQDN 73 /* Advertise hostname capability */
#define CAPABILITY_CODE_ENHE 5 /* Extended Next Hop Encoding */
#define CAPABILITY_CODE_REFRESH_OLD 128 /* Route Refresh Capability(cisco) */
#define CAPABILITY_CODE_ORF_OLD 130 /* Cooperative Route Filtering Capability(cisco) */
/* Cooperative Route Filtering Capability. */
/* ORF Type */
-#define ORF_TYPE_PREFIX 64
+#define ORF_TYPE_PREFIX 64
#define ORF_TYPE_PREFIX_OLD 128
/* ORF Mode */
-#define ORF_MODE_RECEIVE 1
-#define ORF_MODE_SEND 2
-#define ORF_MODE_BOTH 3
+#define ORF_MODE_RECEIVE 1
+#define ORF_MODE_SEND 2
+#define ORF_MODE_BOTH 3
/* Capability Message Action. */
#define CAPABILITY_ACTION_SET 0
#define RESTART_R_BIT 0x8000
#define RESTART_F_BIT 0x80
-extern int bgp_open_option_parse(struct peer *, u_char, int *);
+extern int bgp_open_option_parse(struct peer *, uint8_t, int *);
extern void bgp_open_capability(struct stream *, struct peer *);
-extern void bgp_capability_vty_out(struct vty *, struct peer *, u_char,
- json_object *);
-extern as_t peek_for_as4_capability(struct peer *, u_char);
+extern void bgp_capability_vty_out(struct vty *vty, struct peer *peer,
+ bool use_json, json_object *json_neigh);
+extern as_t peek_for_as4_capability(struct peer *, uint8_t);
#endif /* _QUAGGA_BGP_OPEN_H */