unsigned char sourcemsk[ETH_ALEN];
        unsigned char destmac[ETH_ALEN];
        unsigned char destmsk[ETH_ALEN];
-       /* sizeof ebt_entry + matches */
-       unsigned int watchers_offset;
-       /* sizeof ebt_entry + matches + watchers */
-       unsigned int target_offset;
-       /* sizeof ebt_entry + matches + watchers + target */
-       unsigned int next_offset;
+       __struct_group(/* no tag */, offsets, /* no attrs */,
+               /* sizeof ebt_entry + matches */
+               unsigned int watchers_offset;
+               /* sizeof ebt_entry + matches + watchers */
+               unsigned int target_offset;
+               /* sizeof ebt_entry + matches + watchers + target */
+               unsigned int next_offset;
+       );
        unsigned char elems[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
 };
 
 
                return ret;
 
        offsets[0] = sizeof(struct ebt_entry); /* matches come first */
-       memcpy(&offsets[1], &entry->watchers_offset,
-                       sizeof(offsets) - sizeof(offsets[0]));
+       memcpy(&offsets[1], &entry->offsets, sizeof(entry->offsets));
 
        if (state->buf_kern_start) {
                buf_start = state->buf_kern_start + state->buf_kern_offset;