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
Jeremy Lakeman
2932544eb8
Add IPv4 addresses to dummy interface
2012-12-10 14:06:25 +10:30
Jeremy Lakeman
78aa01ad30
Add stun lookup messages
2012-12-10 14:05:57 +10:30
Andrew Bettison
8425882ffc
Merge branch 'newconfig' into 'master'
...
Conflicts:
commandline.c
conf.h
dataformats.c
log.h
overlay_address.c
overlay_interface.c
packetformats.c
rhizome.c
serval.h
tests/directory_service
vomp_console.c
2012-12-07 14:09:55 +10:30
Andrew Bettison
b497c88d9d
Fix 'directory_service' test failures
...
New configuration schema.
2012-12-05 15:47:14 +10:30
Jeremy Lakeman
3dfd64f4da
Add manually triggered network scan command
2012-12-05 15:13:47 +10:30
Jeremy Lakeman
5c7eb4a594
Add unicast probe packets
...
Probe directory service instead of assuming that it is always reachable
Fix directory service and routing tests
2012-12-04 14:47:57 +10:30
Andrew Bettison
caa209fc1d
Integrate new config into servald
...
Not passing any tests yet, but compiles and links and simple uses do not
SEGV.
2012-12-04 14:12:28 +10:30
Jeremy Lakeman
54f9d9b0e0
Rely on please explain, don't send too many full sids
2012-11-28 15:44:39 +10:30
Jeremy Lakeman
3d14e2f3db
Hide more information about packet headers
2012-11-28 15:43:56 +10:30
Andrew Bettison
c4b90a108b
Fix compile warnings on Solaris (gcc 4.4)
2012-11-28 14:13:25 +10:30
Andrew Bettison
494a766b9e
Improve str.h and str.c
...
Move alloca_tohex() from serval.h into str.h so it can be used stand-alone.
Rename str_to_ll_scaled() to str_to_int64_scaled(). Add str_to_uint64_scaled()
and scale_factor().
Add a few more URI parsing functions. Move some functions out of str.c and
into str.h as inline functions.
2012-11-22 18:15:40 +10:30
Jeremy Lakeman
36cee7e9bc
Move payload queueing functions to separate .c file
2012-11-21 11:02:00 +10:30
Jeremy Lakeman
93ee6b3fc8
Don't kill the interface for unreachable unicast peers
2012-11-12 14:46:09 +10:30
Jeremy Lakeman
54e2d66934
Allow for with slightly longer paths
2012-11-09 13:40:55 +10:30
Andrew Bettison
d9fb8d7956
Refactor 'interfaces' config parsing
...
Use new "str.h" str_to_ll_scaled() function to implement parse_quantity().
2012-10-31 18:16:05 +10:30
Andrew Bettison
c3ef89acc1
Fix bug: "interfaces=+" not working
...
The logic was clobbered back in June in a refactor by Daniel.
2012-10-30 14:50:47 +10:30
Jeremy Lakeman
a4b392d693
Don't include rhizome adverts in packets with voice frames
2012-10-29 13:10:20 +10:30
Jeremy Lakeman
de95bb3971
Gracefully disable rhizome if the database cannot be opened
...
- close database after every command line operation
- don't cache rhizome enabled configuration
- don't send advertisements unless the database is open and the web server is running
- don't provess advertisements unless the database is open
2012-10-29 13:05:03 +10:30
Jeremy Lakeman
bb973e764e
Don't send duplicate payloads over unicast
2012-10-19 10:40:35 +10:30
Jeremy Lakeman
3ab474be16
Always update unicast addresses
2012-10-19 10:40:02 +10:30
Andrew Bettison
259b9a9d24
Logging/debug improvements: __WHENCE__, __whence
...
Introduce __WHENCE__ macro and a block comment in log.h explaining it.
In "primitive" kinds of functions, rename 'whence' arguments to '__whence' and
use WHYF(), WARNF(), DEBUGF() macros instead of calling logMessage() directly.
2012-10-16 17:00:03 +10:30
Andrew Bettison
89343c69cd
Merge branch 'rhizomedirect' into 'master'
2012-10-05 17:45:30 +09:30
Jeremy Lakeman
2a7bd28e51
Extend packet queue to allow sending multiple copies of the same payload for reliability
2012-09-28 11:28:01 +09:30
Andrew Bettison
fb7c9e5633
Fix compiler warnings on Linux gcc 4.7.1
2012-09-27 11:02:58 +09:30
Jeremy Lakeman
b7c088f2fd
Reduce latency of dummy interface, improve some debug messages
2012-09-20 10:28:02 +09:30
Jeremy Lakeman
ac00c06a18
Improve reliability of tests with dummy interface
2012-09-20 10:28:01 +09:30
Jeremy Lakeman
0538e95be8
Reduce the potential for packet storms
2012-09-20 10:28:01 +09:30
Jeremy Lakeman
dc8a453b7f
Add please explain message
...
- non-tick packets now include a poorly formed SELF_ANNOUNCE to correctly identify every packet sender
2012-09-20 10:28:01 +09:30
Jeremy Lakeman
ee4e05109f
Improvements to dummy interfaces
...
- separate folder configuration
- allow for tickless dummy interface
- allow for "unicast" peer discovery (though there's no packet filtering)
2012-09-19 09:52:14 +09:30
Jeremy Lakeman
5914bc92ce
Use a directory service as a default route
2012-09-19 09:50:29 +09:30
Jeremy Lakeman
7c73ca7a78
Finish test and implementation of directory service
2012-09-18 12:30:15 +09:30
Jeremy Lakeman
ac8d9b93e6
Add stub directory service
2012-09-14 11:50:45 +09:30
Jeremy Lakeman
58fae14ef2
Bind to interface address so unicast packets can be received & always bind to INADDR_ANY
2012-09-11 15:20:44 +09:30
Jeremy Lakeman
fbe9980199
Add explicit flag for unicast peers
2012-09-10 10:55:12 +09:30
Jeremy Lakeman
f2bae4361e
Improve logging and failure handling
2012-09-10 10:31:01 +09:30
Jeremy Lakeman
2b530bb02a
Trying to send unicast sas request
2012-09-07 13:04:40 +09:30
Jeremy Lakeman
3b55643b08
Send my full sid periodically for any outgoing payload header
2012-09-07 10:01:34 +09:30
Jeremy Lakeman
adde23dfd0
Fix for restarting interfaces with different broadcast address
2012-09-06 09:57:36 +09:30
Paul Gardner-Stephen
bba6839656
Initial stab at porting to Solaris.
...
It compiles without warning (with CC=gcc) but doesn't link
because NaCL doesn't build yet.
2012-09-05 20:42:50 +09:30
Jeremy Lakeman
c6eafb5380
Demote port comparison from an assert to an error
2012-09-01 12:41:51 +09:30
Jeremy Lakeman
cf22ef8e8c
Ensure route and interface is still valid before sending packet
2012-09-01 12:41:50 +09:30
Jeremy Lakeman
211e25608e
Send packet to unicast address
2012-09-01 12:18:39 +09:30
Jeremy Lakeman
1b91724da2
Allow for interfaces that don't tick, pack rhizome manifests into all packets
2012-09-01 12:18:39 +09:30
Jeremy Lakeman
e05806f25e
Separate routing calculation from resulting rules, refactor more code to use subscriber structure
2012-08-31 15:11:18 +09:30
Jeremy Lakeman
df0e20408c
Close sockets on poll errors
2012-08-31 15:04:06 +09:30
Jeremy Lakeman
f6c899e107
Refactor overlay buffer interface to support simple parsing
2012-08-31 15:03:07 +09:30
Jeremy Lakeman
22c6b530ed
Rework broadcast address handling, working towards a unified address struct
2012-08-31 15:03:07 +09:30
Daniel O'Connor
e7201963d0
Staticise a bunch of functions so I get some understanding of what is needed where.
2012-08-31 12:13:20 +09:30
Daniel O'Connor
0dd2145ed4
assert that the port number matches between calls to overlay_interface_init_any()
2012-08-24 15:21:23 +09:30
Andrew Bettison
27a0a6eeb5
Introduce struct __sourceloc
...
Replaces (const char *file, unsigned int line, const char *function) arguments
to all logging functions, simplifies malloc/free tracking code in
overlay_buffer.c and Rhizome manifest alloc/free tracking in rhizome_bundle.c.
Use __HERE__ macro instead of (__FILE__, __LINE__, __FUNCTION__) everywhere.
Special __NOWHERE__ macro is equivalent to (NULL, 0, NULL).
Declare net.c functions in new "net.h" header, so log.c doesn't have to pull
in the entire "serval.h" just to use write_str().
Facilitates progress on issue #2 .
2012-08-23 12:31:07 +09:30
Jeremy Lakeman
60a82eb251
Improve logging
2012-08-14 16:31:29 +09:30
Jeremy Lakeman
fd111a4d1f
Listen to INADDR_ANY on OSX, otherwise we can't hear broadcasts
2012-08-09 13:32:08 +09:30
Andrew Bettison
12d8bc0c12
Use new typedef time_ms_t everywhere
2012-08-09 12:14:32 +09:30
Andrew Bettison
858c6c3efc
Improve logging to diagnose dnaprotocol test failure
2012-08-03 19:08:44 +09:30
Andrew Bettison
03da89225d
Add xprintf() extensible stream formatter
...
Use it to replace open_memstream(3) in logServalPacket() -- not available on
Mac OS X
2012-08-03 16:44:05 +09:30
Andrew Bettison
9ede55ab4c
Fix DEBUG_packet_visualise() log output
2012-08-03 13:12:54 +09:30
Andrew Bettison
f37ec5af09
Reduce use of stderr in many places
...
serval_packetvisualise() is now replaced by DEBUG_packet_visualise() which uses
logging system not stderr (so now it will appear in Android log).
Replaced several fprintf(stderr,...) with DEBUGF(...).
Command line only prints a full help message on "help" command -- a command
parse failure simply informs the user about the "help" command.
2012-08-01 17:54:02 +09:30
Andrew Bettison
76cfb7beae
Fix bug failed dnaprotocol tests non-deterministically
...
Appending to the dummy interface file was altering the read offset position, so
very many receive packets were being lost.
2012-07-31 17:49:24 +09:30
Andrew Bettison
24b05eaeaa
Fix bug in self-announcements
...
On first tick, do not send s1 = 0, but s1 = s2 - 1 (1 ms window)
2012-07-31 16:21:29 +09:30
Andrew Bettison
ddc17434c4
Fix next-hop logic for case of no interfaces up
2012-07-30 18:35:28 +09:30
Andrew Bettison
240be25793
Replace overlay_gettime_ms() with gettime_ms()
2012-07-30 17:22:38 +09:30
Jeremy Lakeman
6e7c2196ba
Close interfaces on socket errors or when not detected
2012-07-25 16:53:44 +09:30
Jeremy Lakeman
74095e5356
Correctly display interface ip addresses on android
2012-07-25 14:53:53 +09:30
Jeremy Lakeman
ddba8033e4
Refactor packet envelope and sid abbreviation reading and writing
2012-07-17 15:30:50 +09:30
Jeremy Lakeman
5e915bcc09
Schedule packet sending
2012-07-13 12:18:50 +09:30
Jeremy Lakeman
d36ba78afe
Refactor packet construction and sending
2012-07-13 12:18:50 +09:30
Jeremy Lakeman
27c24f377e
Add deadline time for alarm prioritisation
2012-07-13 12:18:45 +09:30
Jeremy Lakeman
35b4ba8594
Schedule interface ticks per interface
2012-07-13 12:13:46 +09:30
Andrew Bettison
d111f763c7
Fix bugs revealed by 'rhizomeprotocol' test
...
Was not transmitting actual HTTP server port in rhizome announcements, was
always transmitting port 4110.
When trying for a free HTTP server port, sometimes bind() succeeds but listen()
fails with EADDRINUSE, so new logic to deal with that.
2012-07-12 12:10:59 +09:30
Jeremy Lakeman
ef8c1dd981
Simplify next interface tick calculation
2012-07-05 15:56:42 +09:30
Andrew Bettison
451e517c02
Clean up last #warning compiler message
2012-07-04 10:49:31 +09:30
Andrew Bettison
72769e162b
Replace overlay_render_sid_prefix() with alloca_tohex()
...
To eliminate timebomb bugs caused by rotor wraparound
2012-07-04 10:30:46 +09:30
Andrew Bettison
2c87039307
Replace overlay_render_sid() with alloca_tohex_sid()
...
To eliminate timebomb bugs caused by rotor wraparound
2012-07-03 17:59:30 +09:30
Andrew Bettison
78a8aaca16
Code improvements while debugging 'dnaprotocol' tests
...
Use ssize_t and size_t where required by system calls
More stringent checking of errors from system calls
Log the offset when writing to dummy interface file
Clean up many WHY/INFO/DEBUG statements
Convert many fprintf(stderr,...) to DEBUGF()
2012-07-03 15:36:51 +09:30
Andrew Bettison
8020ea3b74
Merge branch 'eventscheduler' into master
...
Conflicts:
commandline.c
monitor.c
overlay.c
overlay_interface.c
overlay_packetformats.c
rhizome_fetch.c
rhizome_http.c
rhizome_packetformats.c
serval.h
server.c
testdefs.sh
testframework.sh
tests/dnaprotocol
tests/server
2012-07-03 10:26:22 +09:30
Jeremy Lakeman
132d3a6f9b
rename profiling structure
2012-07-02 16:04:00 +09:30
Jeremy Lakeman
e705696896
separate statistics gathering from the scheduler structure
2012-07-02 15:20:30 +09:30
Jeremy Lakeman
89566e4d3d
Refactor how functions are scheduled or file handes are watched
2012-07-02 13:19:54 +09:30