git-svn-id: https://spexeah.com:8443/svn/Asuro@719 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
1 parent
79ef3385d8
commit
da474b5573
16 files changed
+17
-5
No files matched your search
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -13,6 +13,7 @@ uses
|
||||
|
||||
procedure send(p_data : void; p_len : uint16; eth_type : uint16; p_context : PPacketContext);
|
||||
procedure registerType(eType : uint16; RecvCB : TRecvCallback);
|
||||
procedure registerTypePromisc(eType : uint16; RecvCB : TRecvCallback);
|
||||
procedure register;
|
||||
|
||||
implementation
|
||||
@@ -23,14 +24,22 @@ uses
|
||||
var
|
||||
Registered : Boolean = false;
|
||||
EthTypes : Array[0..65535] of TRecvCallback;
|
||||
Promisc : Array[0..65535] of Boolean;
|
||||
MAC : puint8;
|
||||
|
||||
procedure registerTypePromisc(eType : uint16; RecvCB : TRecvCallback);
|
||||
begin
|
||||
push_trace('eth2.registerType');
|
||||
register;
|
||||
if EthTypes[eType] = nil then EthTypes[eType]:= RecvCB;
|
||||
Promisc[eType]:= true;
|
||||
end;
|
||||
|
||||
procedure registerType(eType : uint16; RecvCB : TRecvCallback);
|
||||
begin
|
||||
push_trace('eth2.registerType');
|
||||
register;
|
||||
if EthTypes[eType] = nil then EthTypes[eType]:= RecvCB;
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
procedure send(p_data : void; p_len : uint16; eth_type : uint16; p_context : PPacketContext);
|
||||
@@ -81,7 +90,9 @@ begin
|
||||
copyMAC(@Header^.src[0], @p_context^.MAC.Source[0]);
|
||||
copyMAC(@Header^.dst[0], @p_context^.MAC.Destination[0]);
|
||||
|
||||
if MACEqual(@Header^.dst[0], @Header^.src[0]) or MACEqual(@Header^.dst[0], @BROADCAST_MAC[0]) then begin
|
||||
if MACEqual(@Header^.dst[0], @Header^.src[0]) or
|
||||
MACEqual(@Header^.dst[0], @BROADCAST_MAC[0]) or
|
||||
Promisc[proto_type] then begin
|
||||
if EthTypes[proto_type] <> nil then begin
|
||||
EthTypes[proto_type](void(buf), p_len - 14, p_context);
|
||||
end;
|
||||
@@ -98,6 +109,7 @@ begin
|
||||
if not Registered then begin
|
||||
for i:=0 to 65535 do begin
|
||||
EthTypes[i]:= nil;
|
||||
Promisc[i]:= false;
|
||||
end;
|
||||
net.registerNextLayer(@recv);
|
||||
MAC:= net.getMAC;
|
||||
|
||||
@@ -250,7 +250,7 @@ begin
|
||||
push_trace('arp.register');
|
||||
if not Registered then begin
|
||||
Cache:= LL_New(sizeof(TARPCacheRecord));
|
||||
eth2.registerType($0806, @recv);
|
||||
eth2.registerTypePromisc($0806, @recv);
|
||||
terminal.registerCommand('ARP', @terminal_command_arp, 'Get ARP Table.');
|
||||
Registered:= true;
|
||||
end;
|
||||
|
||||
@@ -9,14 +9,14 @@ const
|
||||
VERSION_SUB = '1';
|
||||
REVISION = '677';
|
||||
RELEASE = 'ia';
|
||||
LINE_COUNT = 28032;
|
||||
LINE_COUNT = 28044;
|
||||
FILE_COUNT = 90;
|
||||
DRIVER_COUNT = 32;
|
||||
FPC_VERSION = '2.6.4';
|
||||
NASM_VERSION = '2.10.09';
|
||||
MAKE_VERSION = '3.81';
|
||||
COMPILE_DATE = '11/05/18';
|
||||
COMPILE_TIME = '09:58:04';
|
||||
COMPILE_TIME = '10:09:01';
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
Reference in new issue
Block a user