Neměl jsem možnost a čas studovat kód Quaggy do detailu, takže teď budu trochu obecně plkat :-).
1) Ta transformace na string je tam úplně zbytečně. Protokol BGP je binární, takže textová reprezentace má smysl pouze v případě zobrazování (log, debug, konzole, atp.), a to se dá vždycky nasypat v případě, že je potřeba textovou reprezentaci vypsat.
2) Pokud by to opravdu nějaký smysl mělo, tak bych použil statický buffer. Maximální velikost BGP zprávy je 4k a například Cisco natvrdo omezuje počet AS na max 2000.
#bgp maxas-limit ? <1-2000> Number of ASes in the AS-PATH attribute
Jinými slovy nemá smysl dělat víc, protože to skrz Cisca stejně dál neprojde (druhá věc je, že standardní omezení je 255). A 22kB buffer (v maximálním případě) není zas tolik.