| 1175 | """ |
| 1176 | |
| 1177 | def getfield(self, pkt, s): |
| 1178 | lst = [] |
| 1179 | remain = s |
| 1180 | |
| 1181 | while remain: |
| 1182 | # |
| 1183 | # Get the segment length |
| 1184 | segment_length = orb(remain[1]) |
| 1185 | |
| 1186 | if bgp_module_conf.use_2_bytes_asn: |
| 1187 | current = remain[:2 + segment_length * 2] |
| 1188 | remain = remain[2 + segment_length * 2:] |
| 1189 | else: |
| 1190 | current = remain[:2 + segment_length * 4] |
| 1191 | remain = remain[2 + segment_length * 4:] |
| 1192 | |
| 1193 | packet = self.m2i(pkt, current) |
| 1194 | lst.append(packet) |
| 1195 | |
| 1196 | return remain, lst |
| 1197 | |
| 1198 | |
| 1199 | class BGPPAASPath(Packet): |