From: Laszlo Valko <valko@linux.karinthy.hu>
To: Thomas Heinz <creatix@hipac.org>
Cc: Anders Fugmann <afu@fugmann.dhs.org>,
netfilter-devel@lists.netfilter.org
Subject: Re: Comments about IPT_ALIGN
Date: Sun, 26 Jan 2003 15:26:50 +0100 [thread overview]
Message-ID: <20030126152650.B6811@linux.karinthy.hu> (raw)
In-Reply-To: <3E33E96A.5080903@hipac.org>; from creatix@hipac.org on Sun, Jan 26, 2003 at 02:58:02PM +0100
On Sun, Jan 26, 2003 at 02:58:02PM +0100, Thomas Heinz wrote:
> - MARK: struct ipt_mark_info {
> unsigned long mark, mask;
> u_int8_t invert;
> };
> - limit: struct ipt_rateinfo {
> u_int32_t avg; /* Average secs between packets
> * scale */
> u_int32_t burst; /* Period multiplier for upper
> limit. */
> /* Used internally by the kernel */
> unsigned long prev;
> u_int32_t credit;
> u_int32_t credit_cap, cost;
>
> /* Ugly, ugly fucker. */
> struct ipt_rateinfo *master;
> };
>
> The unsigned long prev in the middle does not hurt because it
> is automatically 8 byte aligned by avg and burst. Because
> the pointer (master) is at the end of the struct it does not
> cause any problems except that the whole struct must be
> aligned correctly.
The structure is aligned correctly, however the offsets of the fields,
and sizeof() is different, so it does not work.
> Since I assume that ULOG and MARK work perfectly on sparc64 I must
> be missing something that makes the internal memory layout of the
> structs (i.e. the member offsets) equal in user and kernel space
> (or my assumption is wrong ;-).
Well, I wrote a hack that makes the layout the same, but that's
rather ugly (I call it workaround :).
> It would be kind if someone could fix my brainbug :)
>
> BTW, pointers and arrays of pointers within target or match
> structs can be forced to have the 8 byte alignment requirement
> (on sparc64 and parisc64) by simply putting them into a
> union: union {void *p; __u64 pad;}
Yes, that's true, except for the fact that you will have to deal
with endianness as well, if you are interested in actually exchanging
data... And don't forget the size change that brings in on every 32-bit
platform effectively killing compatibility...
Regards,
Laszlo
>
> Regards,
>
> Thomas
>
next prev parent reply other threads:[~2003-01-26 14:26 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-01-26 3:57 Comments about IPT_ALIGN Thomas Heinz
2003-01-26 11:01 ` Laszlo Valko
2003-01-26 11:28 ` Anders Fugmann
2003-01-26 13:58 ` Thomas Heinz
2003-01-26 14:26 ` Laszlo Valko [this message]
2003-01-26 16:50 ` Thomas Heinz
2003-01-26 19:31 ` Laszlo Valko
2003-01-31 11:51 ` Harald Welte
2003-01-26 14:22 ` Laszlo Valko
2003-01-26 18:05 ` Thomas Heinz
2003-01-26 19:43 ` Laszlo Valko
2003-01-26 23:09 ` Thomas Heinz
2003-01-27 0:43 ` Laszlo Valko
2003-01-27 10:33 ` Thomas Heinz
2003-01-31 11:57 ` Harald Welte
2003-01-26 19:48 ` Thomas Heinz
2003-01-31 11:55 ` Harald Welte
2003-01-31 23:37 ` Laszlo Valko
2003-01-26 17:06 ` Thomas Heinz
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=20030126152650.B6811@linux.karinthy.hu \
--to=valko@linux.karinthy.hu \
--cc=afu@fugmann.dhs.org \
--cc=creatix@hipac.org \
--cc=netfilter-devel@lists.netfilter.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.