00001
00002
00003
00004
00005
00006
00007 #ifndef _NMF_DEV_H
00008 #define _NMF_DEV_H
00009 #include <nmf/nmf.h>
00010 #include <nmf/nmf_slot.h>
00011
00012 #ifdef __cplusplus
00013 NM_CDECL_BEGIN
00014 #endif
00015
00026 struct nmf_slot;
00027 struct nmf_event_info;
00028 struct nmf_dev;
00029
00030 typedef struct nmf_dev *(*nmf_dev_get_t)(void);
00031 typedef void (*nmf_dev_event_cb)(struct nmf_dev *, struct nmf_slot *, struct nmf_event_info *);
00032 struct nmf_dev {
00036 char *name;
00037
00041 u_int capabilities;
00042
00047 u_int first_slot;
00048
00052 u_int max_slots;
00053
00059 nmf_status_t (*init)(int argc, char* argv[], nmf_dev_event_cb event_cb);
00060
00064 void (*term)(void);
00065
00073 nmf_status_t (*slot_reg)(struct nmf_slot *);
00074
00078 void (*slot_unreg)(struct nmf_slot *);
00079
00083 nmf_status_t (*slot_reset)(struct nmf_slot *);
00084
00088 nmf_status_t (*slot_attr_get)(struct nmf_slot *,
00089 enum nmf_slot_attr_id id,
00090 union nmf_slot_attr_value *val);
00091
00095 nmf_status_t (*slot_attr_set)(struct nmf_slot *,
00096 enum nmf_slot_attr_id id,
00097 union nmf_slot_attr_value *val);
00101 nmf_status_t (*port_attr_get)(struct nmf_slot *,
00102 int port,
00103 enum nmf_port_attr_id id,
00104 union nmf_port_attr_value *val);
00108 nmf_status_t (*port_attr_set)(struct nmf_slot *,
00109 int port,
00110 enum nmf_port_attr_id id,
00111 union nmf_port_attr_value *val);
00115 nmf_status_t (*port_stats_get)(struct nmf_slot *,
00116 int port,
00117 struct nmf_port_stats *stats);
00121 nmf_status_t (*port_stats_reset)(struct nmf_slot *,
00122 int port);
00126 nmf_status_t (*addr_get)(struct nmf_slot *,
00127 struct nmf_addr_rec *adrec);
00131 nmf_status_t (*addr_add)(struct nmf_slot *,
00132 struct nmf_addr_rec *adrec);
00136 nmf_status_t (*addr_rem)(struct nmf_slot *,
00137 int vlan_id, u_char *ethaddr);
00141 nmf_status_t (*addr_flush)(struct nmf_slot *, nm_u32_t flags,
00142 int vlan_id, int port);
00146 nmf_status_t (*vlan_add)(struct nmf_slot *, int vlan_id);
00150 nmf_status_t (*vlan_rem)(struct nmf_slot *, int vlan_id);
00154 nmf_status_t (*vlan_list_get)(struct nmf_slot *, nm_bv_t *vlans);
00158 nmf_status_t (*vlan_port_add)(struct nmf_slot *, int vlan_id, int port,
00159 int tagged, enum nmf_stp_state stp_state);
00163 nmf_status_t (*vlan_port_rem)(struct nmf_slot *, int vlan_id, int port);
00167 nmf_status_t (*vlan_port_list_set)(struct nmf_slot *, int vlan_id,
00168 int tagged,
00169 enum nmf_stp_state stp_state,
00170 nm_bv_t *ports);
00174 nmf_status_t (*vlan_port_list_get)(struct nmf_slot *, int vlan_id,
00175 nm_bv_t *ports);
00179 nmf_status_t (*vlan_attr_set)(struct nmf_slot *, int vlan_id,
00180 enum nmf_vlan_attr_id od,
00181 union nmf_vlan_attr_value *value);
00185 nmf_status_t (*vlan_attr_get)(struct nmf_slot *, int vlan_id,
00186 enum nmf_vlan_attr_id id,
00187 union nmf_vlan_attr_value *value);
00191 nmf_status_t (*vlan_port_attr_set)(struct nmf_slot *, int vlan_id,
00192 int port, enum nmf_vlan_port_attr_id id,
00193 union nmf_vlan_port_attr_value *value);
00197 nmf_status_t (*vlan_port_attr_get)(struct nmf_slot *, int vlan_id,
00198 int port, enum nmf_vlan_port_attr_id id,
00199 union nmf_vlan_port_attr_value *value);
00203 nmf_status_t (*lag_add)(struct nmf_slot *, nm_u32_t *lag_id);
00207 nmf_status_t (*lag_rem)(struct nmf_slot *, int lag_id);
00211 nmf_status_t (*lag_list_get)(struct nmf_slot *, nm_bv_t *lags);
00215 nmf_status_t (*lag_port_add)(struct nmf_slot *, int lag_id, int port);
00219 nmf_status_t (*lag_port_rem)(struct nmf_slot *, int lag_id, int port);
00223 nmf_status_t (*lag_port_list_set)(struct nmf_slot *, int lag_id,
00224 nm_bv_t *ports);
00228 nmf_status_t (*lag_port_list_get)(struct nmf_slot *, int lag_id,
00229 nm_bv_t *ports);
00233 nmf_status_t (*lag_attr_set)(struct nmf_slot *, int lag_id,
00234 enum nmf_lag_attr_id id,
00235 union nmf_lag_attr_value *value);
00239 nmf_status_t (*lag_attr_get)(struct nmf_slot *, int lag_id,
00240 enum nmf_lag_attr_id id,
00241 union nmf_lag_attr_value *value);
00245 nmf_status_t (*lbg_add)(struct nmf_slot *, nm_u32_t *lbg_id);
00249 nmf_status_t (*lbg_rem)(struct nmf_slot *, int lbg_id);
00253 nmf_status_t (*lbg_list_get)(struct nmf_slot *, nm_bv_t *lbgs);
00257 nmf_status_t (*lbg_port_add)(struct nmf_slot *, int lbg_id, int port);
00261 nmf_status_t (*lbg_port_rem)(struct nmf_slot *, int lbg_id, int port);
00265 nmf_status_t (*lbg_port_list_set)(struct nmf_slot *, int lbg_id,
00266 nm_bv_t *ports);
00270 nmf_status_t (*lbg_port_list_get)(struct nmf_slot *, int lbg_id,
00271 nm_bv_t *ports);
00275 nmf_status_t (*lbg_attr_set)(struct nmf_slot *, int lbg_id,
00276 enum nmf_lbg_attr_id id,
00277 union nmf_lbg_attr_value *value);
00281 nmf_status_t (*lbg_attr_get)(struct nmf_slot *, int lbg_id,
00282 enum nmf_lbg_attr_id id,
00283 union nmf_lbg_attr_value *value);
00287 nmf_status_t (*lbg_port_attr_set)(struct nmf_slot *, int lbg_id, int port,
00288 enum nmf_lbg_port_attr_id id,
00289 union nmf_lbg_port_attr_value *value);
00293 nmf_status_t (*lbg_port_attr_get)(struct nmf_slot *, int lbg_id, int port,
00294 enum nmf_lbg_port_attr_id id,
00295 union nmf_lbg_port_attr_value *value);
00296
00300 nmf_status_t (*mcgrp_add)(struct nmf_slot *, int *mcgrp_id);
00304 nmf_status_t (*mcgrp_rem)(struct nmf_slot *, int mcgrp_id);
00308 nmf_status_t (*mcgrp_list_get)(struct nmf_slot *, nm_bv_t *mcgrps);
00312 nmf_status_t (*mcgrp_port_add)(struct nmf_slot *, int mcgrp_id, int port, short vlan_id);
00316 nmf_status_t (*mcgrp_port_rem)(struct nmf_slot *, int mcgrp_id, int port, short vlan_id);
00320 nmf_status_t (*mcgrp_port_list_get)(struct nmf_slot *, int mcgrp_id,
00321 nm_bv_t *ports);
00325 nmf_status_t (*mcgrp_attr_set)(struct nmf_slot *, int lag_id,
00326 enum nmf_mcgrp_attr_id id,
00327 union nmf_mcgrp_attr_value *value);
00331 nmf_status_t (*mcgrp_attr_get)(struct nmf_slot *, int mcgrp_id,
00332 enum nmf_mcgrp_attr_id id,
00333 union nmf_mcgrp_attr_value *value);
00334
00338 nmf_status_t (*pkt_send)(struct nmf_slot *, char *buf, int len,
00339 struct nmf_send *args);
00343 nmf_status_t (*reg_sz_get)(struct nmf_slot *, char *reg_name,
00344 char **value, int *value_len);
00345
00349 nmf_status_t (*acl_add)(struct nmf_slot *,
00350 enum nmf_acl_scope scope, int precedence,
00351 nmf_id_t *id);
00355 nmf_status_t (*acl_rule_add)(struct nmf_slot *, nmf_id_t id, int rule,
00356 struct nmf_acl_rule *);
00360 nmf_status_t (*acl_rule_rem)(struct nmf_slot *, nmf_id_t id, int rule);
00364 nmf_status_t (*acl_rem)(struct nmf_slot *, nmf_id_t);
00368 nmf_status_t (*acl_rule_get)(struct nmf_slot *, nmf_id_t id, int rule,
00369 struct nmf_acl_rule **acl_rule);
00373 nmf_status_t (*acl_rule_attr_get)(struct nmf_slot *slot,
00374 nmf_id_t acl_id, int rule_no,
00375 enum nmf_acl_rule_attr_id attr_id,
00376 union nmf_acl_rule_attr_value *value);
00380 nmf_status_t (*acl_attr_set)(struct nmf_slot *, nmf_id_t id,
00381 enum nmf_acl_attr_id attr_id,
00382 union nmf_acl_attr_value *value);
00386 nmf_status_t (*acl_attr_get)(struct nmf_slot *, nmf_id_t id,
00387 enum nmf_acl_attr_id attr_id,
00388 union nmf_acl_attr_value *value);
00392 nmf_status_t (*acl_list_get)(struct nmf_slot *, nm_bv_t *bv);
00396 nmf_status_t (*acl_commit)(struct nmf_slot *);
00397
00401 nmf_status_t (*policer_add)(struct nmf_slot *, nmf_id_t *policer_id);
00405 nmf_status_t (*policer_rem)(struct nmf_slot *, nmf_id_t policer_id);
00409 nmf_status_t (*policer_list_get)(struct nmf_slot *slot, nm_bv_t *bv);
00413 nmf_status_t (*policer_attr_set)(struct nmf_slot *, nmf_id_t policer_id,
00414 enum nmf_policer_attr_id id,
00415 union nmf_policer_attr_value *value);
00419 nmf_status_t (*policer_attr_get)(struct nmf_slot *, nmf_id_t policer_id,
00420 enum nmf_policer_attr_id id,
00421 union nmf_policer_attr_value *value);
00425 nmf_status_t (*qos_slot_attr_get)(struct nmf_slot *,
00426 enum nmf_qos_slot_attr_id id,
00427 union nmf_qos_slot_attr_value *val);
00431 nmf_status_t (*qos_slot_attr_set)(struct nmf_slot *,
00432 enum nmf_qos_slot_attr_id id,
00433 union nmf_qos_slot_attr_value *val);
00437 nmf_status_t (*qos_port_attr_get)(struct nmf_slot *,
00438 int port,
00439 enum nmf_qos_port_attr_id id,
00440 union nmf_qos_port_attr_value *val);
00444 nmf_status_t (*qos_port_attr_set)(struct nmf_slot *,
00445 int port,
00446 enum nmf_qos_port_attr_id id,
00447 union nmf_qos_port_attr_value *val);
00448 };
00449
00456 struct nmf_dev_tbl {
00457 int count;
00458 struct nmf_dev *table;
00459 };
00461 extern struct nmf_dev_tbl *nmf_dev_load(char *path, nmf_dev_event_cb cb);
00462
00463 #ifdef __cplusplus
00464 NM_CDECL_END
00465 #endif
00466
00467 #endif