0

VLAN タギングを理解するのに問題があります。このリンクを使用して /etc/network/interface ファイルを既に変更しています 。C 言語を使用して Raspbian (Raspberry pi) でソケット プログラミングを使用しています。

私は2つの方法を試しました:

  1. Cのソケットは

    s = ソケット (AF_INET、SOCK_RAW、IPPROTO_RAW);

上記のソケットを使用してラズベリー パイからイーサネット パケットを送信すると、バス上に発信 "arp" メッセージしか表示されません。

  1. s = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL))

ただし、これにより、パケットの送信中に「sendto failed: Invalid argument」というエラーが発生します。パケットを送信するコードは次のとおりです。

struct sockaddr_in sin; 
sin.sin_family = AF_PACKET;
sin.sin_port = htons(30490);
sin.sin_addr.s_addr = inet_addr(destination ip address);


if(sendto(socket, data, iph->tot_len, 0, (struct sockaddr *)&sin, sizeof(sin)) < 0)
{ perror("Sendto failed"); }
else { printf("Packet send"); }

送信されるすべてのパケットに VLAN タグを付ける方法について、誰か助けてくれませんか? または、上記のコードで何が間違っていますか?

VLAN でパケットを送信するために既に実装されているコードはありますか?

(私のセットアップでは、ルーターやスイッチは使用していません)

4

1 に答える 1