-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathBGP.h
36 lines (31 loc) · 1.59 KB
/
BGP.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//
// Created by zach on 08/23/2020.
//
#ifndef BGP_BGP_H
#define BGP_BGP_H
// #include <cstdio>
// #include <cstdarg>
// #include <gmp.h>
#include <array>
#include <vector>
#include <iostream>
#include <cassert>
#include <functional>
#include <sstream>
#include "Log.h"
#include "Networking.h"
// TODO: [1] Verify support for RFC 6286 (ASNs do not need to be unique)
// TODO: [2] Support for RFC 6608 (Extended FSM error subcodes)
// TODO: [3] Support for RFC 6793 (Support for 4-byte ASNs)
// TODO: [4] Support for RFC 7606 (Improved UPDATE message error-handling)
// TODO: [5] Support for RFC 7607 (Support for AS0)
// TODO: [6] Support for RFC 7705 (ASN migration mechanisms)
// TODO: [7] Support for RFC 8212 (eBGP default export reject)
// TODO: [8] Support for RFC 8654 (Extend max message size for all message types except OPEN and KEEPALIVE, from 4096 bytes to 65535 bytes)
// TODO: [9] Support for BGPv6, possibly with libgmp, maybe even just with an std::vector<uint8_t>
// TODO: [10] Support for RFC 5065 (Confederations)
// TODO: [11] Support for the rest of the possible path attribute types, reference the IANA registry
// TODO: [12] Evaluate the pros/cons of foregoing using std::vector<uint8_t>, and switching over to raw pointers (uint8_t*, void*, et al). This will require empirical evidence being gathered, via performance/memory tests, including full/multiple table edge cases
// TODO: [13] If a BGP UPDATE message is received with the same prefix in the WithdrawnRoutes and NLRI fields, ignore the prefix in WithdrawnRoutes
// TODO: [14] Multithreading, split out BGPServer/BGPSession
#endif //BGP_BGP_H