Ivy quic client

include order
include quic_infer
include file
include quic_shim
include quic_locale
include random_value

parameter the_cid : cid = 0xd
parameter client_addr : ip.addr = 0x0a000001 # 0x7f000001
parameter client_port : ip.port = 4987
parameter client_port_alt : ip.port = 4988
parameter client_port_vn : ip.port = 4987 #4986 # bind failed: Address already in use
parameter n_clients : stream_pos = 0x1

parameter max_stream_data : stream_pos = 0x2000
parameter initial_max_streams_bidi : stream_id = 200
create a client and server. the client has an instance of TLS

instance client : quic_endpoint(endpoint_id.client) instance server : quic_endpoint(endpoint_id.server)

instance client : quic_endpoint.client_ep(client_addr,client_port)
An ip endpoint for the client to migrate to.

var client_alt : ip.endpoint
var client_vn  : ip.endpoint

after init {
    client_alt := endpoint_id_addr(endpoint_id.client_alt);
    client_vn  := endpoint_id_addr(endpoint_id.client_vn);
}
instance second_client : quic_endpoint(endpoint_id.client_alt)

instance second_client : quic_endpoint.client_ep(client_addr,client_port) # second_client_ep
after init { call second_client.initialization(client_addr,client_port); }

We create sockets and bind them to the addresses that the client can use.

TODO create socket for client & server TODO associate these data to the entities itself

var sock : net.socket
var sock_alt : net.socket
var sock_vn : net.socket