void ofctrl_init(void) { swconn = rconn_create(5, 0, DSCP_DEFAULT, 1 << OFP13_VERSION); tx_counter = rconn_packet_counter_create(); hmap_init(&installed_flows); }
/* Creates a new rconn, connects it (unreliably) to 'vconn', and returns it. */ struct rconn * rconn_new_from_vconn(const char *name, struct vconn *vconn) { struct rconn *rc = rconn_create(60, 0); rconn_connect_unreliably(rc, name, vconn); return rc; }
/* Creates a new rconn, connects it (reliably) to 'name', and returns it. */ struct rconn * rconn_new(const char *name, int inactivity_probe_interval, int max_backoff) { struct rconn *rc = rconn_create(inactivity_probe_interval, max_backoff); rconn_connect(rc, name); return rc; }
int main(int argc, char *argv[]) { struct rconn *rconn; int error; set_program_name(argv[0]); register_fault_handlers(); time_init(); vlog_init(); parse_options(argc, argv); signal(SIGPIPE, SIG_IGN); if (argc - optind != 1) { ofp_fatal(0, "missing controller argument; use --help for usage"); } rconn = rconn_create(60, max_backoff); error = rconn_connect(rconn, argv[optind]); if (error == EAFNOSUPPORT) { ofp_fatal(0, "no support for %s vconn", argv[optind]); } error = dp_new(&dp, dpid, rconn); if (listen_pvconn_name) { struct pvconn *listen_pvconn; int retval; retval = pvconn_open(listen_pvconn_name, &listen_pvconn); if (retval && retval != EAGAIN) { ofp_fatal(retval, "opening %s", listen_pvconn_name); } dp_add_listen_pvconn(dp, listen_pvconn); } if (error) { ofp_fatal(error, "could not create datapath"); } if (port_list) { add_ports(dp, port_list); } die_if_already_running(); daemonize(); error = vlog_server_listen(NULL, NULL); if (error) { ofp_fatal(error, "could not listen for vlog connections"); } for (;;) { dp_run(dp); dp_wait(dp); poll_block(); } return 0; }
void pinctrl_init(void) { swconn = rconn_create(5, 0, DSCP_DEFAULT, 1 << OFP13_VERSION); conn_seq_no = 0; }