📄 abstractethernetdriver.java
字号:
/*
* $Id: AbstractEthernetDriver.java,v 1.1 2003/11/25 11:52:21 epr Exp $
*/
package org.jnode.driver.net.ethernet;
import org.jnode.driver.net.AbstractNetDriver;
import org.jnode.driver.net.NetworkException;
import org.jnode.net.HardwareAddress;
import org.jnode.net.SocketBuffer;
import org.jnode.net.ethernet.EthernetAddress;
import org.jnode.net.ethernet.EthernetConstants;
import org.jnode.net.ethernet.EthernetHeader;
import org.jnode.net.ethernet.EthernetUtils;
/**
* @author epr
*/
public abstract class AbstractEthernetDriver extends AbstractNetDriver implements EthernetConstants {
/**
* Gets the maximum transfer unit, the number of bytes this device can
* transmit at a time.
*/
public int getMTU() {
return ETH_DATA_LEN;
}
/**
* @see org.jnode.driver.net.AbstractNetDriver#getDevicePrefix()
*/
protected final String getDevicePrefix() {
return ETH_DEVICE_PREFIX;
}
/**
* @see org.jnode.driver.net.AbstractNetDriver#onReceive(org.jnode.net.SocketBuffer)
*/
public void onReceive(SocketBuffer skbuf) throws NetworkException {
// Extract ethernet header
final EthernetHeader hdr = new EthernetHeader(skbuf);
skbuf.setLinkLayerHeader(hdr);
skbuf.setProtocolID(EthernetUtils.getProtocol(hdr));
skbuf.pull(hdr.getLength());
// Send to PM
super.onReceive(skbuf);
}
/**
* @see org.jnode.driver.net.AbstractNetDriver#doTransmit(org.jnode.net.SocketBuffer, org.jnode.net.HardwareAddress)
*/
protected final void doTransmit(SocketBuffer skbuf, HardwareAddress destination)
throws NetworkException {
skbuf.insert(ETH_HLEN);
if (destination != null) {
destination.writeTo(skbuf, 0);
} else {
EthernetAddress.BROADCAST.writeTo(skbuf, 0);
}
getAddress().writeTo(skbuf, 6);
skbuf.set16(12, skbuf.getProtocolID());
doTransmitEthernet(skbuf);
}
/**
* @see org.jnode.driver.net.AbstractNetDriver#doTransmit(org.jnode.net.SocketBuffer, org.jnode.net.HardwareAddress)
*/
protected abstract void doTransmitEthernet(SocketBuffer skbuf)
throws NetworkException;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -