diff options
-rw-r--r-- | doc/manuals/vty/ggsn_vty_reference.xml | 8 | ||||
-rw-r--r-- | ggsn/ggsn_vty.c | 22 |
2 files changed, 22 insertions, 8 deletions
diff --git a/doc/manuals/vty/ggsn_vty_reference.xml b/doc/manuals/vty/ggsn_vty_reference.xml index a226f8f..a395b23 100644 --- a/doc/manuals/vty/ggsn_vty_reference.xml +++ b/doc/manuals/vty/ggsn_vty_reference.xml @@ -351,10 +351,12 @@ <param name='APN' doc='APN name' /> </params> </command> - <command id='show pdp-context imsi IMSI [<0-15>]'> + <command id='show pdp-context ggsn NAME imsi IMSI [<0-15>]'> <params> <param name='show' doc='Show running system information' /> <param name='pdp-context' doc='Display information on PDP Context' /> + <param name='ggsn' doc='Gateway GPRS Support NODE (GGSN)' /> + <param name='NAME' doc='GGSN Name' /> <param name='imsi' doc='PDP contexts for given IMSI' /> <param name='IMSI' doc='PDP context for given NSAPI' /> <param name='[<0-15>]' doc='(null)' /> @@ -709,10 +711,12 @@ <param name='APN' doc='APN name' /> </params> </command> - <command id='show pdp-context imsi IMSI [<0-15>]'> + <command id='show pdp-context ggsn NAME imsi IMSI [<0-15>]'> <params> <param name='show' doc='Show running system information' /> <param name='pdp-context' doc='Display information on PDP Context' /> + <param name='ggsn' doc='Gateway GPRS Support NODE (GGSN)' /> + <param name='NAME' doc='GGSN Name' /> <param name='imsi' doc='PDP contexts for given IMSI' /> <param name='IMSI' doc='PDP context for given NSAPI' /> <param name='[<0-15>]' doc='(null)' /> diff --git a/ggsn/ggsn_vty.c b/ggsn/ggsn_vty.c index 9101361..eb7cca7 100644 --- a/ggsn/ggsn_vty.c +++ b/ggsn/ggsn_vty.c @@ -764,25 +764,35 @@ static void show_one_pdp(struct vty *vty, struct pdp_t *pdp) } DEFUN(show_pdpctx_imsi, show_pdpctx_imsi_cmd, - "show pdp-context imsi IMSI [<0-15>]", + "show pdp-context ggsn NAME imsi IMSI [<0-15>]", SHOW_STR "Display information on PDP Context\n" + GGSN_STR "GGSN Name\n" "PDP contexts for given IMSI\n" "PDP context for given NSAPI\n") { - uint64_t imsi = strtoull(argv[0], NULL, 10); + struct ggsn_ctx *ggsn; + uint64_t imsi; unsigned int nsapi; struct pdp_t *pdp; int num_found = 0; - if (argc > 1) { - nsapi = atoi(argv[1]); - if (pdp_getimsi(&pdp, imsi, nsapi)) { + ggsn = ggsn_find(argv[0]); + if (!ggsn) { + vty_out(vty, "%% No such GGSN '%s'%s", argv[0], VTY_NEWLINE); + return CMD_WARNING; + } + + imsi = strtoull(argv[1], NULL, 10); + + if (argc > 2) { + nsapi = atoi(argv[2]); + if (gtp_pdp_getimsi(ggsn->gsn, &pdp, imsi, nsapi)) { show_one_pdp(vty, pdp); num_found++; } } else { for (nsapi = 0; nsapi < PDP_MAXNSAPI; nsapi++) { - if (pdp_getimsi(&pdp, imsi, nsapi)) + if (gtp_pdp_getimsi(ggsn->gsn, &pdp, imsi, nsapi)) continue; show_one_pdp(vty, pdp); num_found++; |