Hi All,

Is there a way to designate a source IP and PORT from grpc c++ *client*?

Generally, on the client side, we specify the IP and PORT of the server's
listening port to connect to and we don't care about the client's IP and
port. When a client tries to create a channel, it assigns a random unused
port for the outgoing connection and uses the IP which has reachability
towards the server.

But, generally, in systems that have multiple interfaces and multiple IP
addresses, can the application decide which outgoing interface/IP/port to
be used for the connection?

I have used SetSocketMutator()
<https://grpc.github.io/grpc/cpp/classgrpc_1_1_channel_arguments.html#a520690f499be85159a20200ddb986a96>
and
during the creation of fd, grpc stack gives a callback to the application
and the application can mutate the fd to perform any add-on setsockopt() on
the fd to change its behavior.
In the same callback, if I try to perform bind() to a source address and
port, it gives an "Invalid argument" error.

*Code snippet for reference:*

bool mutate_fd_callback(const grpc_mutate_socket_info* info,

                    grpc_socket_mutator* mutator) {


    int ret = 0;

    struct   sockaddr_in addr;

    memset(&addr, '\0', sizeof(addr));


    addr.sin_addr.s_addr = inet_addr("20.0.0.1");

    addr.sin_port = htons(51234);

    addr.sin_family = AF_INET;


    ret = ::bind(info->fd, (struct sockaddr *)&addr, sizeof(struct
sockaddr));

Does the grpc stack itself does a bind() internally and the application has
no control over choosing its own IP/port? Or is there any other way of
specifying src IP/PORT instead of bind()?

Please correct me if I'm wrong in any of the above understanding.

Regards,
Sachin

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/CA%2BbEEAf8JseLnKcL2AuuM398w465kFy1nsbEY%2Bp8cHNAVGecSQ%40mail.gmail.com.

Reply via email to