Okay, I have been playing around with this. It seems that the ip-up and ip-down are symlinked to a binary which does all the work. I decided to replace these links to my up/down scripts. Basically, I duplicated how Ubuntu does it (Ubuntu uses ip-up.d and ip-down.d directories to contain the scripts to run and a master ip-up and ip-down scripts as the entry point from pppd).
I used the ip-up and ip-down scripts from Ubuntu and edited them as I did not need as some of things. For ip-up.d folder, at least make a script to set /tmp/resolv.conf and sync datetime. I added these new files/directories to flash, rebooted and voila, it worked
If someone is interested, I can post more details here.