View | Details | Raw Unified | Return to bug 262828 | Differences between
and this patch

Collapse All | Expand All

(-)b/sys/net/if_ethersubr.c (-3 / +8 lines)
Lines 146-152 ether_requestencap(struct ifnet *ifp, struct if_encap_req *req) Link Here
146
	struct ether_header *eh;
146
	struct ether_header *eh;
147
	struct arphdr *ah;
147
	struct arphdr *ah;
148
	uint16_t etype;
148
	uint16_t etype;
149
	const u_char *lladdr;
149
	const u_char *lladdr, *llsaddr;
150
150
151
	if (req->rtype != IFENCAP_LL)
151
	if (req->rtype != IFENCAP_LL)
152
		return (EOPNOTSUPP);
152
		return (EOPNOTSUPP);
Lines 155-160 ether_requestencap(struct ifnet *ifp, struct if_encap_req *req) Link Here
155
		return (ENOMEM);
155
		return (ENOMEM);
156
156
157
	eh = (struct ether_header *)req->buf;
157
	eh = (struct ether_header *)req->buf;
158
	llsaddr = IF_LLADDR(ifp);
158
	lladdr = req->lladdr;
159
	lladdr = req->lladdr;
159
	req->lladdr_off = 0;
160
	req->lladdr_off = 0;
160
161
Lines 180-186 ether_requestencap(struct ifnet *ifp, struct if_encap_req *req) Link Here
180
			etype = htons(ETHERTYPE_ARP);
181
			etype = htons(ETHERTYPE_ARP);
181
			break;
182
			break;
182
		}
183
		}
183
184
#if defined(INET)
185
		/* Set CARP MAC as src ethernet address. */
186
		if (ifp->if_carp)
187
			llsaddr = ar_sha(ah);
188
#endif
184
		if (req->flags & IFENCAP_FLAG_BROADCAST)
189
		if (req->flags & IFENCAP_FLAG_BROADCAST)
185
			lladdr = ifp->if_broadcastaddr;
190
			lladdr = ifp->if_broadcastaddr;
186
		break;
191
		break;
Lines 190-196 ether_requestencap(struct ifnet *ifp, struct if_encap_req *req) Link Here
190
195
191
	memcpy(&eh->ether_type, &etype, sizeof(eh->ether_type));
196
	memcpy(&eh->ether_type, &etype, sizeof(eh->ether_type));
192
	memcpy(eh->ether_dhost, lladdr, ETHER_ADDR_LEN);
197
	memcpy(eh->ether_dhost, lladdr, ETHER_ADDR_LEN);
193
	memcpy(eh->ether_shost, IF_LLADDR(ifp), ETHER_ADDR_LEN);
198
	memcpy(eh->ether_shost, llsaddr, ETHER_ADDR_LEN);
194
	req->bufsize = sizeof(struct ether_header);
199
	req->bufsize = sizeof(struct ether_header);
195
200
196
	return (0);
201
	return (0);

Return to bug 262828