Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
4e1a077
fix(getLsNodeNLRI): add srCapabilies length in error message
k1yoto Apr 8, 2025
e6c159f
feat(gobgp,ted): add LsSRv6SIDNLRI for BGP-LS as defined in RFC9154
Motok1 Aug 27, 2025
b34d5a5
refactor(gobgp): remove redundant argument and struct
watal Apr 10, 2025
4385f85
refactor(gobgp): simplify address format and comment
watal Apr 11, 2025
1690050
refactor(gobgp): improve error wrapping and context
Motok1 Aug 27, 2025
40d49ad
refactor(gobgp) use context.WithCancel to prepare for future cancella…
watal Apr 11, 2025
a64011c
refactor(gobgp): ISIS Area ID formatting into helper function
watal Apr 11, 2025
14b8c63
refactor(pcep): rename const/variable to follow Go naming conventions…
watal Apr 7, 2025
644cb7d
refactor(polad): rename constant
watal Apr 14, 2025
08531c1
refactor: rename acronym variables to follow Go naming conventions
watal Apr 15, 2025
a19b7b2
refactor(grpc): align with Protocol Buffers Style Guide and rename o…
Motok1 Aug 28, 2025
9ea9ce6
refactor(yaml): use snake_case for YAML field names and improve consi…
watal Apr 15, 2025
0951d93
refactor(markdown): Apply markdownlint
watal Apr 15, 2025
e5e57b5
chore(ci): update CI workflow to improve buf and markdown lint checks
watal Apr 15, 2025
0ec7aee
chore(ci): apply lint checks to both main and develop branches
watal Apr 15, 2025
4ab8b09
chore(ci): add buf.yml
watal Apr 15, 2025
20e1e03
refactor,test(pcep): improve decode/serialization and add new tests f…
watal Mar 8, 2023
beaf7f2
fix(json): replace strings.Fields with explicit loop in Psts.MarshalJ…
watal Apr 7, 2025
a65a8e1
refactor(pcep): add length check, index const, and tests for PathSetu…
watal Apr 15, 2025
50bce3b
refactor(pcep): fix TLV constant names and improve TLV parsing with n…
watal Apr 18, 2025
e2e237f
refactor(ted): simplify types
Motok1 Aug 27, 2025
dcd1ae7
refactor,test(pcep): make Uint16ToByteSlice generic (~uint16) and add…
watal Apr 18, 2025
b3354c1
refactor(pcep): simplify serialization by making SetBit conditional
watal Apr 18, 2025
0012b31
refactor(pcep): use []byte and byte consistently
watal Apr 18, 2025
11b1f49
refactor(pcep): extend SetBit to support conditional flag setting
watal Apr 18, 2025
0e05e61
refactor(SymbolicPathName): add utf8 validation
watal Apr 18, 2025
a9b587f
refactor(pcep): improve serialization and decoding using pcep_utils
watal Apr 18, 2025
112b391
feat(LsPrefixNLRI): merge LsPrefixV4NLRI and LsPrefixV6NLRI processing
k1yoto May 17, 2025
ff67e9a
feat(grpc): support LsSRv6SIDNLRI and LsPrefixV6NLRI
k1yoto May 17, 2025
d19513c
fix(interface): support IPv6 for LsNodeNLRI and LsLinkNLRI
k1yoto May 17, 2025
d99dfe1
chore(LsSRv6SIDNLRI): add comment-outs and tools
k1yoto May 17, 2025
89ecb1e
fix(gobgp): fix to be able to display TED in CLI tool
k1yoto May 17, 2025
8d31734
chore(README): fix link text to be descriptive
k1yoto May 27, 2025
a0a4c55
feat(api): add SRv6 SIDStructure and EndpointBehavior protobuf defini…
k1yoto Jun 22, 2025
a1be497
feat(srv6): add SRv6 End.X SID and SID Structure support
k1yoto Jun 22, 2025
8355759
feat(srv6): enhance SRv6 Segment creation and node support
k1yoto Jun 22, 2025
86ef7f8
feat(cspf): implement dynamic path computation from TED
k1yoto Jun 22, 2025
8717757
chore(srPolicy): improve input validation and error handling
k1yoto Jun 22, 2025
d7ce7c3
feat(gobgp): migrate GoBGP gRPC API support from v3 to v4
watal Aug 25, 2025
b426df3
fix(ted): TED struct and "show ted" command for ipv6 unnumbered
Motok1 Aug 26, 2025
a738ff5
fix(grpc): fix create sr policy validator
Motok1 Aug 26, 2025
726c482
fix(ted): add nil checks in TED Print
watal Sep 5, 2025
1719c26
fix(ted): add nil checks in GetTED
watal Sep 5, 2025
5399d6c
refactor(ted): update loopback address detection logic
watal Sep 5, 2025
f4f4854
fix(tlv): improve multiple TLV decoding with offset and truncation ch…
watal Sep 5, 2025
3af5753
fix(tlv): change EndpointsObject receiver to pointer for Len method
watal Sep 5, 2025
9a98d9d
fix(object): add details to Endpoints and Association Object errors
watal Sep 5, 2025
3d9395d
fix(validation): clarify error messages with policy.<field> prefix
watal Sep 5, 2025
cc8b8a3
refactor(test): update input and expected data
Motok1 Sep 9, 2025
75b60fb
chore(example): add SRv6 uSID dynamic-path example
watal Sep 10, 2025
79c9311
fix(color): fix color TLV length
watal Sep 10, 2025
a25c555
fix(interface): allow nil BGP-LS Attribute
watal Sep 12, 2025
ed39fb7
feature(test): add test of "show ted" for SRv6 uSID
Motok1 Sep 13, 2025
93d14dd
fix(ted): rename print()
watal Sep 26, 2025
6fb92cf
fix(config): camelCase
watal Sep 26, 2025
0f2cc71
fix(docs): fix headings, code blocks, and links per markdownlint
watal Oct 21, 2025
65e006b
refactor(interface): simplify getLsNode
watal Sep 26, 2025
53b6fd6
refactor(object): early return
watal Sep 26, 2025
4d199e6
refactor(tlv): rename cap
watal Sep 26, 2025
4c69402
refactor(session): remove explicit 0 assignment
watal Sep 26, 2025
56532ff
Bump go from 1.24.5 to 1.25.3
watal Sep 29, 2025
456349c
update CREDITS
watal Sep 26, 2025
fd14cb0
refactor(object): move PCC type constants and DeterminePccType functi…
watal Sep 30, 2025
38cdfff
refactor(session): improve SR Policy handling with error checks and s…
watal Oct 1, 2025
c3d3606
fix(pcep): add boundary check in DecodeFromBytes
watal Oct 7, 2025
1c42a90
fix(ted): prevent out-of-bounds by checking indices in NodeSegment
watal Oct 7, 2025
5e91e5e
fix(ted): use exact prefix address match and prioritize RouterID in f…
watal Oct 17, 2025
3fbd7f0
fix(pcep): use constant expected length for StatefulPCECapability Dec…
watal Oct 17, 2025
abffa8e
fix(table): handle first non-empty SRv6SID in NewSegmentSRv6WithNodeInfo
watal Oct 17, 2025
a45d96d
fix(grpc): return error on SR Policy deletion failure
watal Oct 21, 2025
3fd0973
fix(pcep): allow padded TLVs in SymbolicPathName decoding
watal Oct 21, 2025
c0a29f9
fix(pcep): mask undefined bits when serializing StatefulPCECapability…
watal Oct 21, 2025
6b7133a
fix(session): check for empty SegmentList instead of nil in RegisterS…
watal Oct 21, 2025
143c752
fix(pcep): update Serialize() to return error and handle SRv6 Behavio…
watal Oct 21, 2025
5f6f962
fix(grpc_server): correct spelling of "parameter" in DeleteSRPolicy logs
watal Oct 21, 2025
868393f
refactor(gobgp): split ConvertToTEDElem per NLRI type to reduce cyclo…
watal Oct 21, 2025
ff96bf3
refactor(ted): split Print into helper functions to reduce cyclomatic…
watal Oct 21, 2025
c3bd4f0
refactor(grpc_server): split GetTED into helper functions to reduce c…
watal Oct 21, 2025
15411f0
refactor(session): split handlePCRpt into helper functions to reduce …
watal Oct 21, 2025
1a9f005
refactor(session): split RegisterSRPolicy into helper functions to re…
watal Oct 21, 2025
92ecb56
Update pkg/server/grpc_server.go
watal Oct 22, 2025
31e41aa
Update pkg/packet/pcep/tlv.go
watal Oct 22, 2025
204f4f4
test(tlv): fix length comments
watal Oct 22, 2025
45a8ecb
test(tlv): remove unnecessary test for SymbolicPathName
watal Oct 22, 2025
b0afeab
Update test/README.md
watal Oct 22, 2025
61fd049
fix(pcep): clarify error message for invalid mixed endpoint addresses
watal Oct 22, 2025
42a4e98
docs(example): update GoBGP and Pola PCE version requirements in README
watal Oct 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 37 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,55 @@
name: golangci-lint
name: Lint

