Не. используйте write (), используйте sendto ().
Если вы используете PF_PACKET, SOCK_DGRAM, то он создает заголовки канального уровня для вас, что, как правило, то, что вы хотите. Тем не менее, вам все равно нужно создать более высокий протокол, который вы используете поверх.
Вы указываете sockaddr_ll в параметре адресата. Вы можете указать одноадресный адрес канального уровня, многоадресный адрес или широковещательный адрес.