123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- /*
- Copyright 2019 The Kubernetes Authors.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- package ipvs
- import (
- "sync"
- "k8s.io/kubernetes/pkg/util/ipset"
- )
- type safeIpset struct {
- ipset ipset.Interface
- mu sync.Mutex
- }
- func newSafeIpset(ipset ipset.Interface) ipset.Interface {
- return &safeIpset{
- ipset: ipset,
- }
- }
- // FlushSet deletes all entries from a named set.
- func (s *safeIpset) FlushSet(set string) error {
- s.mu.Lock()
- defer s.mu.Unlock()
- return s.ipset.FlushSet(set)
- }
- // DestroySet deletes a named set.
- func (s *safeIpset) DestroySet(set string) error {
- s.mu.Lock()
- defer s.mu.Unlock()
- return s.ipset.DestroySet(set)
- }
- // DestroyAllSets deletes all sets.
- func (s *safeIpset) DestroyAllSets() error {
- s.mu.Lock()
- defer s.mu.Unlock()
- return s.ipset.DestroyAllSets()
- }
- // CreateSet creates a new set. It will ignore error when the set already exists if ignoreExistErr=true.
- func (s *safeIpset) CreateSet(set *ipset.IPSet, ignoreExistErr bool) error {
- s.mu.Lock()
- defer s.mu.Unlock()
- return s.ipset.CreateSet(set, ignoreExistErr)
- }
- // AddEntry adds a new entry to the named set. It will ignore error when the entry already exists if ignoreExistErr=true.
- func (s *safeIpset) AddEntry(entry string, set *ipset.IPSet, ignoreExistErr bool) error {
- s.mu.Lock()
- defer s.mu.Unlock()
- return s.ipset.AddEntry(entry, set, ignoreExistErr)
- }
- // DelEntry deletes one entry from the named set
- func (s *safeIpset) DelEntry(entry string, set string) error {
- s.mu.Lock()
- defer s.mu.Unlock()
- return s.ipset.DelEntry(entry, set)
- }
- // Test test if an entry exists in the named set
- func (s *safeIpset) TestEntry(entry string, set string) (bool, error) {
- s.mu.Lock()
- defer s.mu.Unlock()
- return s.ipset.TestEntry(entry, set)
- }
- // ListEntries lists all the entries from a named set
- func (s *safeIpset) ListEntries(set string) ([]string, error) {
- s.mu.Lock()
- defer s.mu.Unlock()
- return s.ipset.ListEntries(set)
- }
- // ListSets list all set names from kernel
- func (s *safeIpset) ListSets() ([]string, error) {
- s.mu.Lock()
- defer s.mu.Unlock()
- return s.ipset.ListSets()
- }
- // GetVersion returns the "X.Y" version string for ipset.
- func (s *safeIpset) GetVersion() (string, error) {
- s.mu.Lock()
- defer s.mu.Unlock()
- return s.ipset.GetVersion()
- }
|