blob: 6e171ae0294d162bf6abb671703311958d45197a [file] [log] [blame]
Jian Li451175e2016-07-19 23:22:20 +09001/*
2 * Copyright 2016-present Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.lisp.msg.protocols;
17
Jian Lia7b394d2016-08-21 23:11:46 +090018import java.util.List;
19
Jian Li451175e2016-07-19 23:22:20 +090020/**
21 * LISP map reply message interface.
Jian Li8fc2d2f2016-08-08 14:43:53 +090022 * <p>
Jian Li719b3bf2016-07-22 00:38:29 +090023 * LISP map reply message format is defined in RFC6830.
24 * https://tools.ietf.org/html/rfc6830#page-31
25 *
Yuta HIGUCHI4b022112016-08-03 10:56:55 -070026 * <pre>
27 * {@literal
Jian Li4eb3e3a2016-08-21 16:20:20 +090028 * 0 1 2 3
29 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
30 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
31 * |Type=2 |P|E|S| Reserved | Record Count |
32 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
33 * | Nonce . . . |
34 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
35 * | . . . Nonce |
Jian Li719b3bf2016-07-22 00:38:29 +090036 * +-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
37 * | | Record TTL |
38 * | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
39 * R | Locator Count | EID mask-len | ACT |A| Reserved |
40 * e +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
41 * c | Rsvd | Map-Version Number | EID-Prefix-AFI |
42 * o +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
43 * r | EID-Prefix |
44 * d +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
45 * | /| Priority | Weight | M Priority | M Weight |
46 * | L +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
47 * | o | Unused Flags |L|p|R| Loc-AFI |
48 * | c +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
49 * | \| Locator |
50 * +-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Yuta HIGUCHI4b022112016-08-03 10:56:55 -070051 * }</pre>
Jian Li451175e2016-07-19 23:22:20 +090052 */
53public interface LispMapReply extends LispMessage {
Jian Li719b3bf2016-07-22 00:38:29 +090054
55 /**
56 * Obtains probe flag.
57 *
58 * @return probe flag
59 */
60 boolean isProbe();
61
62 /**
63 * Obtains ETR flag.
64 *
65 * @return ETR flag
66 */
67 boolean isEtr();
68
69 /**
70 * Obtains security flag.
71 *
72 * @return security flag
73 */
74 boolean isSecurity();
75
76 /**
77 * Obtains record count value.
78 *
79 * @return record count value
80 */
Jian Li42b3e432016-08-31 01:05:20 +090081 int getRecordCount();
Jian Li719b3bf2016-07-22 00:38:29 +090082
83 /**
84 * Obtains nonce value.
85 *
86 * @return nonce value
87 */
88 long getNonce();
89
90 /**
Jian Lia7b394d2016-08-21 23:11:46 +090091 * Obtains map records.
92 *
93 * @return map records
94 */
95 List<LispMapRecord> getMapRecords();
96
97 /**
Jian Li719b3bf2016-07-22 00:38:29 +090098 * A builder of LISP map reply message.
99 */
100 interface ReplyBuilder extends Builder {
101
102 /**
Jian Lif59c0ad2016-08-02 18:11:30 +0900103 * Sets probe flag.
Jian Li719b3bf2016-07-22 00:38:29 +0900104 *
Jian Lif59c0ad2016-08-02 18:11:30 +0900105 * @param probe probe flag
Jian Li719b3bf2016-07-22 00:38:29 +0900106 * @return ReplyBuilder object
107 */
Jian Lif59c0ad2016-08-02 18:11:30 +0900108 ReplyBuilder withIsProbe(boolean probe);
Jian Li719b3bf2016-07-22 00:38:29 +0900109
110 /**
Jian Lif59c0ad2016-08-02 18:11:30 +0900111 * Sets etr flag.
Jian Li719b3bf2016-07-22 00:38:29 +0900112 *
Jian Lif59c0ad2016-08-02 18:11:30 +0900113 * @param etr etr flag
Jian Li719b3bf2016-07-22 00:38:29 +0900114 * @return ReplyBuilder object
115 */
Jian Lif59c0ad2016-08-02 18:11:30 +0900116 ReplyBuilder withIsEtr(boolean etr);
Jian Li719b3bf2016-07-22 00:38:29 +0900117
118 /**
Jian Lif59c0ad2016-08-02 18:11:30 +0900119 * Sets security flag.
Jian Li719b3bf2016-07-22 00:38:29 +0900120 *
Jian Lif59c0ad2016-08-02 18:11:30 +0900121 * @param security security flag
Jian Li719b3bf2016-07-22 00:38:29 +0900122 * @return ReplyBuilder object
123 */
Jian Lif59c0ad2016-08-02 18:11:30 +0900124 ReplyBuilder withIsSecurity(boolean security);
Jian Li719b3bf2016-07-22 00:38:29 +0900125
126 /**
Jian Li719b3bf2016-07-22 00:38:29 +0900127 * Sets nonce value.
128 *
129 * @param nonce nonce value
130 * @return ReplyBuilder object
131 */
132 ReplyBuilder withNonce(long nonce);
Jian Li525fded2016-08-04 01:15:33 +0900133
134 /**
Jian Lia7b394d2016-08-21 23:11:46 +0900135 * Sets a collection of map records.
136 *
137 * @param mapRecords a collection of map records
138 * @return ReplyBuilder object
139 */
140 ReplyBuilder withMapRecords(List<LispMapRecord> mapRecords);
141
142 /**
Jian Li525fded2016-08-04 01:15:33 +0900143 * Builds LISP map reply message.
144 *
145 * @return LISP map reply message
146 */
147 LispMapReply build();
Jian Li719b3bf2016-07-22 00:38:29 +0900148 }
Jian Li451175e2016-07-19 23:22:20 +0900149}