Hybrid OpenFlow Switching
670 Router Configuration Guide
Redirect to IP next-hop
A router supports redirection of IPv4 or IPv6 next-hop for traffic arriving on a L3 interface. 
An OF controller can rely on this functionality and program PBR next-hop steering actions 
for H-OFS instances with switched-defined-cookie enabled using the following OF 
encoding:
ALU_IPD_EXPERIMENTER_ID: 0x000025BA
ALU_AXN_REDIRECT_TO_NEXTHOP: 2
flow_mod: 
instruction= OFPIT_WRITE_ACTION/OFPIT_APPLY_ACTION, 
action= OFPAT_EXPERIMENTER(ALU_AXN_REDIRECT_TO_NEXTHOP), 
encoding:
struct alu_axn_redirect_to_nhopv4{
uint16_t type;  /* OFPAT_EXPERIMENTER. */
uint16_t len;  /* Total Length is a multiple of 8. */
uint32_t experimenter;  /* Experimenter ID vendor unique*/
uint8_t    redirect_type;  /* Type = 1 for Nhop*/
uint8_t    flags;  /* flags is 0-7 bits: 
Bit 0 = Ipv4, 
Bit 1 = Ipv6, 
Bit 2   = indirect
*/
uint8_t     pad[2];
uint32_t   ipaddr;  /* ipv4 addr */
unit8_t     pad[0];  /* Not needed */
}; ASSERT(sizeof(alu_axn_redirect_to_nhopv4) == 16)
struct alu_axn_redirect_to_nhopv6{
uint16_t type;  /* OFPAT_EXPERIMENTER. */
uint16_t len;  /* Total Length is a multiple of 8. */
uint32_t experimenter;  /* Experimenter ID vendor unique*/
uint8_t    redirect_type;  /*  Type = 1 for Nhop*/
uint8_t    flags;  /* flags is 0-7 bits: 
Bit 0 = Ipv4, 
Bit 1 = Ipv6, 
Bit 2   = indirect
*/
uint8_t       pad[2];
uint128_t   ip6addr;  /* ipv6 addr */
unit8_t     pad[4];  /* Make total len multiple of 8 */
}; ASSERT(sizeof(alu_axn_redirect_to_nhopv6) == 32)
In case of erroneous programming, the following experimenter-specific errors are returned to 
the controller:
enum alu_err_exp_class{
ALU_ERR_CLASS_RD_TO_SDP = 0,
ALU_ERR_CLASS_RD_TO_NHOP = 1,
}
enum alu_err_subtype_redirect_to_nhop
{
ALU_ERR_RN_INVALID_FLAGS = 0
ALU_ERR_RN_INVALID_ARGS = 1
ALU_ERR_RN_INVALID_ADDR = 2
}