1/* 2 * Copyright (C) 2013 Realtek Semiconductor Corp. 3 * All Rights Reserved. 4 * 5 * This program is the proprietary software of Realtek Semiconductor 6 * Corporation and/or its licensors, and only be used, duplicated, 7 * modified or distributed under the authorized license from Realtek. 8 * 9 * ANY USE OF THE SOFTWARE OTHER THAN AS AUTHORIZED UNDER 10 * THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. 11 * 12 * Purpose : RTL8367/RTL8367C switch high-level API 13 * 14 * Feature : The file includes Mirror module high-layer API defination 15 * 16 */ 17 18#ifndef __RTK_API_MIRROR_H__ 19#define __RTK_API_MIRROR_H__ 20 21typedef enum rtk_mirror_keep_e 22{ 23 MIRROR_FOLLOW_VLAN = 0, 24 MIRROR_KEEP_ORIGINAL, 25 MIRROR_KEEP_END 26}rtk_mirror_keep_t; 27 28 29/* Function Name: 30 * rtk_mirror_portBased_set 31 * Description: 32 * Set port mirror function. 33 * Input: 34 * mirroring_port - Monitor port. 35 * pMirrored_rx_portmask - Rx mirror port mask. 36 * pMirrored_tx_portmask - Tx mirror port mask. 37 * Output: 38 * None 39 * Return: 40 * RT_ERR_OK - OK 41 * RT_ERR_FAILED - Failed 42 * RT_ERR_SMI - SMI access error 43 * RT_ERR_PORT_ID - Invalid port number 44 * RT_ERR_PORT_MASK - Invalid portmask. 45 * Note: 46 * The API is to set mirror function of source port and mirror port. 47 * The mirror port can only be set to one port and the TX and RX mirror ports 48 * should be identical. 49 */ 50extern rtk_api_ret_t rtk_mirror_portBased_set(rtk_port_t mirroring_port, rtk_portmask_t *pMirrored_rx_portmask, rtk_portmask_t *pMirrored_tx_portmask); 51 52/* Function Name: 53 * rtk_mirror_portBased_get 54 * Description: 55 * Get port mirror function. 56 * Input: 57 * None 58 * Output: 59 * pMirroring_port - Monitor port. 60 * pMirrored_rx_portmask - Rx mirror port mask. 61 * pMirrored_tx_portmask - Tx mirror port mask. 62 * Return: 63 * RT_ERR_OK - OK 64 * RT_ERR_FAILED - Failed 65 * RT_ERR_SMI - SMI access error 66 * RT_ERR_INPUT - Invalid input parameters. 67 * Note: 68 * The API is to get mirror function of source port and mirror port. 69 */ 70extern rtk_api_ret_t rtk_mirror_portBased_get(rtk_port_t* pMirroring_port, rtk_portmask_t *pMirrored_rx_portmask, rtk_portmask_t *pMirrored_tx_portmask); 71 72/* Function Name: 73 * rtk_mirror_portIso_set 74 * Description: 75 * Set mirror port isolation. 76 * Input: 77 * enable |Mirror isolation status. 78 * Output: 79 * None 80 * Return: 81 * RT_ERR_OK - OK 82 * RT_ERR_FAILED - Failed 83 * RT_ERR_SMI - SMI access error 84 * RT_ERR_ENABLE - Invalid enable input 85 * Note: 86 * The API is to set mirror isolation function that prevent normal forwarding packets to miror port. 87 */ 88extern rtk_api_ret_t rtk_mirror_portIso_set(rtk_enable_t enable); 89 90/* Function Name: 91 * rtk_mirror_portIso_get 92 * Description: 93 * Get mirror port isolation. 94 * Input: 95 * None 96 * Output: 97 * pEnable |Mirror isolation status. 98 * Return: 99 * RT_ERR_OK - OK 100 * RT_ERR_FAILED - Failed 101 * RT_ERR_SMI - SMI access error 102 * RT_ERR_INPUT - Invalid input parameters. 103 * Note: 104 * The API is to get mirror isolation status. 105 */ 106extern rtk_api_ret_t rtk_mirror_portIso_get(rtk_enable_t *pEnable); 107 108/* Function Name: 109 * rtk_mirror_vlanLeaky_set 110 * Description: 111 * Set mirror VLAN leaky. 112 * Input: 113 * txenable -TX leaky enable. 114 * rxenable - RX leaky enable. 115 * Output: 116 * None 117 * Return: 118 * RT_ERR_OK - OK 119 * RT_ERR_FAILED - Failed 120 * RT_ERR_SMI - SMI access error 121 * RT_ERR_ENABLE - Invalid enable input 122 * Note: 123 * The API is to set mirror VLAN leaky function forwarding packets to miror port. 124 */ 125extern rtk_api_ret_t rtk_mirror_vlanLeaky_set(rtk_enable_t txenable, rtk_enable_t rxenable); 126 127 128/* Function Name: 129 * rtk_mirror_vlanLeaky_get 130 * Description: 131 * Get mirror VLAN leaky. 132 * Input: 133 * None 134 * Output: 135 * pTxenable - TX leaky enable. 136 * pRxenable - RX leaky enable. 137 * Return: 138 * RT_ERR_OK - OK 139 * RT_ERR_FAILED - Failed 140 * RT_ERR_SMI - SMI access error 141 * RT_ERR_INPUT - Invalid input parameters. 142 * Note: 143 * The API is to get mirror VLAN leaky status. 144 */ 145extern rtk_api_ret_t rtk_mirror_vlanLeaky_get(rtk_enable_t *pTxenable, rtk_enable_t *pRxenable); 146 147/* Function Name: 148 * rtk_mirror_isolationLeaky_set 149 * Description: 150 * Set mirror Isolation leaky. 151 * Input: 152 * txenable -TX leaky enable. 153 * rxenable - RX leaky enable. 154 * Output: 155 * None 156 * Return: 157 * RT_ERR_OK - OK 158 * RT_ERR_FAILED - Failed 159 * RT_ERR_SMI - SMI access error 160 * RT_ERR_ENABLE - Invalid enable input 161 * Note: 162 * The API is to set mirror VLAN leaky function forwarding packets to miror port. 163 */ 164extern rtk_api_ret_t rtk_mirror_isolationLeaky_set(rtk_enable_t txenable, rtk_enable_t rxenable); 165 166/* Function Name: 167 * rtk_mirror_isolationLeaky_get 168 * Description: 169 * Get mirror isolation leaky. 170 * Input: 171 * None 172 * Output: 173 * pTxenable - TX leaky enable. 174 * pRxenable - RX leaky enable. 175 * Return: 176 * RT_ERR_OK - OK 177 * RT_ERR_FAILED - Failed 178 * RT_ERR_SMI - SMI access error 179 * RT_ERR_INPUT - Invalid input parameters. 180 * Note: 181 * The API is to get mirror isolation leaky status. 182 */ 183extern rtk_api_ret_t rtk_mirror_isolationLeaky_get(rtk_enable_t *pTxenable, rtk_enable_t *pRxenable); 184 185/* Function Name: 186 * rtk_mirror_keep_set 187 * Description: 188 * Set mirror packet format keep. 189 * Input: 190 * mode - -mirror keep mode. 191 * Output: 192 * None 193 * Return: 194 * RT_ERR_OK - OK 195 * RT_ERR_FAILED - Failed 196 * RT_ERR_SMI - SMI access error 197 * RT_ERR_ENABLE - Invalid enable input 198 * Note: 199 * The API is to set -mirror keep mode. 200 * The mirror keep mode is as following: 201 * - MIRROR_FOLLOW_VLAN 202 * - MIRROR_KEEP_ORIGINAL 203 * - MIRROR_KEEP_END 204 */ 205extern rtk_api_ret_t rtk_mirror_keep_set(rtk_mirror_keep_t mode); 206 207 208/* Function Name: 209 * rtk_mirror_keep_get 210 * Description: 211 * Get mirror packet format keep. 212 * Input: 213 * None 214 * Output: 215 * pMode -mirror keep mode. 216 * Return: 217 * RT_ERR_OK - OK 218 * RT_ERR_FAILED - Failed 219 * RT_ERR_SMI - SMI access error 220 * RT_ERR_INPUT - Invalid input parameters. 221 * Note: 222 * The API is to get mirror keep mode. 223 * The mirror keep mode is as following: 224 * - MIRROR_FOLLOW_VLAN 225 * - MIRROR_KEEP_ORIGINAL 226 * - MIRROR_KEEP_END 227 */ 228extern rtk_api_ret_t rtk_mirror_keep_get(rtk_mirror_keep_t *pMode); 229 230/* Function Name: 231 * rtk_mirror_override_set 232 * Description: 233 * Set port mirror override function. 234 * Input: 235 * rxMirror - 1: output mirrored packet, 0: output normal forward packet 236 * txMirror - 1: output mirrored packet, 0: output normal forward packet 237 * aclMirror - 1: output mirrored packet, 0: output normal forward packet 238 * Output: 239 * None 240 * Return: 241 * RT_ERR_OK - OK 242 * RT_ERR_FAILED - Failed 243 * RT_ERR_SMI - SMI access error 244 * Note: 245 * The API is to set mirror override function. 246 * This function control the output format when a port output 247 * normal forward & mirrored packet at the same time. 248 */ 249extern rtk_api_ret_t rtk_mirror_override_set(rtk_enable_t rxMirror, rtk_enable_t txMirror, rtk_enable_t aclMirror); 250 251/* Function Name: 252 * rtk_mirror_override_get 253 * Description: 254 * Get port mirror override function. 255 * Input: 256 * None 257 * Output: 258 * pRxMirror - 1: output mirrored packet, 0: output normal forward packet 259 * pTxMirror - 1: output mirrored packet, 0: output normal forward packet 260 * pAclMirror - 1: output mirrored packet, 0: output normal forward packet 261 * Return: 262 * RT_ERR_OK - OK 263 * RT_ERR_FAILED - Failed 264 * RT_ERR_SMI - SMI access error 265 * RT_ERR_NULL_POINTER - Null Pointer 266 * Note: 267 * The API is to Get mirror override function. 268 * This function control the output format when a port output 269 * normal forward & mirrored packet at the same time. 270 */ 271extern rtk_api_ret_t rtk_mirror_override_get(rtk_enable_t *pRxMirror, rtk_enable_t *pTxMirror, rtk_enable_t *pAclMirror); 272 273#endif /* __RTK_API_MIRROR_H__ */ 274 275