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#include <stdatomic.h>
34
35#include "session.h"
36#include "locator.h"
37#include <db/trib.h>
38#include <db/pib.h>
39#include <api/server.h>
40#include <enum/enum.h>
41
42
44typedef struct {
45 int run;
46 pthread_t listen_thread;
47 pthread_t maintenance_thread;
48 pthread_t update_thread;
49 pthread_mutex_t update_mut;
50 pthread_cond_t update_cond;
51 atomic_int update_pending;
52
53 int fd;
54
55 /* Local */
56 uint32_t itad;
57 uint32_t id;
58
59 /* Peer information */
60 locator_t *locator;
61
62 /* Telephony Routing Information Base */
63 trib_t *trib;
64 /* Policy Information Base */
65 pib_t *pib;
66
67 /* Query interfaces */
68 server_t *server;
69 enum_t *enum_emu;
70
71 /* Session instances */
72 session_t **sessions;
73 size_t sessions_size, sessions_capacity;
74 pthread_mutex_t sessions_mutex;
75
76 /* Timers peer default */
77 uint16_t hold;
78 uint16_t keepalive;
79 int connect_retry;
80 int max_purge_time;
81 int disable_time;
82 int min_itad_orig_int;
83 int min_route_advert_int;
84
85 /* Default attribute values */
86 uint32_t def_local_pref;
87 uint32_t def_metric;
88} manager_t;
89
90
93 const struct sockaddr_in6 *addr);
94
96manager_t *manager_new(const struct sockaddr_in6 *listen_addr);
97
99void manager_peer_add(manager_t *manager, const struct sockaddr_in6 *addr,
100 uint32_t itad);
101
103peer_t *manager_peer_find(manager_t *manager, const struct sockaddr_in6 *addr);
104
106void manager_run(manager_t *manager);
107
110
112void manager_stop(manager_t *manager);
113
115void manager_shutdown(manager_t *manager);
116
118void manager_destroy(manager_t *manager);
119
120
121#endif /* _MANAGER_H */
122
ENUM emulation query interface.
Peer locator.
void manager_stop(manager_t *manager)
Stop accept loop.
Definition manager.c:880
manager_t * manager_new(const struct sockaddr_in6 *listen_addr)
Create manager and bind socket.
Definition manager.c:673
void manager_destroy(manager_t *manager)
Destroy manager object.
Definition manager.c:924
session_t * manager_session_lookup_address(const manager_t *m, const struct sockaddr_in6 *addr)
Lookup session by locator peer.
Definition manager.c:93
void manager_shutdown(manager_t *manager)
Shut down manager and all sessions.
Definition manager.c:903
void manager_run(manager_t *manager)
Run accept loop in thread.
Definition manager.c:852
peer_t * manager_peer_find(manager_t *manager, const struct sockaddr_in6 *addr)
Find known peer by address.
Definition manager.c:846
void manager_peer_add(manager_t *manager, const struct sockaddr_in6 *addr, uint32_t itad)
Add known peer to underlaying locator.
Definition manager.c:814
void manager_schedule_update(manager_t *manager)
Schedule UPDATEs.
Definition manager.c:869
Policy Information Base.
HTTP API server.
Session logic.
Definition enum.h:33
Peer locator.
Definition locator.h:51
Manager object.
Definition manager.h:44
int run
Definition manager.h:45
Known peer info object.
Definition locator.h:37
Policy Information Base.
Definition pib.h:87
Definition server.h:36
Session object.
Definition session.h:54
Telephony Routing Information Base.
Definition trib.h:140
Telephony Routing Information Base.