blob: c9f6d98b12e82e81274a61553fe186888ef5b7ff [file] [log] [blame]
Shad Ansari19249582018-04-30 04:31:00 +00001// Copyright (c) 2018 Open Networking Foundation
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at:
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16package openolt;
17import "google/api/annotations.proto";
18
19service Openolt {
20
21 rpc ActivateOnu(Onu) returns (Empty) {
22 option (google.api.http) = {
23 post: "/v1/EnableOnu"
24 body: "*"
25 };
26 }
27
28 rpc OmciMsgOut(OmciMsg) returns (Empty) {
29 option (google.api.http) = {
30 post: "/v1/OmciMsgOut"
31 body: "*"
32 };
33 }
34
35 rpc OnuPacketOut(OnuPacket) returns (Empty) {
36 option (google.api.http) = {
37 post: "/v1/OnuPacketOut"
38 body: "*"
39 };
40 }
41
42 rpc FlowAdd(Flow) returns (Empty) {
43 option (google.api.http) = {
44 post: "/v1/FlowAdd"
45 body: "*"
46 };
47 }
48
49 rpc EnableIndication(Empty) returns (stream Indication) {}
50}
51
52message Indication {
53 oneof data {
54 OltIndication olt_ind = 1;
55 IntfIndication intf_ind = 2;
56 IntfOperIndication intf_oper_ind = 3;
57 OnuDiscIndication onu_disc_ind = 4;
58 OnuIndication onu_ind = 5;
59 OmciIndication omci_ind = 6;
60 PacketIndication pkt_ind = 7;
61 }
62}
63
64message OltIndication {
65 string oper_state = 1; // up, down
66}
67
68message IntfIndication {
69 fixed32 intf_id = 1;
70 string oper_state = 2; // up, down
71}
72
73message OnuDiscIndication {
74 fixed32 intf_id = 1;
75 SerialNumber serial_number = 2;
76}
77
78message OnuIndication {
79 fixed32 intf_id = 1;
80 fixed32 onu_id = 2;
81 string oper_state = 3; // up, down
82 SerialNumber serial_number = 4;
83}
84
85message IntfOperIndication {
86 string type = 1; // nni, pon
87 fixed32 intf_id = 2;
88 string oper_state = 3; // up, down
89}
90
91message OmciIndication {
92 fixed32 intf_id = 1;
93 fixed32 onu_id = 2;
94 bytes pkt = 3;
95}
96
97message PacketIndication {
98 fixed32 intf_id = 1;
99 fixed32 gemport_id = 2;
100 fixed32 flow_id = 3;
101 bytes pkt = 4;
102}
103
104message Onu {
105 fixed32 intf_id = 1;
106 fixed32 onu_id = 2;
107 SerialNumber serial_number = 3;
108}
109
110message OmciMsg {
111 fixed32 intf_id = 1;
112 fixed32 onu_id = 2;
113 bytes pkt = 3;
114}
115
116message OnuPacket {
117 fixed32 intf_id = 1;
118 fixed32 onu_id = 2;
119 bytes pkt = 3;
120}
121
122message Classifier {
123 fixed32 o_tpid = 1;
124 fixed32 o_vid = 2;
125 fixed32 i_tpid = 3;
126 fixed32 i_vid = 4;
127 fixed32 o_pbits = 5;
128 fixed32 i_pbits = 6;
129 fixed32 eth_type = 7;
130 bytes dst_mac = 8;
131 bytes src_mac = 9;
132 fixed32 ip_proto = 10;
133 fixed32 dst_ip = 11;
134 fixed32 src_ip = 12;
135 fixed32 src_port = 13;
136 fixed32 dst_port = 14;
137 string pkt_tag_type = 15; // untagged, single_tag, double_tag
138}
139
140message ActionCmd {
141 bool add_outer_tag = 1;
142 bool remove_outer_tag = 2;
143 bool trap_to_host = 3;
144}
145
146message Action {
147 ActionCmd cmd = 1;
148 fixed32 o_vid = 2;
149 fixed32 o_pbits = 3;
150 fixed32 o_tpid = 4;
151 fixed32 i_vid = 5;
152 fixed32 i_pbits = 6;
153 fixed32 i_tpid = 7;
154}
155
156message Flow {
157 fixed32 access_intf_id = 1;
158 fixed32 onu_id = 2;
159 fixed32 flow_id = 3;
160 string flow_type = 4; // upstream, downstream, broadcast, multicast
161 fixed32 network_intf_id = 5;
162 fixed32 gemport_id = 6;
163 Classifier classifier = 7;
164 Action action = 8;
165}
166
167message SerialNumber {
168 bytes vendor_id = 1;
169 bytes vendor_specific = 2;
170}
171
172message Empty {}