TRIP Routing Daemon
TRIP (RFC 3219) Location Server Implementation
Loading...
Searching...
No Matches
manager.h
Go to the documentation of this file.
1/*
2
3 trip: Modern TRIP LS implementation
4 Copyright (C) 2025 arf20 (Ángel Ruiz Fernandez)
5
6 This program is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <https://www.gnu.org/licenses/>.
18
19*/
20
27
28#ifndef _MANAGER_H
29#define _MANAGER_H
30
31#include <pthread.h>
32#include <netinet/in.h>
33
34#include "session.h"
35#include "locator.h"
36#include <db/trib.h>
37#include <db/pib.h>
38
39
41typedef struct {
42 int run;
43 pthread_t listen_thread;
44 pthread_t maintenance_thread;
45 pthread_t update_thread;
46 pthread_mutex_t update_mut;
47 pthread_cond_t update_cond;
48
49 int fd;
50
51 /* Local */
52 uint32_t itad;
53 uint32_t id;
54
55 /* Peer information */
56 locator_t *locator;
57
58 /* Telephony Routing Information Base */
59 trib_t *trib;
60 /* Policy Information Base */
61 pib_t *pib;
62
63 /* Session instances */
64 session_t **sessions;
65 size_t sessions_size, sessions_capacity;
66 pthread_mutex_t sessions_mutex;
67
68 /* Timers peer default */
69 uint16_t hold;
70 uint16_t keepalive;
71 int connect_retry;
72 int max_purge_time;
73 int disable_time;
74 int min_itad_orig_int;
75 int min_route_advert_int;
76
77 /* Default attribute values */
78 uint32_t def_local_pref;
79 uint32_t def_metric;
80} manager_t;
81
82
85 const struct sockaddr_in6 *addr);
86
88manager_t *manager_new(const struct sockaddr_in6 *listen_addr);
89
91void manager_peer_add(manager_t *manager, const struct sockaddr_in6 *addr,
92 uint32_t itad);
93
95peer_t *manager_peer_find(manager_t *manager, const struct sockaddr_in6 *addr);
96
98void manager_run(manager_t *manager);
99
102
104void manager_stop(manager_t *manager);
105
107void manager_shutdown(manager_t *manager);
108
110void manager_destroy(manager_t *manager);
111
112
113#endif /* _MANAGER_H */
114
Peer locator.
void manager_stop(manager_t *manager)
Stop accept loop.
Definition manager.c:833
manager_t * manager_new(const struct sockaddr_in6 *listen_addr)
Create manager and bind socket.
Definition manager.c:645
void manager_destroy(manager_t *manager)
Destroy manager object.
Definition manager.c:868
session_t * manager_session_lookup_address(const manager_t *m, const struct sockaddr_in6 *addr)
Lookup session by locator peer.
Definition manager.c:92
void manager_shutdown(manager_t *manager)
Shut down manager and all sessions.
Definition manager.c:847
void manager_run(manager_t *manager)
Run accept loop in thread.
Definition manager.c:814
peer_t * manager_peer_find(manager_t *manager, const struct sockaddr_in6 *addr)
Find known peer by address.
Definition manager.c:808
void manager_peer_add(manager_t *manager, const struct sockaddr_in6 *addr, uint32_t itad)
Add known peer to underlaying locator.
Definition manager.c:778
void manager_schedule_update(manager_t *manager)
Schedule UPDATEs.
Definition manager.c:824
Policy Information Base.
Session logic.
Peer locator.
Definition locator.h:51
Manager object.
Definition manager.h:41
int run
Definition manager.h:42
Known peer info object.
Definition locator.h:37
Policy Information Base.
Definition pib.h:87
Session object.
Definition session.h:54
Telephony Routing Information Base.
Definition trib.h:136
Telephony Routing Information Base.