]> git.proxmox.com Git - mirror_frr.git/blobdiff - bgpd/bgp_dump.c
bgpd: Allow shortened 'no set large-community' and 'no set large-comm-list'
[mirror_frr.git] / bgpd / bgp_dump.c
index 4e998b1fd9cd5cdd498aa37533de0ca696a56036..751140850a3303e18b8f309138331426484a55fb 100644 (file)
@@ -36,6 +36,7 @@
 #include "bgpd/bgp_route.h"
 #include "bgpd/bgp_attr.h"
 #include "bgpd/bgp_dump.h"
+#include "bgpd/bgp_errors.h"
 
 enum bgp_dump_type {
        BGP_DUMP_ALL,
@@ -119,7 +120,7 @@ static FILE *bgp_dump_open_file(struct bgp_dump *bgp_dump)
                ret = strftime(realpath, MAXPATHLEN, bgp_dump->filename, tm);
 
        if (ret == 0) {
-               zlog_warn("bgp_dump_open_file: strftime error");
+               flog_warn(EC_BGP_DUMP, "bgp_dump_open_file: strftime error");
                return NULL;
        }
 
@@ -131,7 +132,7 @@ static FILE *bgp_dump_open_file(struct bgp_dump *bgp_dump)
        bgp_dump->fp = fopen(realpath, "w");
 
        if (bgp_dump->fp == NULL) {
-               zlog_warn("bgp_dump_open_file: %s: %s", realpath,
+               flog_warn(EC_BGP_DUMP, "bgp_dump_open_file: %s: %s", realpath,
                          strerror(errno));
                umask(oldumask);
                return NULL;
@@ -277,7 +278,7 @@ static void bgp_dump_routes_index_table(struct bgp *bgp)
                if (sockunion_family(&peer->su) == AF_INET) {
                        stream_put_in_addr(obuf, &peer->su.sin.sin_addr);
                } else if (sockunion_family(&peer->su) == AF_INET6) {
-                       stream_write(obuf, (u_char *)&peer->su.sin6.sin6_addr,
+                       stream_write(obuf, (uint8_t *)&peer->su.sin6.sin6_addr,
                                     IPV6_MAX_BYTELEN);
                }
 
@@ -298,9 +299,9 @@ static void bgp_dump_routes_index_table(struct bgp *bgp)
 }
 
 
-static struct bgp_info *bgp_dump_route_node_record(int afi, struct bgp_node *rn,
-                                                  struct bgp_info *info,
-                                                  unsigned int seq)
+static struct bgp_path_info *
+bgp_dump_route_node_record(int afi, struct bgp_node *rn,
+                          struct bgp_path_info *path, unsigned int seq)
 {
        struct stream *obuf;
        size_t sizep;
@@ -329,12 +330,12 @@ static struct bgp_info *bgp_dump_route_node_record(int afi, struct bgp_node *rn,
        if (afi == AFI_IP) {
                /* We'll dump only the useful bits (those not 0), but have to
                 * align on 8 bits */
-               stream_write(obuf, (u_char *)&rn->p.u.prefix4,
+               stream_write(obuf, (uint8_t *)&rn->p.u.prefix4,
                             (rn->p.prefixlen + 7) / 8);
        } else if (afi == AFI_IP6) {
                /* We'll dump only the useful bits (those not 0), but have to
                 * align on 8 bits */
-               stream_write(obuf, (u_char *)&rn->p.u.prefix6,
+               stream_write(obuf, (uint8_t *)&rn->p.u.prefix6,
                             (rn->p.prefixlen + 7) / 8);
        }
 
@@ -348,18 +349,18 @@ static struct bgp_info *bgp_dump_route_node_record(int afi, struct bgp_node *rn,
        stream_putw(obuf, 0);
 
        endp = stream_get_endp(obuf);
-       for (; info; info = info->next) {
+       for (; path; path = path->next) {
                size_t cur_endp;
 
                /* Peer index */
-               stream_putw(obuf, info->peer->table_dump_index);
+               stream_putw(obuf, path->peer->table_dump_index);
 
                /* Originated */
-               stream_putl(obuf, time(NULL) - (bgp_clock() - info->uptime));
+               stream_putl(obuf, time(NULL) - (bgp_clock() - path->uptime));
 
                /* Dump attribute. */
                /* Skip prefix & AFI/SAFI for MP_NLRI */
-               bgp_dump_routes_attr(obuf, info->attr, &rn->p);
+               bgp_dump_routes_attr(obuf, path->attr, &rn->p);
 
                cur_endp = stream_get_endp(obuf);
                if (cur_endp > BGP_MAX_PACKET_SIZE + BGP_DUMP_MSG_HEADER
@@ -378,7 +379,7 @@ static struct bgp_info *bgp_dump_route_node_record(int afi, struct bgp_node *rn,
        bgp_dump_set_size(obuf, MSG_TABLE_DUMP_V2);
        fwrite(STREAM_DATA(obuf), stream_get_endp(obuf), 1, bgp_dump_routes.fp);
 
-       return info;
+       return path;
 }
 
 
@@ -386,7 +387,7 @@ static struct bgp_info *bgp_dump_route_node_record(int afi, struct bgp_node *rn,
 static unsigned int bgp_dump_routes_func(int afi, int first_run,
                                         unsigned int seq)
 {
-       struct bgp_info *info;
+       struct bgp_path_info *path;
        struct bgp_node *rn;
        struct bgp *bgp;
        struct bgp_table *table;
@@ -409,9 +410,9 @@ static unsigned int bgp_dump_routes_func(int afi, int first_run,
        table = bgp->rib[afi][SAFI_UNICAST];
 
        for (rn = bgp_table_top(table); rn; rn = bgp_route_next(rn)) {
-               info = rn->info;
-               while (info) {
-                       info = bgp_dump_route_node_record(afi, rn, info, seq);
+               path = bgp_node_get_bgp_path_info(rn);
+               while (path) {
+                       path = bgp_dump_route_node_record(afi, rn, path, seq);
                        seq++;
                }
        }