X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=bgpmanager%2Fbgpmanager-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fbgpmanager%2Fthrift%2Fidl%2Fqbgp.thrift;fp=bgpmanager%2Fbgpmanager-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fbgpmanager%2Fthrift%2Fidl%2Fqbgp.thrift;h=229ccc97a1f6d80c57e1fac20b6c023ce62b10ed;hb=46a65688345efa44e3c726ad11c1cc923878e708;hp=0000000000000000000000000000000000000000;hpb=b2dd97a5264bd734b036b8558ae1598d32781c88;p=vpnservice.git diff --git a/bgpmanager/bgpmanager-impl/src/main/java/org/opendaylight/bgpmanager/thrift/idl/qbgp.thrift b/bgpmanager/bgpmanager-impl/src/main/java/org/opendaylight/bgpmanager/thrift/idl/qbgp.thrift new file mode 100644 index 00000000..229ccc97 --- /dev/null +++ b/bgpmanager/bgpmanager-impl/src/main/java/org/opendaylight/bgpmanager/thrift/idl/qbgp.thrift @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +// the label argument in pushRoute can use these +const i32 LBL_NO_LABEL = 0 +const i32 LBL_EXPLICIT_NULL = 3 + +// FIB entry type +const i32 BGP_RT_ADD = 0 +const i32 BGP_RT_DEL = 1 + +// FIB table iteration op +const i32 GET_RTS_INIT = 0 +const i32 GET_RTS_NEXT = 1 + +/* + * Error codes. + * 0 is success. + * ERR_FAILED because something not permitted + * was attempted, such as deleting a route + * that doesn't exist. + * ERR_ACTIVE when session is sought to be created + * when it is already running. + * ERR_INACTIVE when an RPC is called but there is + * no session. + * ERR_NOT_ITER when GET_RTS_NEXT is called without + * initializing with GET_RTS_INIT + * ERR_PARAM when there is an issue with params + */ + +const i32 BGP_ERR_FAILED = 1 +const i32 BGP_ERR_ACTIVE = 10 +const i32 BGP_ERR_INACTIVE = 11 +const i32 BGP_ERR_NOT_ITER = 15 +const i32 BGP_ERR_PARAM = 100 + +// these are the supported afi-safi combinations +enum af_afi { + AFI_IP = 1 +} + +enum af_safi { + SAFI_IPV4_LABELED_UNICAST = 4, + SAFI_MPLS_VPN = 5 +} + +/* + * FIB update. + * type is either RT_ADD(0) or RT_DEL(1) + */ + +struct Update { + 1: i32 type, + 2: i32 reserved, + 3: i32 prefixlen, + 4: i32 label, + 5: string rd, + 6: string prefix, + 7: string nexthop +} + +/* + * A sequence of FIB updates, valid only if errcode + is zero. Returned as a result of iteration using + getRoutes() (ie, a database read). more=0 signals + end of iteration. + */ + +struct Routes { + 1: i32 errcode, + 2: optional list updates, + 4: optional i32 more +} + +service BgpConfigurator { + /* + * startBgp() starts a BGP instance on the BGP VM. Graceful Restart + * also must be configured (stalepathTime > 0). If local BGP is + * restarting, announceFlush tells neighbor to flush all routes + * previously advertised by us. This is the F bit of RFC 4724. + */ + i32 startBgp(1:i32 asNumber, 2:string routerId, 3: i32 port, + 4:i32 holdTime, 5:i32 keepAliveTime, + 6:i32 stalepathTime, 7:bool announceFlush), + i32 stopBgp(1:i32 asNumber), + i32 createPeer(1:string ipAddress, 2:i32 asNumber), + i32 deletePeer(1:string ipAddress) + i32 addVrf(1:string rd, 2:list irts, 3:list erts), + i32 delVrf(1:string rd), + /* + * pushRoute: + * IPv6 is not supported. + * 'nexthop' cannot be null for VPNv4 and LU. + * 'rd' is null for LU (and unicast). + * 'label' cannot be NO_LABEL for VPNv4 and LU. + * ipv4 unicast is not fully supported. + */ + i32 pushRoute(1:string prefix, 2:string nexthop, 3:string rd, 4:i32 label), + /* + * withdrawRoute: + * Second argument is either 'rd' (VPNv4) or + * label (LU) as a string (eg: "2500") + */ + i32 withdrawRoute(1:string prefix, 2:string rd), + i32 setEbgpMultihop(1:string peerIp, 2:i32 nHops), + i32 unsetEbgpMultihop(1:string peerIp), + i32 setUpdateSource(1:string peerIp, 2:string srcIp), + i32 unsetUpdateSource(1:string peerIp), + i32 enableAddressFamily(1:string peerIp, 2:af_afi afi, 3:af_safi safi), + i32 disableAddressFamily(1:string peerIp, 2:af_afi afi, 3:af_safi safi), + i32 setLogConfig(1:string logFileName, 2:string logLevel), + i32 enableGracefulRestart(1:i32 stalepathTime), + i32 disableGracefulRestart(), + /* + * getRoutes(): + * optype is one of: GET_RTS_INIT: initialize iteration, + * GET_RTS_NEXT: get next bunch of routes. winSize is + * the size of the buffer that caller has allocated to + * receive the array. QBGP sends no more than the number + * of routes that would fit in this buffer, but not + * necessarily the maximum number that would fit. + * Calling INIT when NEXT is expected causes reinit. + */ + Routes getRoutes(1:i32 optype, 2:i32 winSize) +} + +service BgpUpdater { + oneway void onUpdatePushRoute(1:string rd, 2:string prefix, + 3:i32 prefixlen, 4:string nexthop, + 5:i32 label), + oneway void onUpdateWithdrawRoute(1:string rd, 2:string prefix, + 3:i32 prefixlen), + oneway void onStartConfigResyncNotification(), + /* communicate to ODL a BGP Notification received from peer */ + oneway void onNotificationSendEvent(1:string prefix, + 2:byte errCode, 3:byte errSubcode) +} +