25 port->max_queues = SWITCH_PORT_MAX_QUEUES;
36 if(!port->stats.mutex){
48 strncpy(port->name, name, SWITCH_PORT_MAX_LEN_NAME);
51 port->forward_packets =
true;
52 port->drop_received =
false;
53 port->no_flood =
false;
54 port->curr = port->advertised = port->supported = port->peer = 0x0;
55 port->curr_speed = port->curr_max_speed = 0;
56 port->of_port_num = 0;
57 port->of_generate_packet_in =
true;
58 port->attached_sw = NULL;
61 port->platform_port_state = NULL;
71 for(i=0;i<SWITCH_PORT_MAX_QUEUES;i++){
72 if(port->queues[i].set)
73 __port_queue_destroy(&port->queues[i]);
96 if(
id >=SWITCH_PORT_MAX_QUEUES ||
97 port->queues[
id].set ){
103 __port_queue_init(&port->queues[
id],
id, name, length, min_rate, max_rate);
117 if(
id >=SWITCH_PORT_MAX_QUEUES ||
118 !port->queues[
id].set ){
124 __port_queue_destroy(&port->queues[
id]);
137 *bitmap &= (~features);
140 if(speed > PORT_FEATURE_1TB_FD)
142 port->curr_speed = speed;
145 if(speed > PORT_FEATURE_1TB_FD)
147 port->curr_max_speed = speed;
168 s->platform_port_state=s->mutex=s->attached_sw=s->stats.mutex=NULL;
169 for(i=0;i<SWITCH_PORT_MAX_QUEUES;i++)
170 s->queues[i].
stats.mutex = NULL;
173 s->attached_sw = NULL;
174 s->is_attached_to_sw = (port->attached_sw != NULL);
175 if(port->attached_sw)
176 s->attached_sw_dpid = port->attached_sw->dpid;
178 s->attached_sw_dpid = 0x0;
queue_stats_t stats
Queue statistics.
Defines the locking interface used by the library. The user of the library MUST provide an implementa...
enum port_features port_features_t
Port features.
Defines the memory management interface used by the library. The user of the library MUST provide an ...
void switch_port_destroy_snapshot(switch_port_snapshot_t *port)
Destroy a switch port snapshot.
void switch_port_name_list_destroy(switch_port_name_list_t *list)
Destroys a port name list, previously generated by calling fwd_module_get_all_port_names() ...
void switch_port_set_current_speed(switch_port_t *port, port_features_t speed)
Sets current speed.
switch_port_snapshot_t * switch_port_clone_snapshot(switch_port_snapshot_t *orig)
Clone a snapshot.
Port abstraction and API.
void switch_port_add_capabilities(bitmap32_t *bitmap, bitmap32_t features)
Adds capabilities to the port.
enum port_type port_type_t
Port type enumeration.
switch_port_t * switch_port_init(char *name, bool up, port_type_t type, port_state_t state)
Init a switch_port structure.
rofl_result_t switch_port_remove_queue(switch_port_t *port, uint32_t id)
Remove queue from port.
rofl_result_t switch_port_destroy(switch_port_t *port)
Destroy a switch_port structure.
rofl_result_t switch_port_add_queue(switch_port_t *port, uint32_t id, char *name, uint16_t length, uint16_t min_rate, uint16_t max_rate)
Add queue to port.
void switch_port_set_current_max_speed(switch_port_t *port, port_features_t speed)
Sets current MAX speed.
void switch_port_remove_capabilities(bitmap32_t *bitmap, bitmap32_t features)
Removes capabilities to the port.
OpenFlow logical switch meta-abstraction.