Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RPL with all modes of operation #869

Draft
wants to merge 133 commits into
base: main
Choose a base branch
from
Draft
Changes from 1 commit
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
6a0c432
add feature flags for RPL MOPs
thvdveld Aug 10, 2023
fd4b5bd
trickle: remove now and rand from default and new
thvdveld Aug 10, 2023
e74d10e
add Eq to SequenceCounter
thvdveld Aug 10, 2023
f97f137
add Default Instance ID constant
thvdveld Aug 10, 2023
a86a44c
make TrickleTimer public
thvdveld Aug 10, 2023
b0c5349
add RPL configuration builder
thvdveld Aug 10, 2023
d495504
remove redundant information in RPL structs
thvdveld Aug 10, 2023
893a7ec
fixup! remove redundant information in RPL structs
thvdveld Aug 10, 2023
5aada70
add CI tests for RPL MOPs
thvdveld Aug 10, 2023
df38e25
fix tests with wrong feature flag
thvdveld Aug 10, 2023
f55a501
fixup! fix tests with wrong feature flag
thvdveld Aug 10, 2023
a586d46
make RPL options owned, instead of byte slices
thvdveld Aug 10, 2023
35d1572
fixup! remove redundant information in RPL structs
thvdveld Aug 10, 2023
ce15062
add `poll_rpl` and `poll_at_rpl` logic
thvdveld Aug 10, 2023
f44c10b
fix(ipv6hbh): remove wrong lifetime
thvdveld Oct 16, 2023
40343e7
fix(ipv6rout): parse IPv6 addresses
thvdveld Oct 16, 2023
f4b5d06
fix(trickle): be consistent with naming function
thvdveld Oct 16, 2023
52662d7
fix(relation): add logging, add iterator
thvdveld Oct 16, 2023
7c85748
fix(instanceid): add is_local, is_global
thvdveld Oct 16, 2023
d59c959
fix(parents): add purging
thvdveld Oct 16, 2023
5462174
update RPL structs
thvdveld Oct 16, 2023
5c150d3
add rpl processing
thvdveld Oct 16, 2023
2283477
remove hacky way to get next header compression
thvdveld Oct 16, 2023
f5debe1
rewrite poll_rpl
thvdveld Oct 17, 2023
c9dcf97
add create functions for RplRepr's
thvdveld Oct 17, 2023
90ca5d3
split rpl wire enum repr in structs
thvdveld Oct 17, 2023
13b6be8
replace if let some with let else
thvdveld Oct 17, 2023
ed34a43
remove unused unwraps
thvdveld Oct 18, 2023
06d6248
only schedule DAO when not MOP0
thvdveld Oct 18, 2023
a1e0540
remove unwrap when scheduling DAO
thvdveld Oct 18, 2023
19f78e8
correctly increment DTSN in non-storing
thvdveld Oct 18, 2023
ca04632
remove stale relations when poll_rpl
thvdveld Oct 18, 2023
3f6ae00
remove old parents when not heard after 2 max trickle
thvdveld Oct 18, 2023
89f048b
put limit on source route hops
thvdveld Oct 18, 2023
4ae384d
correclty handle incoming DAOs
thvdveld Oct 18, 2023
8926cb5
keep track of path lifetime in relation table
thvdveld Oct 18, 2023
bf7bdaa
Remove logging
thvdveld Oct 22, 2023
49563e5
rewrite if for DTSN increment when purging
thvdveld Oct 22, 2023
d0cc591
temporarily enable rpl-mop-3
thvdveld Oct 22, 2023
e4bf01b
add RPL config in 6LoWPAN example
thvdveld Oct 22, 2023
bf84371
use vec instead of linearmap for parent set
thvdveld Oct 22, 2023
c0ad743
move SequenceCounter to wire/rpl.rs
thvdveld Oct 22, 2023
45c5c2d
RPL: imm. drop packet when rank error detected
thvdveld Nov 7, 2023
4e30f16
rpl: better useage of feature flags
thvdveld Nov 7, 2023
54313fb
fix tests
thvdveld Nov 7, 2023
4304613
RPL: reset DIS timer and DODAG when no parent
thvdveld Nov 8, 2023
6376935
RPL: no DODAG unwrap when searching for next hop
thvdveld Nov 8, 2023
a058f77
rpl: no unwrap when looking for parent address
thvdveld Nov 8, 2023
9d4f8a1
6LoWPAN: getter for Ext. Header header length
thvdveld Nov 8, 2023
56d43fc
rpl: add integration tests
thvdveld Nov 8, 2023
51bcb13
rpl: require all rpl features for int. tests
thvdveld Nov 9, 2023
95aa23b
hbh: remove feature flag for processing hbh
thvdveld Nov 9, 2023
e118c7b
hhb: add missing feature flag for hbh IpPacket field
thvdveld Nov 9, 2023
d38ee1f
rpl: check that DAO and DAO-ACK is transmitted
thvdveld Nov 9, 2023
910baf9
rpl: don't forward DAO in MOP1 when not root
thvdveld Nov 9, 2023
66aa9a7
fix(rpl): correct dst addr for resp on unicast DIS
thvdveld Nov 9, 2023
66c5138
rpl: update comments
thvdveld Nov 9, 2023
402650b
fix(rpl): fix dst addr for resp on optionless DIO
thvdveld Nov 9, 2023
45e2b5f
rpl: correctly add hbh to data packets
thvdveld Nov 10, 2023
1956656
rpl: test check for hbh/source routing
thvdveld Nov 10, 2023
d4a3fc1
chore: cleanup warnings
thvdveld Nov 10, 2023
6e373c3
rpl: add hbh to DAO-ACKs, even for 1 hop
thvdveld Nov 10, 2023
3dea665
rpl: no-path fix rank value and count INFINITE rank dio
thvdveld Nov 10, 2023
bce14f8
rpl: only send NO-PATH DAOs once
thvdveld Nov 13, 2023
379f90e
6lowpan: `as_sixlowpan_next_header` on IpProtocol
thvdveld Nov 13, 2023
4cec242
rpl: reset trickle timer when selecting new parent
thvdveld Nov 13, 2023
d9e2241
sim: split the simulator in smaller files
thvdveld Nov 13, 2023
2ba2bb8
Basic test for changing parent
dianadeac Nov 10, 2023
6876e32
Finalize test for node changing parent
dianadeac Nov 13, 2023
1fb2d31
fix: update merged test
thvdveld Nov 13, 2023
02b517b
chore: get rid of warnings
thvdveld Nov 13, 2023
58ddf87
rpl: move wire into directory
thvdveld Nov 15, 2023
860000b
rpl: split mod into multiple files
thvdveld Nov 15, 2023
ea25c50
docs(rpl): update documentation in wire
thvdveld Nov 16, 2023
d22bd61
rpl: prefix vec use bytes instead of addresses
thvdveld Nov 16, 2023
bc74255
Tests for parent leaving network and reaction to the incrementation o…
dianadeac Nov 16, 2023
b3c4ca4
Merge branch 'rpl-tests' into 'rpl'
thvdveld Nov 16, 2023
9a42422
rpl: don't panic when hop limit is <= 1
thvdveld Nov 17, 2023
aef7922
ipv6: add entry to neighbor table
thvdveld Nov 29, 2023
2b26f2f
Add test for behaviour when increasing version number
dianadeac Dec 1, 2023
005c6fc
Fix down flag not set correctly when packet not going through root
dianadeac Dec 6, 2023
2b1ca2e
rpl: move poll_rpl to interface/rpl.rs
thvdveld Dec 4, 2023
766a9a1
rpl: purge -> flush for relations
thvdveld Dec 4, 2023
cc431d0
rpl: flush relations in own function
thvdveld Dec 4, 2023
56a1238
fixup! rpl: flush relations in own function
thvdveld Dec 4, 2023
8b17900
ipv6route-rpl: remove static buffer
thvdveld Dec 6, 2023
706b363
update payload length when adding source routing header
thvdveld Dec 6, 2023
7975964
remove into()
thvdveld Dec 6, 2023
58434c3
rpl: reduce resolution for some tests
thvdveld Dec 8, 2023
817eaf7
ipv6route: compress routes in SRH
thvdveld Dec 8, 2023
d685669
fix build and tests
thvdveld Jan 2, 2024
6adb62e
fix compilation
thvdveld Jan 18, 2024
7e65f98
pass hbh repr to forward function
thvdveld Jan 18, 2024
2e807d0
6lowpan: rewrite compression of IPv6
thvdveld Jan 19, 2024
b45979b
sixlowpan: IpPayload::Raw compress when UDP
thvdveld Jan 23, 2024
14b1c67
Merge branch 'sixlowpan-dispatch-rewrite' into rpl
thvdveld Jan 23, 2024
932d873
Merge branch 'main' into rpl
thvdveld Mar 18, 2024
91ad44f
remove unused 6lowpan/rpl function
thvdveld Mar 18, 2024
c570346
fix compilation errors for other features
thvdveld Mar 18, 2024
c7629e4
make SixlowpanPacket private
thvdveld Mar 18, 2024
b761f58
make clippy happy
thvdveld Mar 18, 2024
3e04208
don't pass link address up the stack
thvdveld Mar 18, 2024
ad6431c
put source header processing in own fn
thvdveld Mar 18, 2024
4e60e47
use parent addr if no next hop for dst ip
thvdveld Mar 20, 2024
48cda98
only fill neighbor table when receiving DIS/DIO
thvdveld Mar 21, 2024
9a55e18
remove println
thvdveld Mar 21, 2024
8438f9e
fix unwraps for tests
thvdveld Mar 21, 2024
d04d08b
fix embassy compatibility
SamClercky Mar 19, 2024
2717b09
Add temporary fallback for non-existing DODAG
SamClercky Mar 20, 2024
d77b606
enabling mop3 in existing tests
SamClercky Apr 17, 2024
581e1a6
adding multicast targets + multicast DAO
SamClercky Apr 17, 2024
37aa839
add rpl multicast subscription + initial work on relations
SamClercky Apr 18, 2024
522169b
better relations with individual hop expiration
SamClercky Apr 19, 2024
ed8834c
allow scheduling for later retransmission
SamClercky Apr 21, 2024
7a585af
compiling version with multicast packet duplication and transmission
SamClercky Apr 21, 2024
ea6a76f
Multicast duplication in forwarding
SamClercky Apr 23, 2024
201a1ae
Fix solicited mode
SamClercky Apr 23, 2024
191b104
make examples compile again
SamClercky Apr 24, 2024
eae7241
half fixing checksum bug
SamClercky Apr 24, 2024
f4c4657
make smoltcp compilable without rpl-mop-3
SamClercky Apr 25, 2024
8da4e58
debugging multicast
SamClercky Apr 25, 2024
70f6355
remove some excessive logging
SamClercky Apr 27, 2024
acfcefa
add randomness to DAO scheduling
SamClercky Apr 27, 2024
4b8d5eb
fix failing DAO-ACK transmission
SamClercky Apr 28, 2024
4cb4f66
fix copy pasta
SamClercky Apr 29, 2024
8cdad5a
better disallowing multicast forwarding for special multicast addresses
SamClercky Apr 29, 2024
30f1664
make it compile without ipv4 support
SamClercky May 4, 2024
4882099
make tests green again
SamClercky May 4, 2024
9f698f2
create failing test with staged startup
SamClercky May 5, 2024
8876656
add more tests
SamClercky May 5, 2024
37c83f9
make tests green again
SamClercky May 5, 2024
db1bd6c
better no-path relation handling
SamClercky May 27, 2024
98ab091
Merge pull request #7 from SamClercky/rpl-mop3
thvdveld Aug 28, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
make tests green again
SamClercky committed May 5, 2024
commit 37c83f9880e1a5a3dbd6fdf9235792e558a3791f
15 changes: 15 additions & 0 deletions src/iface/interface/mod.rs
Original file line number Diff line number Diff line change
@@ -1161,6 +1161,21 @@ impl InterfaceInner {
}

fn has_neighbor(&self, addr: &IpAddress) -> bool {
if addr.is_multicast() {
#[cfg(feature = "proto-rpl")]
{
if let Some(dodag) = &self.rpl.dodag {
return dodag
.relations
.iter()
.any(|rel| &IpAddress::Ipv6(rel.destination()) == addr)
|| dodag.parent.is_some();
}
}
// FIXME: Do something useful here
return true;
}

match self.route(addr, self.now) {
Some(_routed_addr) => match self.caps.medium {
#[cfg(feature = "medium-ethernet")]