From: Steve Dickson <SteveD@redhat.com>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: linux-nfs@vger.kernel.org
Subject: Re: [PATCH 0/3] AF_INET6 support for probe_bothports()
Date: Mon, 08 Dec 2008 17:55:40 -0500 [thread overview]
Message-ID: <493DA5EC.5090805@RedHat.com> (raw)
In-Reply-To: <2DC7493B-E0E5-43C8-8FD1-A9C0C5EFA821@oracle.com>
Chuck Lever wrote:
> On Dec 8, 2008, at Dec 8, 2008, 8:46 AM, Steve Dickson wrote:
>> Chuck Lever wrote:
>>> Hi Steve-
>>>
>>> Here's the next step.
>>>
>>> This small series of patches rewires probe_bothports() to support
>>> AF_INET6 addresses, now that the underlying functions can handle them.
>>>
>>> Since legacy code in other parts of the mount command still use
>>> probe_bothports() and the clnt_addr_t data type, I've added a new
>>> function call to do the IPv6 duties. The old API still exists and
>>> continues to support only AF_INET, but under the covers it calls the
>>> new code.
>>>
>>> Again, for the time being, this is used only for the legacy binary
>>> mount(2) interface. We will need this for umount later, and that is
>>> used to support both binary and text-based mounts.
>>>
>>> ---
>>>
>>> Chuck Lever (3):
>>> mount command: AF_INET6 support for probe_bothports()
>>> mount command: support AF_INET6 in probe_nfsport() and
>>> probe_mntport()
>>> mount command: full support for AF_INET6 addresses in probe_port()
>>>
>> Question: in the clnt_addr_t typedef:
>>
>> typedef struct {
>> char **hostname;
>> struct sockaddr_in saddr;
>> struct pmap pmap;
>> } clnt_addr_t;
>>
>> Why isn't saddr a struct sockaddr instead of a struct sockaddr_in?
>
> Conventionally, "struct sockaddr" is supposed to be used only for
> pointers, not for declaring storage to store addresses. sockaddr_in can
> be used for either declaring storage or for a pointer declaration.
Yes... one does pass pointers of struct sockaddr to the majority
of the network system call such as bind().. but conventionally
I've seen a lot of declare struct sockaddr as memory then typecasting
that memory into a struct sockaddr_in pointer...
>
> What is defined here is a "struct sockaddr_in", not a pointer.
Understood...
>
> If we wanted to store a generic address rather than a pointer, the
> convention is to use struct sockaddr_storage, which is large enough to
> store an IPv4, IPv6 or even a Unix address. But that would change the
> offsets of the following fields in clnt_addr_t, and that would break
> other legacy mount code.
>
>> It seems at the beginning of each routine saddr is always being
>> typecast into a struct sockaddr pointer....
>
> More likely it is:
>
> struct sockaddr *sap = (struct sockaddr *)&saddr;
>
> Which is appropriate and normal.
More to the point, I see a number of
struct sockaddr *nfs_saddr = (struct sockaddr *)&nfs_server->saddr;
at the top of routines in the patch set you recently posted. To me it
seems like it would make more sense if saddr would was a struct sockaddr
to start with instead of always doing those typecasts... but its truly
just a nit...
steved.
next prev parent reply other threads:[~2008-12-08 22:57 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-02 17:59 [PATCH 0/3] AF_INET6 support for probe_bothports() Chuck Lever
[not found] ` <20081202175403.5206.91389.stgit-07a7zB5ZJzbwdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2008-12-02 17:59 ` [PATCH 1/3] mount command: full support for AF_INET6 addresses in probe_port() Chuck Lever
2008-12-02 17:59 ` [PATCH 2/3] mount command: support AF_INET6 in probe_nfsport() and probe_mntport() Chuck Lever
2008-12-02 18:00 ` [PATCH 3/3] mount command: AF_INET6 support for probe_bothports() Chuck Lever
2008-12-08 13:46 ` [PATCH 0/3] " Steve Dickson
[not found] ` <493D253C.2040809-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2008-12-08 15:02 ` Steinar H. Gunderson
[not found] ` <20081208150219.GB12390-6Z/AllhyZU4@public.gmane.org>
2008-12-08 19:26 ` Steve Dickson
[not found] ` <493D74E8.8050908-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2008-12-08 19:31 ` Chuck Lever
2008-12-08 18:48 ` Chuck Lever
2008-12-08 22:55 ` Steve Dickson [this message]
[not found] ` <493DA5EC.5090805-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2008-12-08 23:28 ` Steinar H. Gunderson
[not found] ` <20081208232816.GA18856-6Z/AllhyZU4@public.gmane.org>
2008-12-08 23:38 ` Chuck Lever
2008-12-09 19:17 ` Steve Dickson
[not found] ` <493EC42C.2080901-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2008-12-09 20:31 ` Trond Myklebust
2008-12-08 23:34 ` Chuck Lever
2008-12-11 16:06 ` Steve Dickson
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=493DA5EC.5090805@RedHat.com \
--to=steved@redhat.com \
--cc=chuck.lever@oracle.com \
--cc=linux-nfs@vger.kernel.org \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox