static void mrt_dump_bgp_packet(struct bgp_conn *conn, byte *pkt, unsigned len) { byte *buf = alloca(128+len); /* 128 is enough for MRT headers */ byte *bp = buf + MRTDUMP_HDR_LENGTH; int as4 = conn->bgp->as4_session; bp = mrt_put_bgp4_hdr(bp, conn, as4); memcpy(bp, pkt, len); bp += len; mrt_dump_message(&conn->bgp->p, BGP4MP, as4 ? BGP4MP_MESSAGE_AS4 : BGP4MP_MESSAGE, buf, bp-buf); }
static void mrt_dump_bgp_packet(struct bgp_conn *conn, byte *pkt, unsigned len) { byte buf[BGP_MAX_PACKET_LENGTH + 128]; byte *bp = buf + MRTDUMP_HDR_LENGTH; int as4 = conn->bgp->as4_session; bp = mrt_put_bgp4_hdr(bp, conn, as4); memcpy(bp, pkt, len); bp += len; mrt_dump_message(&conn->bgp->p, BGP4MP, as4 ? BGP4MP_MESSAGE_AS4 : BGP4MP_MESSAGE, buf, bp-buf); }