""" abstract vpp object and object registry """
import abc
import six
from six import moves
@six.add_metaclass(abc.ABCMeta)
class VppObject(object):
""" Abstract vpp object """
@abc.abstractmethod
def add_vpp_config(self):
""" Add the configuration for this object to vpp. """
pass
@abc.abstractmethod
def query_vpp_config(self):
"""Query the vpp configuration.
:return: True if the object is configured"""
pass
@abc.abstractmethod
def remove_vpp_config(self):
""" Remove the configuration for this object from vpp. """
pass
def object_id(self):
""" Return a unique string representing this object. """
return "Undefined. for <%s %s>" % (self.__class__.__name__, id(self))
def __str__/*
* Copyright (c) 2015-2019 Cisco and/or its affiliates.
* 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.
*/
#include <svm/ssvm.h>
#include <svm/svm_common.h>
typedef int (*init_fn) (ssvm_private_t *);
typedef void (*delete_fn) (ssvm_private_t *);
static init_fn master_init_fns[SSVM_N_SEGMENT_TYPES] =
{ ssvm_master_init_shm, ssvm_master_init_memfd, ssvm_master_init_private };
static init_fn slave_init_fns[SSVM_N_SEGMENT_TYP