Open Ethernet Networking (OpEN) API Guide and Reference Manual  3.4.4.5
openapi_acl.h
Go to the documentation of this file.
1 
9 /**********************************************************************
10 *
11 * Copyright 2016-2018 Broadcom.
12 *
13 * Licensed under the Apache License, Version 2.0 (the "License");
14 * you may not use this file except in compliance with the License.
15 * You may obtain a copy of the License at
16 *
17 * http://www.apache.org/licenses/LICENSE-2.0
18 *
19 * Unless required by applicable law or agreed to in writing, software
20 * distributed under the License is distributed on an "AS IS" BASIS,
21 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 * See the License for the specific language governing permissions and
23 * limitations under the License.
24 *
25 ***********************************************************************
26 *
27 * @filename openapi_acl.h
28 *
29 * @purpose Security Access Lists Configuration
30 *
31 * @component OPEN
32 *
33 * @create 09/12/2013
34 *
35 * @end
36 *
37 *********************************************************************/
38 #ifndef OPENAPI_ACL_H_INCLUDED
39 #define OPENAPI_ACL_H_INCLUDED
40 
41 #include <stdbool.h>
42 #include "openapi_common.h"
43 
44 /* ACL Protocol Keyword definitions*/
45 #define OPENAPI_ACL_PROTOCOL_EIGRP 88
46 #define OPENAPI_ACL_PROTOCOL_GRE 47
47 #define OPENAPI_ACL_PROTOCOL_ICMP 1
48 #define OPENAPI_ACL_PROTOCOL_ICMPV6 58
49 #define OPENAPI_ACL_PROTOCOL_IGMP 2
50 #define OPENAPI_ACL_PROTOCOL_IP 255
51 #define OPENAPI_ACL_PROTOCOL_IPINIP 94
52 #define OPENAPI_ACL_PROTOCOL_OSPF 89
53 #define OPENAPI_ACL_PROTOCOL_PIM 103
54 #define OPENAPI_ACL_PROTOCOL_TCP 6
55 #define OPENAPI_ACL_PROTOCOL_UDP 17
57 /* DSCP User Keyword Translations for IP DSCP Values */
58 #define OPENAPI_ACL_IP_DSCP_AF11 10
59 #define OPENAPI_ACL_IP_DSCP_AF12 12
60 #define OPENAPI_ACL_IP_DSCP_AF13 14
61 #define OPENAPI_ACL_IP_DSCP_AF21 18
62 #define OPENAPI_ACL_IP_DSCP_AF22 20
63 #define OPENAPI_ACL_IP_DSCP_AF23 22
64 #define OPENAPI_ACL_IP_DSCP_AF31 26
65 #define OPENAPI_ACL_IP_DSCP_AF32 28
66 #define OPENAPI_ACL_IP_DSCP_AF33 30
67 #define OPENAPI_ACL_IP_DSCP_AF41 34
68 #define OPENAPI_ACL_IP_DSCP_AF42 36
69 #define OPENAPI_ACL_IP_DSCP_AF43 38
70 #define OPENAPI_ACL_IP_DSCP_BE 0
71 #define OPENAPI_ACL_IP_DSCP_CS0 0
72 #define OPENAPI_ACL_IP_DSCP_CS1 8
73 #define OPENAPI_ACL_IP_DSCP_CS2 16
74 #define OPENAPI_ACL_IP_DSCP_CS3 24
75 #define OPENAPI_ACL_IP_DSCP_CS4 32
76 #define OPENAPI_ACL_IP_DSCP_CS5 40
77 #define OPENAPI_ACL_IP_DSCP_CS6 48
78 #define OPENAPI_ACL_IP_DSCP_CS7 56
79 #define OPENAPI_ACL_IP_DSCP_EF 46
81 /* ACL L4 Port Keyword definitions*/
82 #define OPENAPI_ACL_L4PORT_DOMAIN 53
83 #define OPENAPI_ACL_L4PORT_ECHO 7
84 #define OPENAPI_ACL_L4PORT_FTP 21
85 #define OPENAPI_ACL_L4PORT_FTPDATA 20
86 #define OPENAPI_ACL_L4PORT_HTTP 80
87 #define OPENAPI_ACL_L4PORT_SMTP 25
88 #define OPENAPI_ACL_L4PORT_SNMP 161
89 #define OPENAPI_ACL_L4PORT_TELNET 23
90 #define OPENAPI_ACL_L4PORT_TFTP 69
91 #define OPENAPI_ACL_L4PORT_BGP 179
92 #define OPENAPI_ACL_L4PORT_POP2 109
93 #define OPENAPI_ACL_L4PORT_POP3 110
94 #define OPENAPI_ACL_L4PORT_NTP 123
95 #define OPENAPI_ACL_L4PORT_RIP 520
96 #define OPENAPI_ACL_L4PORT_TIME 37
97 #define OPENAPI_ACL_L4PORT_WHO 513
99 /* User Keyword Translations for Ethertype Hex Values */
100 #define OPENAPI_ETYPE_ID_APPLETALK 0x809B
101 #define OPENAPI_ETYPE_ID_ARP 0x0806
102 #define OPENAPI_ETYPE_ID_IBMSNA 0x80D5
103 #define OPENAPI_ETYPE_ID_IPV4 0x0800
104 #define OPENAPI_ETYPE_ID_IPV6 0x86DD
105 #define OPENAPI_ETYPE_ID_IPX 0x8037
106 #define OPENAPI_ETYPE_ID_MPLSMCAST 0x8848
107 #define OPENAPI_ETYPE_ID_MPLSUCAST 0x8847
108 #define OPENAPI_ETYPE_ID_NETBIOS 0x8191
109 #define OPENAPI_ETYPE_ID_NOVELL_ID1 0x8137
110 #define OPENAPI_ETYPE_ID_NOVELL_ID2 0x8138
111 #define OPENAPI_ETYPE_ID_PPPOE_ID1 0x8863
112 #define OPENAPI_ETYPE_ID_PPPOE_ID2 0x8864
113 #define OPENAPI_ETYPE_ID_RARP 0x8035
115 /* TCP Filtering flags */
116 #define OPENAPI_ACL_TCP_FLAG_FIN 0
117 #define OPENAPI_ACL_TCP_FLAG_SYN 1
118 #define OPENAPI_ACL_TCP_FLAG_RST 2
119 #define OPENAPI_ACL_TCP_FLAG_PSH 3
120 #define OPENAPI_ACL_TCP_FLAG_ACK 4
121 #define OPENAPI_ACL_TCP_FLAG_URG 5
124 typedef enum
125 {
131 
133 typedef enum
134 {
138 
140 typedef enum
141 {
146 
148 typedef enum
149 {
156 
158 typedef enum
159 {
163 
165 typedef enum
166 {
171 
173 typedef struct
174 {
175  uint32_t seqNum;
177  uint32_t aclId;
180 
182 typedef struct
183 {
184  uint32_t count;
185  OPEN_ACL_INTF_LIST_INFO_t listEntry[100];
187 
189 typedef struct
190 {
191  uint32_t seqNum;
193  uint32_t aclId;
195 
197 typedef struct
198 {
199  uint32_t count;
200  OPEN_ACL_VLAN_LIST_INFO_t listEntry[100];
202 
204 typedef struct
205 {
206  uint32_t count;
207  uint32_t intf[1536];
209 
211 typedef struct
212 {
213  uint32_t count;
214  uint32_t vlan[1024];
216 
217 /*************************************************************************/
247  OPEN_ACL_TYPE_t aclType,
248  open_buffdesc *aclName,
249  uint32_t *aclId);
250 
251 /*************************************************************************/
276  uint32_t aclId);
277 
278 /*************************************************************************/
306  OPEN_ACL_TYPE_t aclType,
307  open_buffdesc *aclName);
308 
309 /*************************************************************************/
330  OPEN_ACL_TYPE_t aclType,
331  open_buffdesc *aclName,
332  uint32_t *aclId);
333 
334 /*************************************************************************/
351  OPEN_ACL_TYPE_t aclType,
352  uint32_t *aclId);
353 
354 /*************************************************************************/
372  OPEN_ACL_TYPE_t aclType,
373  uint32_t aclId,
374  uint32_t *nextAclId);
375 
376 /*************************************************************************/
395  uint32_t aclId,
396  open_buffdesc *aclName);
397 
398 /*************************************************************************/
419  uint32_t aclId,
420  open_buffdesc *aclName);
421 
422 /*************************************************************************/
440  uint32_t aclId,
441  uint32_t aclRule,
442  OPEN_ACL_ACTION_t *aclAction);
443 
444 /*************************************************************************/
461  uint32_t aclId,
462  uint32_t *aclRule);
463 
464 /*************************************************************************/
482  uint32_t aclId,
483  uint32_t aclRule,
484  uint32_t *nextAclRule);
485 
486 /*************************************************************************/
509  uint32_t aclId,
510  uint32_t *aclRule,
511  OPEN_ACL_ACTION_t aclAction);
512 
513 /*************************************************************************/
532  uint32_t aclId);
533 
534 /*************************************************************************/
555  uint32_t asic, uint32_t aclId, uint32_t ruleId);
556 
557 /****************************************************************************/
558 /************************* Match rules begin here ***************************/
559 /****************************************************************************/
560 
561 /*************************************************************************/
575  uint32_t *maxQueue);
576 
577 /*************************************************************************/
602  uint32_t aclId,
603  uint32_t aclRule,
604  uint32_t queueId);
605 
606 /*****************************************************************/
627  uint32_t aclId,
628  uint32_t aclRule,
629  uint32_t *queueId);
630 
631 /*************************************************************************/
679  uint32_t aclId,
680  uint32_t aclRule,
681  uint32_t dscp);
682 
683 /*****************************************************************/
727  uint32_t aclId,
728  uint32_t aclRule,
729  uint32_t *dscp);
730 
731 /*************************************************************************/
756  uint32_t aclId,
757  uint32_t aclRule,
758  bool aclMatch);
759 
760 /*****************************************************************/
781  uint32_t aclId,
782  uint32_t aclRule,
783  bool *aclMatch);
784 
785 /*************************************************************************/
810  uint32_t aclId,
811  uint32_t aclRule,
812  uint32_t label);
813 
814 /*****************************************************************/
835  uint32_t aclId,
836  uint32_t aclRule,
837  uint32_t *label);
838 
839 /*************************************************************************/
862  uint32_t aclId,
863  uint32_t aclRule,
864  bool fragments);
865 
866 /*****************************************************************/
887  uint32_t aclId,
888  uint32_t aclRule,
889  bool *fragments);
890 
891 /*****************************************************************/
925  uint32_t aclId,
926  uint32_t aclRule,
927  bool addCode,
928  uint32_t type,
929  uint32_t code);
930 
931 /*****************************************************************/
959  uint32_t aclId,
960  uint32_t aclRule,
961  bool getCode,
962  uint32_t *type,
963  uint32_t *code);
964 
965 /*****************************************************************/
993  uint32_t aclId,
994  uint32_t aclRule,
995  uint32_t type);
996 
997 /*****************************************************************/
1021  uint32_t aclId,
1022  uint32_t aclRule,
1023  uint32_t *type);
1024 
1025 /*****************************************************************/
1048  uint32_t aclId,
1049  uint32_t aclRule,
1050  bool aclLogging);
1051 
1052 /*****************************************************************/
1073  uint32_t aclId,
1074  uint32_t aclRule,
1075  bool *aclLogging);
1076 
1077 /*****************************************************************/
1101  uint32_t aclId,
1102  uint32_t aclRule,
1103  bool aclSflowSampling);
1104 
1105 /*****************************************************************/
1127  uint32_t aclId,
1128  uint32_t aclRule,
1129  bool *aclSflowSampling);
1130 
1131 /*****************************************************************/
1155  uint32_t aclId,
1156  uint32_t aclRule,
1157  uint32_t cos);
1158 
1159 /*****************************************************************/
1179  uint32_t aclId,
1180  uint32_t aclRule,
1181  uint32_t *cos);
1182 
1183 /*****************************************************************/
1207  uint32_t aclId,
1208  uint32_t aclRule,
1209  uint32_t cos);
1210 
1211 /*****************************************************************/
1231  uint32_t aclId,
1232  uint32_t aclRule,
1233  uint32_t *cos);
1234 
1235 /*****************************************************************/
1274  uint32_t aclId,
1275  uint32_t aclRule,
1276  uint32_t type);
1277 
1278 /*****************************************************************/
1313  uint32_t aclId,
1314  uint32_t aclRule,
1315  uint32_t *type);
1316 
1317 /*****************************************************************/
1347  uint32_t aclId,
1348  uint32_t aclRule,
1349  open_buffdesc *mac,
1350  open_buffdesc *mask);
1351 
1352 /*****************************************************************/
1373  uint32_t aclId,
1374  uint32_t aclRule,
1375  open_buffdesc *mac,
1376  open_buffdesc *mask);
1377 
1378 /*****************************************************************/
1406  uint32_t aclId,
1407  uint32_t aclRule,
1409  uint32_t startId,
1410  uint32_t endId);
1411 
1412 /*****************************************************************/
1434  uint32_t aclId,
1435  uint32_t aclRule,
1437  uint32_t *startId,
1438  uint32_t *endId);
1439 
1440 /*****************************************************************/
1468  uint32_t aclId,
1469  uint32_t aclRule,
1471  uint32_t startId,
1472  uint32_t endId);
1473 
1474 /*****************************************************************/
1496  uint32_t aclId,
1497  uint32_t aclRule,
1499  uint32_t *startId,
1500  uint32_t *endId);
1501 
1502 /*****************************************************************/
1530  uint32_t aclId,
1531  uint32_t aclRule,
1532  open_buffdesc *mac,
1533  open_buffdesc *mask);
1534 
1535 /*****************************************************************/
1556  uint32_t aclId,
1557  uint32_t aclRule,
1558  open_buffdesc *mac,
1559  open_buffdesc *mask);
1560 
1561 /*****************************************************************/
1576  uint32_t *aclCount);
1577 
1578 /*****************************************************************/
1593  uint32_t *aclCount);
1594 
1595 /*****************************************************************/
1610  uint32_t *maxACL);
1611 
1612 /*****************************************************************/
1627  uint32_t *maxIntf);
1628 
1629 /*****************************************************************/
1644  uint32_t *maxACL);
1645 
1646 /*****************************************************************/
1661  uint32_t *maxACL);
1662 
1663 /*****************************************************************/
1678  uint32_t *maxIntf);
1679 
1680 /*****************************************************************/
1695  uint32_t *maxVlan);
1696 
1697 /*****************************************************************/
1724  uint32_t aclId,
1725  uint32_t aclRule,
1726  open_inet_addr_t addr,
1727  open_inet_addr_t mask);
1728 
1729 /*****************************************************************/
1750  uint32_t aclId,
1751  uint32_t aclRule,
1752  open_inet_addr_t *addr,
1753  open_inet_addr_t *mask);
1754 
1755 /*****************************************************************/
1782  uint32_t aclId,
1783  uint32_t aclRule,
1784  open_inet_addr_t addr,
1785  open_inet_addr_t mask);
1786 
1787 /*****************************************************************/
1808  uint32_t aclId,
1809  uint32_t aclRule,
1810  open_inet_addr_t *addr,
1811  open_inet_addr_t *mask);
1812 
1813 /*****************************************************************/
1836  uint32_t aclId,
1837  uint32_t aclRule,
1838  open_inet_addr_t addr,
1839  uint32_t pfxLen);
1840 
1841 /*****************************************************************/
1862  uint32_t aclId,
1863  uint32_t aclRule,
1864  open_inet_addr_t *addr,
1865  uint32_t *pfxLen);
1866 
1867 /*****************************************************************/
1890  uint32_t aclId,
1891  uint32_t aclRule,
1892  open_inet_addr_t addr,
1893  uint32_t pfxLen);
1894 
1895 /*****************************************************************/
1916  uint32_t aclId,
1917  uint32_t aclRule,
1918  open_inet_addr_t *addr,
1919  uint32_t *pfxLen);
1920 
1921 /*****************************************************************/
1971  uint32_t aclId,
1972  uint32_t aclRule,
1974  uint32_t startPort,
1975  uint32_t endPort);
1976 
1977 /*****************************************************************/
2020  uint32_t aclId,
2021  uint32_t aclRule,
2023  uint32_t *startPort,
2024  uint32_t *endPort);
2025 
2026 /*****************************************************************/
2076  uint32_t aclId,
2077  uint32_t aclRule,
2079  uint32_t startPort,
2080  uint32_t endPort);
2081 
2082 /*****************************************************************/
2125  uint32_t aclId,
2126  uint32_t aclRule,
2128  uint32_t *startPort,
2129  uint32_t *endPort);
2130 
2131 /*****************************************************************/
2158  uint32_t aclId,
2159  uint32_t aclRule,
2160  uint32_t intf);
2161 
2162 /*****************************************************************/
2182  uint32_t aclId,
2183  uint32_t aclRule,
2184  uint32_t *intf);
2185 
2186 /*************************************************************************/
2211  uint32_t aclId,
2212  uint32_t aclRule,
2213  uint32_t precedence);
2214 
2215 /*****************************************************************/
2236  uint32_t aclId,
2237  uint32_t aclRule,
2238  uint32_t *precedence);
2239 
2240 /*****************************************************************/
2277  uint32_t aclId,
2278  uint32_t aclRule,
2279  uint32_t aclProtocol);
2280 
2281 /*****************************************************************/
2314  uint32_t aclId,
2315  uint32_t aclRule,
2316  uint32_t *aclProtocol);
2317 
2318 /*****************************************************************/
2345  uint32_t aclId,
2346  uint32_t aclRule,
2347  uint32_t dataRate,
2348  uint32_t burstSize);
2349 
2350 /*****************************************************************/
2371  uint32_t aclId,
2372  uint32_t aclRule,
2373  uint32_t *dataRate,
2374  uint32_t *burstSize);
2375 
2376 /*************************************************************************/
2390  uint32_t *maxIntf);
2391 
2392 /*****************************************************************/
2419  uint32_t aclId,
2420  uint32_t aclRule,
2421  uint32_t intf);
2422 
2423 /*****************************************************************/
2443  uint32_t aclId,
2444  uint32_t aclRule,
2445  uint32_t *intf);
2446 
2447 /*****************************************************************/
2474  uint32_t aclId,
2475  uint32_t aclRule,
2476  uint32_t agent);
2477 
2478 /*****************************************************************/
2498  uint32_t aclId,
2499  uint32_t aclRule,
2500  uint32_t *agent);
2501 
2502 /*****************************************************************/
2528  uint32_t aclId,
2529  uint32_t aclRule,
2530  uint32_t agent);
2531 
2532 /*****************************************************************/
2552  uint32_t aclId,
2553  uint32_t aclRule,
2554  uint32_t *agent);
2555 
2556 /*************************************************************************/
2579  uint32_t aclId,
2580  uint32_t aclRule,
2581  bool flag);
2582 
2583 /*************************************************************************/
2604  uint32_t aclId,
2605  uint32_t aclRule,
2606  bool *flag);
2607 
2608 /*************************************************************************/
2643  uint32_t aclId,
2644  uint32_t aclRule,
2645  uint32_t tcpVal,
2646  uint32_t tcpMask);
2647 
2648 /*************************************************************************/
2681  uint32_t aclId,
2682  uint32_t aclRule,
2683  uint32_t *tcpVal,
2684  uint32_t *tcpMask);
2685 
2686 /*************************************************************************/
2710  uint32_t aclId,
2711  uint32_t aclRule,
2712  open_buffdesc *name);
2713 
2714 /*************************************************************************/
2736  uint32_t aclId,
2737  uint32_t aclRule,
2738  open_buffdesc *name);
2739 
2740 /*************************************************************************/
2760  uint32_t aclId,
2761  uint32_t aclRule,
2762  OPEN_ACL_RULE_STATUS_t *status);
2763 
2764 /*****************************************************************/
2790  uint32_t aclId,
2791  uint32_t aclRule,
2792  open_buffdesc *tos,
2793  open_buffdesc *tosMask);
2794 
2795 /*****************************************************************/
2816  uint32_t aclId,
2817  uint32_t aclRule,
2818  open_buffdesc *tos,
2819  open_buffdesc *tosMask);
2820 
2821 /****************************************************************************/
2822 /************ Traffic-Filter (Access-Group) functions begin here ************/
2823 /****************************************************************************/
2824 
2825 /*****************************************************************/
2852  uint32_t intf,
2854  uint32_t *nextIntf,
2855  OPEN_ACL_DIRECTION_t *nextDir);
2856 
2857 /*****************************************************************/
2897  uint32_t intf,
2899  uint32_t aclId,
2900  uint32_t seqNum);
2901 
2902 /*****************************************************************/
2928  uint32_t intf,
2930  uint32_t aclId);
2931 
2932 /*****************************************************************/
2953  uint32_t intf,
2955  OPEN_CONTROL_t *inUse);
2956 
2957 /*****************************************************************/
2978  uint32_t vlan,
2980  OPEN_CONTROL_t *inUse);
2981 
2982 /*****************************************************************/
3015  uint32_t vlan,
3017  uint32_t aclId,
3018  uint32_t seqNum);
3019 
3020 /*****************************************************************/
3046  uint32_t vlan,
3048  uint32_t aclId);
3049 
3050 /*****************************************************************/
3075  uint32_t intf,
3077  OPEN_ACL_INTF_DIR_LIST_t *listInfo);
3078 
3079 /*****************************************************************/
3104  uint32_t vlan,
3106  OPEN_ACL_VLAN_DIR_LIST_t *listInfo);
3107 
3108 /*****************************************************************/
3129  uint32_t aclId,
3131  OPEN_ACL_ASSIGNED_INTF_LIST_t *intfList);
3132 
3133 /*****************************************************************/
3154  uint32_t aclId,
3156  OPEN_ACL_ASSIGNED_VLAN_LIST_t *vlanList);
3157 
3158 /*************************************************************************/
3177  uint32_t aclId,
3178  uint32_t routePrefix,
3179  uint32_t routeMask,
3180  OPEN_ACL_ACTION_t *aclAction);
3181 
3182 /*************************************************************************/
3201  uint32_t adminMode);
3202 
3203 /*****************************************************************/
3222  uint32_t asic,
3223  uint32_t aclId,
3224  uint32_t ruleNum,
3225  uint32_t ruleAction,
3226  uint64_t *hitPktCount);
3227 
3228 /*****************************************************************/
3245  uint32_t asic,
3246  uint32_t aclId,
3247  uint32_t ruleNum);
3248 
3249 /*****************************************************************/
3266  uint32_t asic,
3267  uint32_t aclId,
3268  uint32_t seqNum);
3269 
3270 /*****************************************************************/
3286  uint32_t asic,
3287  uint32_t aclId);
3288 
3289 /*************************************************************************/
3306  OPEN_ACL_TYPE_t aclType,
3307  uint32_t aclId,
3308  OPEN_BOOL_t *isDacl);
3309 
3310 #endif /* OPENAPI_ACL_H_INCLUDED */
3311