on:
push:
branches: [ 'main' ]
branches:
- main
- develop
pull_request:
branches: [ 'main' ]
branches:
- main
- develop
types:
- opened
- reopened
- synchronize
- ready_for_review

jobs:
golangci:
name: lint
lint:
name: Lint
runs-on: ubuntu-latest
if: github.event.pull_request.draft == false
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.pull_request.draft == false)
steps:
- uses: actions/checkout@v5
- uses: actions/setup-go@v6
- name: Checkout code
uses: actions/checkout@v5

- name: Setup Go
uses: actions/setup-go@v6
with:
go-version-file: go.mod

- name: Run golangci-lint
uses: golangci/golangci-lint-action@v8
with:
version: latest
args: --config=.golangci.yml

- name: Install buf CLI
uses: bufbuild/buf-setup-action@v1
with:
version: latest

- name: Run buf lint
run: buf lint

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: latest

- name: Install markdownlint-cli
run: npm install -g markdownlint-cli

- name: Run markdownlint
run: markdownlint '**/*.md' --ignore node_modules
5 changes: 5 additions & 0 deletions .markdownlint.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"MD013": false,
"MD033": false,
"MD041": false
}
6 changes: 3 additions & 3 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,13 +116,13 @@ the community.

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
<https://www.contributor-covenant.org/version/2/0/code_of_conduct.html>.

Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
<https://www.contributor-covenant.org/faq>. Translations are available at
<https://www.contributor-covenant.org/translations>.
16 changes: 13 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# Contributing

