• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-Sep-2021-

debian/H04-Sep-2021-683492

gfx/H03-May-2022-

m4/H03-Sep-2021-7976

rpm/H03-Sep-2021-508394

web/H03-May-2022-7,7687,703

GITVERSIONH A D04-Sep-20219 21

LICENSEH A D03-Sep-20211.6 KiB3025

Makefile.inH A D03-May-20229.8 KiB307209

README.sourcesH A D03-Sep-20216 KiB168135

VERSIONH A D04-Sep-20217 21

ac-hdrs.h.inH A D03-Sep-20213.2 KiB12885

accept.cH A D03-Sep-202146.6 KiB1,6341,154

accept.hH A D03-Sep-20211.2 KiB6334

acl.cH A D03-Sep-20217 KiB355246

acl.hH A D03-Sep-2021650 3827

aclocal.m4H A D03-Sep-20213.3 KiB9285

apparmor.aprscH A D03-Sep-2021549 2822

aprsc-prepare-chroot.shH A D03-Sep-2021995 3422

aprsc.8.inH A D03-Sep-20212.9 KiB134133

aprsc.cH A D03-Sep-202129.7 KiB1,231899

aprsc.confH A D03-Sep-20214.8 KiB12617

aprsc_muninH A D03-May-202213.3 KiB619535

cJSON.cH A D03-Sep-202155.4 KiB2,4141,984

cJSON.hH A D03-Sep-20218.9 KiB18693

cellmalloc.cH A D03-Sep-20219.3 KiB436288

cellmalloc.hH A D03-Sep-20211.2 KiB5127

cfgfile.cH A D03-Sep-20216 KiB365262

cfgfile.hH A D03-Sep-2021902 3920

client_heard.cH A D03-Sep-20218.9 KiB363212

client_heard.hH A D03-Sep-20211,003 3618

clientlist.cH A D03-Sep-20214.9 KiB211116

clientlist.hH A D03-Sep-2021427 227

config.cH A D03-Sep-202137.4 KiB1,5401,151

config.hH A D03-Sep-20215.9 KiB246171

configureH A D03-Sep-2021158.5 KiB5,7014,761

configure.acH A D03-Sep-20218.4 KiB270228

counterdata.cH A D03-Sep-20215.9 KiB277181

counterdata.hH A D03-Sep-2021689 2812

dupecheck.cH A D03-Sep-202124.6 KiB932582

dupecheck.hH A D03-Sep-20211.4 KiB5937

errno_aprsc.cH A D03-Sep-2021860 5027

errno_aprsc.hH A D03-Sep-2021587 2318

filter.cH A D03-Sep-202166.3 KiB2,6821,604

filter.hH A D03-Sep-20211.4 KiB5029

gai_strerror.cH A D03-Sep-20211.8 KiB7746

getnameinfo.cH A D03-Sep-20218.7 KiB329203

historydb.cH A D03-Sep-202112.5 KiB545367

historydb.hH A D03-Sep-20211.8 KiB7932

hlog.cH A D03-Sep-202111.8 KiB572390

hlog.hH A D03-Sep-20211.4 KiB5833

hmalloc.cH A D03-Sep-20211.1 KiB7142

hmalloc.hH A D03-Sep-2021542 309

http.cH A D03-Sep-202125.7 KiB1,026687

http.hH A D03-Sep-2021611 2710

incoming.cH A D03-Sep-202131.9 KiB1,207716

incoming.hH A D03-Sep-20211,023 3618

inet_ntop.cH A D03-Sep-20215.6 KiB227132

inet_pton.cH A D03-Sep-20215.6 KiB248160

install-shH A D03-Sep-202112.9 KiB508340

keyhash.cH A D03-Sep-20212.7 KiB12152

keyhash.hH A D03-Sep-2021389 196

login.cH A D03-Sep-202114.2 KiB474313

login.hH A D03-Sep-2021609 238

