mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-29 05:01:54 +00:00
a995ed4386
Use local variable to refence relevant instance instead of using global instance ptr. Also, use 'p' variable instead of 'bmp' so we can use common macros like TRACE().
69 lines
1.7 KiB
C
69 lines
1.7 KiB
C
/*
|
|
* BIRD -- The BGP Monitoring Protocol (BMP)
|
|
*
|
|
* (c) 2020 Akamai Technologies, Inc. (Pawel Maslanka, pmaslank@akamai.com)
|
|
*
|
|
* Can be freely distributed and used under the terms of the GNU GPL.
|
|
*/
|
|
|
|
/**
|
|
* This map implementation binds peer IP address as container key with custom data.
|
|
*/
|
|
#ifndef _BIRD_BMP_MAP_H_
|
|
#define _BIRD_BMP_MAP_H_
|
|
|
|
#include "nest/bird.h"
|
|
#include "lib/hash.h"
|
|
#include "lib/resource.h"
|
|
|
|
struct bmp_peer_map_key {
|
|
struct bmp_peer_map_key *next;
|
|
ip_addr peer_ip;
|
|
u32 peer_as;
|
|
};
|
|
|
|
struct bmp_peer_map_data {
|
|
void *buf;
|
|
size_t buf_size;
|
|
};
|
|
|
|
struct bmp_peer_map_entry {
|
|
struct bmp_peer_map_key key;
|
|
struct bmp_peer_map_data data;
|
|
};
|
|
|
|
struct bmp_peer_map {
|
|
pool *mpool; // Memory pool for peer entries in peer_hash
|
|
HASH(struct bmp_peer_map_key) peer_hash; // Hash for peers to find the index
|
|
};
|
|
|
|
void
|
|
bmp_peer_map_init(struct bmp_peer_map *map, pool *mpool);
|
|
|
|
struct bmp_peer_map_key
|
|
bmp_peer_map_key_create(const ip_addr peer_ip, const u32 peer_as);
|
|
|
|
void
|
|
bmp_peer_map_free(struct bmp_peer_map *map);
|
|
|
|
void
|
|
bmp_peer_map_flush(struct bmp_peer_map *map);
|
|
|
|
void
|
|
bmp_peer_map_insert(struct bmp_peer_map *map, const struct bmp_peer_map_key key,
|
|
const byte *data, const size_t data_size);
|
|
|
|
void
|
|
bmp_peer_map_remove(struct bmp_peer_map *map, const struct bmp_peer_map_key key);
|
|
|
|
const struct bmp_peer_map_entry *
|
|
bmp_peer_map_get(struct bmp_peer_map *map, const struct bmp_peer_map_key key);
|
|
|
|
typedef void (*bmp_peer_map_walk_action)(const struct bmp_peer_map_key key,
|
|
const byte *data, const size_t data_size, void *arg);
|
|
|
|
void
|
|
bmp_peer_map_walk(const struct bmp_peer_map *map, bmp_peer_map_walk_action action, void *arg);
|
|
|
|
#endif /* _BIRD_BMP_MAP_H_ */
|