我正在尝试使用ether_aton()
函数,它返回一个struct ether_addr *
结构体指针。
我想将其放入我的struct ether_header *eptr
(来自于net/ethernet.h),该结构体有一个ether_shost
成员。我尝试了以下代码:
struct ether_header *eptr; /* net/ethernet.h */
...
(struct ether_addr*)(eptr->ether_shost) = ether_aton(SRC_ETHER_ADDR);
这给我带来了“错误:需要左值作为赋值操作数”的提示。 我知道我只是没有正确地进行类型转换,但是不知道如何解决。
编辑: 最终解决了。谢谢大家的帮助。
struct ether_addr* eth_addr = ether_aton(SRC_ETHER_ADDR);
int i;
for(i=0; i<6; i++)
eptr->ether_shost[i] = eth_addr->ether_addr_octet[i];
我只需要分别分配每个八位字节。
eptr = ether_aton(SRC_ETHER_ADDR);
,因为将一个ether_header *
赋值给u_int8_t ether_shost[ETH_ALEN]
是没有意义的。 - Fred Foo