Skip to content

Commit 41d8864

Browse files
committed
backup
1 parent fdec91c commit 41d8864

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

router/dataplane.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@ type bfdSession interface {
149149
type BatchConn interface {
150150
// @ pred Mem()
151151

152+
// @ requires Mem()
153+
// @ decreases
154+
// @ pure Id() uint16
155+
152156
// @ requires acc(Mem(), _)
153157
// @ requires forall i int :: { &msgs[i] } 0 <= i && i < len(msgs) ==>
154158
// @ msgs[i].Mem()
@@ -179,11 +183,14 @@ type BatchConn interface {
179183
ReadBatch(msgs underlayconn.Messages /*@, ghost ingressID uint16, ghost prophecyM int, ghost place io.Place @*/) (n int, err error)
180184
// @ requires acc(addr.Mem(), _)
181185
// @ requires acc(Mem(), _)
182-
// @ preserves acc(sl.Bytes(b, 0, len(b)), R10)
186+
// @ requires acc(sl.Bytes(b, 0, len(b)), R10)
187+
// @ requires absIO_val(b, Id()).isValUnsupported
188+
// @ ensures acc(sl.Bytes(b, 0, len(b)), R10)
183189
// @ ensures err == nil ==> 0 <= n && n <= len(b)
184190
// @ ensures err != nil ==> err.ErrorMem()
185191
WriteTo(b []byte, addr *net.UDPAddr) (n int, err error)
186192
// @ requires acc(Mem(), _)
193+
// @ requires Id() == egressID
187194
// (VerifiedSCION) opted for less reusable spec for WriteBatch for
188195
// performance reasons.
189196
// @ requires len(msgs) == 1
@@ -410,6 +417,7 @@ func (d *DataPlane) AddInternalInterface(conn BatchConn, ip net.IP) error {
410417
// If a connection for the given ID is already set this method will return an
411418
// error. This can only be called on a not yet running dataplane.
412419
// @ requires conn != nil && conn.Mem()
420+
// @ requires conn.Id() == ifID
413421
// @ preserves acc(d.Mem(), OutMutexPerm)
414422
// @ preserves !d.IsRunning()
415423
// @ preserves d.mtx.LockP()

router/dataplane_spec.gobra

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,10 @@ pred accAddr(addrs map[uint16]*net.UDPAddr) {
8686

8787
pred accBatchConn(batchConns map[uint16]BatchConn) {
8888
acc(batchConns) &&
89-
forall b BatchConn :: { b elem range(batchConns) }{ b.Mem() } b elem range(batchConns) ==>
90-
b!= nil && acc(b.Mem(), _)
89+
(forall b BatchConn :: { b elem range(batchConns) }{ b.Mem() } b elem range(batchConns) ==>
90+
b != nil && acc(b.Mem(), _)) &&
91+
(forall i uint16 :: { i elem domain(batchConns) }{ batchConns[i] } i elem domain(batchConns) ==>
92+
BatchConn(batchConns[i]) != nil && BatchConn(batchConns[i]).Id() == i)
9193
}
9294

9395
pred accBfdSession(bfdSessions map[uint16]bfdSession) {
@@ -671,6 +673,7 @@ pred (d *DataPlane) validResult(result processResult, addrAliasesPkt bool) {
671673
// EgressID
672674
(result.EgressID != 0 ==> result.EgressID elem d.getDomForwardingMetrics()) &&
673675
// OutConn
676+
// TODO: strengthen here for new cond
674677
(result.OutConn != nil ==> acc(result.OutConn.Mem(), _)) &&
675678
// OutAddr
676679
(addrAliasesPkt && result.OutAddr != nil ==> acc(result.OutAddr.Mem(), R15)) &&

0 commit comments

Comments
 (0)