Итак, я пытаюсь использовать ether_aton()
, который возвращает struct ether_addr *
.
Я пытаюсь поместить это в мой struct ether_header *eptr
(из сети/ethernet.h), который имеет член ether_shost
. Я попытался это:Ошибка кастинга: требуется значение lvalue в качестве левого операнда присваивания
struct ether_header *eptr; /* net/ethernet.h */
...
(struct ether_addr*)(eptr->ether_shost) = ether_aton(SRC_ETHER_ADDR);
Это дает мне "Error: lvalue required as left operand of assignment"
Я знаю, я просто не бросая его правильно, но не могу понять, каким образом.
EDIT: в конечном итоге получить его. Спасибо за помощь, ребята!
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] 'не имеет смысла. –