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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.