Jeremy Lakeman
bc8ff888e9
If frame sender is NULL, assume you mean our primary SID
2013-08-15 16:31:26 +09:30
Jeremy Lakeman
6fe11c8339
Refactor mdp dispatch so internal services can skip it
2013-08-15 10:14:39 +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
gardners
e808fb0872
got rid of vestigal confValueGet() call in alternate code path.
2013-07-19 20:04:15 +09:30
Jeremy Lakeman
ac734b3161
Prevent trying to send packets that are too large
2013-07-11 12:20:12 +09:30
Jeremy Lakeman
adbbed5275
Add new rhizome sync protocol
2013-06-19 12:05:57 +09:30
Jeremy Lakeman
c6241c6634
Ensure routing table is updated when indirect nodes go offline
2013-06-11 10:18:28 +09:30
Jeremy Lakeman
e5856225cf
Add packet retransmissions due to missed ack's
2013-05-29 11:58:05 +09:30
Jeremy Lakeman
6a89f7a321
Improve accuracy of routing print output
2013-05-27 14:24:33 +09:30
gardners
d44e678a4e
use generate_nonce() to generate a nonce, instead of reading from
...
/dev/urandom every time.
2013-05-07 14:43:35 +09:30
Jeremy Lakeman
9ee09e36a0
Replace old routing engine with new link state engine
2013-05-02 14:29:28 +09:30
Andrew Bettison
8771a50b14
Fix TTL out-of-range bug
...
Was causing two routing tests to fail since the TTL decrement
logic was fixed in a8b88a46
The default TTL of 64 overflowed the 5-bit unsigned int in the MDP
packet header
2013-04-23 16:02:39 +09:30
Andrew Bettison
a8b88a462f
Fix clang compiler warnings (revealed some bugs)
2013-04-12 17:16:50 +09:30
Jeremy Lakeman
af584994a2
Ensure encryption buffer doesn't move between nonce and cypher text allocation
2013-02-22 16:29:07 +10:30
Andrew Bettison
5ac6bd8834
Fix compile error on Linux
2013-02-22 12:06:21 +10:30
Jeremy Lakeman
bb8b3d6376
Add new mdp trace command
2013-02-20 16:18:58 +10:30
Jeremy Lakeman
10234018b0
Add interface name to route print output
2013-02-20 16:18:58 +10: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
2bbdd523f0
increase size for unix domain socket pathname from arbitrary 100
...
to PATH_MAX to solve tests erroring out on OSX with long temporary
file names.
2013-02-20 15:36:32 +10:30
Jeremy Lakeman
ba1800012e
Only advertise BAR's on an alarm
...
- we no longer hit the database for every outgoing packet, attempting to announce bundles
- we no longer advertise manifests periodically
- when an interesting bar arrives, we ask for the manifest to be announced, which uses the existing packet format
2013-02-20 15:36:23 +10:30
Jeremy Lakeman
e9d283f3f6
Allow name to be missing
2013-01-17 11:45:45 +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
Andrew Bettison
7d970d8f92
Merge branch 'newconfig' into 'master'
2012-12-11 17:21:56 +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
7bf6beaf14
Throttle network scans some more
2012-12-11 13:31:26 +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
Jeremy Lakeman
f28e95b078
Don't scan broadcast address, limit network size
2012-12-06 10:42:34 +10:30
Jeremy Lakeman
3dfd64f4da
Add manually triggered network scan command
2012-12-05 15:13:47 +10:30
Jeremy Lakeman
55cad42932
Make sure the buffer for cryptobox doesn't move
2012-12-04 16:19:50 +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
Jeremy Lakeman
2b21a691ca
Merge remote-tracking branch 'origin/master' into packet_format
...
Conflicts:
constants.h
packetformats.c
2012-12-03 14:10:32 +10:30
Jeremy Lakeman
d5f78bcffe
Rework reachable link flags for simpler bitmask tests
2012-11-30 14:38:09 +10:30
gardners
eb7524e068
factored out internal MDP services into a separate file, and made
...
core case statement in that brief and clear.
2012-11-30 11:48:00 +10:30
gardners
a665750f4c
prepare and dispatch mdp frames for rhizome over mdp.
...
still need to set bodies of frames, and schedule call backs,
and handle the requests when received.
2012-11-29 21:08:11 +10:30
Jeremy Lakeman
053fa0d52f
Reduce size of MDP port encoding
2012-11-28 15:45:14 +10:30
Jeremy Lakeman
f86176f3bd
Reserve high nonce bit for future use
2012-11-28 15:45:14 +10:30
Jeremy Lakeman
383a63107f
Use named constant for crypto_box_BOXZEROBYTES
2012-11-28 15:45:14 +10:30
Jeremy Lakeman
e0878644fe
Add command to dump routing table
2012-11-28 15:43:58 +10:30
Jeremy Lakeman
a358d924d7
Remove type flag bits
2012-11-28 15:43:57 +10:30
Andrew Bettison
4450116472
Refactor string functions, add str_fromprint()
...
Move lots of non-Serval-specific string functions from "serval.h"/dataformats.c
to "str.h"/str.c.
Add str_fromprint() function that reverses the effect of toprint(): interprets
escape sequences in the source string "\n\t\r\0\xHH\\" and replaces them with a
single char in the destination string.
2012-11-07 16:42:45 +10:30
Jeremy Lakeman
f1b0374b97
Extract crypto signing primitives from mdp processing
2012-10-19 14:54:41 +10:30
Jeremy Lakeman
95843e1f20
Pass overlay frame into mdp processing
2012-10-19 10:40:03 +10:30
gardners
499c4018bf
Imported ref10/ implementation of crypto_sign from supercop-20120525
...
as recommended a while back by Dan Bernstein as offering the fastest
implementation of the crypto_sign() primitives for ARM.
Indeed this implementation IS faster. See comparison below for a
Rock 500 handset (800MHz(?) ARM6, no NEON):
Original ref/ implementation on an R500 stock rom (non-rooted)::
mean signature generation time = 96.80ms
mean signature verification time = 272.20ms
ref10/ implementations on an R500 stock rom (non-rooted):
mean signature generation time = 4.00ms
mean signature verification time = 13.00ms
Approximately 20x speed up, just like that :)
2012-10-18 17:26:48 +10:30
Jeremy Lakeman
b22e3f1964
Add hop count to mdp ping
...
- Allow mdp client to specify ttl
- Copy ttl into and out of overlay frame
2012-10-10 16:22:31 +10:30
Jeremy Lakeman
1de2bc8f23
Fix replying to broadcast mdp ping
2012-10-09 17:03:17 +10:30
Jeremy Lakeman
1f379ea209
Add and preserve QOS bit flags in packet header
2012-10-09 16:17:07 +10:30
Jeremy Lakeman
e28deeb6d5
Move requested payload queue into frame structure
2012-10-09 15:44:37 +10:30
Andrew Bettison
3433b0fbb5
Move is_sid_broadcast() and is_sid_any() macros into serval.h
...
From overlay_mdp.c. is_sid_broadcast() was defined as is_broadcast().
Also clean up the signature and implementation of is_all_matching().
2012-10-09 13:49:23 +10:30
Jeremy Lakeman
c47e99d097
Fix issue #23 , regression in 'id' command
2012-10-08 14:59:58 +10:30
Andrew Bettison
89343c69cd
Merge branch 'rhizomedirect' into 'master'
2012-10-05 17:45:30 +09:30
Jeremy Lakeman
48c9a7067e
keyring_get_nm_bytes doesn't need to know about port numbers
2012-10-05 09:14:24 +09:30
Jeremy Lakeman
32cd46c165
Simplify id peers command, hide mdp implementation details from node info
2012-10-03 16:21:06 +09:30
Jeremy Lakeman
b72c01518b
Move SAS key storage into subscriber structure
2012-10-03 13:59:46 +09:30
Jeremy Lakeman
fa7719fbe8
Write simple vomp console client
2012-09-28 15:23:50 +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
222cb80ce7
Modify lookup uri format to distinguish between serval identities and gateway services
2012-09-21 15:17:56 +09:30
Jeremy Lakeman
0538e95be8
Reduce the potential for packet storms
2012-09-20 10:28:01 +09:30
Jeremy Lakeman
6d31aa52e7
Use the correct public key when a new keyring is created
2012-09-18 13:43:00 +09:30
Jeremy Lakeman
456bf3fdca
Tidy up source port checking
2012-09-14 17:04:35 +09:30
Jeremy Lakeman
337d428f44
Reconstruct encryption / signature flags
2012-09-14 14:41:17 +09:30
Jeremy Lakeman
7b8885fd96
Rework mdp port bindings to use subscriber struct
2012-09-14 11:49:01 +09:30
Jeremy Lakeman
6483d9e0ae
Split client mdp functions so they can be built separately
2012-09-14 11:47:48 +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
3cfcfb3728
Parse mdp payloads from the middle of a frame
2012-09-07 13:45:57 +09:30
Jeremy Lakeman
dc686ad10b
Set incoming packet length
2012-09-07 11:34:00 +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
1f6607af14
Refactor to avoid returning a pointer to the stack
2012-09-01 12:17:22 +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
aa5706f9d7
Refactor routing node information to use new subscriber tree
2012-08-31 15:03:07 +09:30
Jeremy Lakeman
58457a703d
Refactor monitor port bindings
2012-08-14 14:37:16 +09:30
Andrew Bettison
eec8fb6e95
Improve SAS resolution debug messages
2012-08-14 14:06:59 +09:30
Jeremy Lakeman
3ab79d8e5b
Pass phone numbers in vomp call initiation
2012-08-13 14:01:57 +09:30
Jeremy Lakeman
6981e7e2c2
Allow monitor clients to resolve did's
2012-08-10 15:29:19 +09:30
Andrew Bettison
12d8bc0c12
Use new typedef time_ms_t everywhere
2012-08-09 12:14:32 +09:30
Andrew Bettison
fd1da2df93
Fix bug that failed dnaprotocol multi-lookup test
2012-08-06 16:44:36 +09:30
Andrew Bettison
0c7c4e7296
Improve logging to help diagnose dnaprotocol test failure
...
Replace printf() with DEBUGF() and INFOF()
Improve error message from overlay_mdp_sanitytest_sourceaddr()
2012-08-02 17:16:18 +09:30
Andrew Bettison
240be25793
Replace overlay_gettime_ms() with gettime_ms()
2012-07-30 17:22:38 +09:30
Daniel O'Connor
fd1f91db8d
Refactor unix domain socket naming to a separate file instead.
...
Handle selection between normal & abstract sockets in a single place.
overlay_mdp.c tried to have both but this seems like a bug so I've removed the second socket (needs tests).
2012-07-30 11:19:25 +09:30
Andrew Bettison
15d7bec680
Rewrite fprintf(stderr,...) to DEBUGF()
2012-07-27 18:04:46 +09:30
Andrew Bettison
04b95d2590
Merge branch 'andrew' into 'master'
2012-07-25 18:04:16 +09:30
Andrew Bettison
0e5c5e0e98
More work on dnahelper, almost done
...
Servald starts DNA helper, receives startup ACK, sends requests, receives
responses, handles malformed helper responses, echoes dnahelper stderr lines to
log, sends MDP reply packet, waits for dead helper process, all asynchronously.
Shuts down helper process during servald shutdown.
Remaining issues:
- Does not impose a timeout on helper responses.
- Only the first URI is reported by the "dna lookup" command.
2012-07-20 18:17:43 +09:30
Andrew Bettison
5aac5a3854
Unfinished dnahelper implementation
2012-07-18 19:16:30 +09:30
Jeremy Lakeman
1d53726b7b
Merge remote-tracking branch 'origin/master'
...
Conflicts:
rhizome_fetch.c
rhizome_http.c
testframework.sh
2012-07-17 15:39:55 +09:30
Jeremy Lakeman
ddba8033e4
Refactor packet envelope and sid abbreviation reading and writing
2012-07-17 15:30:50 +09:30
gardners
7c5c6b0826
work towards DNA helper interface.
2012-07-16 13:00:55 +09:30
Andrew Bettison
86eb482ed9
Replace macros with functions
...
SET_NONBLOCKING(), SET_BLOCKING(), WRITE_STR() are now set_nonblock(),
set_block() and write_str() respectively, all of which log an error before
returning -1. There are other useful methods: write_all() treats anything less
than all bytes written as an error; write_nonblock() treats EAGAIN and EINTR as
zero bytes written, and a combination: write_all_nonblock().
2012-07-10 16:33:39 +09:30
Andrew Bettison
68ef34c119
Add 'id allpeers' command to facilitate testing
2012-07-04 12:06:15 +09:30
Andrew Bettison
a90c0156ed
New DEBUG_MDPREQUESTS debug flag
...
Use it to instrument the MDP_GETADDRS request, to investigate cause of
test 'dnaprotocol' fixture failure
2012-07-04 10:32:38 +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
b1c78f9fa3
Tighten up overlay socket initialisation and peer listing
2012-07-03 17:38:54 +09:30
gardners
02ca21a601
CHANGED DNA REPLY PACKET FORMAT BREAKING BACKWARDS COMPATIBILITY
...
... as part of working on work on DNA helper callout facility.
(DNA replies now contain a token that can be used to match them
against DNA requests as a happy side-effect).
2012-07-03 16:45:03 +09:30
Jeremy Lakeman
495de9e0ec
Add more profiling instrumentation
2012-07-03 15:50:04 +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
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
Jeremy Lakeman
29cba17891
Fix rhizome transfers
2012-06-27 16:54:42 +09:30
Jeremy Lakeman
0ca4c16f39
Refactor node info to ignore stale responses without sending another request
2012-06-26 11:20:00 +09:30
gardners
c5d89a043d
clean up debugging.
2012-06-26 09:25:42 +09:30
gardners
97cd8f5255
added code to time various servald functions and report periodic
...
statistics. Handles nested calls to correctly aportion call time
among children.
2012-06-26 09:22:51 +09:30
gardners
b40a468276
Merge branch 'eventscheduler'
...
Conflicts:
monitor.c
serval.h
2012-06-25 16:50:23 +09:30
gardners
0c0e5b73e9
reduced debugging output.
2012-06-25 14:46:55 +09:30
Daniel O'Connor
3a606b7d91
Check the socket isn't too long before copying it to prevent a seg fault.
2012-06-25 14:01:50 +09:30
gardners
3b6a004cc9
new event scheduler almost working, but after a while can stop
...
calling overlay_check_ticks alarm for some reason, which causes
queues to congest and bad things to generally happen.
2012-06-22 17:30:21 +09:30
Daniel O'Connor
60512ad3e8
Fix build breakage.
2012-06-22 16:46:30 +09:30
gardners
5dc6d122a5
significant progress towards clean callback scheduler for poll()
...
events and timed callbacks.
2012-06-22 16:05:49 +09:30
gardners
8977142a30
fixed "timeout from MDP server" errors in node info output.
...
added extra tests for node info.
2012-06-21 16:36:38 +09:30
gardners
48a1d7e20f
MDP socket name can now be changed by config option mdp.socket.
...
DNA tests now passing again.
2012-06-21 16:36:37 +09:30
gardners
fefe7d2e91
fixed dna query bugs and split wildcard query test into star and
...
empty string versions.
2012-06-21 16:36:37 +09:30
gardners
c3649c415f
fixed a bug with DNA response generation.
2012-06-21 16:36:37 +09:30
gardners
374e4676a7
various simplifications of DNA reply generation and related code.
2012-06-21 16:36:37 +09:30
gardners
e5394dd143
added stubs for DNA lookup helper app (not yet complete).
...
cleaned up some unused variables.
2012-06-21 16:35:28 +09:30
gardners
8ea37af64d
servald now can return arbitrary URIs in response to DNA requests.
2012-06-21 11:44:49 +09:30
Jeremy Lakeman
26f3966002
Ignore node info results from incorrect sid's
2012-05-25 09:55:56 +09:30
Jeremy Lakeman
43c7297a47
Sanity check on received packet
2012-05-24 17:33:15 +09:30
gardners
e1c30b8ed8
deprioritised peer list resolution so that rhizome doesn't
...
back off at the sight of the first peer list enquiry.
2012-05-22 17:40:11 +09:30
gardners
d2c811b4b4
further rhizome voice traffic detection hooks.
2012-05-22 14:15:19 +09:30
gardners
79ce37ec35
vomp calls should work again, and without the server blocking
...
on the mdp_client_socket.
2012-05-22 10:42:29 +09:30
gardners
62b400fe23
fixed "id peers" so that stale nodes disappear.
2012-05-22 06:36:32 +09:30
gardners
904663ef6c
bandaid for hung servald processes.
...
(real fix being worked on).
2012-05-21 22:47:17 +09:30
Daniel O'Connor
9d07cccf8e
Hide display of MDP socket name behind DEBUG_IO.
2012-05-21 16:18:09 +09:30
Daniel O'Connor
7cb980ab5c
Don't discard return code from overlay_mdp_client_init. IMO this should be assert(mdp_client_socket != -1) though.
2012-05-21 11:09:45 +09:30
Andrew Bettison
189ecee4b9
Clean up over-use of WHY() in overlay_mdp.c
2012-05-20 16:06:32 +09:30
gardners
e38275067a
more fixes and cleanups for dna lookup.
2012-05-18 13:44:15 +09:30
gardners
c9a58937ca
other bug fixes and cleanups for "dna lookup"
2012-05-18 12:55:56 +09:30
gardners
844a480ae7
more trying to reuse socket addresses when stuck.
2012-05-17 13:14:16 +09:30
Andrew Bettison
881576212c
Fix all trivial compiler warnings
2012-05-10 18:08:59 +09:30
Andrew Bettison
68cfa6218c
Minor fix to WHY_perror() macro
2012-05-08 17:48:16 +09:30
Andrew Bettison
836f8332e8
Replace perror() with WHY_perror()
...
Puts more diagnostics to Android log
2012-05-08 14:53:34 +09:30
gardners
171eb75d48
fixed packet size calculation bug.
2012-05-07 16:50:49 +09:30
gardners
74634a5068
minor tweak to dna lookup.
2012-05-07 15:47:20 +09:30
gardners
081e1b64f9
take 2 at fixing dna lookup latency bug.
2012-05-07 15:40:15 +09:30
gardners
92691a82c9
make DNA lookups immediate-dispatch traffic.
2012-05-07 15:29:31 +09:30
gardners
7b520e7a49
fixed various bugs with priorty dispatch of voice traffic.
...
some debug tweaking etc.
2012-05-07 08:31:53 +09:30
gardners
f93ec055ca
removed some debugging
2012-05-06 20:15:32 +09:30
gardners
eb8ffeb71f
progress towards monitor interface for following calls.
2012-05-03 03:00:34 +09:30
gardners
14e4af6392
DNA replies now include name. "set did" now accepts name.
...
Keyring now stores name. "node info resolvedid" now returns name.
2012-05-01 14:38:09 +09:30
gardners
3ca1c9c2b6
only close client socket if it has already been opened.
2012-05-01 06:58:07 +09:30
gardners
77f2220134
removed silly call to client_done when sending every MDP message.
2012-05-01 06:50:57 +09:30
gardners
b335424cd5
improved debug output for when sendto fails.
2012-05-01 06:43:22 +09:30
gardners
6e9d9783b8
various measures to prevent stale MDP bindings from hanging around
...
and causing pain.
2012-05-01 06:10:47 +09:30
gardners
3276b33c73
disabled some debugging output.
2012-05-01 05:16:16 +09:30
gardners
70a0f9e4a1
changed client socket path to include both pid and 32-bit random
...
value. clutter should be constrained by the previous addition of
socket cleanup code.
2012-04-30 20:07:22 +09:30