messaging.cH A D03-Sep-20211.7 KiB7937

messaging.hH A D03-Sep-2021535 238

netdb6.hH A D03-Sep-20212.4 KiB8055

netlib.cH A D03-Sep-20211.2 KiB6137

netlib.hH A D03-Sep-2021354 183

outgoing.cH A D03-Sep-20216.1 KiB197108

outgoing.hH A D03-Sep-2021302 185

parse_aprs.cH A D03-Sep-202137.4 KiB1,388801

parse_aprs.hH A D03-Sep-2021538 3014

parse_qc.cH A D03-Sep-202123.1 KiB657288

parse_qc.hH A D03-Sep-2021601 249

passcode.cH A D03-Sep-2021900 3922

passcode.hH A D03-Sep-2021279 184

rwlock.cH A D03-Sep-20217 KiB287182

rwlock.hH A D03-Sep-20212.4 KiB8339

sctp.cH A D03-Sep-202110.2 KiB414299

sctp.hH A D03-Sep-2021425 1711

ssl.cH A D03-Sep-202124 KiB936581

ssl.hH A D03-Sep-20212.3 KiB10364

status.cH A D03-Sep-202127.9 KiB812610

status.hH A D03-Sep-2021752 3316

uplink.cH A D03-Sep-202123.1 KiB825577

uplink.hH A D03-Sep-2021591 2611

version.cH A D03-Sep-2021931 4944

version.hH A D03-Sep-2021557 2711

version_branch.hH A D03-Sep-2021525 254

worker.cH A D03-Sep-202164.4 KiB2,2771,500

worker.hH A D03-Sep-202120.3 KiB529350

xpoll.cH A D03-Sep-20216.7 KiB275209

xpoll.hH A D03-Sep-20211.8 KiB8451

README.sources

