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
34#include <netinet/in.h>
35
36
37
38
40typedef enum {
41 STATE_IDLE,
42 STATE_CONNECT,
43 STATE_ACTIVE,
44 STATE_OPENSENT,
45 STATE_OPENCONFIRM,
46 STATE_ESTABLISHED
48
50extern const char *session_state_strs[];
51
53typedef struct {
54 pthread_t thread;
58
59 int fd;
60
61 /* negotiated */
62 uint16_t hold;
63 uint16_t keepalive;
64
65
66 const peer_t *peer;
67 uint32_t id;
68
69 /* times */
73
74 /* capabilities */
76 capinfo_routetype_t *routetypes;
78} session_t;
79
80
83
85int send_notification(int fd, int code, int subcode);
86
88const char *id_str(uint32_t id);
89
91void *session_loop(void *arg);
92
94void session_shutdown(session_t *session);
95
97void session_destroy(session_t *session);
98
99
100#endif /* _SESSION_H */
101
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:48
void session_shutdown(session_t *session)
Shutdown socket, terminate connection and thread.
Definition session.c:204
int send_notification(int fd, int code, int subcode)
Send notification helper.
Definition session.c:87
const char * id_str(uint32_t id)
LSID string.
Definition session.c:70
void session_change_state(session_t *s, session_state_t new_state)
Change session state.
Definition session.c:78
void * session_loop(void *arg)
Session loop.
Definition session.c:136
void session_destroy(session_t *session)
Destroy session object.
Definition session.c:213
session_state_t
Session states.
Definition session.h:40
Known peer info object.
Definition locator.h:36
Session object.
Definition session.h:53
pthread_t thread
Definition session.h:54
int mark_stop_init
Definition session.h:57
const peer_t * peer
Definition session.h:66
time_t last_read_time
Definition session.h:71
time_t last_write_time
Definition session.h:72
time_t established_time
Definition session.h:70
uint16_t hold
Definition session.h:62
capinfo_routetype_t * routetypes
Definition session.h:76
int fd
Definition session.h:59
session_state_t state
Definition session.h:55
int initiated
Definition session.h:56
uint16_t keepalive
Definition session.h:63
uint32_t id
Definition session.h:67
size_t routetypes_count
Definition session.h:77
capinfo_transmode_t transmode
Definition session.h:75