anchor.diff:  		_Metadata, _PortInfo, _Actions, _FlowTab, _Blaze, _Rest) ->
   	%% The bottom-less MPLS stack
   	malformed.
  -	
  +
  +arp(Packet, VlanTag, EthType, PbbTag, MplsTag,
  +		Ip4Hdr, Ip6Hdr, Ip6Ext, IpTclass, IpProto,
  +		Metadata, {InPort,InPhyPort,TunnelId}, Actions, FlowTab, Blaze,
  +		ArpMsg) ->
  +	FlowTab:match(Packet,
  +		VlanTag,
  +		EthType,
  +		PbbTag,
  +		MplsTag,
  +		Ip4Hdr,
  +		Ip6Hdr,
  +		bin9(Ip6Ext),	%% =:= undefined
  +		IpTclass,
  +		IpProto,
  +		ArpMsg,
  +		undefined,	%% IcmpMsg
  +		undefined,	%% Icmp6Hdr
  +		undefined,	%% Icmp6Sll
  +		undefined,	%% Icmp6Tll
  +		undefined,	%% TcpHdr
  +		undefined,	%% UdpHdr
  +		undefined,	%% SctpHdr
  +		Metadata,
  +		InPort,
  +		InPhyPort,
  +		TunnelId,
  +		Actions,
  +		Blaze).
  +
   ipv4(Packet, VlanTag, EthType, PbbTag, MplsTag,
   		Ip4Hdr, Ip6Hdr, Ip6Ext, IpTclass, IpProto,
   		Metadata, {InPort,InPhyPort,TunnelId}, Actions, FlowTab, Blaze,
  
positive.code: 				Ip4Hdr, Ip6Hdr, Ip6Ext, IpTclass, IpProto,
  				Metadata, PortInfo, Actions, FlowTab, Blaze,
  				Rest);
  		_ ->
  			%% MPLS may wrap IPv4 or IPv6 packet only
  			malformed
  
negative.code: 		Rest);
  ether(Packet, VlanTag, EthType, PbbTag, MplsTag,
  	Ip4Hdr, Ip6Hdr, Ip6Ext, IpTclass, IpProto,
  	Metadata, PortInfo, Actions, FlowTab, Blaze,
  	<<?ETH_P_ARP:16,Rest/binary>>) ->
  	arp(Packet, VlanTag, up(EthType, ?ETH_P_ARP), PbbTag, MplsTag,
  		Ip4Hdr, Ip6Hdr, Ip6Ext, IpTclass, IpProto,
  		Metadata, PortInfo, Actions, FlowTab, Blaze,
  		Rest);
  ether(Packet, VlanTag, EthType, PbbTag, MplsTag,
  	Ip4Hdr, Ip6Hdr, Ip6Ext, IpTclass, IpProto,
  	Metadata, {InPort,InPhyPort,TunnelId} = _PortInfo, Actions, FlowTab, Blaze,
  