diff options
Diffstat (limited to 'extras/strongswan/vpp_sswan/kernel_vpp_shared.h')
-rw-r--r-- | extras/strongswan/vpp_sswan/kernel_vpp_shared.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/extras/strongswan/vpp_sswan/kernel_vpp_shared.h b/extras/strongswan/vpp_sswan/kernel_vpp_shared.h new file mode 100644 index 00000000000..c699d4925f3 --- /dev/null +++ b/extras/strongswan/vpp_sswan/kernel_vpp_shared.h @@ -0,0 +1,85 @@ +#ifndef KERNEL_VPP_SHARED_H_ +#define KERNEL_VPP_SHARED_H_ +/* + * Copyright (c) 2022 Intel 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. + */ + +typedef struct vac_t vac_t; + +/** + * Callback function invoked for received event messages. + * + * @param data associated event message, destroyed by VPP API wrapper + * @param data_len length of the event message + * @param ctx user data, as passed to register_event + */ +typedef void (*event_cb_t) (char *data, int data_len, void *ctx); + +/** + * Wrapper around VPP binary API client. + */ +struct vac_t +{ + + /** + * Destroy the VPP API client. + */ + void (*destroy) (vac_t *this); + + /** + * Send VPP API message and wait for a reply + * + * @param in VPP API message to send + * @param in_len length of the message to send + * @param out received VPP API message + * @param out_len length of the received message + */ + status_t (*send) (vac_t *this, char *in, int in_len, char **out, + int *out_len); + + /** + * Send VPP API dump message and wait for a reply. + * + * @param in VPP API message to send + * @param in_len length of the message to send + * @param out received VPP API message + * @param out_len length of the received message + */ + status_t (*send_dump) (vac_t *this, char *in, int in_len, char **out, + int *out_len); + + /** + * Register for VPP API event of a given kind. + * + * @param in VPP API event message to register + * @param in_len length of the event message to register + * @param cb callback function to register + * @param event_id event ID + * @param ctx user data passed to callback invocations + */ + status_t (*register_event) (vac_t *this, char *in, int in_len, event_cb_t cb, + uint16_t event_id, void *ctx); +}; + +extern vac_t *vac; + +/** + * Establishing a binary API connection to VPP. + * + * @param name client name + * @return vac_t instance + */ +vac_t *vac_create (char *name); + +#endif /* KERNEL_VPP_SHARED_H_ */ |