diff options
author | Linus Nordberg <linus@nordberg.se> | 2009-06-26 05:03:25 +0200 |
---|---|---|
committer | Linus Nordberg <linus@nordberg.se> | 2009-06-26 05:03:25 +0200 |
commit | 7765d85438a0b681725a5539f1924b189402f41c (patch) | |
tree | fe062e9ca06c1d6278798309bef5adfff2106d92 /src/data.lisp | |
parent | 45b772581b6c4e227756ef2e437649a44dcc3e23 (diff) |
* src/data.lisp (new-entries): Store AS-PATH.
* src/start-bgpstore.sh: Fix bug in start args and add default host and port.
Diffstat (limited to 'src/data.lisp')
-rw-r--r-- | src/data.lisp | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/data.lisp b/src/data.lisp index e2c4b9b..b9cd1e1 100644 --- a/src/data.lisp +++ b/src/data.lisp @@ -82,7 +82,7 @@ TOP-ELEM is an XML document element." (dom:get-attribute p "label"))) prefixes)))) - ;; Populate the template. + ;; TIMESTAMP and PRECISION_TIME --> template. (let ((ts (aref (dom:get-elements-by-tag-name time "TIMESTAMP") 0)) (pt (aref (dom:get-elements-by-tag-name time "PRECISION_TIME") 0))) (setf (timestamp templ) @@ -90,11 +90,28 @@ TOP-ELEM is an XML document element." (setf (precision-time templ) (dom:data (aref (dom:child-nodes pt) 0)))) - ;; Add octets to templ. + ;; AS-PATH --> template. Note that we want AS_PATH->AS + ;; only, to avoid getting COMMUNITY->AS. + (setf (path templ) + (let* ((as-paths (dom:get-elements-by-tag-name update + "AS_PATH"))) + (if (= 0 (length as-paths)) + "{}" + (let ((str "{")) + (map nil (lambda (node) + (let ((as (dom:data (aref (dom:child-nodes node) 0)))) + (setf str (concatenate 'string + str + (format nil "~A," as))))) + (dom:child-nodes (aref as-paths 0))) + (concatenate 'string + (subseq str 0 (- (length str) 1)) + "}"))))) + + ;; OCTETS --> template. (when (> (length octet-msgs) 0) (let* ((oct (aref (dom:get-elements-by-tag-name - (aref octet-msgs 0) "OCTETS") - 0)) + (aref octet-msgs 0) "OCTETS") 0)) (txt (aref (dom:child-nodes oct) 0))) (setf (bgp-octets templ) (dom:data txt)))) |