1*7abd0fb2Slogwang /* 2*7abd0fb2Slogwang * Copyright (C) 2017 THL A29 Limited, a Tencent company. 3*7abd0fb2Slogwang * All rights reserved. 4*7abd0fb2Slogwang * 5*7abd0fb2Slogwang * Redistribution and use in source and binary forms, with or without 6*7abd0fb2Slogwang * modification, are permitted provided that the following conditions are met: 7*7abd0fb2Slogwang * 8*7abd0fb2Slogwang * 1. Redistributions of source code must retain the above copyright notice, this 9*7abd0fb2Slogwang * list of conditions and the following disclaimer. 10*7abd0fb2Slogwang * 2. Redistributions in binary form must reproduce the above copyright notice, 11*7abd0fb2Slogwang * this list of conditions and the following disclaimer in the documentation 12*7abd0fb2Slogwang * and/or other materials provided with the distribution. 13*7abd0fb2Slogwang * 14*7abd0fb2Slogwang * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 15*7abd0fb2Slogwang * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16*7abd0fb2Slogwang * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17*7abd0fb2Slogwang * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 18*7abd0fb2Slogwang * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19*7abd0fb2Slogwang * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20*7abd0fb2Slogwang * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21*7abd0fb2Slogwang * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22*7abd0fb2Slogwang * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 23*7abd0fb2Slogwang * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24*7abd0fb2Slogwang * 25*7abd0fb2Slogwang */ 26*7abd0fb2Slogwang 27*7abd0fb2Slogwang #ifndef _FF_MSG_H_ 28*7abd0fb2Slogwang #define _FF_MSG_H_ 29*7abd0fb2Slogwang 30*7abd0fb2Slogwang #include <rte_memory.h> 31*7abd0fb2Slogwang 32*7abd0fb2Slogwang #define FF_MSG_RING_IN "ff_msg_ring_in_" 33*7abd0fb2Slogwang #define FF_MSG_RING_OUT "ff_msg_ring_out_" 34*7abd0fb2Slogwang #define FF_MSG_POOL "ff_msg_pool" 35*7abd0fb2Slogwang 36*7abd0fb2Slogwang /* MSG TYPE: sysctl, sysctlbyname, etc.. */ 37*7abd0fb2Slogwang enum FF_MSG_TYPE { 38*7abd0fb2Slogwang FF_UNKNOWN = 0, 39*7abd0fb2Slogwang FF_SYSCTL, 40*7abd0fb2Slogwang }; 41*7abd0fb2Slogwang 42*7abd0fb2Slogwang struct ff_sysctl_args { 43*7abd0fb2Slogwang int *name; 44*7abd0fb2Slogwang unsigned namelen; 45*7abd0fb2Slogwang void *old; 46*7abd0fb2Slogwang size_t *oldlenp; 47*7abd0fb2Slogwang void *new; 48*7abd0fb2Slogwang size_t newlen; 49*7abd0fb2Slogwang }; 50*7abd0fb2Slogwang 51*7abd0fb2Slogwang #define MAX_MSG_BUF_SIZE 10240 52*7abd0fb2Slogwang 53*7abd0fb2Slogwang /* structure of ipc msg */ 54*7abd0fb2Slogwang struct ff_msg { 55*7abd0fb2Slogwang enum FF_MSG_TYPE msg_type; 56*7abd0fb2Slogwang /* Result of msg processing */ 57*7abd0fb2Slogwang int result; 58*7abd0fb2Slogwang /* Length of segment buffer. */ 59*7abd0fb2Slogwang uint16_t buf_len; 60*7abd0fb2Slogwang /* Address of segment buffer. */ 61*7abd0fb2Slogwang char *buf_addr; 62*7abd0fb2Slogwang 63*7abd0fb2Slogwang union { 64*7abd0fb2Slogwang struct ff_sysctl_args sysctl; 65*7abd0fb2Slogwang }; 66*7abd0fb2Slogwang } __attribute__((packed)) __rte_cache_aligned; 67*7abd0fb2Slogwang 68*7abd0fb2Slogwang #endif 69