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 <netinet/in.h>
32
33#include "session.h"
34#include "locator.h"
35
36
38typedef struct {
39 int run;
40 pthread_t listen_thread;
41 pthread_t maintenance_thread;
42 int fd;
43
44 /* local */
45 uint32_t itad;
46 uint32_t id;
47
48 /* peer information */
49 locator_t *locator;
50
51 /* session instances */
52 session_t **sessions;
53 size_t sessions_size, sessions_capacity;
54
55 /* timers peer default */
56 uint16_t hold;
57 uint16_t keepalive;
58 /* timers per trip instance */
59 int connect_retry;
60 int max_purge_time;
61 int disable_time;
62 int min_itad_orig_int;
63 int min_route_advert_int;
64} manager_t;
65
66
69 const struct sockaddr_in6 *addr);
70
72manager_t *manager_new(const struct sockaddr_in6 *listen_addr);
73
75void manager_add_peer(manager_t *manager, const struct sockaddr_in6 *addr,
76 uint32_t itad);
77
79void manager_run(manager_t *manager);
80
82void manager_stop(manager_t *manager);
83
85void manager_shutdown(manager_t *manager);
86
88void manager_destroy(manager_t *manager);
89
90
91#endif /* _MANAGER_H */
92
Peer locator.
void manager_stop(manager_t *manager)
Stop accept loop.
Definition manager.c:752
manager_t * manager_new(const struct sockaddr_in6 *listen_addr)
Create manager and bind socket.
Definition manager.c:604
void manager_destroy(manager_t *manager)
Destroy manager object.
Definition manager.c:790
session_t * manager_session_lookup_address(const manager_t *m, const struct sockaddr_in6 *addr)
Lookup session by locator peer.
Definition manager.c:91
void manager_shutdown(manager_t *manager)
Shut down manager and all sessions.
Definition manager.c:761
void manager_run(manager_t *manager)
Run accept loop in thread.
Definition manager.c:743
void manager_add_peer(manager_t *manager, const struct sockaddr_in6 *addr, uint32_t itad)
Add known peer to underlaying locator.
Definition manager.c:718
Session logic.
Peer locator.
Definition locator.h:47
Manager object.
Definition manager.h:38
int run
Definition manager.h:39
Session object.
Definition session.h:53