45 lines
689 B
Go
45 lines
689 B
Go
package types
|
|
|
|
type BitMask interface {
|
|
HasFlag(bit MaskBit) bool
|
|
AddFlag(bit MaskBit)
|
|
ClearFlag(bit MaskBit)
|
|
ToggleFlag(bit MaskBit)
|
|
}
|
|
|
|
// BitMasks
|
|
type MaskBit uint8
|
|
|
|
// LDAP Connection flags
|
|
const (
|
|
LdapBindUndefined MaskBit = 1 << iota
|
|
LdapBindNone // GSSAPI via SASL or (TODO) Anonymous bind
|
|
LdapBindNet
|
|
LdapBindTls
|
|
LdapBindStartTls
|
|
LdapBindSasl
|
|
LdapBindNoPassword
|
|
)
|
|
|
|
func (f MaskBit) HasFlag(flag MaskBit) (r bool) {
|
|
if f&flag != 0 {
|
|
r = true
|
|
}
|
|
return
|
|
}
|
|
|
|
func (f *MaskBit) AddFlag(flag MaskBit) {
|
|
*f |= flag
|
|
return
|
|
}
|
|
|
|
func (f *MaskBit) ClearFlag(flag MaskBit) {
|
|
*f &= flag
|
|
return
|
|
}
|
|
|
|
func (f *MaskBit) ToggleFlag(flag MaskBit) {
|
|
*f ^= flag
|
|
return
|
|
}
|