1
2This file attempts to describe the contents of the aprsc
3source tree. When adding files, please describe them here. Thanks!
4
5aprsc.c
6	Contains a command line parser, the main signal handler, and
7	a small main loop, which only calls time() to update a global
8	"now" variable (to reduce the amount of system calls). At startup
9	it reads the configuration and starts up the accept thread,
10	which in turns starts worker threads. It can also trigger
11	reconfiguring and log reopening on when signals are received,
12	and start a graceful shutdown.
13
14accept.c
15	Contains the accept thread, which listens on the configured TCP/UDP
16	sockets, accepts (or denies) new connections, and passes them
17	to the worker thread with least existing connections. When
18	a lot of connections arrive quickly, multiple connections
19	are transferred to a worker in a single transaction to reduce
20	lock congestion.
21
22worker.c
23worker.h
24	Contains the body of the worker thread. worker.h defines most
25	of the interesting data structures and is a good place to
26	start digging.
27
28	Worker threads process incoming and outgoing data. There are 1..n
29	workers, where N is 1 to 4 (more really doesn't make sense at this
30	point, and 1 is probably good too). Incoming data is parsed,
31	preprocessed, and passed on to the dupecheck thread which
32	marks duplicate packets as such. Dupecheck returns the packets to
33	the workers which then pass on them to the right clients.
34
35login.c
36	Contains a login_handler() function which is called by the
37	worker thread to process an incoming "user" command from
38	a new client.
39
40uplink.c
41	The uplink management thread takes care of connecting to
42	remote upstream servers as needed. It also contains the handlers
43	necessary for logging in to a server. After a successful connect()
44	the connection is passed to a worker thread, but the login
45	handshake incoming data handlers for the login phase can be found
46	in uplink.c.
47
48incoming.c
49	Contains the incoming_handler() function which is called
50	by the worker thread to process incoming APRS-IS data
51	line by line. Decodes basic IS packet format and calls
52	the Q construct processor and the APRS decoder.
53
54outgoing.c
55	Checks which outgoing packets should be sent to each client by
56	calling filter functions, and does the actual sending.
57
58filter.c
59	APRS-IS filter used by the outgoing packet processing.
60	It tells if the packet should be sent out on given client socket,
61	depending on the user's preferences.
62
63parse_aprs.c
64	A simple APRS parser for aprsc. Translated from Ham::APRS::FAP
65	perl module (by OH2KKU). Only needs to get lat/lng out of the
66	packet, and classify the type of the packet, other features would
67	be unnecessary in this application, and slow down the parser.
68	Called by incoming.c.
69
70parse_qc.c
71	Parses and possibly generates a new Q construct, or modifies
72	an existing one. Called by incoming.c.
73
74messaging.c
75	Contains utility functions for processing received APRS text
76	messages and generating new messages.
77
78clientlist.c
79	Clientlist contains a list of connected clients, along with their
80	verification status. It is updated when clients connect or disconnect,
81	and lookups are made more often by the Q construct algorithm.
82
83	This list is maintained so that the login handler can find duplicate
84	verified logins, and that the Q construct handler can lookup
85	verified logins without locking and walking the other worker thread's
86	client list.
87
88client_heard.c
89	The client's heard list contains a list of stations heard by
90	a given client. It's used for message routing by the
91	message destination callsign.
92
93	The module also maintains a list of callsigns which have transmitted
94	messages to a given client. The list is used to pass courtesy
95	positions to the client.
96
97	The heard list is only called by the worker thread operating
98	on that client socket, so it shouldn't need any locking at all.
99
100config.c
101	Code to read (and reread) configuration using the services
102	provided by cfgfile.c. Validates configuration and takes
103	it into use. Contains global configuration variables.
104
105http.c
106	HTTP server implemented using libevent2. Runs in a single thread,
107	event-driven, provides access to the status page and HTTP
108	position uploads.
109
110--- Libraries ---
111
112The following source code files have rather clean APIs, are not specific to
113to the aprsc project, and are usablein other projects as such.
114
115netlib.c
116	A few network socket utility functions.
117
118xpoll.c
119	A wrapper for different select/poll/epoll implementations.
120	Currently only contains support for poll(). Should maybe
121	support select() for ancient systems. The following platform-
122	specific APIs would provide improved performance: epoll()
123	on Linux 2.6, kqueue on new *BSD, /dev/poll on new Solaris
124	releases. Written for the aprsc project by Heikki Hannikainen,
125	OH7LZB.
126
127passcode.c
128	aprs_passcode() function to calculate the checksum used as the
129	"password" int the APRS-IS login command. Released to the
130	open source APRS community by Steve Dimse, K4HG, on April 11,
131	2000. Obtained from the aprsd sources, which are GPL.
132
133acl.c
134	Access list code for limiting server access based on IP address.
135
136hlog.c
137	A logging library written by Heikki Hannikainen, OH7LZB,
138	for some old project. Supports logging to syslog, stderr,
139	and a log file, with configurable log levels and rotation
140	(reopen on SIGHUP).
141
142hmalloc.c
143	malloc/realloc/free/strdup wrappers with error checking.
144	Please use these in this project. Written by Hessu, OH7LZB.
145
146cfgfile.c
147	A configuration file parser written by Tomi Manninen, OH2BNS,
148	originally for the node(1) program in the ax25-utils package.
149
150keyhash.c
151	Various attempts at keyhashing.
152	Contains algorithms:
153	  - FNV-1a
154	  - CRC32
155	Currently using FNV-1a
156
157rwlock.c
158	A schoolbook pthread rwlock implementation for systems
159	lacking one (Solaris 2.6 to name one).
160	From the book "Programming with POSIX Threads", by
161	David R. Butenhof. Appears in modified and GPL'ed form in at
162	least the Bacula sources.
163
164inet_ntop.c, inet_pton.c, getnameinfo.c, gai_strerror.c:
165	Backup instances of IPv4/IPv6 agnostic resolver library just
166	in case the operating system does not have it.
167	(From ZMailer by Matti Aarnio, OH2MQK)
168