Jeremy Lakeman
7081e7044f
Ensure AF_UNIX DGRAM sockets don't block during tests
2014-03-03 14:06:31 -08:00
Jeremy Lakeman
880117f6db
Reduce peak bandwidth usage (though we really need a dynamic limit)
2014-03-01 05:28:54 +10:30
Jeremy Lakeman
b8971e51f4
Refactor socket helper functions to take socket_address struct
2014-02-20 14:44:38 +10:30
Jeremy Lakeman
04955f1ddd
Fix interface name comparison for detecting real interfaces
2014-01-20 16:01:29 +10:30
Jeremy Lakeman
4bb3336b33
Generalise method for defining multiple interfaces
2014-01-09 15:01:38 +10:30
Jeremy Lakeman
60a2aaa547
Ensure only interfaces that are UP are closed
2014-01-09 15:01:38 +10:30
Jeremy Lakeman
506518ad06
Allow interfaces to use local unix addresses
...
- broadcast packets are sent to all sockets in the same folder
- switched most tests to use local sockets
2014-01-09 15:01:38 +10:30
Jeremy Lakeman
5f2c6e364a
Refactor interface addresses to use new socket_address struct
2014-01-09 15:01:38 +10:30
Andrew Bettison
ebc3133f5c
Change overlay_buffer fields from int to size_t
...
Fixes many -Wsign-compare warnings
2013-12-10 17:03:30 +10:30
Andrew Bettison
5d741361ea
Fix -Wsign-compare warnings: make loop counters unsigned
2013-12-10 16:21:23 +10:30
Andrew Bettison
f79e6f703a
Fix WHYF_perror() format string error
2013-12-10 10:38:03 +10:30
Andrew Bettison
30b2059608
Fix -Wunused-parameter warnings
...
New UNUSED(param) macro suppresses the warning for a specific parameter
In some cases, removed the unused parameters. In others, used the
parameter in a DEBUGF() or assert() statement to document the intent.
2013-12-09 18:22:18 +10:30
Andrew Bettison
8db5f9c14a
Merge branch 'anyservice' into 'development'
...
Allows any valid "service" manifest field in the "rhizome add file"
command
Many improvements in Rhizome manifest parsing; stricter manifest syntax
rules (no comment or blank lines, field names must be alphanumeric
identifiers), faster preliminary manifest inspection when receiving
manifest advertisements or syncing manifests
The 'development' branch introduces "struct socket_address" which
coincidentally fixed the recently encountered Linux kernel 3.12
recvmsg(2) EINVAL problem, so that 'rhizomeprotocol' tests which fail on
the 'anyservice' branch will pass after this merge
2013-12-01 05:44:01 +10:30
Andrew Bettison
72482b3427
Better error logging for recvwithttl()
2013-12-01 05:13:33 +10:30
Andrew Bettison
dafa1fc186
Improve struct socket_address
...
Add struct sockaddr_in 'inet' union field, rename 'addr_un' union field
to 'local'
Replace recvwithttl()'s (struct sockaddr *) and socklen_t pair of args
with single (struct socket_address *) arg
2013-11-29 12:56:59 +10:30
Jeremy Lakeman
d45470ce81
Refactor radio link for better encapsulation
2013-11-27 13:13:08 +10:30
Jeremy Lakeman
cd639ba3b6
Use constants instead of magic numbers
2013-11-27 13:12:25 +10:30
Jeremy Lakeman
ad33264834
Rename mavlink to radio_link
...
- split link state from slip structures and encapsulate it completely
- allocate interface specific buffers on demand
2013-11-27 13:09:26 +10:30
Andrew Bettison
fb39dd84ef
Improve dummy file Read/Write debug logging
2013-11-26 15:33:54 +10:30
Andrew Bettison
45450386db
Improve sendto(2) failure diagnostics
...
In MDP client and server MDP overlay code
2013-11-22 13:12:29 +10:30
Andrew Bettison
3805650736
Use ssize_t for sendto(2) return value, not int
...
Also improve error checking on ssize_t values (use ==-1 not <0) test
and cast ssize_t to size_t for comparisons
2013-11-22 11:55:09 +10:30
Andrew Bettison
e92e7cb65e
Improve sendto(2) error log messages
2013-11-22 11:55:09 +10:30
Andrew Bettison
ba0ab14c69
Clean up inclusion of <netinet/in.h>
...
Make all #include <netinet/in.h> conditional upon HAVE_NETINET_IN_H
Remove unnecessary #include <netinet/in.h> from source files
Reformat include block in "serval.h" for readability
2013-11-12 11:39:06 +10:30
Jeremy Lakeman
60e3f5a3fc
Fix printf formats for 64bit compilation
2013-10-09 10:31:52 +10:30
Andrew Bettison
c9f9025581
Fix intermittent 'routing' test failures
...
Caused by tests running so slowly that nodes become unreachable due to
timeout before the assertion of reachability is made. The timeout was
hard coded at five times the tick interval (2.5 seconds).
Introduced new config options: mdp.iftype.*.reachable_timeout_ms and
interface.*.mdp.reachable_timeout_ms to allow the timeout to be
configured. Configure the timeout to 60 seconds in 'routing' tests.
Changed the config schema to move options interfaces.*.mdp_tick_ms and
interfaces.*.packet_interval into interfaces.*.mdp.tick_ms and
interfaces.*.mdp.packet_interval (introduced new sub-struct 'mdp').
2013-10-08 16:36:07 +10:30
Andrew Bettison
9ba08e465f
Issue #11 : use socklen_t instead of int where appropriate
...
Also check for valid recvaddrlen before processing a received MDP packet.
2013-10-08 14:11:00 +10:30
Andrew Bettison
ffafae86b1
Issue #11 : replace long long with int64_t
2013-10-07 05:54:46 +10:30
Jeremy Lakeman
08b44e96ed
Improve html debug statistics
...
- shift radio rssi onto interace structure
- track packets sent received
- create html output for interface stats
- create html output for link state routing stats
2013-09-23 11:31:38 +09:30
Jeremy Lakeman
e3a5e8c353
Use heartbeat packets to control serial buffering
...
- Improve simulation of fakeradio
- Backtrack on partial RS errors in case of truncation / heartbeat insertion
2013-09-20 14:41:50 +09:30
Jeremy Lakeman
4b9817218d
Improve mavlink packet synchronisation
...
- backtrack when decoding fails
- assume locally built heartbeats may split a valid remote packet
2013-09-20 14:41:50 +09:30
Jeremy Lakeman
f7bffbfabe
Simplify packet debug logging
2013-09-20 14:41:50 +09:30
Jeremy Lakeman
56d3609a3f
Reduce frequency of mavlink heartbeat messages
2013-09-20 14:41:50 +09:30
Jeremy Lakeman
c13c7799f6
Send mavlink heartbeat every second
2013-09-13 14:37:33 +09:30
Jeremy Lakeman
3f123e1875
Send the next packet via stream interface ASAP
2013-09-12 16:14:01 +09:30
Jeremy Lakeman
6f26594447
Simplify mavlink link frame creation
...
- build one frame at a time directly from the prepared overlay buffer
2013-09-11 17:15:43 +09:30
Jeremy Lakeman
9d7e37cc5e
Pass ownership of final packet buffer to broadcast_ensemble
2013-09-11 11:13:33 +09:30
gardners
fa157500b3
Add debug output for mavlink sent and received frames.
...
debug.interactive_io can be used to pause after sending or receiving a packet.
2013-09-10 15:14:23 +09:30
gardners
f02e55c443
add 32bit crc to mavlink frames, and reject those that fail.
2013-09-10 14:53:12 +09:30
gardners
7248e01567
Implement flow of mavlink packets over serial connections
...
Replaces upper-7 bit slip encoding
Solves reliability of reading radio status messages
2013-09-10 13:07:52 +09:30
gardners
0cbebedc77
Add tx throttling for packet radios
...
avoids missing data due to lack of flow control.
2013-09-10 11:53:38 +09:30
Jeremy Lakeman
3be2ed615d
Resurrect packet visualisation
2013-09-02 14:55:02 +09:30
Jeremy Lakeman
e3b616421f
Remember outgoing links
2013-08-30 17:38:29 +09:30
Jeremy Lakeman
842915f70c
Fix, using wrong loop variable in interface detection
2013-08-29 17:22:59 +09:30
Jeremy Lakeman
95831a51aa
Don't schedule another poll if the interface is down
2013-08-28 17:06:42 +09:30
Jeremy Lakeman
7a4b1c3f19
Don't destroy the interface destination when bringing it down
2013-08-28 16:48:55 +09:30
Jeremy Lakeman
d2a88b8b2d
Bring the interface down if sending broadcast packets fails for any reason
2013-08-28 16:25:05 +09:30
Andrew Bettison
1b26917f58
Fix bug in handling errno from lseek()
2013-08-26 17:39:07 +09:30
Jeremy Lakeman
56cea7472a
Fix leak on interface down
2013-08-15 16:31:26 +09:30
Jeremy Lakeman
36b0fe51ae
Fix ping via directory service test
2013-08-13 10:55:48 +09:30
Jeremy Lakeman
a516af616e
Improve reliability
...
- don't drop packets that haven't been resolved yet on incoming acks
- statistically drop unicast packets during tests
2013-08-12 16:38:37 +09:30
Jeremy Lakeman
81afc42d8b
Major refactor to packet queuing and delivery in preparation for unicast link tracking.
...
Unicast tests broken
2013-08-09 09:37:08 +09:30
Jeremy Lakeman
d47d1b1684
Split network destination structure from interface structure
2013-08-05 14:35:49 +09:30
Jeremy Lakeman
6645feb0d8
Use %zu format for size_t & off_t types
2013-07-19 22:31:13 +09:30
gardners
d21bb8338f
add missing casts for formatted output strings (was generating
...
warnings on Linux).
2013-07-19 20:04:15 +09:30
Jeremy Lakeman
49e0286b43
Reduce packet header size for point-to-point links
...
- new interface.x.point_to_point config
- disable local echo for point to point dummy interfaces
- add ME and YOU sid abbreviation codes after learning other sid
2013-07-16 15:38:00 +09:30
Jeremy Lakeman
aa87168d7d
Add per-interace dump of sent and received bytes
2013-07-15 15:27:41 +09:30
Jeremy Lakeman
3855ff35c4
Clean up string formatting for 64bit compilation
2013-07-15 09:59:24 +09:30
Jeremy Lakeman
9550dbce9d
Improve debugging of received stream bytes
2013-06-24 16:10:24 +09:30
Jeremy Lakeman
0736e6b9e8
Reduce the delay for reading from dummy interfaces during rhizome transfers
2013-06-20 11:10:02 +09:30
Jeremy Lakeman
61a958fd34
Avoid setting alarms with deadlines that have already elapsed
2013-06-19 15:36:18 +09:30
Jeremy Lakeman
3e57add9ca
Fix, initialise read / write handles so we don't close fd=0
2013-06-19 12:05:56 +09:30
Jeremy Lakeman
ba91996696
Don't log my own rejected packets
2013-06-14 10:42:43 +09:30
Jeremy Lakeman
c0b31a2774
Report packet acks, make routing decisions based on dropped packets
2013-05-08 11:37:02 +09:30
Jeremy Lakeman
dd03014b44
Choose the best link from a neighbour
2013-05-02 14:29:31 +09:30
Jeremy Lakeman
9ee09e36a0
Replace old routing engine with new link state engine
2013-05-02 14:29:28 +09:30
Jeremy Lakeman
559b270966
Only compare routes that have all links via the same neighbour
2013-04-29 17:07:36 +09:30
gardners
3e7de24bdf
added uartpbs and ctsrts config options to packet radio serial
...
interface configuration options.
2013-04-26 15:16:51 +09:30
Andrew Bettison
ddfcc60331
Log WARNing not ERROR for missing dummy interface file
2013-04-15 16:30:07 +09:30
gardners
2252fdcaa7
created tool for automatically finding IN()s without matching
...
OUT()s or where return() is used instead of RETURN().
Added OUT() to end of all functions using IN() that lacked it to
make it easier to statically analyse this invariant.
Fixed several return instead of RETURNs detected through use of
this tool. #49
2013-02-20 16:18:56 +10:30
gardners
f465f3a9ee
Add lots of profiling to assist in debugging
...
- made some debug output conditional.
- make it possible to debug slip decoding without getting swamped by other output.
- Improve reporting of unnamed schedule() calls.
- always collect performance statistics, and report on any excess
use (>1sec in every 3), even if debug.timing is not enabled.
- include file size information in Rhizome transfer messages.
- reduce output when debug.rhizome_rx is set.
2013-02-20 15:36:30 +10:30
gardners
80168e3530
Improve debug logging
...
- add debug.trace to help track down segfaults
- warn about alarms without names (which are then hard to track down).
2013-02-20 15:36:30 +10:30
gardners
e551017896
push profiling down deeper into rhizome_fetch_poll()'s children.
2013-02-20 15:36:29 +10:30
Jeremy Lakeman
eeb7fb7f9b
Reinitialise an interface when it comes back up
2013-02-20 15:36:28 +10:30
gardners
610f7acdf8
fixed test for malformed packets.
2013-02-20 15:36:27 +10:30
gardners
80a5feb76a
show rejected packets iff debug.rejecteddata set
2013-02-20 15:36:26 +10:30
Jeremy Lakeman
2193d8fb74
Process incoming stream packets
2013-02-20 15:36:25 +10:30
gardners
4d674d06b9
improved debugging arrangements for packetradio.
2013-02-20 15:36:25 +10:30
gardners
5b26cabee3
fixed bugs in UPPER7 SLIP encapsulation.
...
Improved debugging of the same.
2013-02-20 15:36:25 +10:30
gardners
fea06932e5
added new slip.c with 7-bit-high packet encapsulation, packet length
...
and CRC32.
Also added in-line RSSI report reception for RFD900 radios.
2013-02-20 15:36:24 +10:30
gardners
a42c685715
don't complain if packet radio interface doesn't support fseek().
2013-02-20 15:36:24 +10:30
Jeremy Lakeman
45efb3f899
Add more raw options to serial interface
2013-02-20 15:36:24 +10:30
Jeremy Lakeman
6d9bbe2e2c
Refactor interface handling to separate encapsulation from stream type
2013-02-20 15:36:23 +10:30
Jeremy Lakeman
c7caec488a
Don't aggregate packets together on radio links
2013-02-20 15:36:23 +10:30
Jeremy Lakeman
84ad4debfa
Throttle serial radio devices when tx buffer is in use
2013-02-20 15:36:22 +10:30
gardners
37ed7694bd
added safety catch for null message field.
...
note that debug.packettx seems to be broken.
2013-02-20 15:36:21 +10:30
gardners
b70aa9b8c6
fixed problems with interface ticking on packetradio interfaces.
...
still crashes and burns.
2013-02-20 15:36:21 +10:30
gardners
a4bfdc6c75
fixed serial port reading and interface setup bugs.
...
now crashes when trying to tick packet radio interface.
2013-02-20 15:36:20 +10:30
gardners
7287a2d599
add hook for transmitting packet via packet radio interface.
...
make serial port non-blocking (which for some reason has also
killed our ability to read from it :/).
2013-02-20 15:36:20 +10:30
gardners
0268ccd21a
setup serial port mode when opening packet radio interface.
...
(now reads bytes over serial line)
2013-02-20 15:36:20 +10:30
gardners
190a5e693f
refactored packet radio code mostly into separate file.
...
began writing stateful packet decoder.
2013-02-20 15:36:20 +10:30
gardners
70af7fae0d
initial work on implementing packet radio interface.
...
can open and read from TTY.
doesn't do anything with the data yet.
doesn't write proper packets to the interface yet.
doesn't use bitrate config option yet.
2013-02-20 15:36:19 +10:30
Andrew Bettison
cfe4da687c
New hton_in_addr() function
...
To silence warnings in struct in_addr assignments on Solaris, whose struct
in_addr definition is a monstrosity.
2013-02-05 16:56:37 +10:30
Jeremy Lakeman
b35c1aca43
Specify that unicast traffic should use unicast UDP packets
2013-01-29 11:57:13 +11:00
Jeremy Lakeman
9a78e16625
Use payload queue for periodic route advertisements
2012-12-19 12:36:28 +10:30
Jeremy Lakeman
82db15db5b
Use any packet as a self-announce
...
Stop sending OF_TYPE_SELFANNOUNCE
Deprecate OF_TYPE_DATA_VOICE
Tweak payload priorities
Don't allow client applications to send high priority payloads
2012-12-16 10:09:29 +10:30
Jeremy Lakeman
e517e3a59e
Add per-interface packet transmit limits
2012-12-14 17:07:28 +10:30
Jeremy Lakeman
de8ffd7ea9
Mark all subscribers as unreachable when the network goes down
2012-12-12 10:01:08 +10:30
Andrew Bettison
5985df751d
Overhaul debug flags
...
Replace debugflags_t and DEBUG_XXX bit masks with config schema "debug.xxx"
entries.
No more support for "debug.all".
2012-12-11 15:59:46 +10:30
Jeremy Lakeman
bc91b05d7f
Fix interface matching
2012-12-10 16:15:37 +10:30
Jeremy Lakeman
c3f573ea7f
Add more messages, wait for directory service to start first
...
And make sure gaps in sockaddr_in are zeroed.
2012-12-10 14:42:57 +10:30