Thank you for considering contributing to Pola PCE!
Below are the guidelines for contributing.

## Creating Pull Requests
All updates, including those contributed by project members, must be reviewed via Pull Request.

## Creating issues
If you have a bug report, feature request, or other question, please create an issue. However, please refer to [Security Policy](https://github.com/nttcom/pola/blob/main/SECURITY.md) for vulnerabilities.
All updates, including those contributed by project members,
must be reviewed via pull request.

## Creating Issues

If you have a bug report, feature request, or other question, please create an issue.
However, please refer to the [security policy](https://github.com/nttcom/pola/blob/main/security.md)
for vulnerabilities.
32 changes: 30 additions & 2 deletions CREDITS
Original file line number Diff line number Diff line change
Expand Up @@ -773,8 +773,8 @@ https://github.com/inconshreveable/mousetrap

================================================================

github.com/osrg/gobgp/v3
https://github.com/osrg/gobgp/v3
github.com/osrg/gobgp/v4
https://github.com/osrg/gobgp/v4
----------------------------------------------------------------
Apache License
Version 2.0, January 2004
Expand Down Expand Up @@ -2672,6 +2672,34 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

================================================================

gonum.org/v1/gonum
https://gonum.org/v1/gonum
----------------------------------------------------------------
Copyright ©2013 The Gonum Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the Gonum project nor the names of its authors and
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================================

google.golang.org/genproto/googleapis/rpc
https://google.golang.org/genproto/googleapis/rpc
----------------------------------------------------------------
Expand Down
27 changes: 21 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,46 +3,61 @@
</p>

# Pola PCE

[![Linter](https://github.com/nttcom/pola/actions/workflows/ci.yml/badge.svg)](https://github.com/nttcom/pola/actions)
[![Releaser](https://github.com/nttcom/pola/actions/workflows/release.yml/badge.svg)](https://github.com/nttcom/pola/actions)
[![Go Report Card](https://goreportcard.com/badge/nttcom/pola)](https://goreportcard.com/report/github.com/nttcom/pola)
[![Go Report Card](https://goreportcard.com/badge/nttcom/pola)](https://goreportcard.com/report/github.com/nttcom/pola)
[![Go Reference](https://pkg.go.dev/badge/github.com/nttcom/pola.svg)](https://pkg.go.dev/github.com/nttcom/pola)
[![Go version](https://img.shields.io/github/go-mod/go-version/nttcom/pola)](https://go.dev/)
[![License](https://img.shields.io/badge/license-MIT-blue)](LICENSE)

Pola PCE is an implementation of the Path Computation Element (PCE) and a PCEP Library in Go.
Pola PCE is an implementation of the Path Computation Element (PCE)
and a PCEP Library in Go.

## Features

* Support for SRv6(full-SID/uSID) and SR-MPLS
* Implementation of active stateful PCE functionality (PCInitiate, PCUpdate, etc.)
* Dynamic and explicit SR policy definition using YAML
* Dynamic path: Utilizes CSPF with GoBGP BGP-LS TED
* Explicit path: Allows users to define and provision any Segment List

## Interoperability

### SR-MPLS

* IOS-XR
* Junos
* FRRouting

### SRv6 (full-SID)

* Junos

### SRv6 (uSID)

* IOS-XR
* Junos
* VRP

## Installation & Use

* [Getting Started](docs/sources/getting-started.md)
* Examples (powered by [Containerlab](https://containerlab.dev/)/[Tinet](https://github.com/tinynetwork/tinet))
* [SR-MPLS Example](examples/tinet/sr-mpls_te_l3vpn)
* [SRv6 Example](examples/containerlab/srv6_te_l3vpn)

## Contributing
If you are interested in contributing to the project, please refer to the [CONTRIBUTING](https://github.com/nttcom/pola/blob/main/CONTRIBUTING.md) guidelines.
Feel free to fork the repository and create a Pull Request. Your contributions are highly appreciated.

If you are interested in contributing to the project, please refer to the
[CONTRIBUTING](https://github.com/nttcom/pola/blob/main/CONTRIBUTING.md)
guidelines.
Feel free to fork the repository and create a Pull Request.
Your contributions are highly appreciated.

## Licensing
Pola PCE is licensed under the [MIT license](https://en.wikipedia.org/wiki/MIT_License).
For the full license text, see [LICENSE](https://github.com/nttcom/pola/blob/master/LICENSE).

Pola PCE is licensed under the
[MIT license](https://en.wikipedia.org/wiki/MIT_License).
For the full license text, see
[LICENSE](https://github.com/nttcom/pola/blob/master/LICENSE).
7 changes: 4 additions & 3 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@

**Please do not report security vulnerabilities in public issues on GitHub.**

Instead, please report by email to the Pola PCE maintainer ([watal](https://github.com/watal)).
Include "Vulnerability" in the subject line of the email.
Instead, please report by email to the Pola PCE maintainer ([watal](https://github.com/watal)).
Include "Vulnerability" in the subject line of the email.
We will action the vulnerability within 72 hours of receiving the vulnerability report.

If you have suggestions for improving this policy, please submit a PR or Issue for discussion.
If you have suggestions for improving this policy,
please submit a PR or Issue for discussion.
Loading
Loading