Junos OS routing IDL - Protocol Documentation

Table of Contents

prpd_common.proto

Top

This is the programmable routing protocol (prpd) common infrastructure API.

This API is a base infrastructure API and is often imported into other higher level APIs.

Copyright (c) 2016, Juniper Networks, Inc. All rights reserved.

----------------------------------------------------------------------------

L3vpnAddress

L3VPN route destination address prefix composed of a route distinguisher (RD) and IP address.

FieldTypeLabelDescription
rd RouteDistinguisher optional

Route distinguisher. REQUIRED

vpn_addr IpAddress optional

IPv4 or IPv6 VPN customer address. [REQUIRED].

NetworkAddress

Network Address defined for each supported address family

FieldTypeLabelDescription
inet IpAddress optional

IPv4 destination prefix

inet6 IpAddress optional

IPv6 destination prefix

RdType0

RFC 4364 Route type 0: 2-byte AS and assigned number

FieldTypeLabelDescription
as_number uint32 optional

2 byte AS number

assigned_number uint32 optional

4 byte assigned number subfield

RdType1

RFC 4364 Route type 1: IPv4 address and assigned number

FieldTypeLabelDescription
ip_address IpAddress optional

4 byte IP address

assigned_number uint32 optional

2 byte assigned number subfield

RdType2

RFC 4364 Route type 2: 4-byte AS and assigned number

FieldTypeLabelDescription
as_number uint32 optional

4 byte AS number

assigned_number uint32 optional

2 byte assigned number subfield

RouteDistinguisher

An RFC 4364 route distinguisher to distinguish customer VPN routes within the BGP NLRIs. Valid RD can be type 0, type 1, or type 2.

FieldTypeLabelDescription
rd0 RdType0 optional

Type 0 RD

rd1 RdType1 optional

Type 1 RD

rd2 RdType2 optional

Type 2 RD

RoutePrefix

Route destination prefix defined for each supported address family

FieldTypeLabelDescription
inet IpAddress optional

IPv4 destination prefix

inet6 IpAddress optional

IPv6 destination prefix

inetvpn L3vpnAddress optional

IPv4 VPN (L3VPN) destination prefix

inet6vpn L3vpnAddress optional

IPv6 VPN (L3VPN) destination prefix

RouteTable

Routing table (RIB), which may either be specified as a string or RPD table ID.

FieldTypeLabelDescription
rtt_id RouteTableId optional

Table id to which the route belongs

rtt_name RouteTableName optional

Table name to which the route belongs

RouteTableId

Routing table identifier as an integer value uniquely identifying a table.

FieldTypeLabelDescription
id uint32 optional

Table identifier. [REQUIRED]

RouteTableName

Routing table (RIB) name uniquely identifying a route table, formatted as a string per JUNOS convention.

FieldTypeLabelDescription
name string optional

Table name. [REQUIRED]

ReturnCode

Different types of return codes to be sent back to client based on the operation was successful or not and if not, possibly more specific reasons as to why it failed.

NameNumberDescription
RET_SUCCESS 0

Operation was executed successfully

RET_FAILURE 1

General failure : operation not executed successfully

RET_NOT_FOUND 2

Entry was not found

RET_INVALID_PARAMS 3

Invalid input paramters

RouteAfType

Routing table destination address families.

NameNumberDescription
RT_AF_UNSPEC 0

Unspecified

RT_AF_INET 1

IPv4 destination prefix

RT_AF_INET6 2

IPv6 destination prefix

RT_AF_INETVPN 3

IPv4 VPN (L3VPN) destination prefix

RT_AF_INET6VPN 4

IPv6 VPN (L3VPN) destination prefix

RouteTableFormat

The table format allows the client to request the format that the server should use to represent tables in replies sent by the server to the client.

NameNumberDescription
TABLE_STRING 0

The server will represent tables by name as strings

TABLE_ID 1

The server will represent tables by RPD table ID

Scalar Value Types

.proto TypeNotesC++ TypeJava TypePython Type
double double double float
float float float float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long
uint32 Uses variable-length encoding. uint32 int int/long
uint64 Uses variable-length encoding. uint64 long int/long
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long
sfixed32 Always four bytes. int32 int int
sfixed64 Always eight bytes. int64 long int/long
bool bool boolean boolean
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode
bytes May contain any arbitrary sequence of bytes. string ByteString str