Hardware-address filtering presents about Privacy, Receive address filtering, Our new ‘’ module, The ‘sendto’ algorithm, Notes on library functions, Driver’s ‘ioctl()’ function, A change in memory-usage, Receive-filter Array. | Hardware-address filtering How can we send packets to just one node on our ‘anchor’ cluster? Privacy, please! • Our ‘’ driver transmits all of its packets to every node on our LAN, and our ‘’ driver receives all of the packets transmitted by any of the nodes! • Is this what we really want to happen? anchor00 anchor01 anchor02 anchor03 anchor04 anchor05 anchor06 anchor07 Receive address filtering • Nowadays any network interface controller has a “filtering” capability which allows any packet NOT to be received by nodes that the packet’s sender didn’t intend it to go to Transmit FIFO Receive buffer filtering engine Receive FIFO Network Interface Controller Host memory to/from LAN Our new ‘’ module • This device-driver combines the ‘write()’ and ‘read()’ methods from our ‘’ and ‘’ modules, but it adds an ‘ioctl()’ method that lets applications setup any ethernet-packet’s destination-address, as is illustrated in our companion program (named ‘’) which finds a node’s hardware-address in our ‘ethers’ database The ‘sendto’ algorithm • Here are the steps which our ‘’ demo-program performs: Find the destination’s node-name on the command-line Search our ‘ethers’ file for a line with that node’s name Convert that node’s MAC-address from ascii to numeric Open the ‘/dev/nic’ device-file Call our driver’s ‘ioctl()’ method to setup packets’ destination Write our application’s test-message to the ‘dev/nic’ device-file Print a message confirming the destination and bytes .