- public static final AttributeRegistry INSTANCE;
-
- static {
- final AttributeRegistry reg = new SimpleAttributeRegistry();
-
- reg.registerAttributeParser(1, new AttributeParser() {
- @Override
- public void parseAttribute(final byte[] bytes, final PathAttributesBuilder builder) throws BGPDocumentedException {
- builder.setOrigin(PathAttributeParser.parseOrigin(bytes));
- }
- });
- reg.registerAttributeParser(2, new AttributeParser() {
- @Override
- public void parseAttribute(final byte[] bytes, final PathAttributesBuilder builder) throws BGPDocumentedException, BGPParsingException {
- builder.setAsPath(PathAttributeParser.parseAsPath(bytes));
- }
- });
- reg.registerAttributeParser(3, new AttributeParser() {
- @Override
- public void parseAttribute(final byte[] bytes, final PathAttributesBuilder builder) {
- builder.setCNextHop(PathAttributeParser.parseNextHop(bytes));
- }
- });
- reg.registerAttributeParser(4, new AttributeParser() {
- @Override
- public void parseAttribute(final byte[] bytes, final PathAttributesBuilder builder) {
- builder.setMultiExitDisc(PathAttributeParser.parseMultiExitDisc(bytes));
- }
- });
- reg.registerAttributeParser(5, new AttributeParser() {
- @Override
- public void parseAttribute(final byte[] bytes, final PathAttributesBuilder builder) {
- builder.setLocalPref(PathAttributeParser.parseLocalPref(bytes));
- }
- });
- reg.registerAttributeParser(6, new AttributeParser() {
- @Override
- public void parseAttribute(final byte[] bytes, final PathAttributesBuilder builder) {
- builder.setAtomicAggregate(new AtomicAggregateBuilder().build());
- }
- });
- reg.registerAttributeParser(7, new AttributeParser() {
- @Override
- public void parseAttribute(final byte[] bytes, final PathAttributesBuilder builder) {
- builder.setAggregator(PathAttributeParser.parseAggregator(bytes));
- }
- });
- reg.registerAttributeParser(8, new AttributeParser() {
- @Override
- public void parseAttribute(final byte[] bytes, final PathAttributesBuilder builder) throws BGPDocumentedException {
- builder.setCommunities(PathAttributeParser.parseCommunities(bytes));
- }
- });
- reg.registerAttributeParser(9, new AttributeParser() {
- @Override
- public void parseAttribute(final byte[] bytes, final PathAttributesBuilder builder) {
- builder.setOriginatorId(PathAttributeParser.parseOriginatorId(bytes));
- }
- });
-
- reg.registerAttributeParser(10, new AttributeParser() {
- @Override
- public void parseAttribute(final byte[] bytes, final PathAttributesBuilder builder) {
- builder.setClusterId(PathAttributeParser.parseClusterList(bytes));
- }
- });
+ private static final class Holder {
+ private static final AttributeRegistry INSTANCE;
+
+ static {
+ final AttributeRegistry reg = new SimpleAttributeRegistry();
+
+ reg.registerAttributeParser(OriginAttributeParser.TYPE, new OriginAttributeParser());
+ reg.registerAttributeParser(AsPathAttributeParser.TYPE, new AsPathAttributeParser());
+ reg.registerAttributeParser(NextHopAttributeParser.TYPE, new NextHopAttributeParser());
+ reg.registerAttributeParser(MultiExitDiscriminatorAttributeParser.TYPE, new MultiExitDiscriminatorAttributeParser());
+ reg.registerAttributeParser(LocalPreferenceAttributeParser.TYPE, new LocalPreferenceAttributeParser());
+ reg.registerAttributeParser(AtomicAggregateAttributeParser.TYPE, new AtomicAggregateAttributeParser());
+ reg.registerAttributeParser(AggregatorAttributeParser.TYPE, new AggregatorAttributeParser());
+ reg.registerAttributeParser(CommunitiesAttributeParser.TYPE, new CommunitiesAttributeParser());
+ reg.registerAttributeParser(OriginatorIdAttributeParser.TYPE, new OriginatorIdAttributeParser());
+ reg.registerAttributeParser(ClusterIdAttributeParser.TYPE, new ClusterIdAttributeParser());
+ reg.registerAttributeParser(MPReachAttributeParser.TYPE, new MPReachAttributeParser(SimpleNlriRegistry.getInstance()));
+ reg.registerAttributeParser(MPUnreachAttributeParser.TYPE, new MPUnreachAttributeParser(SimpleNlriRegistry.getInstance()));
+ reg.registerAttributeParser(ExtendedCommunitiesAttributeParser.TYPE, new ExtendedCommunitiesAttributeParser());
+ reg.registerAttributeParser(AS4AggregatorAttributeParser.TYPE, new AS4AggregatorAttributeParser());
+ reg.registerAttributeParser(AS4PathAttributeParser.TYPE, new AS4PathAttributeParser());
+ reg.registerAttributeParser(LinkstateAttributeParser.TYPE, new LinkstateAttributeParser());
+
+ INSTANCE = reg;
+ }
+ }