Score:0

2 pkts ที่ส่งมีแท็กสำหรับ vlan 10 & 20 หนึ่งอันควรได้รับบนซ็อกเก็ตที่สร้างขึ้นบน eth1.10 และอีกอันบนซ็อกเก็ตสำหรับ eth1.20 แต่มันไม่เกิดขึ้น

ธง cn

แพ็กเก็ตที่ส่งด้วยแท็ก vlan 10 & 20 จะได้รับบนซ็อกเก็ตทั้งสอง เหตุใดฉันจึงได้รับ 4 แพ็กเก็ตในขณะที่ส่งเพียง 2 แพ็กเก็ต และแพ็กเก็ตที่ได้รับทั้งหมดยังไม่ได้ติดแท็ก (ไม่มีแท็ก vlan) ปัญหาคืออะไร?

นี่คือรหัสที่เกี่ยวข้อง: สร้าง: sock = socket(AF_PACKET, SOCK_RAW, htons(MY_ETHTYPE));

memset(&if_opts, 0, sizeof(if_opts));
strncpy(if_opts.ifr_name, "eth1.10", IFNAMSIZ - 1);
setsockopt(ถุงเท้า, SOL_SOCKET, SO_BINDTODEVICE, (โมฆะ *)&if_opts, sizeof(if_opts);
ioctl(ถุงเท้า, SIOCGIFFLAGS, &if_opts);
if_opts.ifr_flags |= IFF_PROMISC;
ioctl(ถุงเท้า, SIOCSIFFLAGS, &if_opts);

setsockopt (ถุงเท้า, SOL_SOCKET, SO_BINDTODEVICE,
                  "eth1.10",
                  sizeof("eth1.10"));

Recv: size = recvfrom(sock, buf, BUF_SIZE, MSG_DONTWAIT, NULL, NULL);

David avatar
cn flag
คุณยังไม่ได้ให้ข้อมูลใดๆ เกี่ยวกับเวอร์ชันของ Ubuntu คุณส่งแพ็กเก็ตเหล่านี้อย่างไร คำสั่งที่แน่นอน
bobby avatar
cn flag
เพื่อค้นหาเวอร์ชัน ฉันใช้คำสั่ง uname -srm นี่คือการถ่ายโอนข้อมูล:
bobby avatar
cn flag
เพื่อค้นหาเวอร์ชัน ฉันใช้คำสั่ง uname -srm นี่คือการถ่ายโอนข้อมูล: Linux 4.19.0-xilinx-v2019.1 aarch64 ตอนนี้สำหรับการส่งแพ็คเก็ต: ซ็อกเก็ตถูกสร้างขึ้นโดยใช้ sock = socket(AF_PACKET, SOCK_RAW, htons(MY_ETHTYPE)); แพ็กเก็ตถูกส่งด้วย dmac 0xffff.ffff.ffff และ smac เป็น mac อินเตอร์เฟสในเครื่องแพ็คเก็ตถูกแท็กด้วย 0x8100000a หรือ 0x81000014, ethertype เป็น MY_ETHTYPE ตามด้วยเพย์โหลด แพ็คเก็ตถูกส่งโดยใช้การโทร sendto(xmtSock, buf, bufSize, 0, (struct sockaddr *)sa_raw, sizeof(sa_raw)); sa_raw มีฟิลด์ sll_ifindex, sll_halen & sll_addr ที่ยื่นเข้ามา
David avatar
cn flag
ไม่มีข้อมูลเวอร์ชันในนั้น รุ่นจะเป็นเหมือน Ubuntu 18.04
bobby avatar
cn flag
สวัสดี David ฉันสามารถใช้คำสั่งใดเพื่อค้นหาหมายเลขเวอร์ชัน
David avatar
cn flag
เปิดเทอร์มินัลโดยใช้แป้นพิมพ์ลัด Ctrl+Alt+T หรือคลิกที่ไอคอนเทอร์มินัล ใช้คำสั่ง lsb_release -a เพื่อแสดงเวอร์ชันของ Ubuntu เวอร์ชัน Ubuntu ของคุณจะแสดงในบรรทัดคำอธิบาย BTW การค้นหาอย่างรวดเร็วบน Google อาจให้ข้อมูลนี้แก่คุณได้
bobby avatar
cn flag
ไม่รองรับ lsb_release ฉันพบ /etc/os-release หลังจาก googling นี่คือการถ่ายโอนข้อมูล: ID ="petalinux" Version="2019.1 (thud)" ฉันเดาว่ามันหมายความว่าไม่ใช่อูบุนตู แต่ถ้าคุณสามารถชี้ให้ฉันเห็นถึงการเปลี่ยนแปลงที่อาจจำเป็นเพื่อให้โค้ดที่คล้ายกันทำงานบน Ubuntu ได้ ฉันจะขอบคุณมาก ขอบใจ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา