#ifndef _QUAGGA_BGP_VTY_H
#define _QUAGGA_BGP_VTY_H
-#include "bgpd/bgpd.h"
+struct bgp;
-#define CMD_AS_RANGE "<1-4294967295>"
-#define DYNAMIC_NEIGHBOR_LIMIT_RANGE "<1-5000>"
-#define BGP_INSTANCE_CMD "(view|vrf) WORD"
#define BGP_INSTANCE_HELP_STR "BGP view\nBGP VRF\nView/VRF name\n"
+#define BGP_INSTANCE_ALL_HELP_STR "BGP view\nBGP VRF\nAll Views/VRFs\n"
+
+#define BGP_AFI_CMD_STR "<ipv4|ipv6>"
+#define BGP_AFI_HELP_STR "Address Family\nAddress Family\n"
+#define BGP_SAFI_CMD_STR "<unicast|multicast|vpn|encap|labeled-unicast>"
+#define BGP_SAFI_HELP_STR \
+ "Address Family modifier\n" \
+ "Address Family modifier\n" \
+ "Address Family modifier\n" \
+ "Address Family modifier\n" \
+ "Address Family modifier\n" \
+ "Address Family modifier\n"
+#define BGP_AFI_SAFI_CMD_STR BGP_AFI_CMD_STR" "BGP_SAFI_CMD_STR
+#define BGP_AFI_SAFI_HELP_STR BGP_AFI_HELP_STR BGP_SAFI_HELP_STR
extern void bgp_vty_init (void);
extern const char *afi_safi_print (afi_t, safi_t);
+extern const char *afi_safi_json (afi_t, safi_t);
extern int bgp_config_write_update_delay (struct vty *, struct bgp *);
extern int bgp_config_write_wpkt_quanta(struct vty *vty, struct bgp *bgp);
extern int bgp_config_write_listen(struct vty *vty, struct bgp *bgp);
extern struct peer *
peer_and_group_lookup_vty (struct vty *vty, const char *peer_str);
+extern int
+bgp_parse_afi(const char *str, afi_t *afi);
+
+extern afi_t
+bgp_vty_afi_from_arg(const char *afi_str);
+
+extern safi_t
+bgp_vty_safi_from_arg(const char *safi_str);
+
+extern int
+argv_find_and_parse_afi(struct cmd_token **argv, int argc, int *index, afi_t *afi);
+
+extern int
+argv_find_and_parse_safi(struct cmd_token **argv, int argc, int *index, safi_t *safi);
+
+extern int
+bgp_vty_find_and_parse_afi_safi_bgp (struct vty *vty, struct cmd_token **argv, int argc, int *idx,
+ afi_t *afi, safi_t *safi, struct bgp **bgp);
#endif /* _QUAGGA_BGP_VTY_H */