Пример #1
0
static int process_del_port(int client) {
    ctl_msg_del_port_t msg;
    msg.code = CTL_MSG_DEL_PORT_CODE;
    int n = recvall(client, ((char *) &msg) + 1, sizeof(ctl_msg_del_port_t) - 1);
    assert(n == sizeof(ctl_msg_del_port_t) - 1);
    errno = 0;
    int port_num = strtol(msg.iface, NULL, 10);
    // FIXME: Not sure how to convert interface string to int.
    assert(errno == 0);
    int status = del_port(port_num);
    send_status_reply(client, msg.request_id, status);
    return 0;
}
Пример #2
0
int del_vpn_info(vpn_entry *vpn,int vpn_id){
	if(vpn==NULL)
	return -1;
	vpn_entry *this, *vpn_top;
	vpn_top=vpn;
	//port_id_entry *free_node;
	this=search_vpn_node(vpn,vpn_id);
	while(this->port_id_ptr!=NULL){
		printf("del port :%d\n",this->port_id_ptr->port_id);
		del_port(this,this->port_id_ptr->port_id);
	}
	printf("free vpn_id :%d\n",this->vpn_id);
	if(!vpn_finish(vpn_top,this->vpn_id))
		return 0;
	else
		return -1;
	
}
Пример #3
0
Файл: main.c Проект: nbastin/ivs
int
main(int argc, char *argv[])
{
    sk = create_genl_socket();
    sk2 = create_genl_socket();

    /* Resolve generic netlink families. */
    ovs_datapath_family = genl_ctrl_resolve(sk, OVS_DATAPATH_FAMILY);
    ovs_packet_family = genl_ctrl_resolve(sk, OVS_PACKET_FAMILY);
    ovs_vport_family = genl_ctrl_resolve(sk, OVS_VPORT_FAMILY);
    ovs_flow_family = genl_ctrl_resolve(sk, OVS_FLOW_FAMILY);
    if (ovs_datapath_family < 0 || ovs_packet_family < 0 ||
        ovs_vport_family < 0 || ovs_flow_family < 0) {
        fprintf(stderr, "Failed to resolve Open vSwitch generic netlink families; module not loaded?\n");
        return 1;
    }

    parse_options(argc, argv);

    argc -= optind;
    argv += optind;

    if (argc < 1) {
        help();
        return 1;
    }

    const char *cmd = argv[0];

    if (!strcmp(cmd, "help")) {
        help();
    } else if (!strcmp(cmd, "show")) {
        show();
    } else if (!strcmp(cmd, "add-port") ||!strcmp(cmd, "add-if")) {
        if (argc != 2) {
            fprintf(stderr, "Wrong number of arguments for the %s command (try help)\n", cmd);
            return 1;
        }
        add_port(datapath_name, argv[1]);
    } else if (!strcmp(cmd, "add-internal-port")) {
        if (argc != 2) {
            fprintf(stderr, "Wrong number of arguments for the %s command (try help)\n", cmd);
            return 1;
        }
        add_internal_port(datapath_name, argv[1]);
    } else if (!strcmp(cmd, "del-port") ||!strcmp(cmd, "del-if")) {
        if (argc != 2) {
            fprintf(stderr, "Wrong number of arguments for the %s command (try help)\n", cmd);
            return 1;
        }
        del_port(datapath_name, argv[1]);
    } else if (!strcmp(cmd, "del-br") ||!strcmp(cmd, "del-dp")) {
        if (argc != 1) {
            fprintf(stderr, "Wrong number of arguments for the %s command (try help)\n", cmd);
            return 1;
        }
        del_dp(datapath_name);
    } else {
        fprintf(stderr, "Unknown command '%s' (try help)\n", cmd);
        return 1;
    }

    return 0;
}