mirror of
https://github.com/gravitl/netmaker.git
synced 2024-09-20 23:36:18 +08:00
additional mutex locks for acls
This commit is contained in:
parent
086ef25ac6
commit
68c7b20dd8
|
@ -37,16 +37,22 @@ func DeleteAclFromCache(containerID ContainerID) {
|
|||
|
||||
// ACL.Allow - allows access by ID in memory
|
||||
func (acl ACL) Allow(ID AclID) {
|
||||
aclMutex.Lock()
|
||||
defer aclMutex.Unlock()
|
||||
acl[ID] = Allowed
|
||||
}
|
||||
|
||||
// ACL.DisallowNode - disallows access by ID in memory
|
||||
func (acl ACL) Disallow(ID AclID) {
|
||||
aclMutex.Lock()
|
||||
defer aclMutex.Unlock()
|
||||
acl[ID] = NotAllowed
|
||||
}
|
||||
|
||||
// ACL.Remove - removes a node from a ACL in memory
|
||||
func (acl ACL) Remove(ID AclID) {
|
||||
aclMutex.Lock()
|
||||
defer aclMutex.Unlock()
|
||||
delete(acl, ID)
|
||||
}
|
||||
|
||||
|
@ -57,22 +63,23 @@ func (acl ACL) Save(containerID ContainerID, ID AclID) (ACL, error) {
|
|||
|
||||
// ACL.IsAllowed - sees if ID is allowed in referring ACL
|
||||
func (acl ACL) IsAllowed(ID AclID) bool {
|
||||
aclMutex.RLock()
|
||||
defer aclMutex.RUnlock()
|
||||
return acl[ID] == Allowed
|
||||
}
|
||||
|
||||
// ACLContainer.IsAllowed - returns if the current ACL container contains allowed ACLs between two IDs
|
||||
func (aclContainer ACLContainer) IsAllowed(ID1, ID2 AclID) bool {
|
||||
return aclContainer[ID1].IsAllowed(ID2) && aclContainer[ID2].IsAllowed(ID1)
|
||||
}
|
||||
|
||||
// ACLContainer.UpdateACL - saves the state of a ACL in the ACLContainer in memory
|
||||
func (aclContainer ACLContainer) UpdateACL(ID AclID, acl ACL) ACLContainer {
|
||||
aclMutex.Lock()
|
||||
defer aclMutex.Unlock()
|
||||
aclContainer[ID] = acl
|
||||
return aclContainer
|
||||
}
|
||||
|
||||
// ACLContainer.RemoveACL - removes the state of a ACL in the ACLContainer in memory
|
||||
func (aclContainer ACLContainer) RemoveACL(ID AclID) ACLContainer {
|
||||
aclMutex.Lock()
|
||||
defer aclMutex.Unlock()
|
||||
delete(aclContainer, ID)
|
||||
return aclContainer
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue