summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordberg.se>2009-06-26 05:03:25 +0200
committerLinus Nordberg <linus@nordberg.se>2009-06-26 05:03:25 +0200
commit7765d85438a0b681725a5539f1924b189402f41c (patch)
treefe062e9ca06c1d6278798309bef5adfff2106d92
parent45b772581b6c4e227756ef2e437649a44dcc3e23 (diff)
* src/data.lisp (new-entries): Store AS-PATH.
* src/start-bgpstore.sh: Fix bug in start args and add default host and port.
-rw-r--r--src/data.lisp25
-rwxr-xr-xsrc/start-bgpstore.sh5
2 files changed, 25 insertions, 5 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))))
diff --git a/src/start-bgpstore.sh b/src/start-bgpstore.sh
index ce40c02..62abee1 100755
--- a/src/start-bgpstore.sh
+++ b/src/start-bgpstore.sh
@@ -3,6 +3,9 @@
HOST=$1
PORT=$2
+[ -z "$HOST" ] && HOST=victoria.tug.nordu.net
+[ -z "$PORT" ] && PORT=50001
+
# FIXME: The use-package postmodern should've been taken care of in
# package.lisp.
@@ -11,4 +14,4 @@ sbcl --no-userinit \
--eval "(asdf:oos 'asdf:load-op 'postmodern)" \
--eval "(use-package 'postmodern)" \
--eval "(require 'bgpstore)" \
- --eval "(start-bgpstore $HOST $PORT)"
+ --eval "(start-bgpstore \"$HOST\" $PORT)"