def CapAdjust.ambient_raise.go
bend-osdev-caps@0.1.0.0 · adjust.bend:101
import bend-osdev-caps@0.1.0.0/adjust.bend as Adjust
import Base
import bend-osdev-caps@0.1.0.0/caps.bend as C
101def CapAdjust.ambient_raise.go(v: Bool, locked: Bool, allowed: Bool, +c: C.CapCred, x: U32) -> Result<&2, &2, C.CapsError, C.CapCred>:
102 match v:
103 case False{}:
104 Fail{C.CapsInvalidCap{}}
105 case True{}:
106 match locked:
107 case True{}:
108 Fail{C.CapsAmbientRaiseLocked{}}
109 case False{}:
110 match allowed:
111 case False{}:
112 Fail{C.CapsAmbientNotAllowed{}}
113 case True{}:
114 +s = C.CapCred.sets(c)
115 Done{C.CapCred.with_sets(c, C.CapState.with_ambient(s, C.CapSet.add(C.CapState.ambient(s), x)))}