TRIP Routing Daemon
TRIP (RFC 3219) Location Server Implementation
Loading...
Searching...
No Matches
session.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
26
27#ifndef _SESSION_H
28#define _SESSION_H
29
30#include "locator.h"
31#include <protocol/protocol.h>
32#include <util/util.h>
33#include <db/trib.h>
34
35#include <netinet/in.h>
36
37
38
39
41typedef enum {
42 STATE_IDLE,
43 STATE_CONNECT,
44 STATE_ACTIVE,
45 STATE_OPENSENT,
46 STATE_OPENCONFIRM,
47 STATE_ESTABLISHED
49
51extern const char *session_state_strs[];
52
54typedef struct {
55 pthread_t thread;
60
61 int fd;
62
63 /* negotiated */
64 uint16_t hold;
65 uint16_t keepalive;
66
67
68 const peer_t *peer;
69 uint32_t id;
70
71 /* times */
72 time_t state_time;
75
78
79 /* capabilities */
81 capinfo_routetype_t *routetypes;
83
84 /* adj tables */
87} session_t;
88
89
92
94int send_notification(int fd, int code, int subcode);
95
97const char *id_str(uint32_t id);
98
100void *session_loop(void *arg);
101
106void session_update(const session_t *s, uint32_t local_id, uint32_t local_itad);
107
109void session_shutdown(session_t *session);
110
112void session_destroy(session_t *session);
113
114
115#endif /* _SESSION_H */
116
Peer locator.
Protocol definition header.
uint32_t capinfo_transmode_t
Capability information transmission mode.
Definition protocol.h:124
const char * session_state_strs[]
Session state strings.
Definition session.c:49
void session_shutdown(session_t *session)
Shutdown socket, terminate connection and thread.
Definition session.c:413
int send_notification(int fd, int code, int subcode)
Send notification helper.
Definition session.c:89
const char * id_str(uint32_t id)
LSID string.
Definition session.c:71
void session_update(const session_t *s, uint32_t local_id, uint32_t local_itad)
Update session.
Definition session.c:381
void session_change_state(session_t *s, session_state_t new_state)
Change session state.
Definition session.c:79
void * session_loop(void *arg)
Session loop.
Definition session.c:137
void session_destroy(session_t *session)
Destroy session object.
Definition session.c:423
session_state_t
Session states.
Definition session.h:41
Known peer info object.
Definition locator.h:37
Session object.
Definition session.h:54
pthread_t thread
Definition session.h:55
int mark_stop_init
Definition session.h:58
const peer_t * peer
Definition session.h:68
time_t last_read_time
Definition session.h:73
time_t last_write_time
Definition session.h:74
uint16_t hold
Definition session.h:64
capinfo_routetype_t * routetypes
Definition session.h:81
int fd
Definition session.h:61
session_state_t state
Definition session.h:56
time_t last_orig_time
Definition session.h:76
int initiated
Definition session.h:57
uint16_t keepalive
Definition session.h:65
table_t adj_trib_in
Definition session.h:85
time_t last_advert_time
Definition session.h:77
uint32_t id
Definition session.h:69
time_t state_time
Definition session.h:72
size_t routetypes_count
Definition session.h:82
table_t adj_trib_out
Definition session.h:86
capinfo_transmode_t transmode
Definition session.h:80
Route Table.
Definition trib.h:99
Telephony Routing Information Base.