From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> To: Konstantin Osipov <kostja@tarantool.org> Cc: tarantool-patches@freelists.org Subject: [tarantool-patches] Re: [PATCH 4/5] swim: allow to omit host in URI Date: Thu, 2 May 2019 18:10:04 +0300 [thread overview] Message-ID: <98cf0bc9-8b4a-cbb0-7656-4b83d6dc3d58@tarantool.org> (raw) In-Reply-To: <20190501052026.GD1139@atlas> On 01/05/2019 08:20, Konstantin Osipov wrote: > * Vladislav Shpilevoy <v.shpilevoy@tarantool.org> [19/05/01 08:07]: >> Before the patch swim.cfg() was returning an error on an attempt >> to use URI like 'port', without a host. But it would be useful, >> easy, and short to allow that, and use '127.0.0.1' host by >> default. Compare: >> >> swim:cfg({uri = 1234}) >> vs >> swim:cfg({uri = '127.0.0.1:1234'}) >> >> It is remarkable that box.cfg{listen} also allows to omit host. >> >> Note, that use '0.0.0.0' (INADDR_ANY) is forbidden. Otherwise >> >> 1) Different instances interacting with this one via not the >> same interfaces would see different source IP addresses. >> It would mess member tables; >> >> 2) This instance would not be able to encode its IP address >> in the meta section, because it has no a fixed IP. At the >> same time omission of it and usage of UDP header source >> address is not possible as well, because UDP header is not >> encrypted and therefore is not safe to look at. >> > > Thank you for an elaborate description. Please squash the patch > with the previous one. I believe at least some of this extensive > comment belongs to the source code. The patch is OK to push after > adding a comment. > Added: ================================================================ diff --git a/src/lib/swim/swim.c b/src/lib/swim/swim.c index c806000df..ada36156e 100644 --- a/src/lib/swim/swim.c +++ b/src/lib/swim/swim.c @@ -1710,6 +1710,27 @@ swim_uri_to_addr(const char *uri, struct sockaddr_in *addr, } *addr = *((struct sockaddr_in *) &storage); if (is_host_empty) { + /* + * This condition is satisfied when host is + * omitted and URI is "port". Note, that + * traditionally "port" is converted to + * "0.0.0.0:port" what means binding to all the + * interfaces simultaneously, but it would not + * work for SWIM. There is why: + * + * - Different instances interacting with this + * one via not the same interface would see + * different source IP addresses. It would + * mess member tables; + * + * - This instance would not be able to encode + * its IP address in the meta section, + * because it has no a fixed IP. At the same + * time omission of it and usage of UDP + * header source address is not possible as + * well, because UDP header is not encrypted + * and therefore is not safe to look at. + */ addr->sin_addr.s_addr = htonl(INADDR_LOOPBACK); } else if (addr->sin_addr.s_addr == 0) { diag_set(IllegalParams, "%s INADDR_ANY is not supported", diff --git a/src/lib/swim/swim.h b/src/lib/swim/swim.h index 2f53716c7..a3711dc27 100644 --- a/src/lib/swim/swim.h +++ b/src/lib/swim/swim.h @@ -77,7 +77,8 @@ swim_is_configured(const struct swim *swim); * Configure or reconfigure a SWIM instance. * * @param swim SWIM instance to configure. - * @param uri URI in the format "ip:port". + * @param uri URI in the format "ip:port", or "port". In the + * latter case host is "127.0.0.1" by default. * @param heartbeat_rate Rate of sending round messages. It does * not mean that each member will be checked each * @heartbeat_rate seconds. It is rather the protocol ================================================================
next prev parent reply other threads:[~2019-05-02 15:10 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-04-30 22:31 [tarantool-patches] [PATCH 0/5] swim lua preparation Vladislav Shpilevoy 2019-04-30 22:31 ` [tarantool-patches] [PATCH 1/5] swim: do not use ev_timer_start Vladislav Shpilevoy 2019-05-01 5:09 ` [tarantool-patches] " Konstantin Osipov 2019-04-30 22:31 ` [tarantool-patches] [PATCH 2/5] swim: introduce member reference API Vladislav Shpilevoy 2019-05-01 5:15 ` [tarantool-patches] " Konstantin Osipov 2019-05-02 15:10 ` Vladislav Shpilevoy 2019-05-02 15:46 ` Konstantin Osipov 2019-05-02 17:32 ` Vladislav Shpilevoy 2019-04-30 22:31 ` [tarantool-patches] [PATCH 3/5] sio: return 'no host' flag from sio_uri_to_addr() Vladislav Shpilevoy 2019-05-01 5:18 ` [tarantool-patches] " Konstantin Osipov 2019-04-30 22:31 ` [tarantool-patches] [PATCH 4/5] swim: allow to omit host in URI Vladislav Shpilevoy 2019-05-01 5:20 ` [tarantool-patches] " Konstantin Osipov 2019-05-02 15:10 ` Vladislav Shpilevoy [this message] 2019-04-30 22:31 ` [tarantool-patches] [PATCH 5/5] swim: explicitly stop old ev_io input/output on rebind Vladislav Shpilevoy 2019-05-01 5:21 ` [tarantool-patches] " Konstantin Osipov 2019-05-02 17:32 ` [tarantool-patches] Re: [PATCH 0/5] swim lua preparation Vladislav Shpilevoy
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=98cf0bc9-8b4a-cbb0-7656-4b83d6dc3d58@tarantool.org \ --to=v.shpilevoy@tarantool.org \ --cc=kostja@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='[tarantool-patches] Re: [PATCH 4/5] swim: allow to omit host in URI' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox