Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

parser.go: Fix Bird 2.0 BGP protocol parsing #13

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

zhaofengli
Copy link

In Bird 2.0, BGP protocol lines have --- as the table name, as the actual table names are defined in the respective channels. This commit fixes the regex to take this into account.

Parsing of the key-value section is also changed so that we don't mistake the states of individual channels as the protocol state. In the future, we should distinguish between different channels instead of parsing the key-value section blindly.

Example:

xxx1_4     BGP        ---        up     2018-08-21 08:44:30  Established
  Description:    iBGP xxx1 v4
  BGP state:          Established
  <snip>
  Channel ipv4
    State:          UP
    Table:          master4
  <snip>

  • Expected state: up
  • Parsed state: UP (from the ipv4 channel)

  • Expected state_changed: 2018-08-21 08:44:30
  • Parsed state_changed: Not parsed

In Bird 2.0, BGP protocol lines have `---` as the table name, as the actual
table names are defined in the respective channels. This commit fixes the
regex to take this into account.

Parsing of the key-value section is also changed so that we don't mistake
the states of individual channels as the protocol state. In the future, we
should distinguish between different channels instead of parsing the key-value
section blindly.

Example:

```
xxx1_4     BGP        ---        up     2018-08-21 08:44:30  Established
  Description:    iBGP xxx1 v4
  BGP state:          Established
  <snip>
  Channel ipv4
    State:          UP
    Table:          master4
  <snip>
```

- Expected `state`: `up`
- Parsed `state`: `UP` (from the ipv4 channel)

- Expected `state_changed`: `2018-08-21 08:44:30`
- Parsed `state_changed`: Not parsed
@hellerve
Copy link
Member

We might have to think about backward compatibility here (because including this PR as is would break BIRD 1.X)! This isn’t trivial, because we don’t want to make it too brittle and switch-heavy (I think).

In other news, @mhannig (the current maintainer) is currently not available, so it will probably take a while before he’ll respond to this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants