00001
00002
00003
00004
00005
00006
00007 #ifndef __NMF_H
00008 #define __NMF_H
00009
00010 #include <nm/nm.h>
00011 #include <nm/nm_bv.h>
00012 #include <nm/nm_list.h>
00013
00014 #ifdef __cplusplus
00015 NM_CDECL_BEGIN
00016 #endif
00017
00063 typedef nm_u32_t nmf_id_t;
00064
00072 typedef nm_u32_t nmf_client_t;
00073
00079 enum nmf_status {
00080 NMF_OK = 0,
00081 NMF_EPERM,
00082 NMF_ENOENT,
00083 NMF_ESRCH,
00084 NMF_EINTR,
00085 NMF_EIO,
00086 NMF_ENXIO,
00087 NMF_E2BIG,
00088 NMF_ENOEXEC,
00089 NMF_EBADF,
00090 NMF_ECHILD,
00091 NMF_EAGAIN,
00092 NMF_ENOMEM,
00093 NMF_EACCESS,
00094 NMF_EFAULT,
00095 NMF_ENOTBLK,
00096 NMF_EBUSY,
00097 NMF_EEXIST,
00098 NMF_EXDEV,
00099 NMF_ENODEV,
00100 NMF_ENOTDIR,
00101 NMF_EISDIR,
00102 NMF_EINVAL,
00103 NMF_INFILE,
00104 NMF_EMFILE,
00105 NMF_ENOTTY,
00106 NMF_ETXTBSY,
00107 NMF_EFBIG,
00108 NMF_ENOSPC,
00109 NMF_ESPIPE,
00110 NMF_EROFS,
00111 NMF_EMLINK,
00112 NMF_EPIPE,
00113 NMF_EDOM,
00114 NMF_ERANGE,
00115 NMF_EINUSE,
00116 NMF_ENOSYS
00117 };
00118 typedef enum nmf_status nmf_status_t;
00119
00123 #define NMF_ATTR_ERROR -1
00124
00137 typedef void (*nmf_aeh_t)(nmf_client_t client_id, int type, void *e, u_int ctxt);
00138
00150 nmf_status_t nmf_init(nmf_aeh_t aeh, u_int context);
00151
00157 #define NMF_EVENT_NONE 0
00158 #define NMF_EVENT_ALL ((u_int)-1)
00159
00174 nmf_client_t nmf_open(char *host, u_int events, nmf_aeh_t cb, u_int ctxt);
00175
00181 void nmf_close(nmf_client_t clid);
00182
00187 void nmf_close_all();
00188
00199 void nmf_set_eh(nmf_client_t client_id, nmf_aeh_t aeh, void *context);
00213 enum nmf_sw_attr_id {
00215 NMF_SW_ATTR_SLOT_COUNT = 1,
00216
00218 NMF_SW_ATTR_CFG_PATH
00219 };
00223 union nmf_sw_attr_value {
00224 int slot_count;
00225 char *cfg_path;
00226 };
00227
00237 nmf_status_t nmf_sw_attr_get(nmf_client_t client_id,
00238 enum nmf_sw_attr_id attr_id,
00239 union nmf_sw_attr_value *value);
00240
00255 nmf_status_t nmf_sw_cfg_save(nmf_client_t client_id, char *cfg_name);
00256
00268 nmf_status_t nmf_sw_cfg_restore(nmf_client_t client_id, char *cfg_name);
00269
00273 enum nmf_slot_state {
00274 NMF_SLOT_STATE_EMPTY = 1,
00275 NMF_SLOT_STATE_PWR_DOWN,
00276 NMF_SLOT_STATE_RESET,
00277 NMF_SLOT_STATE_READY
00278 };
00279
00285 enum nmf_spanning_tree_mode {
00288 NMF_SPANNING_TREE_SHARED = 1,
00289
00292 NMF_SPANNING_TREE_PER_VLAN,
00293
00298 NMF_SPANNING_TREE_MULTIPLE
00299
00300 };
00301
00308 enum nmf_flood_policy {
00310 NMF_FLOOD_FWD = 1,
00312 NMF_FLOOD_FWD_AND_LOG,
00314 NMF_FLOOD_LOG,
00316 NMF_FLOOD_DROP,
00319 NMF_FLOOD_PER_PORT
00320 };
00321
00328 enum nmf_routing_hash {
00330 NMF_ROUTING_HASH_SYM = 1,
00332 NMF_ROUTING_HASH_SIP,
00334 NMF_ROUTING_HASH_DIP,
00336 NMF_ROUTING_HASH_IP_PROTO,
00338 NMF_ROUTING_HASH_TCP,
00340 NMF_ROUTING_HASH_UDP,
00342 NMF_ROUTING_HASH_L4SRC_PORT,
00344 NMF_ROUTING_HASH_L4DST_PORT,
00346 NMF_ROUTING_HASH_PROTO_1,
00348 NMF_ROUTING_HASH_PROTO_2
00349 };
00350
00351 enum nmf_ip_options_policy {
00353 NMF_IP_OPTIONS_FWD = 1,
00355 NMF_IP_OPTIONS_LOG,
00357 NMF_IP_OPTIONS_LOG_MCAST,
00359 NMF_IP_OPTIONS_LOG_UCAST
00360 };
00361
00362 enum nmf_lbg_mode {
00363 NMF_LBG_MODE_MAPPED = 1,
00364 NMF_LBG_MODE_NPLUS1,
00365 NMF_LBG_MODE_FAILOVER
00366 };
00367
00371 enum nmf_slot_attr_id {
00373 NMF_SLOT_ATTR_STATE = 1,
00374
00377 NMF_SLOT_ATTR_CPU_ETHADDR,
00378
00380 NMF_SLOT_ATTR_VENDOR,
00381
00383 NMF_SLOT_ATTR_FAMILY,
00384
00386 NMF_SLOT_ATTR_MODEL,
00387
00389 NMF_SLOT_ATTR_VERS,
00390
00392 NMF_SLOT_ATTR_PORT_COUNT,
00393
00395 NMF_SLOT_ATTR_MAX_MIRROR,
00396
00398 NMF_SLOT_ATTR_MAX_LAG,
00399
00401 NMF_SLOT_ATTR_MAX_LAG_HASH,
00402
00404 NMF_SLOT_ATTR_MAX_VLAN,
00405
00407 NMF_SLOT_ATTR_SPANNING_TREE_MODE,
00408
00410 NMF_SLOT_ATTR_TRAP_IEEE_8021X,
00411
00413 NMF_SLOT_ATTR_TRAP_IEEE_BPDU,
00414
00417 NMF_SLOT_ATTR_TRAP_IEEE_LACP,
00418
00420 NMF_SLOT_ATTR_TRAP_IEEE_GARP,
00421
00424 NMF_SLOT_ATTR_TRAP_IEEE_OTHER,
00425
00430 NMF_SLOT_ATTR_DROP_PAUSE,
00431
00433 NMF_SLOT_ATTR_BCAST_FLOOD,
00434
00436 NMF_SLOT_ATTR_MCAST_FLOOD,
00437
00439 NMF_SLOT_ATTR_UCAST_FLOOD,
00440
00446 NMF_SLOT_ATTR_FRAME_AGING_TIME_MSEC,
00447
00449 NMF_SLOT_ATTR_ROUTING_HASH,
00450
00454 NMF_SLOT_ATTR_ROUTING_HASH_ROTATION,
00455
00458 NMF_SLOT_ATTR_ROUTING_HASH_PROTO_1,
00459
00462 NMF_SLOT_ATTR_ROUTING_HASH_PROTO_2,
00463
00467 NMF_SLOT_ATTR_ROUTING_HASH_FLOW_DIFFSERV_MASK,
00468
00472 NMF_SLOT_ATTR_ROUTING_HASH_FLOW_USER_MASK,
00473
00477 NMF_SLOT_ATTR_ROUTING_HASH_FLOW_LABEL_MASK,
00478
00480 NMF_SLOT_ATTR_IP_OPTIONS_DISPOSITION,
00481
00483 NMF_SLOT_ATTR_LBG_MODE,
00484
00487 NMF_SLOT_ATTR_AUTH_MAC_ID_TRIGGER,
00488
00491 NMF_SLOT_ATTR_REDIRECT_CPU_TRAFFIC,
00492
00496 NMF_SLOT_ATTR_IFG_PENALTY
00497 };
00498
00499 #define NMF_SLOT_ATTR_MAX_VENDOR_LEN 32
00500
00503 union nmf_slot_attr_value {
00504 enum nmf_slot_state state;
00505 u_char cpu_ethaddr[6];
00506 char vendor[NMF_SLOT_ATTR_MAX_VENDOR_LEN];
00507 u_int family;
00508 u_int model;
00509 u_int vers;
00510 u_int port_count;
00511 u_int max_mirror;
00512 u_int max_lag;
00513 u_int max_lag_hash;
00514 u_int max_vlan;
00515 enum nmf_flood_policy ucast_flood;
00516 enum nmf_flood_policy bcast_flood;
00517 enum nmf_flood_policy mcast_flood;
00518 enum nmf_spanning_tree_mode spanning_tree_mode;
00519 u_int trap_ieee_8021x;
00520 u_int trap_ieee_bpdu;
00521 u_int trap_ieee_lacp;
00522 u_int trap_ieee_garp;
00523 u_int trap_ieee_other;
00524 u_int drop_pause;
00525 u_int frame_aging_time_msec;
00526 u_int routing_hash;
00527 u_int routing_hash_rotation;
00528 u_int routing_hash_proto_1;
00529 u_int routing_hash_proto_2;
00530 u_int routing_hash_flow_diffserv_mask;
00531 u_int routing_hash_flow_user_mask;
00532 u_int routing_hash_flow_label_mask;
00533 enum nmf_ip_options_policy ip_options_disposition;
00534 enum nmf_lbg_mode lbg_mode;
00535 u_int auth_mac_id_trigger;
00536 u_int redirect_cpu_traffic;
00537 u_int ifg_penalty;
00538 };
00539
00548 nmf_status_t nmf_slot_reset(nmf_client_t client_id, int slot);
00549
00560 nmf_status_t nmf_slot_attr_get(nmf_client_t client_id, int slot,
00561 enum nmf_slot_attr_id attr_id,
00562 union nmf_slot_attr_value *value);
00563
00574 nmf_status_t nmf_slot_attr_set(nmf_client_t client_id, int slot,
00575 enum nmf_slot_attr_id attr_id,
00576 union nmf_slot_attr_value *value);
00577
00578
00579
00580
00590 enum nmf_port_state {
00591 NMF_PORT_STATE_ADMIN_DOWN = 1,
00592 NMF_PORT_STATE_ADMIN_PWRDOWN,
00593 NMF_PORT_STATE_BIST,
00594 NMF_PORT_STATE_DOWN,
00595 NMF_PORT_STATE_LOCAL_FAULT,
00596 NMF_PORT_STATE_BAD_SYNC,
00597 NMF_PORT_STATE_REMOTE_FAULT,
00598 NMF_PORT_STATE_UP
00599 };
00600 typedef enum nmf_port_state nmf_port_state_t;
00604 enum nmf_port_bist_mode {
00605 NMF_BIST_TX_CJPAT = 1,
00606 NMF_BIST_TX_HIGHFREQ,
00607 NMF_BIST_TX_IDLECHAR,
00608 NMF_BIST_TX_LOWFREQ,
00609 NMF_BIST_TX_PRBS_1024,
00610 NMF_BIST_TX_PRBS_512A,
00611 NMF_BIST_TX_PRBS_512B,
00612 NMF_BIST_TX_TESTCHAR
00613 };
00614 typedef enum nmf_port_bist_mode nmf_port_bist_mode_t;
00615
00616 enum nmf_port_tagging_policy {
00625 NMF_PORT_VLAN_TAG_ADD_DEFAULT = 1,
00630 NMF_PORT_VLAN_TAG_ADD_EMPTY,
00634 NMF_PORT_VLAN_TAG_KEEP,
00638 NMF_PORT_VLAN_TAG_REPLACE
00639 };
00640
00652 enum nmf_port_attr_id {
00653 NMF_PORT_ATTR_SPEED = 1,
00654 NMF_PORT_ATTR_MTU,
00655 NMF_PORT_ATTR_AUTONEG,
00656 NMF_PORT_ATTR_AUTONEG_CAPS,
00657 NMF_PORT_ATTR_AUTONEG_PARTNER_CAPS,
00658 NMF_PORT_ATTR_AUTONEG_RAW_CAP,
00659 NMF_PORT_ATTR_BRIDGING_ROLE,
00660 NMF_PORT_ATTR_DEF_CFI,
00661 NMF_PORT_ATTR_DEF_DSCP,
00662 NMF_PORT_ATTR_DEF_PRI,
00663 NMF_PORT_ATTR_DEF_SWPRI,
00664 NMF_PORT_ATTR_DOT1X_STATE,
00665 NMF_PORT_ATTR_DRIVE_STRENGTH,
00666 NMF_PORT_ATTR_DROP_VLAN_BV,
00667 NMF_PORT_ATTR_DROP_TAGGED,
00668 NMF_PORT_ATTR_DROP_UNTAGGED,
00669 NMF_PORT_ATTR_DEF_VLAN,
00670 NMF_PORT_ATTR_FWD_LIST,
00671 NMF_PORT_ATTR_VLAN_LIST,
00672 NMF_PORT_ATTR_EMPHASIS,
00673 NMF_PORT_ATTR_IFG,
00674 NMF_PORT_ATTR_IGNORE_IFG_ERRORS,
00675 NMF_PORT_ATTR_LEARNING,
00676 NMF_PORT_ATTR_ETHADDR,
00677 NMF_PORT_ATTR_RX_PAUSE_CLASS_MASK,
00678 NMF_PORT_ATTR_TX_PAUSE_MODE,
00679 NMF_PORT_ATTR_TX_PAUSE_PEER_DELAY,
00680 NMF_PORT_ATTR_TX_PAUSE_RESEND_DELAY,
00681 NMF_PORT_ATTR_STATE,
00682 NMF_PORT_ATTR_DESC,
00683 NMF_PORT_ATTR_MCAST_FLOOD,
00684 NMF_PORT_ATTR_MCAST_PRUNING,
00685 NMF_PORT_ATTR_MIN_FRAME_SIZE,
00686 NMF_PORT_ATTR_RX_LANE_ORDERING,
00687 NMF_PORT_ATTR_RX_LANE_POLARITY,
00688 NMF_PORT_ATTR_SECURITY_MODE,
00689 NMF_PORT_ATTR_SWPRI_DSCP_PREF,
00690 NMF_PORT_ATTR_SWPRI_SOURCE,
00691 NMF_PORT_ATTR_TAGGING,
00692 NMF_PORT_ATTR_TX_LANE_ORDERING,
00693 NMF_PORT_ATTR_TX_LANE_POLARITY,
00694 NMF_PORT_ATTR_TXCFI,
00695 NMF_PORT_ATTR_TXVPRI,
00696 NMF_PORT_ATTR_UCAST_FLOOD,
00697 NMF_PORT_ATTR_REPLACE_DSCP,
00698 NMF_PORT_ATTR_UPDATE_DSCP,
00699 NMF_PORT_ATTR_UPDATE_ROUTED_FRAME,
00700 NMF_PORT_ATTR_UPDATE_TTL,
00701 NMF_PORT_ATTR_ROUTABLE,
00702 NMF_PORT_ATTR_RX_CRC_DISCARD
00703 };
00704
00708 enum nmf_port_security_mode {
00710 NMF_PORT_SECURITY_OFF = 1,
00712 NMF_PORT_SECURITY_SAV,
00715 NMF_PORT_SECURITY_SPV,
00719 NMF_PORT_SECURITY_SHV
00720 };
00721
00725 enum nmf_port_security_action {
00727 NMF_PORT_SECURITY_DROP= 1,
00729 NMF_PORT_SECURITY_TRAP
00730 };
00731
00735 enum nmf_port_attr_lane_order {
00736 NMF_PORT_LANE_ORDER_NORMAL = 1,
00737 NMF_PORT_LANE_ORDER_REVERSE
00738 };
00739
00743 enum nmf_port_attr_lane_polarity {
00744 NMF_PORT_LANE_POLARITY_NORMAL= 1,
00745 NMF_PORT_LANE_POLARITY_INVERT
00746 };
00747
00751 struct nmf_port_attr_state {
00752 enum nmf_port_state port_state;
00753 enum nmf_port_bist_mode bist_mode;
00754 };
00755
00763 struct nmf_port_vlan_spec {
00765 nm_bv_t vlan_list;
00767 nm_bv_t tag_list;
00768 };
00769
00776 enum nmf_autoneg {
00777 NMF_AUTONEG_NONE = 1,
00778 NMF_AUTONEG_SGMII,
00779 NMF_AUTONEG_CLAUSE_37
00780 };
00781
00785 enum nmf_autoneg_capabilities {
00786 NMF_PORT_AUTONEG_ANNOUNCE_10G = 1,
00787 NMF_PORT_AUTONEG_ANNOUNCE_2500M = 2,
00788 NMF_PORT_AUTONEG_ANNOUNCE_1000M = 4,
00789 NMF_PORT_AUTONEG_ANNOUNCE_100M = 8,
00790 NMF_PORT_AUTONEG_ANNOUNCE_10M = 16,
00791 NMF_PORT_AUTONEG_ANNOUNCE_FLOW_CONTROL = 32
00792 };
00793
00797 enum nmf_dot1x_state {
00799 NMF_DOT1X_STATE_NOT_ACTIVE = 1,
00801 NMF_DOT1X_STATE_AUTH,
00803 NMF_DOT1X_STATE_NOT_AUTH
00804 };
00805
00809 enum nmf_port_capabilities {
00810 NMF_PORT_CAPABILITY_CAN_ROUTE = 1,
00811 NMF_PORT_CAPABILITY_LAG_CAPABLE = 2,
00812 NMF_PORT_CAPABILITY_SPEED_10M = 4,
00813 NMF_PORT_CAPABILITY_SPEED_100M = 8,
00814 NMF_PORT_CAPABILITY_SPEED_1G = 16,
00815 NMF_PORT_CAPABILITY_SPEED_2_5G = 32,
00816 NMF_PORT_CAPABILITY_SPEED_5G = 64,
00817 NMF_PORT_CAPABILITY_SPEED_10G = 128,
00818 NMF_PORT_CAPABILITY_SPEED_20G = 256
00819 };
00820
00824 enum nmf_port_bridging_role {
00825 NMF_PORT_BRIDGING_ROLE_NORMAL = 1,
00826 NMF_PORT_BRIDGING_ROLE_CUSTOMER,
00827 NMF_PORT_BRIDGING_ROLE_NETWORK
00828 };
00829
00830 enum nmf_port_pause_mode {
00831 NMF_PORT_PAUSE_CLASS_BASED = 1,
00832 NMF_PORT_PAUSE_NORMAL
00833 };
00834
00842 union nmf_port_attr_value {
00843 enum nmf_port_capabilities caps;
00844 enum nmf_autoneg_capabilities autoneg_caps;
00845 u_int speed;
00846 u_int mtu;
00847 enum nmf_autoneg autoneg;
00848 u_int def_cfi;
00849 u_int def_dscp;
00850 u_int def_pri;
00851 u_int def_swpri;
00852 u_int def_vlan;
00853 u_int ifg;
00854 u_int learning;
00855 u_int drop_vlan_bv;
00856 u_int drop_tagged;
00857 u_int drop_untagged;
00858 u_char ethaddr[6];
00859 nm_bv_t fwd_list;
00860 struct nmf_port_vlan_spec vlan_spec;
00861 u_int rx_pause_class_mask;
00862 u_int tx_pause_mode;
00863 u_int tx_pause_peer_delay;
00864 u_int tx_pause_resend_delay;
00865 struct nmf_port_attr_state port_state;
00866 enum nmf_port_bridging_role bridging_role;
00867 char *desc;
00868 u_int min_frame_size;
00869 enum nmf_port_attr_lane_order rx_lane_ordering;
00870 enum nmf_port_attr_lane_polarity rx_lane_polarity;
00871 enum nmf_port_attr_lane_order tx_lane_ordering;
00872 enum nmf_port_attr_lane_polarity tx_lane_polarity;
00873 enum nmf_port_security_mode security_mode;
00874 enum nmf_dot1x_state dot1x_state;
00875 u_int replace_dscp;
00876 u_int swpri_dscp_pref;
00877 u_int update_dscp;
00878 u_int swpri_source;
00879 enum nmf_port_tagging_policy tagging;
00880 u_int tx_pause;
00881 u_int tx_pause_resend_time;
00882 u_int txcfi;
00883 u_int txvpri;
00884 enum nmf_flood_policy ucast_flood;
00885 enum nmf_flood_policy mcast_flood;
00886 u_int mcast_pruning;
00887 u_int update_routed_frame;
00888 u_int update_ttl;
00889 u_int routable;
00890 u_int loopback_suppression;
00891 int rx_crc_discard;
00892 };
00893
00904 nmf_status_t nmf_port_attr_set(nmf_client_t clid, int slot,
00905 int port,
00906 enum nmf_port_attr_id id,
00907 union nmf_port_attr_value *value);
00908
00919 nmf_status_t nmf_port_attr_get(nmf_client_t clid, int slot,
00920 int port,
00921 enum nmf_port_attr_id id,
00922 union nmf_port_attr_value *value);
00923
00930 struct nmf_port_stats {
00932 nm_u64_t rx_ucst_pkts;
00933
00935 nm_u64_t rx_non_ip_ucst_pkts;
00936
00938 nm_u64_t rx_ipv4_ucst_pkts;
00939
00941 nm_u64_t rx_ipv6_ucst_pkts;
00942
00944 nm_u64_t rx_bcst_pkts;
00945
00947 nm_u64_t rx_non_ip_bcst_pkts;
00948
00950 nm_u64_t rx_ipv4_bcst_pkts;
00951
00953 nm_u64_t rx_ipv6_bcst_pkts;
00954
00956 nm_u64_t rx_mcst_pkts;
00957
00959 nm_u64_t rx_non_ip_mcst_pkts;
00960
00962 nm_u64_t rx_ipv4_mcst_pkts;
00963
00965 nm_u64_t rx_ipv6_mcst_pkts;
00966
00968 nm_u64_t rx_pause_pkts;
00969
00971 nm_u64_t rx_pause_class_pkts;
00972
00974 nm_u64_t rx_fcs_err_pkts;
00975
00977 nm_u64_t rx_symbol_err_pkts;
00978
00980 nm_u64_t rx_size_err_pkts;
00981
00983 nm_u64_t rx_min_64_pkts;
00984
00986 nm_u64_t rx_65_127_pkts;
00987
00989 nm_u64_t rx_128_255_pkts;
00990
00992 nm_u64_t rx_256_511_pkts;
00993
00995 nm_u64_t rx_512_1023_pkts;
00996
00998 nm_u64_t rx_1024_1522_pkts;
00999
01001 nm_u64_t rx_1523_2047_pkts;
01002
01004 nm_u64_t rx_2048_4095_pkts;
01005
01007 nm_u64_t rx_4096_8191_pkts;
01008
01010 nm_u64_t rx_8192_10239_pkts;
01011
01013 nm_u64_t rx_10240_max_pkts;
01014
01017 nm_u64_t rx_undersized_pkts;
01018
01021 nm_u64_t rx_oversized_pkts;
01022
01024 nm_u64_t rx_bytes;
01025
01027 nm_u64_t rx_non_ip_bytes;
01028
01030 nm_u64_t rx_ipv4_bytes;
01031
01033 nm_u64_t rx_ipv6_bytes;
01034
01037 nm_u64_t rx_prio_pkts[8];
01038
01041 nm_u64_t rx_prio_bytes[8];
01042
01044 nm_u64_t rx_cpu_trapped_pkts;
01045
01048 nm_u64_t rx_secure_drop_pkts;
01049
01053 nm_u64_t rx_vlan_tag_drop_pkts;
01054
01056 nm_u64_t rx_vlan_bv_pkts;
01057
01059 nm_u64_t rx_overrun_pkts;
01060
01062 nm_u64_t tx_ucst_pkts;
01063
01065 nm_u64_t tx_bcst_pkts;
01066
01068 nm_u64_t tx_mcst_pkts;
01069
01071 nm_u64_t tx_pause_pkts;
01072
01074 nm_u64_t tx_fcs_err_pkts;
01075
01077 nm_u64_t tx_error_drop_pkts;
01078
01080 nm_u64_t tx_time_out_pkts;
01081
01083 nm_u64_t tx_loopback_drop_pkts;
01084
01086 nm_u64_t tx_min_64_pkts;
01087 nm_u64_t tx_65_127_pkts;
01088 nm_u64_t tx_128_255_pkts;
01089 nm_u64_t tx_256_511_pkts;
01090 nm_u64_t tx_512_1023_pkts;
01091 nm_u64_t tx_1024_1522_pkts;
01092 nm_u64_t tx_1523_2047_pkts;
01093 nm_u64_t tx_2048_4095_pkts;
01094 nm_u64_t tx_4096_8191_pkts;
01095 nm_u64_t tx_8192_10239_pkts;
01096 nm_u64_t tx_10240_max_pkts;
01097
01099 nm_u64_t tx_bytes;
01100
01102 nm_u64_t tx_err_bytes;
01103
01105 nm_u64_t tx_vlan_bv_pkts;
01106
01109 nm_u64_t tx_underrun_pkts;
01110
01112 nm_u64_t ttl_drop_pkts;
01113
01115 nm_u64_t fid_fwd_pkts;
01116
01118 nm_u64_t flooded_pkts;
01119
01122 nm_u64_t pause_drop_pkts;
01123
01125 nm_u64_t counter_drop_pkts;
01126
01129 nm_u64_t stp_drop_pkts;
01130 };
01131
01141 nmf_status_t nmf_port_stats_get(nmf_client_t clid, int slot,
01142 int port, struct nmf_port_stats *stats);
01143
01152 nmf_status_t nmf_port_stats_reset(nmf_client_t clid, int slot, int port);
01153
01164 char *nmf_err_str(nmf_status_t s);
01202 #define NMF_ALL (-1)
01203
01207 enum nmf_addr_flags {
01208 NMF_ADDR_DYNAMIC = 1,
01209 NMF_ADDR_STATIC = 2,
01210 NMF_ADDR_SECURE = 4
01211 };
01212
01216 struct nmf_addr_rec {
01217 u_char eth_addr[6];
01218 int vlan;
01219 enum nmf_addr_flags flags;
01220 nm_bv_t port_list;
01221 int age;
01222 };
01223
01240 nmf_status_t nmf_addr_get(nmf_client_t clid, int slot,
01241 struct nmf_addr_rec *adrec);
01242
01258 nmf_status_t nmf_addr_add(nmf_client_t clid, int slot,
01259 struct nmf_addr_rec *adrec);
01260
01274 nmf_status_t nmf_addr_rem(nmf_client_t clid, int slot, int vlan_id,
01275 u_char *ethaddr);
01276
01290 nmf_status_t nmf_addr_flush(nmf_client_t clid, int slot, nm_u32_t flags,
01291 int vlan_id, int port);
01292
01304 enum nmf_stp_state {
01305 NMF_STP_FORWARDING = 1,
01306 NMF_STP_LEARNING,
01307 NMF_STP_LISTENING,
01308 NMF_STP_BLOCKING,
01309 NMF_STP_DISABLED
01310 };
01311 typedef enum nmf_stp_state nmf_stp_state_t;
01312
01316 enum nmf_vlan_attr_id {
01317 NMF_VLAN_ATTR_ROUTING = 1,
01318 NMF_VLAN_ATTR_REFLECT,
01319 NMF_VLAN_ATTR_MTU,
01320 NMF_VLAN_ATTR_IGMP_TRAPPING,
01321 NMF_VLAN_ATTR_NAME,
01322 NMF_VLAN_ATTR_DESC
01323 };
01324
01328 union nmf_vlan_attr_value {
01329 int routing;
01330 int reflect;
01331 int mtu;
01332 int igmp_trapping;
01333 char *name;
01334 char *desc;
01335 };
01336
01340 enum nmf_vlan_port_attr_id {
01341 NMF_VLAN_PORT_ATTR_TAGGING = 1,
01342 NMF_VLAN_PORT_ATTR_STP_STATE
01343 };
01344
01348 union nmf_vlan_port_attr_value {
01350 int tagging;
01352 enum nmf_stp_state stp_state;
01353 };
01354
01365 nmf_status_t nmf_vlan_add(nmf_client_t clid, int slot, int vlan_id,
01366 char *vlan_name);
01367
01377 nmf_status_t nmf_vlan_rem(nmf_client_t clid, int slot, int vlan_id);
01378
01387 nmf_status_t nmf_vlan_list_get(nmf_client_t clid, int slot, nm_bv_t *vlan_list);
01388
01400 nmf_status_t nmf_vlan_port_add(nmf_client_t clid, int slot, int vlan_id,
01401 int port_num, int tagged,
01402 enum nmf_stp_state stp_state);
01403
01414 nmf_status_t nmf_vlan_port_rem(nmf_client_t clid, int slot, int vlan_id, int port_num);
01415
01429 nmf_status_t nmf_vlan_port_list_set(nmf_client_t clid, int slot, int vlan_id,
01430 int tagging, enum nmf_stp_state stp_state,
01431 nm_bv_t *port_list);
01432
01444 nmf_status_t nmf_vlan_port_list_get(nmf_client_t clid, int slot, int vlan_id,
01445 nm_bv_t *port_list);
01446
01458 nmf_status_t nmf_vlan_attr_set(nmf_client_t clid, int slot, int vlan_id,
01459 enum nmf_vlan_attr_id id,
01460 union nmf_vlan_attr_value *attr);
01461
01473 nmf_status_t nmf_vlan_attr_get(nmf_client_t clid, int slot, int vlan_id,
01474 enum nmf_vlan_attr_id id,
01475 union nmf_vlan_attr_value *attr);
01476
01489 nmf_status_t nmf_vlan_port_attr_set(nmf_client_t clid, int slot,
01490 int vlan_id, int port_no,
01491 enum nmf_vlan_port_attr_id id,
01492 union nmf_vlan_port_attr_value *attr);
01493
01506 nmf_status_t nmf_vlan_port_attr_get(nmf_client_t clid, int slot,
01507 int vlan_id, int port_no,
01508 enum nmf_vlan_port_attr_id id,
01509 union nmf_vlan_port_attr_value *attr);
01510
01511
01512
01529 nmf_status_t nmf_lag_add(nmf_client_t clid, int slot, int *lag_id, char *name);
01530
01540 nmf_status_t nmf_lag_rem(nmf_client_t clid, int slot, int lag_id);
01541
01551 nmf_status_t nmf_lag_list_get(nmf_client_t clid, int slot, nm_bv_t *lag_list);
01552
01563 nmf_status_t nmf_lag_port_add(nmf_client_t clid, int slot, int lag, int port_num);
01564
01575 nmf_status_t nmf_lag_port_rem(nmf_client_t clid, int slot, int lag, int port_num);
01576
01588 nmf_status_t nmf_lag_port_list_set(nmf_client_t clid, int slot, int lag,
01589 nm_bv_t *port_list);
01590
01602 nmf_status_t nmf_lag_port_list_get(nmf_client_t clid, int slot, int lag,
01603 nm_bv_t *port_list);
01604
01616 enum nmf_lag_hash_flags {
01618 NMF_LAG_HASH_SA = 0x001,
01620 NMF_LAG_HASH_DA = 0x002,
01622 NMF_LAG_HASH_ETHTYPE = 0x004,
01624 NMF_LAG_HASH_VLAN_ID = 0x008,
01626 NMF_LAG_HASH_VLAN_PRI = 0x010,
01628 NMF_LAG_HASH_SRC_IP = 0x020,
01630 NMF_LAG_HASH_DST_IP = 0x040,
01632 NMF_LAG_HASH_SRC_TCP_PORT = 0x080,
01634 NMF_LAG_HASH_DST_TCP_PORT = 0x100,
01636 NMF_LAG_HASH_SRC_UDP_PORT = 0x200,
01638 NMF_LAG_HASH_DST_UDP_PORT = 0x400,
01645 NMF_LAG_HASH_L2_SYM = 0x40000000,
01652 NMF_LAG_HASH_IP_SYM = 0x80000000
01653 };
01654 enum nmf_lag_attr_id {
01655 NMF_LAG_ATTR_NAME = 1,
01656 NMF_LAG_ATTR_DESC,
01657 NMF_LAG_ATTR_HASH_FLAGS,
01658 NMF_LAG_ATTR_PORT_LIST
01659 };
01660
01661 union nmf_lag_attr_value {
01662 char *name;
01663 nm_u32_t hash_flags;
01664 nm_bv_t port_list;
01665 };
01666
01678 nmf_status_t nmf_lag_attr_set(nmf_client_t clid, int slot, int lag,
01679 enum nmf_lag_attr_id id,
01680 union nmf_lag_attr_value *attr);
01692 nmf_status_t nmf_lag_attr_get(nmf_client_t clid, int slot, int lag,
01693 enum nmf_lag_attr_id id,
01694 union nmf_lag_attr_value *attr);
01695
01696
01713 nmf_status_t nmf_lbg_add(nmf_client_t clid, int slot, int *lbg_id, char *name);
01714
01724 nmf_status_t nmf_lbg_rem(nmf_client_t clid, int slot, int lbg_id);
01725
01735 nmf_status_t nmf_lbg_list_get(nmf_client_t clid, int slot, nm_bv_t *lbg_list);
01736
01747 nmf_status_t nmf_lbg_port_add(nmf_client_t clid, int slot, int lbg_id, int port_num);
01748
01759 nmf_status_t nmf_lbg_port_rem(nmf_client_t clid, int slot, int lbg, int port_num);
01760
01772 nmf_status_t nmf_lbg_port_list_set(nmf_client_t clid, int slot, int lbg,
01773 nm_bv_t *port_list);
01774
01786 nmf_status_t nmf_lbg_port_list_get(nmf_client_t clid, int slot, int lbg,
01787 nm_bv_t *port_list);
01788
01789 enum nmf_lbg_failover_mode {
01792 NMF_LBG_FO_TO_PORT = 1,
01796 NMF_LBG_FO_TO_STANDBY_PORT_OR_ANY,
01798 NMF_LBG_FO_HASH_TO_STANDBY,
01801 NMF_LBG_FO_HASH_TO_ANY
01802 };
01803 enum nmf_lbg_state {
01804 NMF_LBG_ACTIVE = 1,
01805 NMF_LBG_INACTIVE
01806 };
01807
01808 enum nmf_lbg_attr_id {
01809 NMF_LBG_ATTR_NAME = 1,
01810 NMF_LBG_ATTR_DESC,
01811 NMF_LBG_ATTR_PORT_LIST,
01812 NMF_LBG_ATTR_STATE,
01813 NMF_LBG_ATTR_VLAN,
01814 NMF_LBG_ATTR_MODE,
01815 NMF_LBG_ATTR_FAILOVER_MODE,
01816 NMF_LBG_ATTR_DIST_MAP,
01817 NMF_LBG_ATTR_DIST_MAP_SIZE
01818 };
01819
01820 struct nmf_lbg_dist_map {
01821 size_t len;
01822 u_int* map;
01824 };
01825
01826 union nmf_lbg_attr_value {
01827 char *name;
01828 char *desc;
01829 nm_bv_t port_list;
01830 enum nmf_lbg_state state;
01831 int vlan;
01832 enum nmf_lbg_mode mode;
01833 enum nmf_lbg_failover_mode fo_mode;
01834 u_int dist_map_size;
01835 struct nmf_lbg_dist_map dist_map;
01836 };
01837
01849 nmf_status_t nmf_lbg_attr_set(nmf_client_t clid, int slot, int lbg,
01850 enum nmf_lbg_attr_id id,
01851 union nmf_lbg_attr_value *attr);
01863 nmf_status_t nmf_lbg_attr_get(nmf_client_t clid, int slot, int lbg,
01864 enum nmf_lbg_attr_id id,
01865 union nmf_lbg_attr_value *attr);
01866
01867 enum nmf_lbg_port_attr_id {
01868 NMF_LBG_PORT_ATTR_STATE = 1,
01869 NMF_LBG_PORT_ATTR_FO_PARTNER
01870 };
01871
01872 enum nmf_lbg_port_state {
01873 NMF_LBG_PORT_ACTIVE = 1,
01874 NMF_LBG_PORT_INACTIVE,
01875 NMF_LBG_PORT_STANDBY
01876 };
01877
01878 union nmf_lbg_port_attr_value {
01879 enum nmf_lbg_port_state state;
01880 u_int fo_partner;
01881 };
01882
01894 nmf_status_t nmf_lbg_port_attr_set(nmf_client_t clid, int slot, int lbg, int port,
01895 enum nmf_lbg_port_attr_id id,
01896 union nmf_lbg_port_attr_value *attr);
01909 nmf_status_t nmf_lbg_port_attr_get(nmf_client_t clid, int slot, int lbg, int port,
01910 enum nmf_lbg_port_attr_id id,
01911 union nmf_lbg_port_attr_value *attr);
01912
01913
01914
01915 struct nmf_send {
01916 u_int port;
01917 u_int vlan_id;
01918 };
01919
01933 nmf_status_t nmf_pkt_send(nmf_client_t clid, int slot, char * buf, int len,
01934 struct nmf_send *args);
01935
01965 nmf_status_t nmf_reg_sz_get(nmf_client_t client_id, int slot_id, char *reg_name,
01966 char **val_ptr, int *val_len);
01967
01968
01969
01982 enum nmf_policer_action {
01986 NMF_POLICER_ACTION_DROP=1,
01987
01991 NMF_POLICER_ACTION_MKDN
01992 };
01993
01997 enum nmf_policer_color {
01998 NMF_POLICER_COLOR_GREEN = 1,
01999 NMF_POLICER_COLOR_DSCP,
02000 NMF_POLICER_COLOR_SWPRI
02001 };
02002
02006 enum nmf_policer_attr_id {
02010 NMF_POLICER_ATTR_NAME = 1,
02011
02015 NMF_POLICER_ATTR_DESC,
02016
02020 NMF_POLICER_ATTR_STATS,
02021
02026 NMF_POLICER_ATTR_COMMITTED_ACTION,
02027
02032 NMF_POLICER_ATTR_COMMITTED_CAPACITY,
02033
02038 NMF_POLICER_ATTR_COMMITTED_RATE,
02039
02044 NMF_POLICER_ATTR_EXCESS_ACTION,
02045
02050 NMF_POLICER_ATTR_EXCESS_CAPACITY,
02051
02056 NMF_POLICER_ATTR_EXCESS_RATE,
02057
02063 NMF_POLICER_ATTR_COLOR_SOURCE,
02064
02070 NMF_POLICER_ATTR_MKDN_DSCP,
02071
02077 NMF_POLICER_ATTR_MKDN_SWPRI,
02078
02086 NMF_POLICER_ATTR_MKDN_DSCP_MAP,
02087
02095 NMF_POLICER_ATTR_MKDN_SWPRI_MAP
02096 };
02097
02101 struct nmf_policer_stats {
02102 nm_u64_t packet_count;
02103 nm_u64_t byte_count;
02104 };
02105
02109 union nmf_policer_attr_value {
02111 char *name;
02112
02114 char *desc;
02115
02117 struct nmf_policer_stats stats;
02118
02123 enum nmf_policer_action committed_action;
02124
02126 u_int committed_capacity;
02127
02132 u_int committed_rate;
02133
02138 enum nmf_policer_action excess_action;
02139
02141 u_int excess_capacity;
02142
02147 u_int excess_rate;
02148
02153 enum nmf_policer_color color_source;
02154
02156 u_char mkdn_dscp;
02157
02159 u_char mkdn_swpri;
02160
02162 u_char *dscp_map;
02163
02165 u_char *swpri_map;
02166 };
02167
02181 nmf_status_t nmf_policer_add(nmf_client_t client_id, int slot_id,
02182 nmf_id_t *policer_id,
02183 char *name);
02184
02194 nmf_status_t nmf_policer_rem(nmf_client_t client_id, int slot_id,
02195 nmf_id_t policer_id);
02196
02204 nmf_status_t nmf_policer_list_get(nmf_client_t client_id, int slot_id,
02205 nm_bv_t *policer_list);
02206
02218 nmf_status_t nmf_policer_attr_set(nmf_client_t clid, int slot,
02219 nmf_id_t policer_id,
02220 enum nmf_policer_attr_id id,
02221 union nmf_policer_attr_value *attr);
02233 nmf_status_t nmf_policer_attr_get(nmf_client_t clid, int slot,
02234 nmf_id_t policer_id,
02235 enum nmf_policer_attr_id id,
02236 union nmf_policer_attr_value *attr);
02237
02238
02248 struct nmf_cond_param_in6 {
02249 union {
02250 nm_u32_t value_u32[4];
02251 nm_u16_t value_u16[8];
02252 nm_u8_t value_u8[16];
02253 };
02254 union {
02255 nm_u32_t mask_u32[4];
02256 nm_u16_t mask_u16[8];
02257 nm_u8_t mask_u8[16];
02258 };
02259 };
02260
02261 struct nmf_cond_param_in4 {
02262 union {
02263 nm_u32_t value;
02264 nm_u16_t value_u16[2];
02265 nm_u8_t value_u8[4];
02266 };
02267 union {
02268 nm_u32_t mask;
02269 nm_u16_t mask_u16[2];
02270 nm_u8_t mask_u8[4];
02271 };
02272 };
02273
02274 struct nmf_cond_param_u32 {
02275 nm_u32_t value;
02276 nm_u32_t mask;
02277 };
02278
02279 struct nmf_cond_param_u16 {
02280 nm_u16_t value;
02281 nm_u16_t mask;
02282 };
02283
02284 struct nmf_cond_param_u8 {
02285 u_char value;
02286 u_char mask;
02287 };
02288
02289 struct nmf_cond_param_eth_addr {
02290 u_char value[6];
02291 u_char mask[6];
02292 };
02293
02294 enum nmf_ip_proto {
02295 NMF_PROTO_UDP = 1,
02296 NMF_PROTO_TCP,
02297 NMF_PROTO_SCTP,
02298 NMF_PROTO_USER,
02299 NMF_PROTO_ANY
02300 };
02301
02302 struct nmf_cond_param_l4_port {
02303 nm_u16_t value;
02304 nm_u16_t mask;
02305 };
02306
02307 struct nmf_cond_param_l4_port_range {
02308 nm_u16_t min_port;
02309 nm_u16_t max_port;
02310 };
02311
02312 enum nmf_cond_type {
02314 NMF_COND_ETH_TYPE = 1,
02316 NMF_COND_VLAN_ID,
02318 NMF_COND_VLAN_PRI,
02320 NMF_COND_SWITCH_PRI,
02322 NMF_COND_ETH_SRC,
02324 NMF_COND_ETH_DST,
02326 NMF_COND_IP_PROTO,
02328 NMF_COND_IP_FLAGS,
02330 NMF_COND_IP_DSCP,
02332 NMF_COND_IP_TTL,
02334 NMF_COND_IP4_SRC,
02336 NMF_COND_IP4_DST,
02338 NMF_COND_IP6_SRC,
02340 NMF_COND_IP6_DST,
02342 NMF_COND_IP6_FLOW,
02344 NMF_COND_TCP_FLAGS,
02346 NMF_COND_L4_SRC_PORT,
02348 NMF_COND_L4_DST_PORT,
02350 NMF_COND_L4_SRC_PORT_RANGE,
02352 NMF_COND_L4_DST_PORT_RANGE,
02354 NMF_COND_USER,
02356 NMF_COND_RX_PORT_LIST
02357 };
02358
02359 struct nmf_cond {
02361 enum nmf_cond_type cond_id;
02362
02364 union {
02365 struct nmf_cond_param_u16 eth_type;
02366 struct nmf_cond_param_u16 vlan_id;
02367 struct nmf_cond_param_u8 vlan_pri;
02368 struct nmf_cond_param_u8 switch_pri;
02369 struct nmf_cond_param_eth_addr eth_src;
02370 struct nmf_cond_param_eth_addr eth_dst;
02371 struct nmf_cond_param_u8 ip_proto;
02372 struct nmf_cond_param_u8 ip_flags;
02373 struct nmf_cond_param_u8 ip_dscp;
02374 struct nmf_cond_param_u8 ip_ttl;
02375 struct nmf_cond_param_in4 ip4_src;
02376 struct nmf_cond_param_in4 ip4_dst;
02377 struct nmf_cond_param_in6 ip6_src;
02378 struct nmf_cond_param_in6 ip6_dst;
02379 struct nmf_cond_param_u32 ip6_flow;
02380 struct nmf_cond_param_u8 tcp_flags;
02381 struct nmf_cond_param_l4_port l4_src_port;
02382 struct nmf_cond_param_l4_port l4_dst_port;
02383 struct nmf_cond_param_l4_port_range l4_src_port_range;
02384 struct nmf_cond_param_l4_port_range l4_dst_port_range;
02385 nm_bv_t rx_port_list;
02386 } param;
02387 };
02388
02389 enum nmf_acl_scope {
02390 NMF_ACL_SCOPE_IP4 = 0x01,
02391 NMF_ACL_SCOPE_IP6 = 0x02,
02392 NMF_ACL_SCOPE_UCAST_ROUTED = 0x04,
02393 NMF_ACL_SCOPE_MCAST_ROUTED = 0x08,
02394 NMF_ACL_SCOPE_SWITCHED = 0x10,
02395 NMF_ACL_SCOPE_NONIP = 0x20,
02396 NMF_ACL_SCOPE_ALL = 0xFF
02397 };
02398
02399 struct nmf_action_redirect {
02402 nm_bv_t port_list;
02403 int bypass_lag;
02404 };
02405
02406 struct nmf_action_load_balance {
02407 int lbg_id;
02408 };
02409
02410 struct nmf_action_police {
02411 nmf_id_t id;
02412 };
02413
02414 struct nmf_action_mirror {
02417 int port;
02418 };
02419
02420 struct nmf_action_log {
02422 int truncate;
02423 };
02424
02425 struct nmf_action_trap {
02427 int truncate;
02428 };
02429
02430 enum nm_modify_key {
02431 NMF_MODIFY_USER = 1,
02432 NMF_MODIFY_VLAN_ID,
02433 NMF_MODIFY_VLAN_PRI,
02434 NMF_MODIFY_SWITCH_PRI,
02435 NMF_MODIFY_IP_DSCP
02436 };
02437 struct nmf_action_modify {
02438 enum nm_modify_key key;
02439 union {
02440 nm_u32_t user;
02441 nm_u16_t vlan_id;
02442 nm_u8_t vlan_pri;
02443 nm_u8_t switch_pri;
02444 nm_u8_t ip_dscp;
02445 };
02446 };
02447
02448 enum nmf_action_id {
02450 NMF_ACTION_PERMIT = 1,
02451
02453 NMF_ACTION_DROP,
02454
02456 NMF_ACTION_COUNT,
02457
02460 NMF_ACTION_REDIRECT,
02461
02463 NMF_ACTION_LOAD_BALANCE,
02464
02466 NMF_ACTION_MODIFY,
02467
02469 NMF_ACTION_POLICE,
02470
02472 NMF_ACTION_MIRROR,
02473
02475 NMF_ACTION_LOG,
02476
02478 NMF_ACTION_TRAP
02479 };
02480
02481 struct nmf_action {
02482 enum nmf_action_id action_id;
02483 union {
02484
02485
02486 struct nmf_action_redirect redirect;
02487 struct nmf_action_load_balance load_balance;
02488 struct nmf_action_modify modify;
02489 struct nmf_action_police policer;
02490 struct nmf_action_mirror mirror;
02491 struct nmf_action_log log;
02492 struct nmf_action_trap trap;
02493 } param;
02494 };
02495
02496 enum nmf_acl_state {
02497 NMF_ACL_DISABLED = 1,
02498 NMF_ACL_ENABLED
02499 };
02500
02501 enum nmf_acl_attr_id {
02502 NMF_ACL_ATTR_NAME = 1,
02503 NMF_ACL_ATTR_DESC,
02504 NMF_ACL_ATTR_STATE,
02505 NMF_ACL_ATTR_SCOPE,
02506 NMF_ACL_ATTR_PRECEDENCE,
02507 NMF_ACL_ATTR_RULE_COUNT
02508 };
02509 union nmf_acl_attr_value {
02510 char *name;
02511 enum nmf_acl_state state;
02512 nm_u32_t scope;
02513 nm_u32_t precedence;
02514 int rule_count;
02515 };
02516
02524 struct nmf_acl_rule_stats {
02525 nm_u64_t packet_count;
02526 nm_u64_t byte_count;
02527 };
02528
02529 struct nmf_acl_rule {
02530 struct nmf_cond *cond;
02531 nm_u32_t cond_count;
02532 struct nmf_action *action;
02533 nm_u32_t action_count;
02534 };
02535
02564 nmf_status_t nmf_acl_add(nmf_client_t client_id, int slot_id, nmf_id_t *acl_id, char *name,
02565 nm_u32_t scope, int precedence);
02577 nmf_status_t nmf_acl_list_get(nmf_client_t client_id, int slot_id, nm_bv_t *bv);
02578
02597 nmf_status_t nmf_acl_rule_add(nmf_client_t client_id, int slot_id,
02598 nmf_id_t acl_id, int rule_no,
02599 struct nmf_acl_rule *acl_rule);
02600
02615 nmf_status_t nmf_acl_rule_rem(nmf_client_t client_id, int slot_id,
02616 nmf_id_t acl_id, int rule);
02617
02634 nmf_status_t nmf_acl_rule_get(nmf_client_t client_id, int slot_id,
02635 nmf_id_t acl_id, int rule,
02636 struct nmf_acl_rule **acl_rule);
02637
02641 enum nmf_acl_rule_attr_id {
02642 NMF_ACL_RULE_ATTR_CONDACT = 1,
02643 NMF_ACL_RULE_ATTR_STATS
02644 };
02648 union nmf_acl_rule_attr_value {
02649 struct nmf_acl_rule *rule;
02650 struct nmf_acl_rule_stats stats;
02651 };
02652
02653 nmf_status_t nmf_acl_rule_attr_get(nmf_client_t client_id, int slot_id,
02654 nmf_id_t acl_id, int rule,
02655 enum nmf_acl_rule_attr_id attr_id,
02656 union nmf_acl_rule_attr_value *value);
02657
02664 struct nmf_acl_rule *nmf_acl_rule_alloc(int cond_count, int action_count);
02665
02672 void nmf_acl_rule_free(struct nmf_acl_rule *acl_rule);
02673
02681 struct nmf_acl_rule *nmf_acl_rule_dup(struct nmf_acl_rule *dst);
02682
02692 nmf_status_t nmf_acl_rem(nmf_client_t client_id, int slot_id, nmf_id_t acl_id);
02693
02702 nmf_status_t nmf_acl_commit(nmf_client_t client_id, int slot_id);
02703
02715 nmf_status_t nmf_acl_attr_set(nmf_client_t clid, int slot, nmf_id_t acl_id,
02716 enum nmf_acl_attr_id id,
02717 union nmf_acl_attr_value *attr);
02729 nmf_status_t nmf_acl_attr_get(nmf_client_t clid, int slot, int acl_id,
02730 enum nmf_acl_attr_id id,
02731 union nmf_acl_attr_value *attr);
02732
02740 enum nmf_qos_tc_pri_mode {
02742 NMF_QOS_TC_PRI_MODE_STRICT,
02743
02745 NMF_QOS_TC_PRI_MODE_BALANCED
02746 };
02747
02748 enum nmf_qos_cn_reaction_mode {
02750 NMF_QOS_CN_REACTION_FWD = 1,
02751
02753 NMF_QOS_CN_REACTION_DROP,
02754
02758 NMF_QOS_CN_REACTION_RATELIM
02759 };
02760
02761 enum nmf_qos_port_attr_id {
02764 NMF_QOS_PORT_ATTR_RX_VPRI_MAP = 1,
02765
02768 NMF_QOS_PORT_ATTR_TX_VPRI_MAP,
02769
02772 NMF_QOS_PORT_ATTR_SCHED_PRI_SETS,
02773
02775 NMF_QOS_PORT_ATTR_TC_WEIGHTS,
02776
02778 NMF_QOS_PORT_ATTR_TC_PRI_MODE,
02779
02782 NMF_QOS_PORT_ATTR_TC_TOKEN_RATE,
02783
02786 NMF_QOS_PORT_ATTR_TC_BURST_SIZE,
02787
02790 NMF_QOS_PORT_ATTR_CN_REACTION_MODE,
02791
02795 NMF_QOS_PORT_ATTR_CN_REACTION_RATE,
02796
02803 NMF_QOS_PORT_ATTR_CN_FRAME_DMAC_SUFFIX,
02804
02809 NMF_QOS_PORT_ATTR_CN_MIN,
02810
02814 NMF_QOS_PORT_ATTR_CN_MAX,
02815
02818 NMF_QOS_PORT_ATTR_CN_EQ,
02819
02823 NMF_QOS_PORT_ATTR_CN_SC
02824 };
02825
02826 union nmf_qos_port_attr_value {
02827 nm_u8_t rx_vpri_map[8];
02828 nm_u8_t tx_vpri_map[8];
02829 nm_u8_t sched_pri_map[8];
02830 nm_u32_t tc_weights[8];
02831 enum nmf_qos_tc_pri_mode tc_pri_mode[8];
02832 nm_u64_t tc_token_rate[8];
02833 nm_u64_t tc_burst_size[8];
02834 enum nmf_qos_cn_reaction_mode cn_reaction_mode;
02835 nm_u64_t cn_reaction_rate;
02836 nm_u32_t cn_frame_dmac_suffix;
02837 nm_u32_t cn_min;
02838 nm_u32_t cn_max;
02839 nm_u32_t cn_eq;
02840 nm_u32_t cn_sc;
02841 };
02842
02843 enum nmf_qos_cn_mode {
02845 NMF_QOS_CN_MODE_DISABLED = 1,
02846
02848 NMF_QOS_CN_MODE_VCN,
02849
02853 NMF_QOS_CN_MODE_FCN
02854 };
02855
02856 enum nmf_qos_slot_attr_id {
02860 NMF_QOS_SLOT_ATTR_VPRI_SWPRI_MAP = 1,
02861
02864 NMF_QOS_SLOT_ATTR_DSCP_SWPRI_MAP,
02865
02868 NMF_QOS_SLOT_ATTR_SWPRI_TC_MAP,
02869
02872 NMF_QOS_SLOT_ATTR_TC_SCHEDPRI_MAP,
02873
02875 NMF_QOS_SLOT_ATTR_CN_MODE,
02876
02879 NMF_QOS_SLOT_ATTR_CN_FRAME_ETYPE,
02880
02882 NMF_QOS_SLOT_ATTR_CN_FRAME_VPRI,
02883
02885 NMF_QOS_SLOT_ATTR_CN_FRAME_VLAN,
02886
02888 NMF_QOS_SLOT_ATTR_CN_FRAME_SRC_PORT,
02889
02892 NMF_QOS_SLOT_ATTR_CN_FRAME_SMAC,
02893
02896 NMF_QOS_SLOT_ATTR_CN_FRAME_DMAC,
02897
02901 NMF_QOS_SLOT_ATTR_CN_SAMPLING_RATE
02902 };
02903
02904 union nmf_qos_slot_attr_value {
02905 nm_u8_t vpri_swpri_map[8];
02906 nm_u8_t dscp_swpri_map[64];
02907 nm_u8_t swpri_tc_map[16];
02908 nm_u8_t tc_schedpri_map[8];
02909 enum nmf_qos_cn_mode cn_mode;
02910 nm_u16_t cn_frame_etype;
02911 nm_u8_t cn_frame_vpri;
02912 nm_u16_t cn_frame_vlan;
02913 nm_u32_t cn_frame_src_port;
02914 nm_u8_t cn_frame_smac[6];
02915 nm_u8_t cn_frame_dmac[6];
02916 nm_u32_t cn_sampling_rate;
02917 };
02918
02919 nmf_status_t nmf_qos_port_attr_set(nmf_client_t clid, int slot, int port,
02920 enum nmf_qos_port_attr_id id,
02921 union nmf_qos_port_attr_value *attr);
02922
02923 nmf_status_t nmf_qos_port_attr_get(nmf_client_t clid, int slot, int port,
02924 enum nmf_qos_port_attr_id id,
02925 union nmf_qos_port_attr_value *attr);
02926
02927 nmf_status_t nmf_qos_slot_attr_set(nmf_client_t clid, int slot, int port,
02928 enum nmf_qos_slot_attr_id id,
02929 union nmf_qos_slot_attr_value *attr);
02930
02931 nmf_status_t nmf_qos_slot_attr_get(nmf_client_t clid, int slot, int port,
02932 enum nmf_qos_slot_attr_id id,
02933 union nmf_qos_slot_attr_value *attr);
02934
02935
02936
02980 nmf_status_t nmf_mcgrp_add(nmf_client_t clid, int slot, int *mcgrp_id, char *name);
02981
02991 nmf_status_t nmf_mcgrp_rem(nmf_client_t clid, int slot, int mcgrp_id);
02992
03002 nmf_status_t nmf_mcgrp_list_get(nmf_client_t clid, int slot, nm_bv_t *mcgrp_list);
03003
03016 nmf_status_t nmf_mcgrp_port_add(nmf_client_t clid, int slot, int mcgrp_id,
03017 int port_num, short vlan_id);
03018
03030 nmf_status_t nmf_mcgrp_port_rem(nmf_client_t clid, int slot, int mcgrp,
03031 int port_num, short vlan_id);
03032
03044 nmf_status_t nmf_mcgrp_port_list_get(nmf_client_t clid, int slot,
03045 int mcgrp_id, nm_bv_t *port_list);
03046
03059 nmf_status_t nmf_mcgrp_port_vlan_list_get(nmf_client_t clid, int slot,
03060 int mcgrp_id, int port,
03061 nm_bv_t *vlan_list);
03062
03063 enum nmf_mcgrp_attr_id {
03064 NMF_MCGRP_ATTR_NAME = 1,
03065 NMF_MCGRP_ATTR_DESC,
03066 NMF_MCGRP_ENABLED,
03067 NMF_MCGRP_FWD_TO_CPU,
03068 NMF_MCGRP_L2_ONLY,
03069 NMF_MCGRP_L3_FORWARDED,
03070 NMF_MCGRP_L2_ADDRESS,
03071 NMF_MCGRP_PORT_LIST
03072 };
03073
03074 union nmf_mcgrp_attr_value {
03075 char *name;
03076 char *desc;
03077 nm_u32_t enabled;
03078 nm_u32_t fwd_to_cpu;
03079 nm_u32_t l2_only;
03080 nm_u32_t l3_forwarded;
03081 struct av_t {
03082 u_char eth_addr[6];
03083 u_short vlan_id;
03084 } av;
03085 nm_bv_t port_list;
03086 };
03087
03099 nmf_status_t nmf_mcgrp_attr_set(nmf_client_t clid, int slot, int mcgrp_id,
03100 enum nmf_mcgrp_attr_id id,
03101 union nmf_mcgrp_attr_value *attr);
03113 nmf_status_t nmf_mcgrp_attr_get(nmf_client_t clid, int slot, int mcgrp_id,
03114 enum nmf_mcgrp_attr_id id,
03115 union nmf_mcgrp_attr_value *attr);
03116
03118 #ifdef __cplusplus
03119 }
03120 #endif
03121
03122 #endif