bgpmanager thrift upgrade to 0.9.3
[netvirt.git] / vpnservice / bgpmanager / bgpmanager-impl / src / main / java / org / opendaylight / netvirt / bgpmanager / thrift / gen / BgpUpdater.java
index a16609bd0b23e89596d55d26f7f7ccf836a15835..817ec831fb9529d3381d9cf43897dca242dc2256 100644 (file)
@@ -1,12 +1,11 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.1)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
  */
 
-package org.opendaylight.netvirt.bgpmanager.thrift.gen;
-
+ package org.opendaylight.netvirt.bgpmanager.thrift.gen;
 import org.apache.thrift.scheme.IScheme;
 import org.apache.thrift.scheme.SchemeFactory;
 import org.apache.thrift.scheme.StandardScheme;
@@ -30,35 +29,35 @@ import java.util.Collections;
 import java.util.BitSet;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
+import javax.annotation.Generated;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2017-09-13")
 public class BgpUpdater {
 
   public interface Iface {
 
-    void onUpdatePushRoute(String rd, String prefix, int prefixlen, String nexthop, int label) throws org.apache.thrift.TException;
+    public void onUpdatePushRoute(protocol_type p_type, String rd, String prefix, int prefixlen, String nexthop, int ethtag, String esi, String macaddress, int l3label, int l2label, String routermac, af_afi afi) throws org.apache.thrift.TException;
 
-    void onUpdateWithdrawRoute(String rd, String prefix, int prefixlen) throws org.apache.thrift.TException;
+    public void onUpdateWithdrawRoute(protocol_type p_type, String rd, String prefix, int prefixlen, String nexthop, int ethtag, String esi, String macaddress, int l3label, int l2label, af_afi afi) throws org.apache.thrift.TException;
 
-    void onStartConfigResyncNotification() throws org.apache.thrift.TException;
+    public void onStartConfigResyncNotification() throws org.apache.thrift.TException;
 
-    void onNotificationSendEvent(String prefix, byte errCode, byte errSubcode) throws org.apache.thrift.TException;
+    public void onNotificationSendEvent(String prefix, byte errCode, byte errSubcode) throws org.apache.thrift.TException;
 
   }
 
   public interface AsyncIface {
 
-    void onUpdatePushRoute(String rd, String prefix, int prefixlen, String nexthop, int label,
-                           org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void onUpdatePushRoute(protocol_type p_type, String rd, String prefix, int prefixlen, String nexthop, int ethtag, String esi, String macaddress, int l3label, int l2label, String routermac, af_afi afi, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    void onUpdateWithdrawRoute(String rd, String prefix, int prefixlen,
-                               org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void onUpdateWithdrawRoute(protocol_type p_type, String rd, String prefix, int prefixlen, String nexthop, int ethtag, String esi, String macaddress, int l3label, int l2label, af_afi afi, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    void onStartConfigResyncNotification(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void onStartConfigResyncNotification(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
-    void onNotificationSendEvent(String prefix, byte errCode, byte errSubcode,
-                                 org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+    public void onNotificationSendEvent(String prefix, byte errCode, byte errSubcode, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
   }
 
@@ -82,34 +81,49 @@ public class BgpUpdater {
       super(iprot, oprot);
     }
 
-    public void onUpdatePushRoute(String rd, String prefix, int prefixlen, String nexthop, int label) throws org.apache.thrift.TException
+    public void onUpdatePushRoute(protocol_type p_type, String rd, String prefix, int prefixlen, String nexthop, int ethtag, String esi, String macaddress, int l3label, int l2label, String routermac, af_afi afi) throws org.apache.thrift.TException
     {
-      send_onUpdatePushRoute(rd, prefix, prefixlen, nexthop, label);
+      send_onUpdatePushRoute(p_type, rd, prefix, prefixlen, nexthop, ethtag, esi, macaddress, l3label, l2label, routermac, afi);
     }
 
-    public void send_onUpdatePushRoute(String rd, String prefix, int prefixlen, String nexthop, int label) throws org.apache.thrift.TException
+    public void send_onUpdatePushRoute(protocol_type p_type, String rd, String prefix, int prefixlen, String nexthop, int ethtag, String esi, String macaddress, int l3label, int l2label, String routermac, af_afi afi) throws org.apache.thrift.TException
     {
       onUpdatePushRoute_args args = new onUpdatePushRoute_args();
+      args.setP_type(p_type);
       args.setRd(rd);
       args.setPrefix(prefix);
       args.setPrefixlen(prefixlen);
       args.setNexthop(nexthop);
-      args.setLabel(label);
-      sendBase("onUpdatePushRoute", args);
+      args.setEthtag(ethtag);
+      args.setEsi(esi);
+      args.setMacaddress(macaddress);
+      args.setL3label(l3label);
+      args.setL2label(l2label);
+      args.setRoutermac(routermac);
+      args.setAfi(afi);
+      sendBaseOneway("onUpdatePushRoute", args);
     }
 
-    public void onUpdateWithdrawRoute(String rd, String prefix, int prefixlen) throws org.apache.thrift.TException
+    public void onUpdateWithdrawRoute(protocol_type p_type, String rd, String prefix, int prefixlen, String nexthop, int ethtag, String esi, String macaddress, int l3label, int l2label, af_afi afi) throws org.apache.thrift.TException
     {
-      send_onUpdateWithdrawRoute(rd, prefix, prefixlen);
+      send_onUpdateWithdrawRoute(p_type, rd, prefix, prefixlen, nexthop, ethtag, esi, macaddress, l3label, l2label, afi);
     }
 
-    public void send_onUpdateWithdrawRoute(String rd, String prefix, int prefixlen) throws org.apache.thrift.TException
+    public void send_onUpdateWithdrawRoute(protocol_type p_type, String rd, String prefix, int prefixlen, String nexthop, int ethtag, String esi, String macaddress, int l3label, int l2label, af_afi afi) throws org.apache.thrift.TException
     {
       onUpdateWithdrawRoute_args args = new onUpdateWithdrawRoute_args();
+      args.setP_type(p_type);
       args.setRd(rd);
       args.setPrefix(prefix);
       args.setPrefixlen(prefixlen);
-      sendBase("onUpdateWithdrawRoute", args);
+      args.setNexthop(nexthop);
+      args.setEthtag(ethtag);
+      args.setEsi(esi);
+      args.setMacaddress(macaddress);
+      args.setL3label(l3label);
+      args.setL2label(l2label);
+      args.setAfi(afi);
+      sendBaseOneway("onUpdateWithdrawRoute", args);
     }
 
     public void onStartConfigResyncNotification() throws org.apache.thrift.TException
@@ -120,7 +134,7 @@ public class BgpUpdater {
     public void send_onStartConfigResyncNotification() throws org.apache.thrift.TException
     {
       onStartConfigResyncNotification_args args = new onStartConfigResyncNotification_args();
-      sendBase("onStartConfigResyncNotification", args);
+      sendBaseOneway("onStartConfigResyncNotification", args);
     }
 
     public void onNotificationSendEvent(String prefix, byte errCode, byte errSubcode) throws org.apache.thrift.TException
@@ -134,7 +148,7 @@ public class BgpUpdater {
       args.setPrefix(prefix);
       args.setErrCode(errCode);
       args.setErrSubcode(errSubcode);
-      sendBase("onNotificationSendEvent", args);
+      sendBaseOneway("onNotificationSendEvent", args);
     }
 
   }
@@ -155,36 +169,57 @@ public class BgpUpdater {
       super(protocolFactory, clientManager, transport);
     }
 
-    public void onUpdatePushRoute(String rd, String prefix, int prefixlen, String nexthop, int label, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void onUpdatePushRoute(protocol_type p_type, String rd, String prefix, int prefixlen, String nexthop, int ethtag, String esi, String macaddress, int l3label, int l2label, String routermac, af_afi afi, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      onUpdatePushRoute_call method_call = new onUpdatePushRoute_call(rd, prefix, prefixlen, nexthop, label, resultHandler, this, ___protocolFactory, ___transport);
+      onUpdatePushRoute_call method_call = new onUpdatePushRoute_call(p_type, rd, prefix, prefixlen, nexthop, ethtag, esi, macaddress, l3label, l2label, routermac, afi, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class onUpdatePushRoute_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private protocol_type p_type;
       private String rd;
       private String prefix;
       private int prefixlen;
       private String nexthop;
-      private int label;
-      public onUpdatePushRoute_call(String rd, String prefix, int prefixlen, String nexthop, int label, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private int ethtag;
+      private String esi;
+      private String macaddress;
+      private int l3label;
+      private int l2label;
+      private String routermac;
+      private af_afi afi;
+      public onUpdatePushRoute_call(protocol_type p_type, String rd, String prefix, int prefixlen, String nexthop, int ethtag, String esi, String macaddress, int l3label, int l2label, String routermac, af_afi afi, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, true);
+        this.p_type = p_type;
         this.rd = rd;
         this.prefix = prefix;
         this.prefixlen = prefixlen;
         this.nexthop = nexthop;
-        this.label = label;
+        this.ethtag = ethtag;
+        this.esi = esi;
+        this.macaddress = macaddress;
+        this.l3label = l3label;
+        this.l2label = l2label;
+        this.routermac = routermac;
+        this.afi = afi;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("onUpdatePushRoute", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("onUpdatePushRoute", org.apache.thrift.protocol.TMessageType.ONEWAY, 0));
         onUpdatePushRoute_args args = new onUpdatePushRoute_args();
+        args.setP_type(p_type);
         args.setRd(rd);
         args.setPrefix(prefix);
         args.setPrefixlen(prefixlen);
         args.setNexthop(nexthop);
-        args.setLabel(label);
+        args.setEthtag(ethtag);
+        args.setEsi(esi);
+        args.setMacaddress(macaddress);
+        args.setL3label(l3label);
+        args.setL2label(l2label);
+        args.setRoutermac(routermac);
+        args.setAfi(afi);
         args.write(prot);
         prot.writeMessageEnd();
       }
@@ -198,30 +233,54 @@ public class BgpUpdater {
       }
     }
 
-    public void onUpdateWithdrawRoute(String rd, String prefix, int prefixlen, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+    public void onUpdateWithdrawRoute(protocol_type p_type, String rd, String prefix, int prefixlen, String nexthop, int ethtag, String esi, String macaddress, int l3label, int l2label, af_afi afi, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      onUpdateWithdrawRoute_call method_call = new onUpdateWithdrawRoute_call(rd, prefix, prefixlen, resultHandler, this, ___protocolFactory, ___transport);
+      onUpdateWithdrawRoute_call method_call = new onUpdateWithdrawRoute_call(p_type, rd, prefix, prefixlen, nexthop, ethtag, esi, macaddress, l3label, l2label, afi, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class onUpdateWithdrawRoute_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private protocol_type p_type;
       private String rd;
       private String prefix;
       private int prefixlen;
-      public onUpdateWithdrawRoute_call(String rd, String prefix, int prefixlen, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private String nexthop;
+      private int ethtag;
+      private String esi;
+      private String macaddress;
+      private int l3label;
+      private int l2label;
+      private af_afi afi;
+      public onUpdateWithdrawRoute_call(protocol_type p_type, String rd, String prefix, int prefixlen, String nexthop, int ethtag, String esi, String macaddress, int l3label, int l2label, af_afi afi, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, true);
+        this.p_type = p_type;
         this.rd = rd;
         this.prefix = prefix;
         this.prefixlen = prefixlen;
+        this.nexthop = nexthop;
+        this.ethtag = ethtag;
+        this.esi = esi;
+        this.macaddress = macaddress;
+        this.l3label = l3label;
+        this.l2label = l2label;
+        this.afi = afi;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("onUpdateWithdrawRoute", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("onUpdateWithdrawRoute", org.apache.thrift.protocol.TMessageType.ONEWAY, 0));
         onUpdateWithdrawRoute_args args = new onUpdateWithdrawRoute_args();
+        args.setP_type(p_type);
         args.setRd(rd);
         args.setPrefix(prefix);
         args.setPrefixlen(prefixlen);
+        args.setNexthop(nexthop);
+        args.setEthtag(ethtag);
+        args.setEsi(esi);
+        args.setMacaddress(macaddress);
+        args.setL3label(l3label);
+        args.setL2label(l2label);
+        args.setAfi(afi);
         args.write(prot);
         prot.writeMessageEnd();
       }
@@ -248,7 +307,7 @@ public class BgpUpdater {
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("onStartConfigResyncNotification", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("onStartConfigResyncNotification", org.apache.thrift.protocol.TMessageType.ONEWAY, 0));
         onStartConfigResyncNotification_args args = new onStartConfigResyncNotification_args();
         args.write(prot);
         prot.writeMessageEnd();
@@ -282,7 +341,7 @@ public class BgpUpdater {
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("onNotificationSendEvent", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("onNotificationSendEvent", org.apache.thrift.protocol.TMessageType.ONEWAY, 0));
         onNotificationSendEvent_args args = new onNotificationSendEvent_args();
         args.setPrefix(prefix);
         args.setErrCode(errCode);
@@ -303,7 +362,7 @@ public class BgpUpdater {
   }
 
   public static class Processor<I extends Iface> extends org.apache.thrift.TBaseProcessor<I> implements org.apache.thrift.TProcessor {
-    private static final Logger LOGGER = LoggerFactory.getLogger(Processor.class.getName());
+    private static final Logger LOG = LoggerFactory.getLogger(Processor.class.getName());
     public Processor(I iface) {
       super(iface, getProcessMap(new HashMap<String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>>()));
     }
@@ -334,7 +393,7 @@ public class BgpUpdater {
       }
 
       public org.apache.thrift.TBase getResult(I iface, onUpdatePushRoute_args args) throws org.apache.thrift.TException {
-        iface.onUpdatePushRoute(args.rd, args.prefix, args.prefixlen, args.nexthop, args.label);
+        iface.onUpdatePushRoute(args.p_type, args.rd, args.prefix, args.prefixlen, args.nexthop, args.ethtag, args.esi, args.macaddress, args.l3label, args.l2label, args.routermac, args.afi);
         return null;
       }
     }
@@ -353,7 +412,7 @@ public class BgpUpdater {
       }
 
       public org.apache.thrift.TBase getResult(I iface, onUpdateWithdrawRoute_args args) throws org.apache.thrift.TException {
-        iface.onUpdateWithdrawRoute(args.rd, args.prefix, args.prefixlen);
+        iface.onUpdateWithdrawRoute(args.p_type, args.rd, args.prefix, args.prefixlen, args.nexthop, args.ethtag, args.esi, args.macaddress, args.l3label, args.l2label, args.afi);
         return null;
       }
     }
@@ -399,7 +458,7 @@ public class BgpUpdater {
   }
 
   public static class AsyncProcessor<I extends AsyncIface> extends org.apache.thrift.TBaseAsyncProcessor<I> {
-    private static final Logger LOGGER = LoggerFactory.getLogger(AsyncProcessor.class.getName());
+    private static final Logger LOG = LoggerFactory.getLogger(AsyncProcessor.class.getName());
     public AsyncProcessor(I iface) {
       super(iface, getProcessMap(new HashMap<String, org.apache.thrift.AsyncProcessFunction<I, ? extends org.apache.thrift.TBase, ?>>()));
     }
@@ -440,7 +499,7 @@ public class BgpUpdater {
       }
 
       public void start(I iface, onUpdatePushRoute_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws TException {
-        iface.onUpdatePushRoute(args.rd, args.prefix, args.prefixlen, args.nexthop, args.label,resultHandler);
+        iface.onUpdatePushRoute(args.p_type, args.rd, args.prefix, args.prefixlen, args.nexthop, args.ethtag, args.esi, args.macaddress, args.l3label, args.l2label, args.routermac, args.afi,resultHandler);
       }
     }
 
@@ -468,7 +527,7 @@ public class BgpUpdater {
       }
 
       public void start(I iface, onUpdateWithdrawRoute_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws TException {
-        iface.onUpdateWithdrawRoute(args.rd, args.prefix, args.prefixlen,resultHandler);
+        iface.onUpdateWithdrawRoute(args.p_type, args.rd, args.prefix, args.prefixlen, args.nexthop, args.ethtag, args.esi, args.macaddress, args.l3label, args.l2label, args.afi,resultHandler);
       }
     }
 
@@ -533,11 +592,18 @@ public class BgpUpdater {
   public static class onUpdatePushRoute_args implements org.apache.thrift.TBase<onUpdatePushRoute_args, onUpdatePushRoute_args._Fields>, java.io.Serializable, Cloneable, Comparable<onUpdatePushRoute_args>   {
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("onUpdatePushRoute_args");
 
-    private static final org.apache.thrift.protocol.TField RD_FIELD_DESC = new org.apache.thrift.protocol.TField("rd", org.apache.thrift.protocol.TType.STRING, (short)1);
-    private static final org.apache.thrift.protocol.TField PREFIX_FIELD_DESC = new org.apache.thrift.protocol.TField("prefix", org.apache.thrift.protocol.TType.STRING, (short)2);
-    private static final org.apache.thrift.protocol.TField PREFIXLEN_FIELD_DESC = new org.apache.thrift.protocol.TField("prefixlen", org.apache.thrift.protocol.TType.I32, (short)3);
-    private static final org.apache.thrift.protocol.TField NEXTHOP_FIELD_DESC = new org.apache.thrift.protocol.TField("nexthop", org.apache.thrift.protocol.TType.STRING, (short)4);
-    private static final org.apache.thrift.protocol.TField LABEL_FIELD_DESC = new org.apache.thrift.protocol.TField("label", org.apache.thrift.protocol.TType.I32, (short)5);
+    private static final org.apache.thrift.protocol.TField P_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("p_type", org.apache.thrift.protocol.TType.I32, (short)1);
+    private static final org.apache.thrift.protocol.TField RD_FIELD_DESC = new org.apache.thrift.protocol.TField("rd", org.apache.thrift.protocol.TType.STRING, (short)2);
+    private static final org.apache.thrift.protocol.TField PREFIX_FIELD_DESC = new org.apache.thrift.protocol.TField("prefix", org.apache.thrift.protocol.TType.STRING, (short)3);
+    private static final org.apache.thrift.protocol.TField PREFIXLEN_FIELD_DESC = new org.apache.thrift.protocol.TField("prefixlen", org.apache.thrift.protocol.TType.I32, (short)4);
+    private static final org.apache.thrift.protocol.TField NEXTHOP_FIELD_DESC = new org.apache.thrift.protocol.TField("nexthop", org.apache.thrift.protocol.TType.STRING, (short)5);
+    private static final org.apache.thrift.protocol.TField ETHTAG_FIELD_DESC = new org.apache.thrift.protocol.TField("ethtag", org.apache.thrift.protocol.TType.I32, (short)6);
+    private static final org.apache.thrift.protocol.TField ESI_FIELD_DESC = new org.apache.thrift.protocol.TField("esi", org.apache.thrift.protocol.TType.STRING, (short)7);
+    private static final org.apache.thrift.protocol.TField MACADDRESS_FIELD_DESC = new org.apache.thrift.protocol.TField("macaddress", org.apache.thrift.protocol.TType.STRING, (short)8);
+    private static final org.apache.thrift.protocol.TField L3LABEL_FIELD_DESC = new org.apache.thrift.protocol.TField("l3label", org.apache.thrift.protocol.TType.I32, (short)9);
+    private static final org.apache.thrift.protocol.TField L2LABEL_FIELD_DESC = new org.apache.thrift.protocol.TField("l2label", org.apache.thrift.protocol.TType.I32, (short)10);
+    private static final org.apache.thrift.protocol.TField ROUTERMAC_FIELD_DESC = new org.apache.thrift.protocol.TField("routermac", org.apache.thrift.protocol.TType.STRING, (short)11);
+    private static final org.apache.thrift.protocol.TField AFI_FIELD_DESC = new org.apache.thrift.protocol.TField("afi", org.apache.thrift.protocol.TType.I32, (short)12);
 
     private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
     static {
@@ -545,19 +611,49 @@ public class BgpUpdater {
       schemes.put(TupleScheme.class, new onUpdatePushRoute_argsTupleSchemeFactory());
     }
 
+    /**
+     * 
+     * @see protocol_type
+     */
+    public protocol_type p_type; // required
     public String rd; // required
     public String prefix; // required
     public int prefixlen; // required
     public String nexthop; // required
-    public int label; // required
+    public int ethtag; // required
+    public String esi; // required
+    public String macaddress; // required
+    public int l3label; // required
+    public int l2label; // required
+    public String routermac; // required
+    /**
+     * 
+     * @see af_afi
+     */
+    public af_afi afi; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-      RD((short)1, "rd"),
-      PREFIX((short)2, "prefix"),
-      PREFIXLEN((short)3, "prefixlen"),
-      NEXTHOP((short)4, "nexthop"),
-      LABEL((short)5, "label");
+      /**
+       * 
+       * @see protocol_type
+       */
+      P_TYPE((short)1, "p_type"),
+      RD((short)2, "rd"),
+      PREFIX((short)3, "prefix"),
+      PREFIXLEN((short)4, "prefixlen"),
+      NEXTHOP((short)5, "nexthop"),
+      ETHTAG((short)6, "ethtag"),
+      ESI((short)7, "esi"),
+      MACADDRESS((short)8, "macaddress"),
+      L3LABEL((short)9, "l3label"),
+      L2LABEL((short)10, "l2label"),
+      ROUTERMAC((short)11, "routermac"),
+      /**
+       * 
+       * @see af_afi
+       */
+      AFI((short)12, "afi");
 
       private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -572,16 +668,30 @@ public class BgpUpdater {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
-          case 1: // RD
+          case 1: // P_TYPE
+            return P_TYPE;
+          case 2: // RD
             return RD;
-          case 2: // PREFIX
+          case 3: // PREFIX
             return PREFIX;
-          case 3: // PREFIXLEN
+          case 4: // PREFIXLEN
             return PREFIXLEN;
-          case 4: // NEXTHOP
+          case 5: // NEXTHOP
             return NEXTHOP;
-          case 5: // LABEL
-            return LABEL;
+          case 6: // ETHTAG
+            return ETHTAG;
+          case 7: // ESI
+            return ESI;
+          case 8: // MACADDRESS
+            return MACADDRESS;
+          case 9: // L3LABEL
+            return L3LABEL;
+          case 10: // L2LABEL
+            return L2LABEL;
+          case 11: // ROUTERMAC
+            return ROUTERMAC;
+          case 12: // AFI
+            return AFI;
           default:
             return null;
         }
@@ -623,11 +733,15 @@ public class BgpUpdater {
 
     // isset id assignments
     private static final int __PREFIXLEN_ISSET_ID = 0;
-    private static final int __LABEL_ISSET_ID = 1;
+    private static final int __ETHTAG_ISSET_ID = 1;
+    private static final int __L3LABEL_ISSET_ID = 2;
+    private static final int __L2LABEL_ISSET_ID = 3;
     private byte __isset_bitfield = 0;
     public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
     static {
       Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.P_TYPE, new org.apache.thrift.meta_data.FieldMetaData("p_type", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, protocol_type.class)));
       tmpMap.put(_Fields.RD, new org.apache.thrift.meta_data.FieldMetaData("rd", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       tmpMap.put(_Fields.PREFIX, new org.apache.thrift.meta_data.FieldMetaData("prefix", org.apache.thrift.TFieldRequirementType.DEFAULT, 
@@ -636,8 +750,20 @@ public class BgpUpdater {
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
       tmpMap.put(_Fields.NEXTHOP, new org.apache.thrift.meta_data.FieldMetaData("nexthop", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-      tmpMap.put(_Fields.LABEL, new org.apache.thrift.meta_data.FieldMetaData("label", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+      tmpMap.put(_Fields.ETHTAG, new org.apache.thrift.meta_data.FieldMetaData("ethtag", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      tmpMap.put(_Fields.ESI, new org.apache.thrift.meta_data.FieldMetaData("esi", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.MACADDRESS, new org.apache.thrift.meta_data.FieldMetaData("macaddress", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.L3LABEL, new org.apache.thrift.meta_data.FieldMetaData("l3label", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      tmpMap.put(_Fields.L2LABEL, new org.apache.thrift.meta_data.FieldMetaData("l2label", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      tmpMap.put(_Fields.ROUTERMAC, new org.apache.thrift.meta_data.FieldMetaData("routermac", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.AFI, new org.apache.thrift.meta_data.FieldMetaData("afi", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, af_afi.class)));
       metaDataMap = Collections.unmodifiableMap(tmpMap);
       org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(onUpdatePushRoute_args.class, metaDataMap);
     }
@@ -646,20 +772,36 @@ public class BgpUpdater {
     }
 
     public onUpdatePushRoute_args(
+      protocol_type p_type,
       String rd,
       String prefix,
       int prefixlen,
       String nexthop,
-      int label)
+      int ethtag,
+      String esi,
+      String macaddress,
+      int l3label,
+      int l2label,
+      String routermac,
+      af_afi afi)
     {
       this();
+      this.p_type = p_type;
       this.rd = rd;
       this.prefix = prefix;
       this.prefixlen = prefixlen;
       setPrefixlenIsSet(true);
       this.nexthop = nexthop;
-      this.label = label;
-      setLabelIsSet(true);
+      this.ethtag = ethtag;
+      setEthtagIsSet(true);
+      this.esi = esi;
+      this.macaddress = macaddress;
+      this.l3label = l3label;
+      setL3labelIsSet(true);
+      this.l2label = l2label;
+      setL2labelIsSet(true);
+      this.routermac = routermac;
+      this.afi = afi;
     }
 
     /**
@@ -667,6 +809,9 @@ public class BgpUpdater {
      */
     public onUpdatePushRoute_args(onUpdatePushRoute_args other) {
       __isset_bitfield = other.__isset_bitfield;
+      if (other.isSetP_type()) {
+        this.p_type = other.p_type;
+      }
       if (other.isSetRd()) {
         this.rd = other.rd;
       }
@@ -677,7 +822,21 @@ public class BgpUpdater {
       if (other.isSetNexthop()) {
         this.nexthop = other.nexthop;
       }
-      this.label = other.label;
+      this.ethtag = other.ethtag;
+      if (other.isSetEsi()) {
+        this.esi = other.esi;
+      }
+      if (other.isSetMacaddress()) {
+        this.macaddress = other.macaddress;
+      }
+      this.l3label = other.l3label;
+      this.l2label = other.l2label;
+      if (other.isSetRoutermac()) {
+        this.routermac = other.routermac;
+      }
+      if (other.isSetAfi()) {
+        this.afi = other.afi;
+      }
     }
 
     public onUpdatePushRoute_args deepCopy() {
@@ -686,13 +845,54 @@ public class BgpUpdater {
 
     @Override
     public void clear() {
+      this.p_type = null;
       this.rd = null;
       this.prefix = null;
       setPrefixlenIsSet(false);
       this.prefixlen = 0;
       this.nexthop = null;
-      setLabelIsSet(false);
-      this.label = 0;
+      setEthtagIsSet(false);
+      this.ethtag = 0;
+      this.esi = null;
+      this.macaddress = null;
+      setL3labelIsSet(false);
+      this.l3label = 0;
+      setL2labelIsSet(false);
+      this.l2label = 0;
+      this.routermac = null;
+      this.afi = null;
+    }
+
+    /**
+     * 
+     * @see protocol_type
+     */
+    public protocol_type getP_type() {
+      return this.p_type;
+    }
+
+    /**
+     * 
+     * @see protocol_type
+     */
+    public onUpdatePushRoute_args setP_type(protocol_type p_type) {
+      this.p_type = p_type;
+      return this;
+    }
+
+    public void unsetP_type() {
+      this.p_type = null;
+    }
+
+    /** Returns true if field p_type is set (has been assigned a value) and false otherwise */
+    public boolean isSetP_type() {
+      return this.p_type != null;
+    }
+
+    public void setP_typeIsSet(boolean value) {
+      if (!value) {
+        this.p_type = null;
+      }
     }
 
     public String getRd() {
@@ -790,31 +990,189 @@ public class BgpUpdater {
       }
     }
 
-    public int getLabel() {
-      return this.label;
+    public int getEthtag() {
+      return this.ethtag;
+    }
+
+    public onUpdatePushRoute_args setEthtag(int ethtag) {
+      this.ethtag = ethtag;
+      setEthtagIsSet(true);
+      return this;
+    }
+
+    public void unsetEthtag() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ETHTAG_ISSET_ID);
+    }
+
+    /** Returns true if field ethtag is set (has been assigned a value) and false otherwise */
+    public boolean isSetEthtag() {
+      return EncodingUtils.testBit(__isset_bitfield, __ETHTAG_ISSET_ID);
+    }
+
+    public void setEthtagIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ETHTAG_ISSET_ID, value);
+    }
+
+    public String getEsi() {
+      return this.esi;
+    }
+
+    public onUpdatePushRoute_args setEsi(String esi) {
+      this.esi = esi;
+      return this;
+    }
+
+    public void unsetEsi() {
+      this.esi = null;
+    }
+
+    /** Returns true if field esi is set (has been assigned a value) and false otherwise */
+    public boolean isSetEsi() {
+      return this.esi != null;
+    }
+
+    public void setEsiIsSet(boolean value) {
+      if (!value) {
+        this.esi = null;
+      }
+    }
+
+    public String getMacaddress() {
+      return this.macaddress;
     }
 
-    public onUpdatePushRoute_args setLabel(int label) {
-      this.label = label;
-      setLabelIsSet(true);
+    public onUpdatePushRoute_args setMacaddress(String macaddress) {
+      this.macaddress = macaddress;
       return this;
     }
 
-    public void unsetLabel() {
-      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __LABEL_ISSET_ID);
+    public void unsetMacaddress() {
+      this.macaddress = null;
     }
 
-    /** Returns true if field label is set (has been assigned a value) and false otherwise */
-    public boolean isSetLabel() {
-      return EncodingUtils.testBit(__isset_bitfield, __LABEL_ISSET_ID);
+    /** Returns true if field macaddress is set (has been assigned a value) and false otherwise */
+    public boolean isSetMacaddress() {
+      return this.macaddress != null;
     }
 
-    public void setLabelIsSet(boolean value) {
-      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __LABEL_ISSET_ID, value);
+    public void setMacaddressIsSet(boolean value) {
+      if (!value) {
+        this.macaddress = null;
+      }
+    }
+
+    public int getL3label() {
+      return this.l3label;
+    }
+
+    public onUpdatePushRoute_args setL3label(int l3label) {
+      this.l3label = l3label;
+      setL3labelIsSet(true);
+      return this;
+    }
+
+    public void unsetL3label() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __L3LABEL_ISSET_ID);
+    }
+
+    /** Returns true if field l3label is set (has been assigned a value) and false otherwise */
+    public boolean isSetL3label() {
+      return EncodingUtils.testBit(__isset_bitfield, __L3LABEL_ISSET_ID);
+    }
+
+    public void setL3labelIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __L3LABEL_ISSET_ID, value);
+    }
+
+    public int getL2label() {
+      return this.l2label;
+    }
+
+    public onUpdatePushRoute_args setL2label(int l2label) {
+      this.l2label = l2label;
+      setL2labelIsSet(true);
+      return this;
+    }
+
+    public void unsetL2label() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __L2LABEL_ISSET_ID);
+    }
+
+    /** Returns true if field l2label is set (has been assigned a value) and false otherwise */
+    public boolean isSetL2label() {
+      return EncodingUtils.testBit(__isset_bitfield, __L2LABEL_ISSET_ID);
+    }
+
+    public void setL2labelIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __L2LABEL_ISSET_ID, value);
+    }
+
+    public String getRoutermac() {
+      return this.routermac;
+    }
+
+    public onUpdatePushRoute_args setRoutermac(String routermac) {
+      this.routermac = routermac;
+      return this;
+    }
+
+    public void unsetRoutermac() {
+      this.routermac = null;
+    }
+
+    /** Returns true if field routermac is set (has been assigned a value) and false otherwise */
+    public boolean isSetRoutermac() {
+      return this.routermac != null;
+    }
+
+    public void setRoutermacIsSet(boolean value) {
+      if (!value) {
+        this.routermac = null;
+      }
+    }
+
+    /**
+     * 
+     * @see af_afi
+     */
+    public af_afi getAfi() {
+      return this.afi;
+    }
+
+    /**
+     * 
+     * @see af_afi
+     */
+    public onUpdatePushRoute_args setAfi(af_afi afi) {
+      this.afi = afi;
+      return this;
+    }
+
+    public void unsetAfi() {
+      this.afi = null;
+    }
+
+    /** Returns true if field afi is set (has been assigned a value) and false otherwise */
+    public boolean isSetAfi() {
+      return this.afi != null;
+    }
+
+    public void setAfiIsSet(boolean value) {
+      if (!value) {
+        this.afi = null;
+      }
     }
 
     public void setFieldValue(_Fields field, Object value) {
       switch (field) {
+      case P_TYPE:
+        if (value == null) {
+          unsetP_type();
+        } else {
+          setP_type((protocol_type)value);
+        }
+        break;
+
       case RD:
         if (value == null) {
           unsetRd();
@@ -847,11 +1205,59 @@ public class BgpUpdater {
         }
         break;
 
-      case LABEL:
+      case ETHTAG:
+        if (value == null) {
+          unsetEthtag();
+        } else {
+          setEthtag((Integer)value);
+        }
+        break;
+
+      case ESI:
         if (value == null) {
-          unsetLabel();
+          unsetEsi();
         } else {
-          setLabel((Integer)value);
+          setEsi((String)value);
+        }
+        break;
+
+      case MACADDRESS:
+        if (value == null) {
+          unsetMacaddress();
+        } else {
+          setMacaddress((String)value);
+        }
+        break;
+
+      case L3LABEL:
+        if (value == null) {
+          unsetL3label();
+        } else {
+          setL3label((Integer)value);
+        }
+        break;
+
+      case L2LABEL:
+        if (value == null) {
+          unsetL2label();
+        } else {
+          setL2label((Integer)value);
+        }
+        break;
+
+      case ROUTERMAC:
+        if (value == null) {
+          unsetRoutermac();
+        } else {
+          setRoutermac((String)value);
+        }
+        break;
+
+      case AFI:
+        if (value == null) {
+          unsetAfi();
+        } else {
+          setAfi((af_afi)value);
         }
         break;
 
@@ -860,6 +1266,9 @@ public class BgpUpdater {
 
     public Object getFieldValue(_Fields field) {
       switch (field) {
+      case P_TYPE:
+        return getP_type();
+
       case RD:
         return getRd();
 
@@ -872,8 +1281,26 @@ public class BgpUpdater {
       case NEXTHOP:
         return getNexthop();
 
-      case LABEL:
-        return Integer.valueOf(getLabel());
+      case ETHTAG:
+        return Integer.valueOf(getEthtag());
+
+      case ESI:
+        return getEsi();
+
+      case MACADDRESS:
+        return getMacaddress();
+
+      case L3LABEL:
+        return Integer.valueOf(getL3label());
+
+      case L2LABEL:
+        return Integer.valueOf(getL2label());
+
+      case ROUTERMAC:
+        return getRoutermac();
+
+      case AFI:
+        return getAfi();
 
       }
       throw new IllegalStateException();
@@ -886,6 +1313,8 @@ public class BgpUpdater {
       }
 
       switch (field) {
+      case P_TYPE:
+        return isSetP_type();
       case RD:
         return isSetRd();
       case PREFIX:
@@ -894,8 +1323,20 @@ public class BgpUpdater {
         return isSetPrefixlen();
       case NEXTHOP:
         return isSetNexthop();
-      case LABEL:
-        return isSetLabel();
+      case ETHTAG:
+        return isSetEthtag();
+      case ESI:
+        return isSetEsi();
+      case MACADDRESS:
+        return isSetMacaddress();
+      case L3LABEL:
+        return isSetL3label();
+      case L2LABEL:
+        return isSetL2label();
+      case ROUTERMAC:
+        return isSetRoutermac();
+      case AFI:
+        return isSetAfi();
       }
       throw new IllegalStateException();
     }
@@ -913,8 +1354,17 @@ public class BgpUpdater {
       if (that == null)
         return false;
 
-      boolean this_present_rd = this.isSetRd();
-      boolean that_present_rd = that.isSetRd();
+      boolean this_present_p_type = true && this.isSetP_type();
+      boolean that_present_p_type = true && that.isSetP_type();
+      if (this_present_p_type || that_present_p_type) {
+        if (!(this_present_p_type && that_present_p_type))
+          return false;
+        if (!this.p_type.equals(that.p_type))
+          return false;
+      }
+
+      boolean this_present_rd = true && this.isSetRd();
+      boolean that_present_rd = true && that.isSetRd();
       if (this_present_rd || that_present_rd) {
         if (!(this_present_rd && that_present_rd))
           return false;
@@ -922,8 +1372,8 @@ public class BgpUpdater {
           return false;
       }
 
-      boolean this_present_prefix = this.isSetPrefix();
-      boolean that_present_prefix = that.isSetPrefix();
+      boolean this_present_prefix = true && this.isSetPrefix();
+      boolean that_present_prefix = true && that.isSetPrefix();
       if (this_present_prefix || that_present_prefix) {
         if (!(this_present_prefix && that_present_prefix))
           return false;
@@ -940,8 +1390,8 @@ public class BgpUpdater {
           return false;
       }
 
-      boolean this_present_nexthop = this.isSetNexthop();
-      boolean that_present_nexthop = that.isSetNexthop();
+      boolean this_present_nexthop = true && this.isSetNexthop();
+      boolean that_present_nexthop = true && that.isSetNexthop();
       if (this_present_nexthop || that_present_nexthop) {
         if (!(this_present_nexthop && that_present_nexthop))
           return false;
@@ -949,12 +1399,66 @@ public class BgpUpdater {
           return false;
       }
 
-      boolean this_present_label = true;
-      boolean that_present_label = true;
-      if (this_present_label || that_present_label) {
-        if (!(this_present_label && that_present_label))
+      boolean this_present_ethtag = true;
+      boolean that_present_ethtag = true;
+      if (this_present_ethtag || that_present_ethtag) {
+        if (!(this_present_ethtag && that_present_ethtag))
+          return false;
+        if (this.ethtag != that.ethtag)
+          return false;
+      }
+
+      boolean this_present_esi = true && this.isSetEsi();
+      boolean that_present_esi = true && that.isSetEsi();
+      if (this_present_esi || that_present_esi) {
+        if (!(this_present_esi && that_present_esi))
+          return false;
+        if (!this.esi.equals(that.esi))
+          return false;
+      }
+
+      boolean this_present_macaddress = true && this.isSetMacaddress();
+      boolean that_present_macaddress = true && that.isSetMacaddress();
+      if (this_present_macaddress || that_present_macaddress) {
+        if (!(this_present_macaddress && that_present_macaddress))
+          return false;
+        if (!this.macaddress.equals(that.macaddress))
+          return false;
+      }
+
+      boolean this_present_l3label = true;
+      boolean that_present_l3label = true;
+      if (this_present_l3label || that_present_l3label) {
+        if (!(this_present_l3label && that_present_l3label))
           return false;
-        if (this.label != that.label)
+        if (this.l3label != that.l3label)
+          return false;
+      }
+
+      boolean this_present_l2label = true;
+      boolean that_present_l2label = true;
+      if (this_present_l2label || that_present_l2label) {
+        if (!(this_present_l2label && that_present_l2label))
+          return false;
+        if (this.l2label != that.l2label)
+          return false;
+      }
+
+      boolean this_present_routermac = true && this.isSetRoutermac();
+      boolean that_present_routermac = true && that.isSetRoutermac();
+      if (this_present_routermac || that_present_routermac) {
+        if (!(this_present_routermac && that_present_routermac))
+          return false;
+        if (!this.routermac.equals(that.routermac))
+          return false;
+      }
+
+      boolean this_present_afi = true && this.isSetAfi();
+      boolean that_present_afi = true && that.isSetAfi();
+      if (this_present_afi || that_present_afi) {
+        if (!(this_present_afi && that_present_afi))
+          return false;
+        if (!this.afi.equals(that.afi))
           return false;
       }
 
@@ -963,7 +1467,56 @@ public class BgpUpdater {
 
     @Override
     public int hashCode() {
-      return 0;
+      List<Object> list = new ArrayList<Object>();
+      boolean present_p_type = true && (isSetP_type());
+      list.add(present_p_type);
+      if (present_p_type)
+        list.add(p_type.getValue());
+      boolean present_rd = true && (isSetRd());
+      list.add(present_rd);
+      if (present_rd)
+        list.add(rd);
+      boolean present_prefix = true && (isSetPrefix());
+      list.add(present_prefix);
+      if (present_prefix)
+        list.add(prefix);
+      boolean present_prefixlen = true;
+      list.add(present_prefixlen);
+      if (present_prefixlen)
+        list.add(prefixlen);
+      boolean present_nexthop = true && (isSetNexthop());
+      list.add(present_nexthop);
+      if (present_nexthop)
+        list.add(nexthop);
+      boolean present_ethtag = true;
+      list.add(present_ethtag);
+      if (present_ethtag)
+        list.add(ethtag);
+      boolean present_esi = true && (isSetEsi());
+      list.add(present_esi);
+      if (present_esi)
+        list.add(esi);
+      boolean present_macaddress = true && (isSetMacaddress());
+      list.add(present_macaddress);
+      if (present_macaddress)
+        list.add(macaddress);
+      boolean present_l3label = true;
+      list.add(present_l3label);
+      if (present_l3label)
+        list.add(l3label);
+      boolean present_l2label = true;
+      list.add(present_l2label);
+      if (present_l2label)
+        list.add(l2label);
+      boolean present_routermac = true && (isSetRoutermac());
+      list.add(present_routermac);
+      if (present_routermac)
+        list.add(routermac);
+      boolean present_afi = true && (isSetAfi());
+      list.add(present_afi);
+      if (present_afi)
+        list.add(afi.getValue());
+      return list.hashCode();
     }
 
     @Override
@@ -974,6 +1527,16 @@ public class BgpUpdater {
 
       int lastComparison = 0;
 
+      lastComparison = Boolean.valueOf(isSetP_type()).compareTo(other.isSetP_type());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetP_type()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.p_type, other.p_type);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       lastComparison = Boolean.valueOf(isSetRd()).compareTo(other.isSetRd());
       if (lastComparison != 0) {
         return lastComparison;
@@ -1014,12 +1577,72 @@ public class BgpUpdater {
           return lastComparison;
         }
       }
-      lastComparison = Boolean.valueOf(isSetLabel()).compareTo(other.isSetLabel());
+      lastComparison = Boolean.valueOf(isSetEthtag()).compareTo(other.isSetEthtag());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetEthtag()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ethtag, other.ethtag);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetEsi()).compareTo(other.isSetEsi());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetEsi()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.esi, other.esi);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetMacaddress()).compareTo(other.isSetMacaddress());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetMacaddress()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.macaddress, other.macaddress);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetL3label()).compareTo(other.isSetL3label());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetL3label()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.l3label, other.l3label);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetL2label()).compareTo(other.isSetL2label());
       if (lastComparison != 0) {
         return lastComparison;
       }
-      if (isSetLabel()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.label, other.label);
+      if (isSetL2label()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.l2label, other.l2label);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetRoutermac()).compareTo(other.isSetRoutermac());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetRoutermac()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.routermac, other.routermac);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetAfi()).compareTo(other.isSetAfi());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAfi()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.afi, other.afi);
         if (lastComparison != 0) {
           return lastComparison;
         }
@@ -1044,6 +1667,14 @@ public class BgpUpdater {
       StringBuilder sb = new StringBuilder("onUpdatePushRoute_args(");
       boolean first = true;
 
+      sb.append("p_type:");
+      if (this.p_type == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.p_type);
+      }
+      first = false;
+      if (!first) sb.append(", ");
       sb.append("rd:");
       if (this.rd == null) {
         sb.append("null");
@@ -1072,22 +1703,62 @@ public class BgpUpdater {
       }
       first = false;
       if (!first) sb.append(", ");
-      sb.append("label:");
-      sb.append(this.label);
+      sb.append("ethtag:");
+      sb.append(this.ethtag);
       first = false;
-      sb.append(")");
-      return sb.toString();
-    }
-
-    public void validate() throws org.apache.thrift.TException {
-      // check for required fields
-      // check for sub-struct validity
-    }
-
-    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
-      try {
-        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
-      } catch (org.apache.thrift.TException te) {
+      if (!first) sb.append(", ");
+      sb.append("esi:");
+      if (this.esi == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.esi);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("macaddress:");
+      if (this.macaddress == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.macaddress);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("l3label:");
+      sb.append(this.l3label);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("l2label:");
+      sb.append(this.l2label);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("routermac:");
+      if (this.routermac == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.routermac);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("afi:");
+      if (this.afi == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.afi);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      // check for sub-struct validity
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
         throw new java.io.IOException(te);
       }
     }
@@ -1120,7 +1791,15 @@ public class BgpUpdater {
             break;
           }
           switch (schemeField.id) {
-            case 1: // RD
+            case 1: // P_TYPE
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.p_type = protocol_type.findByValue(iprot.readI32());
+                struct.setP_typeIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // RD
               if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                 struct.rd = iprot.readString();
                 struct.setRdIsSet(true);
@@ -1128,7 +1807,7 @@ public class BgpUpdater {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 2: // PREFIX
+            case 3: // PREFIX
               if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                 struct.prefix = iprot.readString();
                 struct.setPrefixIsSet(true);
@@ -1136,7 +1815,7 @@ public class BgpUpdater {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 3: // PREFIXLEN
+            case 4: // PREFIXLEN
               if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
                 struct.prefixlen = iprot.readI32();
                 struct.setPrefixlenIsSet(true);
@@ -1144,7 +1823,7 @@ public class BgpUpdater {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 4: // NEXTHOP
+            case 5: // NEXTHOP
               if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                 struct.nexthop = iprot.readString();
                 struct.setNexthopIsSet(true);
@@ -1152,10 +1831,58 @@ public class BgpUpdater {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 5: // LABEL
+            case 6: // ETHTAG
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.ethtag = iprot.readI32();
+                struct.setEthtagIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 7: // ESI
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.esi = iprot.readString();
+                struct.setEsiIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 8: // MACADDRESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.macaddress = iprot.readString();
+                struct.setMacaddressIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 9: // L3LABEL
               if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
-                struct.label = iprot.readI32();
-                struct.setLabelIsSet(true);
+                struct.l3label = iprot.readI32();
+                struct.setL3labelIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 10: // L2LABEL
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.l2label = iprot.readI32();
+                struct.setL2labelIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 11: // ROUTERMAC
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.routermac = iprot.readString();
+                struct.setRoutermacIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 12: // AFI
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.afi = af_afi.findByValue(iprot.readI32());
+                struct.setAfiIsSet(true);
               } else { 
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
@@ -1175,6 +1902,11 @@ public class BgpUpdater {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.p_type != null) {
+          oprot.writeFieldBegin(P_TYPE_FIELD_DESC);
+          oprot.writeI32(struct.p_type.getValue());
+          oprot.writeFieldEnd();
+        }
         if (struct.rd != null) {
           oprot.writeFieldBegin(RD_FIELD_DESC);
           oprot.writeString(struct.rd);
@@ -1193,9 +1925,35 @@ public class BgpUpdater {
           oprot.writeString(struct.nexthop);
           oprot.writeFieldEnd();
         }
-        oprot.writeFieldBegin(LABEL_FIELD_DESC);
-        oprot.writeI32(struct.label);
+        oprot.writeFieldBegin(ETHTAG_FIELD_DESC);
+        oprot.writeI32(struct.ethtag);
+        oprot.writeFieldEnd();
+        if (struct.esi != null) {
+          oprot.writeFieldBegin(ESI_FIELD_DESC);
+          oprot.writeString(struct.esi);
+          oprot.writeFieldEnd();
+        }
+        if (struct.macaddress != null) {
+          oprot.writeFieldBegin(MACADDRESS_FIELD_DESC);
+          oprot.writeString(struct.macaddress);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldBegin(L3LABEL_FIELD_DESC);
+        oprot.writeI32(struct.l3label);
         oprot.writeFieldEnd();
+        oprot.writeFieldBegin(L2LABEL_FIELD_DESC);
+        oprot.writeI32(struct.l2label);
+        oprot.writeFieldEnd();
+        if (struct.routermac != null) {
+          oprot.writeFieldBegin(ROUTERMAC_FIELD_DESC);
+          oprot.writeString(struct.routermac);
+          oprot.writeFieldEnd();
+        }
+        if (struct.afi != null) {
+          oprot.writeFieldBegin(AFI_FIELD_DESC);
+          oprot.writeI32(struct.afi.getValue());
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -1214,22 +1972,46 @@ public class BgpUpdater {
       public void write(org.apache.thrift.protocol.TProtocol prot, onUpdatePushRoute_args struct) throws org.apache.thrift.TException {
         TTupleProtocol oprot = (TTupleProtocol) prot;
         BitSet optionals = new BitSet();
-        if (struct.isSetRd()) {
+        if (struct.isSetP_type()) {
           optionals.set(0);
         }
-        if (struct.isSetPrefix()) {
+        if (struct.isSetRd()) {
           optionals.set(1);
         }
-        if (struct.isSetPrefixlen()) {
+        if (struct.isSetPrefix()) {
           optionals.set(2);
         }
-        if (struct.isSetNexthop()) {
+        if (struct.isSetPrefixlen()) {
           optionals.set(3);
         }
-        if (struct.isSetLabel()) {
+        if (struct.isSetNexthop()) {
           optionals.set(4);
         }
-        oprot.writeBitSet(optionals, 5);
+        if (struct.isSetEthtag()) {
+          optionals.set(5);
+        }
+        if (struct.isSetEsi()) {
+          optionals.set(6);
+        }
+        if (struct.isSetMacaddress()) {
+          optionals.set(7);
+        }
+        if (struct.isSetL3label()) {
+          optionals.set(8);
+        }
+        if (struct.isSetL2label()) {
+          optionals.set(9);
+        }
+        if (struct.isSetRoutermac()) {
+          optionals.set(10);
+        }
+        if (struct.isSetAfi()) {
+          optionals.set(11);
+        }
+        oprot.writeBitSet(optionals, 12);
+        if (struct.isSetP_type()) {
+          oprot.writeI32(struct.p_type.getValue());
+        }
         if (struct.isSetRd()) {
           oprot.writeString(struct.rd);
         }
@@ -1242,34 +2024,80 @@ public class BgpUpdater {
         if (struct.isSetNexthop()) {
           oprot.writeString(struct.nexthop);
         }
-        if (struct.isSetLabel()) {
-          oprot.writeI32(struct.label);
+        if (struct.isSetEthtag()) {
+          oprot.writeI32(struct.ethtag);
+        }
+        if (struct.isSetEsi()) {
+          oprot.writeString(struct.esi);
+        }
+        if (struct.isSetMacaddress()) {
+          oprot.writeString(struct.macaddress);
+        }
+        if (struct.isSetL3label()) {
+          oprot.writeI32(struct.l3label);
+        }
+        if (struct.isSetL2label()) {
+          oprot.writeI32(struct.l2label);
+        }
+        if (struct.isSetRoutermac()) {
+          oprot.writeString(struct.routermac);
+        }
+        if (struct.isSetAfi()) {
+          oprot.writeI32(struct.afi.getValue());
         }
       }
 
       @Override
       public void read(org.apache.thrift.protocol.TProtocol prot, onUpdatePushRoute_args struct) throws org.apache.thrift.TException {
         TTupleProtocol iprot = (TTupleProtocol) prot;
-        BitSet incoming = iprot.readBitSet(5);
+        BitSet incoming = iprot.readBitSet(12);
         if (incoming.get(0)) {
+          struct.p_type = protocol_type.findByValue(iprot.readI32());
+          struct.setP_typeIsSet(true);
+        }
+        if (incoming.get(1)) {
           struct.rd = iprot.readString();
           struct.setRdIsSet(true);
         }
-        if (incoming.get(1)) {
+        if (incoming.get(2)) {
           struct.prefix = iprot.readString();
           struct.setPrefixIsSet(true);
         }
-        if (incoming.get(2)) {
+        if (incoming.get(3)) {
           struct.prefixlen = iprot.readI32();
           struct.setPrefixlenIsSet(true);
         }
-        if (incoming.get(3)) {
+        if (incoming.get(4)) {
           struct.nexthop = iprot.readString();
           struct.setNexthopIsSet(true);
         }
-        if (incoming.get(4)) {
-          struct.label = iprot.readI32();
-          struct.setLabelIsSet(true);
+        if (incoming.get(5)) {
+          struct.ethtag = iprot.readI32();
+          struct.setEthtagIsSet(true);
+        }
+        if (incoming.get(6)) {
+          struct.esi = iprot.readString();
+          struct.setEsiIsSet(true);
+        }
+        if (incoming.get(7)) {
+          struct.macaddress = iprot.readString();
+          struct.setMacaddressIsSet(true);
+        }
+        if (incoming.get(8)) {
+          struct.l3label = iprot.readI32();
+          struct.setL3labelIsSet(true);
+        }
+        if (incoming.get(9)) {
+          struct.l2label = iprot.readI32();
+          struct.setL2labelIsSet(true);
+        }
+        if (incoming.get(10)) {
+          struct.routermac = iprot.readString();
+          struct.setRoutermacIsSet(true);
+        }
+        if (incoming.get(11)) {
+          struct.afi = af_afi.findByValue(iprot.readI32());
+          struct.setAfiIsSet(true);
         }
       }
     }
@@ -1279,9 +2107,17 @@ public class BgpUpdater {
   public static class onUpdateWithdrawRoute_args implements org.apache.thrift.TBase<onUpdateWithdrawRoute_args, onUpdateWithdrawRoute_args._Fields>, java.io.Serializable, Cloneable, Comparable<onUpdateWithdrawRoute_args>   {
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("onUpdateWithdrawRoute_args");
 
-    private static final org.apache.thrift.protocol.TField RD_FIELD_DESC = new org.apache.thrift.protocol.TField("rd", org.apache.thrift.protocol.TType.STRING, (short)1);
-    private static final org.apache.thrift.protocol.TField PREFIX_FIELD_DESC = new org.apache.thrift.protocol.TField("prefix", org.apache.thrift.protocol.TType.STRING, (short)2);
-    private static final org.apache.thrift.protocol.TField PREFIXLEN_FIELD_DESC = new org.apache.thrift.protocol.TField("prefixlen", org.apache.thrift.protocol.TType.I32, (short)3);
+    private static final org.apache.thrift.protocol.TField P_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("p_type", org.apache.thrift.protocol.TType.I32, (short)1);
+    private static final org.apache.thrift.protocol.TField RD_FIELD_DESC = new org.apache.thrift.protocol.TField("rd", org.apache.thrift.protocol.TType.STRING, (short)2);
+    private static final org.apache.thrift.protocol.TField PREFIX_FIELD_DESC = new org.apache.thrift.protocol.TField("prefix", org.apache.thrift.protocol.TType.STRING, (short)3);
+    private static final org.apache.thrift.protocol.TField PREFIXLEN_FIELD_DESC = new org.apache.thrift.protocol.TField("prefixlen", org.apache.thrift.protocol.TType.I32, (short)4);
+    private static final org.apache.thrift.protocol.TField NEXTHOP_FIELD_DESC = new org.apache.thrift.protocol.TField("nexthop", org.apache.thrift.protocol.TType.STRING, (short)5);
+    private static final org.apache.thrift.protocol.TField ETHTAG_FIELD_DESC = new org.apache.thrift.protocol.TField("ethtag", org.apache.thrift.protocol.TType.I32, (short)6);
+    private static final org.apache.thrift.protocol.TField ESI_FIELD_DESC = new org.apache.thrift.protocol.TField("esi", org.apache.thrift.protocol.TType.STRING, (short)7);
+    private static final org.apache.thrift.protocol.TField MACADDRESS_FIELD_DESC = new org.apache.thrift.protocol.TField("macaddress", org.apache.thrift.protocol.TType.STRING, (short)8);
+    private static final org.apache.thrift.protocol.TField L3LABEL_FIELD_DESC = new org.apache.thrift.protocol.TField("l3label", org.apache.thrift.protocol.TType.I32, (short)9);
+    private static final org.apache.thrift.protocol.TField L2LABEL_FIELD_DESC = new org.apache.thrift.protocol.TField("l2label", org.apache.thrift.protocol.TType.I32, (short)10);
+    private static final org.apache.thrift.protocol.TField AFI_FIELD_DESC = new org.apache.thrift.protocol.TField("afi", org.apache.thrift.protocol.TType.I32, (short)11);
 
     private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
     static {
@@ -1289,15 +2125,47 @@ public class BgpUpdater {
       schemes.put(TupleScheme.class, new onUpdateWithdrawRoute_argsTupleSchemeFactory());
     }
 
+    /**
+     * 
+     * @see protocol_type
+     */
+    public protocol_type p_type; // required
     public String rd; // required
     public String prefix; // required
     public int prefixlen; // required
+    public String nexthop; // required
+    public int ethtag; // required
+    public String esi; // required
+    public String macaddress; // required
+    public int l3label; // required
+    public int l2label; // required
+    /**
+     * 
+     * @see af_afi
+     */
+    public af_afi afi; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-      RD((short)1, "rd"),
-      PREFIX((short)2, "prefix"),
-      PREFIXLEN((short)3, "prefixlen");
+      /**
+       * 
+       * @see protocol_type
+       */
+      P_TYPE((short)1, "p_type"),
+      RD((short)2, "rd"),
+      PREFIX((short)3, "prefix"),
+      PREFIXLEN((short)4, "prefixlen"),
+      NEXTHOP((short)5, "nexthop"),
+      ETHTAG((short)6, "ethtag"),
+      ESI((short)7, "esi"),
+      MACADDRESS((short)8, "macaddress"),
+      L3LABEL((short)9, "l3label"),
+      L2LABEL((short)10, "l2label"),
+      /**
+       * 
+       * @see af_afi
+       */
+      AFI((short)11, "afi");
 
       private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -1312,12 +2180,28 @@ public class BgpUpdater {
        */
       public static _Fields findByThriftId(int fieldId) {
         switch(fieldId) {
-          case 1: // RD
+          case 1: // P_TYPE
+            return P_TYPE;
+          case 2: // RD
             return RD;
-          case 2: // PREFIX
+          case 3: // PREFIX
             return PREFIX;
-          case 3: // PREFIXLEN
+          case 4: // PREFIXLEN
             return PREFIXLEN;
+          case 5: // NEXTHOP
+            return NEXTHOP;
+          case 6: // ETHTAG
+            return ETHTAG;
+          case 7: // ESI
+            return ESI;
+          case 8: // MACADDRESS
+            return MACADDRESS;
+          case 9: // L3LABEL
+            return L3LABEL;
+          case 10: // L2LABEL
+            return L2LABEL;
+          case 11: // AFI
+            return AFI;
           default:
             return null;
         }
@@ -1359,16 +2243,35 @@ public class BgpUpdater {
 
     // isset id assignments
     private static final int __PREFIXLEN_ISSET_ID = 0;
+    private static final int __ETHTAG_ISSET_ID = 1;
+    private static final int __L3LABEL_ISSET_ID = 2;
+    private static final int __L2LABEL_ISSET_ID = 3;
     private byte __isset_bitfield = 0;
     public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
     static {
       Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.P_TYPE, new org.apache.thrift.meta_data.FieldMetaData("p_type", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, protocol_type.class)));
       tmpMap.put(_Fields.RD, new org.apache.thrift.meta_data.FieldMetaData("rd", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       tmpMap.put(_Fields.PREFIX, new org.apache.thrift.meta_data.FieldMetaData("prefix", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
       tmpMap.put(_Fields.PREFIXLEN, new org.apache.thrift.meta_data.FieldMetaData("prefixlen", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      tmpMap.put(_Fields.NEXTHOP, new org.apache.thrift.meta_data.FieldMetaData("nexthop", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.ETHTAG, new org.apache.thrift.meta_data.FieldMetaData("ethtag", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      tmpMap.put(_Fields.ESI, new org.apache.thrift.meta_data.FieldMetaData("esi", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.MACADDRESS, new org.apache.thrift.meta_data.FieldMetaData("macaddress", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.L3LABEL, new org.apache.thrift.meta_data.FieldMetaData("l3label", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      tmpMap.put(_Fields.L2LABEL, new org.apache.thrift.meta_data.FieldMetaData("l2label", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      tmpMap.put(_Fields.AFI, new org.apache.thrift.meta_data.FieldMetaData("afi", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, af_afi.class)));
       metaDataMap = Collections.unmodifiableMap(tmpMap);
       org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(onUpdateWithdrawRoute_args.class, metaDataMap);
     }
@@ -1377,15 +2280,34 @@ public class BgpUpdater {
     }
 
     public onUpdateWithdrawRoute_args(
+      protocol_type p_type,
       String rd,
       String prefix,
-      int prefixlen)
+      int prefixlen,
+      String nexthop,
+      int ethtag,
+      String esi,
+      String macaddress,
+      int l3label,
+      int l2label,
+      af_afi afi)
     {
       this();
+      this.p_type = p_type;
       this.rd = rd;
       this.prefix = prefix;
       this.prefixlen = prefixlen;
       setPrefixlenIsSet(true);
+      this.nexthop = nexthop;
+      this.ethtag = ethtag;
+      setEthtagIsSet(true);
+      this.esi = esi;
+      this.macaddress = macaddress;
+      this.l3label = l3label;
+      setL3labelIsSet(true);
+      this.l2label = l2label;
+      setL2labelIsSet(true);
+      this.afi = afi;
     }
 
     /**
@@ -1393,6 +2315,9 @@ public class BgpUpdater {
      */
     public onUpdateWithdrawRoute_args(onUpdateWithdrawRoute_args other) {
       __isset_bitfield = other.__isset_bitfield;
+      if (other.isSetP_type()) {
+        this.p_type = other.p_type;
+      }
       if (other.isSetRd()) {
         this.rd = other.rd;
       }
@@ -1400,6 +2325,21 @@ public class BgpUpdater {
         this.prefix = other.prefix;
       }
       this.prefixlen = other.prefixlen;
+      if (other.isSetNexthop()) {
+        this.nexthop = other.nexthop;
+      }
+      this.ethtag = other.ethtag;
+      if (other.isSetEsi()) {
+        this.esi = other.esi;
+      }
+      if (other.isSetMacaddress()) {
+        this.macaddress = other.macaddress;
+      }
+      this.l3label = other.l3label;
+      this.l2label = other.l2label;
+      if (other.isSetAfi()) {
+        this.afi = other.afi;
+      }
     }
 
     public onUpdateWithdrawRoute_args deepCopy() {
@@ -1408,10 +2348,53 @@ public class BgpUpdater {
 
     @Override
     public void clear() {
+      this.p_type = null;
       this.rd = null;
       this.prefix = null;
       setPrefixlenIsSet(false);
       this.prefixlen = 0;
+      this.nexthop = null;
+      setEthtagIsSet(false);
+      this.ethtag = 0;
+      this.esi = null;
+      this.macaddress = null;
+      setL3labelIsSet(false);
+      this.l3label = 0;
+      setL2labelIsSet(false);
+      this.l2label = 0;
+      this.afi = null;
+    }
+
+    /**
+     * 
+     * @see protocol_type
+     */
+    public protocol_type getP_type() {
+      return this.p_type;
+    }
+
+    /**
+     * 
+     * @see protocol_type
+     */
+    public onUpdateWithdrawRoute_args setP_type(protocol_type p_type) {
+      this.p_type = p_type;
+      return this;
+    }
+
+    public void unsetP_type() {
+      this.p_type = null;
+    }
+
+    /** Returns true if field p_type is set (has been assigned a value) and false otherwise */
+    public boolean isSetP_type() {
+      return this.p_type != null;
+    }
+
+    public void setP_typeIsSet(boolean value) {
+      if (!value) {
+        this.p_type = null;
+      }
     }
 
     public String getRd() {
@@ -1485,29 +2468,266 @@ public class BgpUpdater {
       __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __PREFIXLEN_ISSET_ID, value);
     }
 
+    public String getNexthop() {
+      return this.nexthop;
+    }
+
+    public onUpdateWithdrawRoute_args setNexthop(String nexthop) {
+      this.nexthop = nexthop;
+      return this;
+    }
+
+    public void unsetNexthop() {
+      this.nexthop = null;
+    }
+
+    /** Returns true if field nexthop is set (has been assigned a value) and false otherwise */
+    public boolean isSetNexthop() {
+      return this.nexthop != null;
+    }
+
+    public void setNexthopIsSet(boolean value) {
+      if (!value) {
+        this.nexthop = null;
+      }
+    }
+
+    public int getEthtag() {
+      return this.ethtag;
+    }
+
+    public onUpdateWithdrawRoute_args setEthtag(int ethtag) {
+      this.ethtag = ethtag;
+      setEthtagIsSet(true);
+      return this;
+    }
+
+    public void unsetEthtag() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ETHTAG_ISSET_ID);
+    }
+
+    /** Returns true if field ethtag is set (has been assigned a value) and false otherwise */
+    public boolean isSetEthtag() {
+      return EncodingUtils.testBit(__isset_bitfield, __ETHTAG_ISSET_ID);
+    }
+
+    public void setEthtagIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ETHTAG_ISSET_ID, value);
+    }
+
+    public String getEsi() {
+      return this.esi;
+    }
+
+    public onUpdateWithdrawRoute_args setEsi(String esi) {
+      this.esi = esi;
+      return this;
+    }
+
+    public void unsetEsi() {
+      this.esi = null;
+    }
+
+    /** Returns true if field esi is set (has been assigned a value) and false otherwise */
+    public boolean isSetEsi() {
+      return this.esi != null;
+    }
+
+    public void setEsiIsSet(boolean value) {
+      if (!value) {
+        this.esi = null;
+      }
+    }
+
+    public String getMacaddress() {
+      return this.macaddress;
+    }
+
+    public onUpdateWithdrawRoute_args setMacaddress(String macaddress) {
+      this.macaddress = macaddress;
+      return this;
+    }
+
+    public void unsetMacaddress() {
+      this.macaddress = null;
+    }
+
+    /** Returns true if field macaddress is set (has been assigned a value) and false otherwise */
+    public boolean isSetMacaddress() {
+      return this.macaddress != null;
+    }
+
+    public void setMacaddressIsSet(boolean value) {
+      if (!value) {
+        this.macaddress = null;
+      }
+    }
+
+    public int getL3label() {
+      return this.l3label;
+    }
+
+    public onUpdateWithdrawRoute_args setL3label(int l3label) {
+      this.l3label = l3label;
+      setL3labelIsSet(true);
+      return this;
+    }
+
+    public void unsetL3label() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __L3LABEL_ISSET_ID);
+    }
+
+    /** Returns true if field l3label is set (has been assigned a value) and false otherwise */
+    public boolean isSetL3label() {
+      return EncodingUtils.testBit(__isset_bitfield, __L3LABEL_ISSET_ID);
+    }
+
+    public void setL3labelIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __L3LABEL_ISSET_ID, value);
+    }
+
+    public int getL2label() {
+      return this.l2label;
+    }
+
+    public onUpdateWithdrawRoute_args setL2label(int l2label) {
+      this.l2label = l2label;
+      setL2labelIsSet(true);
+      return this;
+    }
+
+    public void unsetL2label() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __L2LABEL_ISSET_ID);
+    }
+
+    /** Returns true if field l2label is set (has been assigned a value) and false otherwise */
+    public boolean isSetL2label() {
+      return EncodingUtils.testBit(__isset_bitfield, __L2LABEL_ISSET_ID);
+    }
+
+    public void setL2labelIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __L2LABEL_ISSET_ID, value);
+    }
+
+    /**
+     * 
+     * @see af_afi
+     */
+    public af_afi getAfi() {
+      return this.afi;
+    }
+
+    /**
+     * 
+     * @see af_afi
+     */
+    public onUpdateWithdrawRoute_args setAfi(af_afi afi) {
+      this.afi = afi;
+      return this;
+    }
+
+    public void unsetAfi() {
+      this.afi = null;
+    }
+
+    /** Returns true if field afi is set (has been assigned a value) and false otherwise */
+    public boolean isSetAfi() {
+      return this.afi != null;
+    }
+
+    public void setAfiIsSet(boolean value) {
+      if (!value) {
+        this.afi = null;
+      }
+    }
+
     public void setFieldValue(_Fields field, Object value) {
       switch (field) {
+      case P_TYPE:
+        if (value == null) {
+          unsetP_type();
+        } else {
+          setP_type((protocol_type)value);
+        }
+        break;
+
       case RD:
         if (value == null) {
-          unsetRd();
+          unsetRd();
+        } else {
+          setRd((String)value);
+        }
+        break;
+
+      case PREFIX:
+        if (value == null) {
+          unsetPrefix();
+        } else {
+          setPrefix((String)value);
+        }
+        break;
+
+      case PREFIXLEN:
+        if (value == null) {
+          unsetPrefixlen();
+        } else {
+          setPrefixlen((Integer)value);
+        }
+        break;
+
+      case NEXTHOP:
+        if (value == null) {
+          unsetNexthop();
+        } else {
+          setNexthop((String)value);
+        }
+        break;
+
+      case ETHTAG:
+        if (value == null) {
+          unsetEthtag();
+        } else {
+          setEthtag((Integer)value);
+        }
+        break;
+
+      case ESI:
+        if (value == null) {
+          unsetEsi();
+        } else {
+          setEsi((String)value);
+        }
+        break;
+
+      case MACADDRESS:
+        if (value == null) {
+          unsetMacaddress();
+        } else {
+          setMacaddress((String)value);
+        }
+        break;
+
+      case L3LABEL:
+        if (value == null) {
+          unsetL3label();
         } else {
-          setRd((String)value);
+          setL3label((Integer)value);
         }
         break;
 
-      case PREFIX:
+      case L2LABEL:
         if (value == null) {
-          unsetPrefix();
+          unsetL2label();
         } else {
-          setPrefix((String)value);
+          setL2label((Integer)value);
         }
         break;
 
-      case PREFIXLEN:
+      case AFI:
         if (value == null) {
-          unsetPrefixlen();
+          unsetAfi();
         } else {
-          setPrefixlen((Integer)value);
+          setAfi((af_afi)value);
         }
         break;
 
@@ -1516,6 +2736,9 @@ public class BgpUpdater {
 
     public Object getFieldValue(_Fields field) {
       switch (field) {
+      case P_TYPE:
+        return getP_type();
+
       case RD:
         return getRd();
 
@@ -1525,6 +2748,27 @@ public class BgpUpdater {
       case PREFIXLEN:
         return Integer.valueOf(getPrefixlen());
 
+      case NEXTHOP:
+        return getNexthop();
+
+      case ETHTAG:
+        return Integer.valueOf(getEthtag());
+
+      case ESI:
+        return getEsi();
+
+      case MACADDRESS:
+        return getMacaddress();
+
+      case L3LABEL:
+        return Integer.valueOf(getL3label());
+
+      case L2LABEL:
+        return Integer.valueOf(getL2label());
+
+      case AFI:
+        return getAfi();
+
       }
       throw new IllegalStateException();
     }
@@ -1536,12 +2780,28 @@ public class BgpUpdater {
       }
 
       switch (field) {
+      case P_TYPE:
+        return isSetP_type();
       case RD:
         return isSetRd();
       case PREFIX:
         return isSetPrefix();
       case PREFIXLEN:
         return isSetPrefixlen();
+      case NEXTHOP:
+        return isSetNexthop();
+      case ETHTAG:
+        return isSetEthtag();
+      case ESI:
+        return isSetEsi();
+      case MACADDRESS:
+        return isSetMacaddress();
+      case L3LABEL:
+        return isSetL3label();
+      case L2LABEL:
+        return isSetL2label();
+      case AFI:
+        return isSetAfi();
       }
       throw new IllegalStateException();
     }
@@ -1559,8 +2819,17 @@ public class BgpUpdater {
       if (that == null)
         return false;
 
-      boolean this_present_rd = this.isSetRd();
-      boolean that_present_rd = that.isSetRd();
+      boolean this_present_p_type = true && this.isSetP_type();
+      boolean that_present_p_type = true && that.isSetP_type();
+      if (this_present_p_type || that_present_p_type) {
+        if (!(this_present_p_type && that_present_p_type))
+          return false;
+        if (!this.p_type.equals(that.p_type))
+          return false;
+      }
+
+      boolean this_present_rd = true && this.isSetRd();
+      boolean that_present_rd = true && that.isSetRd();
       if (this_present_rd || that_present_rd) {
         if (!(this_present_rd && that_present_rd))
           return false;
@@ -1568,8 +2837,8 @@ public class BgpUpdater {
           return false;
       }
 
-      boolean this_present_prefix = this.isSetPrefix();
-      boolean that_present_prefix = that.isSetPrefix();
+      boolean this_present_prefix = true && this.isSetPrefix();
+      boolean that_present_prefix = true && that.isSetPrefix();
       if (this_present_prefix || that_present_prefix) {
         if (!(this_present_prefix && that_present_prefix))
           return false;
@@ -1586,12 +2855,120 @@ public class BgpUpdater {
           return false;
       }
 
+      boolean this_present_nexthop = true && this.isSetNexthop();
+      boolean that_present_nexthop = true && that.isSetNexthop();
+      if (this_present_nexthop || that_present_nexthop) {
+        if (!(this_present_nexthop && that_present_nexthop))
+          return false;
+        if (!this.nexthop.equals(that.nexthop))
+          return false;
+      }
+
+      boolean this_present_ethtag = true;
+      boolean that_present_ethtag = true;
+      if (this_present_ethtag || that_present_ethtag) {
+        if (!(this_present_ethtag && that_present_ethtag))
+          return false;
+        if (this.ethtag != that.ethtag)
+          return false;
+      }
+
+      boolean this_present_esi = true && this.isSetEsi();
+      boolean that_present_esi = true && that.isSetEsi();
+      if (this_present_esi || that_present_esi) {
+        if (!(this_present_esi && that_present_esi))
+          return false;
+        if (!this.esi.equals(that.esi))
+          return false;
+      }
+
+      boolean this_present_macaddress = true && this.isSetMacaddress();
+      boolean that_present_macaddress = true && that.isSetMacaddress();
+      if (this_present_macaddress || that_present_macaddress) {
+        if (!(this_present_macaddress && that_present_macaddress))
+          return false;
+        if (!this.macaddress.equals(that.macaddress))
+          return false;
+      }
+
+      boolean this_present_l3label = true;
+      boolean that_present_l3label = true;
+      if (this_present_l3label || that_present_l3label) {
+        if (!(this_present_l3label && that_present_l3label))
+          return false;
+        if (this.l3label != that.l3label)
+          return false;
+      }
+
+      boolean this_present_l2label = true;
+      boolean that_present_l2label = true;
+      if (this_present_l2label || that_present_l2label) {
+        if (!(this_present_l2label && that_present_l2label))
+          return false;
+        if (this.l2label != that.l2label)
+          return false;
+      }
+
+      boolean this_present_afi = true && this.isSetAfi();
+      boolean that_present_afi = true && that.isSetAfi();
+      if (this_present_afi || that_present_afi) {
+        if (!(this_present_afi && that_present_afi))
+          return false;
+        if (!this.afi.equals(that.afi))
+          return false;
+      }
+
       return true;
     }
 
     @Override
     public int hashCode() {
-      return 0;
+      List<Object> list = new ArrayList<Object>();
+      boolean present_p_type = true && (isSetP_type());
+      list.add(present_p_type);
+      if (present_p_type)
+        list.add(p_type.getValue());
+      boolean present_rd = true && (isSetRd());
+      list.add(present_rd);
+      if (present_rd)
+        list.add(rd);
+      boolean present_prefix = true && (isSetPrefix());
+      list.add(present_prefix);
+      if (present_prefix)
+        list.add(prefix);
+      boolean present_prefixlen = true;
+      list.add(present_prefixlen);
+      if (present_prefixlen)
+        list.add(prefixlen);
+      boolean present_nexthop = true && (isSetNexthop());
+      list.add(present_nexthop);
+      if (present_nexthop)
+        list.add(nexthop);
+      boolean present_ethtag = true;
+      list.add(present_ethtag);
+      if (present_ethtag)
+        list.add(ethtag);
+      boolean present_esi = true && (isSetEsi());
+      list.add(present_esi);
+      if (present_esi)
+        list.add(esi);
+      boolean present_macaddress = true && (isSetMacaddress());
+      list.add(present_macaddress);
+      if (present_macaddress)
+        list.add(macaddress);
+      boolean present_l3label = true;
+      list.add(present_l3label);
+      if (present_l3label)
+        list.add(l3label);
+      boolean present_l2label = true;
+      list.add(present_l2label);
+      if (present_l2label)
+        list.add(l2label);
+      boolean present_afi = true && (isSetAfi());
+      list.add(present_afi);
+      if (present_afi)
+        list.add(afi.getValue());
+      return list.hashCode();
     }
 
     @Override
@@ -1602,6 +2979,16 @@ public class BgpUpdater {
 
       int lastComparison = 0;
 
+      lastComparison = Boolean.valueOf(isSetP_type()).compareTo(other.isSetP_type());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetP_type()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.p_type, other.p_type);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       lastComparison = Boolean.valueOf(isSetRd()).compareTo(other.isSetRd());
       if (lastComparison != 0) {
         return lastComparison;
@@ -1632,6 +3019,76 @@ public class BgpUpdater {
           return lastComparison;
         }
       }
+      lastComparison = Boolean.valueOf(isSetNexthop()).compareTo(other.isSetNexthop());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetNexthop()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.nexthop, other.nexthop);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetEthtag()).compareTo(other.isSetEthtag());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetEthtag()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ethtag, other.ethtag);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetEsi()).compareTo(other.isSetEsi());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetEsi()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.esi, other.esi);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetMacaddress()).compareTo(other.isSetMacaddress());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetMacaddress()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.macaddress, other.macaddress);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetL3label()).compareTo(other.isSetL3label());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetL3label()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.l3label, other.l3label);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetL2label()).compareTo(other.isSetL2label());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetL2label()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.l2label, other.l2label);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetAfi()).compareTo(other.isSetAfi());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAfi()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.afi, other.afi);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       return 0;
     }
 
@@ -1652,6 +3109,14 @@ public class BgpUpdater {
       StringBuilder sb = new StringBuilder("onUpdateWithdrawRoute_args(");
       boolean first = true;
 
+      sb.append("p_type:");
+      if (this.p_type == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.p_type);
+      }
+      first = false;
+      if (!first) sb.append(", ");
       sb.append("rd:");
       if (this.rd == null) {
         sb.append("null");
@@ -1671,6 +3136,50 @@ public class BgpUpdater {
       sb.append("prefixlen:");
       sb.append(this.prefixlen);
       first = false;
+      if (!first) sb.append(", ");
+      sb.append("nexthop:");
+      if (this.nexthop == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.nexthop);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ethtag:");
+      sb.append(this.ethtag);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("esi:");
+      if (this.esi == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.esi);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("macaddress:");
+      if (this.macaddress == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.macaddress);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("l3label:");
+      sb.append(this.l3label);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("l2label:");
+      sb.append(this.l2label);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("afi:");
+      if (this.afi == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.afi);
+      }
+      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -1716,7 +3225,15 @@ public class BgpUpdater {
             break;
           }
           switch (schemeField.id) {
-            case 1: // RD
+            case 1: // P_TYPE
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.p_type = protocol_type.findByValue(iprot.readI32());
+                struct.setP_typeIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // RD
               if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                 struct.rd = iprot.readString();
                 struct.setRdIsSet(true);
@@ -1724,7 +3241,7 @@ public class BgpUpdater {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 2: // PREFIX
+            case 3: // PREFIX
               if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                 struct.prefix = iprot.readString();
                 struct.setPrefixIsSet(true);
@@ -1732,7 +3249,7 @@ public class BgpUpdater {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 3: // PREFIXLEN
+            case 4: // PREFIXLEN
               if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
                 struct.prefixlen = iprot.readI32();
                 struct.setPrefixlenIsSet(true);
@@ -1740,6 +3257,62 @@ public class BgpUpdater {
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
+            case 5: // NEXTHOP
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.nexthop = iprot.readString();
+                struct.setNexthopIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 6: // ETHTAG
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.ethtag = iprot.readI32();
+                struct.setEthtagIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 7: // ESI
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.esi = iprot.readString();
+                struct.setEsiIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 8: // MACADDRESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.macaddress = iprot.readString();
+                struct.setMacaddressIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 9: // L3LABEL
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.l3label = iprot.readI32();
+                struct.setL3labelIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 10: // L2LABEL
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.l2label = iprot.readI32();
+                struct.setL2labelIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 11: // AFI
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.afi = af_afi.findByValue(iprot.readI32());
+                struct.setAfiIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -1755,6 +3328,11 @@ public class BgpUpdater {
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.p_type != null) {
+          oprot.writeFieldBegin(P_TYPE_FIELD_DESC);
+          oprot.writeI32(struct.p_type.getValue());
+          oprot.writeFieldEnd();
+        }
         if (struct.rd != null) {
           oprot.writeFieldBegin(RD_FIELD_DESC);
           oprot.writeString(struct.rd);
@@ -1768,6 +3346,35 @@ public class BgpUpdater {
         oprot.writeFieldBegin(PREFIXLEN_FIELD_DESC);
         oprot.writeI32(struct.prefixlen);
         oprot.writeFieldEnd();
+        if (struct.nexthop != null) {
+          oprot.writeFieldBegin(NEXTHOP_FIELD_DESC);
+          oprot.writeString(struct.nexthop);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldBegin(ETHTAG_FIELD_DESC);
+        oprot.writeI32(struct.ethtag);
+        oprot.writeFieldEnd();
+        if (struct.esi != null) {
+          oprot.writeFieldBegin(ESI_FIELD_DESC);
+          oprot.writeString(struct.esi);
+          oprot.writeFieldEnd();
+        }
+        if (struct.macaddress != null) {
+          oprot.writeFieldBegin(MACADDRESS_FIELD_DESC);
+          oprot.writeString(struct.macaddress);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldBegin(L3LABEL_FIELD_DESC);
+        oprot.writeI32(struct.l3label);
+        oprot.writeFieldEnd();
+        oprot.writeFieldBegin(L2LABEL_FIELD_DESC);
+        oprot.writeI32(struct.l2label);
+        oprot.writeFieldEnd();
+        if (struct.afi != null) {
+          oprot.writeFieldBegin(AFI_FIELD_DESC);
+          oprot.writeI32(struct.afi.getValue());
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -1786,16 +3393,43 @@ public class BgpUpdater {
       public void write(org.apache.thrift.protocol.TProtocol prot, onUpdateWithdrawRoute_args struct) throws org.apache.thrift.TException {
         TTupleProtocol oprot = (TTupleProtocol) prot;
         BitSet optionals = new BitSet();
-        if (struct.isSetRd()) {
+        if (struct.isSetP_type()) {
           optionals.set(0);
         }
-        if (struct.isSetPrefix()) {
+        if (struct.isSetRd()) {
           optionals.set(1);
         }
-        if (struct.isSetPrefixlen()) {
+        if (struct.isSetPrefix()) {
           optionals.set(2);
         }
-        oprot.writeBitSet(optionals, 3);
+        if (struct.isSetPrefixlen()) {
+          optionals.set(3);
+        }
+        if (struct.isSetNexthop()) {
+          optionals.set(4);
+        }
+        if (struct.isSetEthtag()) {
+          optionals.set(5);
+        }
+        if (struct.isSetEsi()) {
+          optionals.set(6);
+        }
+        if (struct.isSetMacaddress()) {
+          optionals.set(7);
+        }
+        if (struct.isSetL3label()) {
+          optionals.set(8);
+        }
+        if (struct.isSetL2label()) {
+          optionals.set(9);
+        }
+        if (struct.isSetAfi()) {
+          optionals.set(10);
+        }
+        oprot.writeBitSet(optionals, 11);
+        if (struct.isSetP_type()) {
+          oprot.writeI32(struct.p_type.getValue());
+        }
         if (struct.isSetRd()) {
           oprot.writeString(struct.rd);
         }
@@ -1805,24 +3439,77 @@ public class BgpUpdater {
         if (struct.isSetPrefixlen()) {
           oprot.writeI32(struct.prefixlen);
         }
+        if (struct.isSetNexthop()) {
+          oprot.writeString(struct.nexthop);
+        }
+        if (struct.isSetEthtag()) {
+          oprot.writeI32(struct.ethtag);
+        }
+        if (struct.isSetEsi()) {
+          oprot.writeString(struct.esi);
+        }
+        if (struct.isSetMacaddress()) {
+          oprot.writeString(struct.macaddress);
+        }
+        if (struct.isSetL3label()) {
+          oprot.writeI32(struct.l3label);
+        }
+        if (struct.isSetL2label()) {
+          oprot.writeI32(struct.l2label);
+        }
+        if (struct.isSetAfi()) {
+          oprot.writeI32(struct.afi.getValue());
+        }
       }
 
       @Override
       public void read(org.apache.thrift.protocol.TProtocol prot, onUpdateWithdrawRoute_args struct) throws org.apache.thrift.TException {
         TTupleProtocol iprot = (TTupleProtocol) prot;
-        BitSet incoming = iprot.readBitSet(3);
+        BitSet incoming = iprot.readBitSet(11);
         if (incoming.get(0)) {
+          struct.p_type = protocol_type.findByValue(iprot.readI32());
+          struct.setP_typeIsSet(true);
+        }
+        if (incoming.get(1)) {
           struct.rd = iprot.readString();
           struct.setRdIsSet(true);
         }
-        if (incoming.get(1)) {
+        if (incoming.get(2)) {
           struct.prefix = iprot.readString();
           struct.setPrefixIsSet(true);
         }
-        if (incoming.get(2)) {
+        if (incoming.get(3)) {
           struct.prefixlen = iprot.readI32();
           struct.setPrefixlenIsSet(true);
         }
+        if (incoming.get(4)) {
+          struct.nexthop = iprot.readString();
+          struct.setNexthopIsSet(true);
+        }
+        if (incoming.get(5)) {
+          struct.ethtag = iprot.readI32();
+          struct.setEthtagIsSet(true);
+        }
+        if (incoming.get(6)) {
+          struct.esi = iprot.readString();
+          struct.setEsiIsSet(true);
+        }
+        if (incoming.get(7)) {
+          struct.macaddress = iprot.readString();
+          struct.setMacaddressIsSet(true);
+        }
+        if (incoming.get(8)) {
+          struct.l3label = iprot.readI32();
+          struct.setL3labelIsSet(true);
+        }
+        if (incoming.get(9)) {
+          struct.l2label = iprot.readI32();
+          struct.setL2labelIsSet(true);
+        }
+        if (incoming.get(10)) {
+          struct.afi = af_afi.findByValue(iprot.readI32());
+          struct.setAfiIsSet(true);
+        }
       }
     }
 
@@ -1958,7 +3645,9 @@ public class BgpUpdater {
 
     @Override
     public int hashCode() {
-      return 0;
+      List<Object> list = new ArrayList<Object>();
+
+      return list.hashCode();
     }
 
     @Override
@@ -2357,8 +4046,8 @@ public class BgpUpdater {
       if (that == null)
         return false;
 
-      boolean this_present_prefix = this.isSetPrefix();
-      boolean that_present_prefix = that.isSetPrefix();
+      boolean this_present_prefix = true && this.isSetPrefix();
+      boolean that_present_prefix = true && that.isSetPrefix();
       if (this_present_prefix || that_present_prefix) {
         if (!(this_present_prefix && that_present_prefix))
           return false;
@@ -2389,7 +4078,21 @@ public class BgpUpdater {
 
     @Override
     public int hashCode() {
-      return 0;
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_prefix = true && (isSetPrefix());
+      list.add(present_prefix);
+      if (present_prefix)
+        list.add(prefix);
+      boolean present_errCode = true;
+      list.add(present_errCode);
+      if (present_errCode)
+        list.add(errCode);
+      boolean present_errSubcode = true;
+      list.add(present_errSubcode);
+      if (present_errSubcode)
+        list.add(errSubcode);
+      return list.hashCode();
     }
 
     @Override