arp, dhcp: Fix strict aliasing warnings reported by gcc 4.9 with -Ofast
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
213c397492
commit
2fa1cef016
2 changed files with 9 additions and 8 deletions
3
arp.c
3
arp.c
|
@ -58,7 +58,8 @@ int arp(struct ctx *c, struct ethhdr *eh, size_t len)
|
||||||
/* Discard announcements (but not 0.0.0.0 "probes"): we might have the
|
/* Discard announcements (but not 0.0.0.0 "probes"): we might have the
|
||||||
* same IP address, hide that.
|
* same IP address, hide that.
|
||||||
*/
|
*/
|
||||||
if (*((uint32_t *)&am->sip) && !memcmp(am->sip, am->tip, 4))
|
if (memcmp(am->sip, (unsigned char[4]){ 0, 0, 0, 0 }, 4) &&
|
||||||
|
!memcmp(am->sip, am->tip, 4))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
/* Don't resolve our own address, either. */
|
/* Don't resolve our own address, either. */
|
||||||
|
|
14
dhcp.c
14
dhcp.c
|
@ -40,9 +40,9 @@
|
||||||
struct opt {
|
struct opt {
|
||||||
int sent;
|
int sent;
|
||||||
int slen;
|
int slen;
|
||||||
unsigned char s[255];
|
uint8_t s[255];
|
||||||
int clen;
|
int clen;
|
||||||
unsigned char c[255];
|
uint8_t c[255];
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct opt opts[255];
|
static struct opt opts[255];
|
||||||
|
@ -312,9 +312,9 @@ int dhcp(struct ctx *c, struct ethhdr *eh, size_t len)
|
||||||
m->chaddr[3], m->chaddr[4], m->chaddr[5]);
|
m->chaddr[3], m->chaddr[4], m->chaddr[5]);
|
||||||
|
|
||||||
m->yiaddr = c->addr4;
|
m->yiaddr = c->addr4;
|
||||||
*(unsigned long *)opts[1].s = c->mask4;
|
memcpy(opts[1].s, &c->mask4, sizeof(c->mask4));
|
||||||
*(unsigned long *)opts[3].s = c->gw4;
|
memcpy(opts[3].s, &c->gw4, sizeof(c->gw4));
|
||||||
*(unsigned long *)opts[54].s = c->gw4;
|
memcpy(opts[54].s, &c->gw4, sizeof(c->gw4));
|
||||||
|
|
||||||
/* If the gateway is not on the assigned subnet, send an option 121
|
/* If the gateway is not on the assigned subnet, send an option 121
|
||||||
* (Classless Static Routing) adding a dummy route to it.
|
* (Classless Static Routing) adding a dummy route to it.
|
||||||
|
@ -323,8 +323,8 @@ int dhcp(struct ctx *c, struct ethhdr *eh, size_t len)
|
||||||
/* a.b.c.d/32:0.0.0.0, 0:a.b.c.d */
|
/* a.b.c.d/32:0.0.0.0, 0:a.b.c.d */
|
||||||
opts[121].slen = 14;
|
opts[121].slen = 14;
|
||||||
opts[121].s[0] = 32;
|
opts[121].s[0] = 32;
|
||||||
*(unsigned long *)&opts[121].s[1] = c->gw4;
|
memcpy(opts[121].s + 1, &c->gw4, sizeof(c->gw4));
|
||||||
*(unsigned long *)&opts[121].s[10] = c->gw4;
|
memcpy(opts[121].s + 10, &c->gw4, sizeof(c->gw4));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c->mtu != -1) {
|
if (c->mtu != -1) {
|
||||||
|
|
Loading…
Reference in a new issue